Skip to content

Commit

Permalink
add lastfm scrobble abilities, in test mode
Browse files Browse the repository at this point in the history
  • Loading branch information
jdodds committed Oct 5, 2012
1 parent 0474306 commit a6af0eb
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 1 deletion.
9 changes: 8 additions & 1 deletion pyrana/Pyrana.py
Expand Up @@ -32,7 +32,7 @@
from pyrana.uis import GTK2
from pyrana.players import PyGSTPlayer
from pyrana.playlists import SaneRandomAlbums
from pyrana.plugins import Notify
from pyrana.plugins import Notify, LastFmScrobbler, MetadataReader

def main():
home = os.path.expanduser('~')
Expand All @@ -58,6 +58,13 @@ def main():
Pyrana.register(PyGSTPlayer())
Pyrana.register(SaneRandomAlbums(musicdir, seenfile))
Pyrana.register(Notify())
Pyrana.register(MetadataReader())
Pyrana.register(LastFmScrobbler(
config.get('lastfm', 'username'),
config.get('lastfm', 'password')
))


Pyrana.start()

if __name__ == '__main__':
Expand Down
2 changes: 2 additions & 0 deletions pyrana/plugins/__init__.py
@@ -1,3 +1,5 @@
# pyrana.plugins module
from notify import Notify
from pidginstatus import PidginStatus
from lastfmscrobbler import LastFmScrobbler
from metadatareader import MetadataReader
39 changes: 39 additions & 0 deletions pyrana/plugins/lastfmscrobbler.py
@@ -0,0 +1,39 @@
import pylast

from feather import Plugin

class LastFmScrobbler(Plugin):
listeners = set(['songstart', 'songend', 'metadataread'])
messengers = set()

API_KEY = 'fd0c0272688b807631f12d91ce6d3afb'
SECRET = 'fb1f796931a24717dd2ac8e1f4789912'
CLIENT_ID = 'tst'
CLIENT_VERSION = 1.0

def __init__(self, username, password) :
super(LastFmScrobbler, self).__init__()
self.username = username
self.password_hash = pylast.md5(password)
self.network = pylast.LastFMNetwork(
api_key = self.API_KEY,
api_secret = self.SECRET,
username = self.username,
password_hash = self.password_hash
)


def songstart(self, payload=None):
from time import time
self.started_at = int(time())

def metadataread(self, payload):
self.metadata = payload

def songend(self, payload=None):
self.network.scrobble(
self.metadata['artist'][0],
self.metadata['title'][0],
self.started_at,
self.metadata['album'][0]
)
10 changes: 10 additions & 0 deletions pyrana/plugins/metadatareader.py
@@ -0,0 +1,10 @@
from feather import Plugin

class MetadataReader(Plugin):
listeners = set(['songstart'])
messengers = set(['metadataread'])

def songstart(self, payload):
import mutagen
info = mutagen.File(payload, easy=True)
self.send('metadataread', dict(info))
3 changes: 3 additions & 0 deletions pyrana/resources/options.ini
Expand Up @@ -6,3 +6,6 @@ update_pidgin_status: true
music_directory: ~/music
seen_file: ~/.config/pyrana/seen

[lastfm]
username: your_username
password: your_password

0 comments on commit a6af0eb

Please sign in to comment.