Lyrics screenlet

Conky

Source i (link to git-repo or to original if based on someone elses unmodified work):

Add the source-code for this project on opencode.net

38
Become a Fan
7.6

Description:
This screenlet downloads and display synchronized lyrics of music files playing in the audio player.

Version 0.7.0 allows to create and upload lyrics to the database (for some time it will be used for testing, but I'll try not to delete anything )
Steps to create synchronized lyrics:
find unsynchronized lyrics (later will be implemented by the screenlet itself)
drag&drop text or file with lyrics to screenlet
during playing song, use Space key to insert time info
save or upload lyrics before screenlet switch to another song

Requires:
python-numpy can be needed on Ubuntu and possibly some other distributions in the case of crashing when you move cursor over control buttons
python-chardet for better dealing with different lyrics encoding, but it's optional

Set lyrics offset:
by 0.1s: Shift+Up/Down key
by 0.5s: Up/Down key

Supported players:
Rhythmbox
Exaile
Banshee
Audacious
Amarok
Music Player Daemon based players
Quodlibet - need to install plugin in package
Listen 0.6 and higher
Gmusicbrowser
Xmms - need to install pyxmms
Any other that support MPRIS API (direct or with plugin) - vlc, Songbird ...

Supported lyrics sources: ALSong, minilyrics, lrcdb
Last changelog:

0.7.2
- fixed bug in saving/restoring cairo state in LyricsPanel visible on default theme
- searching lyrics on disk with ignoring case and accent and some bug fixes
- support of "offset" metadata in lyrics files
- added settings option - format of filename for saving/loading lyrics with automatic
conversion between them
- properties window works with newer screenlets package version

0.7.1
- fixed accessing of the song info metadata - doesn't crash on missing metadata
- works with a new gtk version (deprecation warning turned into TypeError)
- fixed bug in saving/restoring cairo context (in Widget and LyricsPanel classes)

0.7.0
- added possibility to upload lyrics to the database and using this database for searching
- reporting a missing lyrics to the database
- creating synchronized lyrics works again

0.6.9
-lyrics align settings: left, center, right
-lyrics translation on/off switch in menu
-update translation settings immediately
-safe minimizing (use when screenlet itself moves on desktop)
-works in gnome 2.30 (bug is in pycairo, not screenlet!)
0.6.8
- lyrics searching bug fix, now it should really works, I promise
0.6.7
- update of lyrics engine: ALSong now work again (it stopped to work at all after they changed ip address), minilyrics has better encoding handling
- theme update

older logs in changelog file


Ratings & Comments

339 Comments

waltergallegog

Hi, First that all I wanna thank you for this great app. Now, my problem that the screenlet has no background in the dark or transparent theme. The lyrics are displayed correctly, and even the color adaptation works fine. In the transparent theme there is no background at all (As it should be), but in the dark theme, at the end of the song, when the lyrics are finishing, the background appears, but only at the bottom, just like if the background were part of the lyrics. This images explain better what I mean: At the start or middle of the song http://s2.subirimagenes.com/imagen/previo/thump_8912754screenshot-from-2014.png At the end http://s2.subirimagenes.com/imagen/previo/thump_8912757screenshot-from-2014.png Well, thats it, I hope you can help me. OS: Linux Mint 16 with cinnamon.

imamulmqn

http://imamul-mqn.blogspot.com/ http://imamul-mqn.blogspot.com/2014/01/Software-Point-of-Sales-Online-Omega-POS-Cloud.html http://seo-mqn.blogspot.com/2014/02/Software-Point-Sales-Online-omega-cloud.html http://seo-mqn.blogspot.com

saeednm

runnig "python LyricsScreenlet.py" in the command line I got this error : No module RSVG , graphics will not be so good .... . . . and it is solved by installing python-rsvg package ! but as "pchaubal89" said in the comments lyrics screenlet doesn't work anymore since lrcdb.org (the place where it got the lyrics from) has shutdown.

frznn

I can't get the screenlet work. Running from the terminal i get this: ************************** iconify Restored instances from session 'default' ... NEW MPRIS PLAYER <players.mpris.MprisApiPlayer instance at 0x8be4d6c> connect signals is_playing Traceback (most recent call last): File "LyricsScreenlet.py", line 1546, in doColorAdaptation difference = abs(self.lyricsPanel.color_highlight[0] - textColor[0]) + abs(self.lyricsPanel.color_highlight[1] - textColor[1]) + abs(self.lyricsPanel.color_highlight[2] - textColor[2]) UnboundLocalError: local variable 'textColor' referenced before assignment NEW MPRIS PLAYER <players.mpris.MprisApiPlayer instance at 0x967b9cc> connect signals is_playing NEW MPRIS PLAYER <players.mpris.MprisApiPlayer instance at 0x968b3ac> connect signals is_playing Traceback (most recent call last): File "LyricsScreenlet.py", line 1546, in doColorAdaptation difference = abs(self.lyricsPanel.color_highlight[0] - textColor[0]) + abs(self.lyricsPanel.color_highlight[1] - textColor[1]) + abs(self.lyricsPanel.color_highlight[2] - textColor[2]) UnboundLocalError: local variable 'textColor' referenced before assignment get elapsed Can't get elapsed time information from MPRIS API: org.freedesktop.DBus.Error.UnknownMethod: Interfaccia "org.freedesktop.MediaPlayer" inesistente sull'oggetto nel percorso /Player NEW MPRIS PLAYER <players.mpris.MprisApiPlayer instance at 0x968b60c> connect signals is_playing get elapsed Can't get elapsed time information from MPRIS API: org.freedesktop.DBus.Error.UnknownMethod: Interfaccia "org.freedesktop.MediaPlayer" inesistente sull'oggetto nel percorso /Player get elapsed Can't get elapsed time information from MPRIS API: org.freedesktop.DBus.Error.UnknownMethod: Interfaccia "org.freedesktop.MediaPlayer" inesistente sull'oggetto nel percorso /Player get elapsed and so on...(looping) Effects: i can see the screenlet, it just don't work.

pchaubal89

I believe the lyrics screenlet doesn't work anymore since lrcdb.org (the place where it got the lyrics from) has shutdown. I'm looking into alternatives to lrcdb's api. Lets hope someone has something similar with an open api.

hadnet

Hi, first, congrats for you screenlet, is awesome, but I've a problem to save my lyrics. The Save button is desactived, ex. when the music has no lyrics, I use the drag&drop and use the SPACE to set info time, etc, but I cant save it cause the save (harddisk) button doesn't work. Because of this , everytime I want hear that music, I've to drag&drop, set the time info with space again. Can help me? ps: sorry, my english is horrible

dencer

You must first allow saving lyrics on disk in properties, then it should be active and work for automatic saving of downloaded or manually created lyrics

hadnet

Thanks for help, but the properties option doesn't work, I click on it and nothing appear. How fix this? I've installed the 0.72 version

dencer

As a temporary solution, change screenlet's configuration in ~/.config/Screenlets/Lyrics/default/Lyrics1.ini file by adding line (or editing if already exists): save_lyrics=True

hadnet

OH thanks a lot man, does works, but can I change font color too?

hadnet

OH thanks a lot man, does works, but can I change font color too?

hadnet

man, now the save button is actived and I can save lyrics in my music folder, but when I play the music, it doesn't load the lyrics saved and not even recognize it. Thanks in advance

asun200

Thank you for this great screenlet, very cool. Wondering about add deadbeef player ^__^

dencer

Try it with deadbeef-mpris-plugin. I downloaded one version from http://sourceforge.net/projects/deadbeef/files/plugins/0.5.1/mpris-2.1.zip/download, but player failed to load it.

torturedutopian

Congrats for this very useful screenlet ! Just a question : is it possible to make it more discreet ? Indeed, when lyrics are not found or my audio player is not started, there is still a big icon on my desktop. Also, for some reason, I cannot access the settings windows (tried the latest version too) Thanks again !

dencer

You can do it in settings :( (by checking Use Tray Icon under Lyrics tab). But you can configure it also in config file - in ~/.config/Screenlets/Lyrics/default/Lyrics1.ini add option minimizeToTray=True (I hope that nothing has changed in newer version). But I think this should be already fixed in some version, probably at https://launchpad.net/~indiv-screenlets-dev. I will try to merge both versions and keep it up to date here.

thecurseddevil

i guess u know it by now but just to report it lyrics screenlet on gnome shell doesnt escape the dash/dock and the area where the currenty tunning app is displayed

thecurseddevil

*running

stratok

It works like a charm, I literately just made an account so I could congratulate the creator for a fantastic piece of software =)

venkatanaresh

Ya, i am just registered to congrats the creator. Thanks a lot

KrakenHimoto

Acabo de hacer exactamente lo mismo, registrarme para votar tan magistral obra.

marcocolombini

Hi dencer, tried the new version with the same accented two songs and both lyrics are now found. Hope this ends the accent bug. What's bothering me now is the exception error I mentioned in my previous messages. It seems to appear more often than before (or perhaps it is just me!). After the exception the screenlet behaves strangely: the "lyrics engine finished!" message is not displayed anymore if song are changed (even if I think I've seen a new lyrics saved to disk, but I may be wrong) and sometimes the "searching" stamp is displayed forever. When I see it, I usually stop/start and searching on the net starts again with no timeout or conn problems. Best Marco

marcocolombini

Same error happened, this time with an URL timeout. Found another (very minor) bug: when you stop player with lyrics displayed, they are reset to the beginning and keep going 'til lyrics end, instead of stopping. Lyrics should display some "no song playing" message and go to tray, instead. This is another thing you can look at later, anyway. Bye Marco

marcocolombini

After this the search on the net stopped working until a restart was issued. INFO:LyricsScreenlet:lyrics engine finished! Exception in thread Thread-533: Traceback (most recent call last): File "/usr/lib64/python2.7/threading.py", line 530, in __bootstrap_inner self.run() File "/usr/share/screenlets/Lyrics/lyricsengine/engine.py", line 29, in run self.finishCallback() File "/usr/share/screenlets/Lyrics/lyricsengine/engine.py", line 167, in onDownloaderFinish self.finishCallback() File "/usr/share/screenlets/Lyrics/LyricsScreenlet.py", line 572, in onEngineFinish self.lyricsEngine.reportMissingLyrics(self.songInfo) File "/usr/share/screenlets/Lyrics/lyricsengine/engine.py", line 214, in reportMissingLyrics response = urllib2.urlopen(req) File "/usr/lib64/python2.7/urllib2.py", line 126, in urlopen return _opener.open(url, data, timeout) File "/usr/lib64/python2.7/urllib2.py", line 391, in open response = self._open(req, data) File "/usr/lib64/python2.7/urllib2.py", line 409, in _open '_open', req) File "/usr/lib64/python2.7/urllib2.py", line 369, in _call_chain result = func(*args) File "/usr/lib64/python2.7/urllib2.py", line 1173, in http_open return self.do_open(httplib.HTTPConnection, req) File "/usr/lib64/python2.7/urllib2.py", line 1148, in do_open raise URLError(err) URLError: <urlopen error [Errno 111] Connection refused> DEBUG:LyricsScreenlet:MINIMIZING minimalizing screenlet ************************** DEBUG:LyricsScreenlet:######## Song Changed: /d1/users/col/IPOD/Paolo Conte/Una faccia in prestito/17_-_L'incantatrice.mp3 DEBUG:LyricsScreenlet:searching lyrics on disk DEBUG:LyricsScreenlet:lyrics should be here: None DEBUG:LyricsScreenlet:set elapsed: 0.699 DEBUG:LyricsScreenlet:redraw in onElapsed DEBUG:LyricsScreenlet:######## Song Changed: /d1/users/col/IPOD/Zucchero/Snack Bar Budapest/08_-_Sei di mattino.mp3

marcocolombini

Hi dencer, checked the offset, works nicely. Only minor bug: at the beginning, for some time (the offset!) the last lyric in the file is displayed. The title etc (with timestamp 0:00) are displayed after the offset. Could you eliminate this and (possibly) do not offset any 0:00 field? The accented problem isn't completely fixed: when I played an accented song (lyrics on disk found by your screenlet some time ago) it is not found on the net and, worse, is not found on disk, too. Looks like the same slash missing in the file path as before. Strangely enough, the one i tested previously is correctly found on disk. I include the debug for the two songs below. I have not seen any improvement yet, for the search on the net with wildcards. Would it be possible to have some debug output on the fields that are actually searched? Without it I can't see if lyrics are not found because they are not there or because of the accents. Thanx a lot >>>> SONG FOUND ON DISK DEBUG:LyricsScreenlet:######## Song Changed: /d1/users/col/IPOD/Fabrizio De Andre/In Direzione Ostinata E Contraria/01_-_Amore Che Vieni Amore Che Vai.mp3 Start TimeLine is_playing CHANGE LYRICS STOP ANIMATION SET TIME 200.000000 STOP ANIMATION Song Info: {'album': dbus.String(u'In Direzione Ostinata E Contraria', variant_level=1), 'artist': dbus.String(u'Fabrizio De Andr\xe9', variant_level=1), 'file': '/d1/users/col/IPOD/Fabrizio De Andre/In Direzione Ostinata E Contraria/01_-_Amore Che Vieni Amore Che Vai.mp3', 'title': dbus.String(u'Amore Che Vieni Amore Che Vai', variant_level=1)} Fabrizio De André/In Direzione Ostinata E Contraria/Amore Che Vieni Amore Che Vai.lrc {'album': dbus.String(u'In Direzione Ostinata E Contraria', variant_level=1), 'artist': dbus.String(u'Fabrizio De Andr\xe9', variant_level=1), 'file': '/d1/users/col/IPOD/Fabrizio De Andre/In Direzione Ostinata E Contraria/01_-_Amore Che Vieni Amore Che Vai.mp3', 'title': dbus.String(u'Amore Che Vieni Amore Che Vai', variant_level=1)} DEBUG:LyricsScreenlet:searching lyrics on disk ....... searching on disk /d1/users/col/LYRICS Fabrizio De André/In Direzione Ostinata E Contraria/Amore Che Vieni Amore Che Vai.lrc matching_folders: ['/d1/users/col/LYRICS/Fabrizio De Andr\xc3\xa9/In Direzione Ostinata E Contraria'] amore che vieni amore che vai.lrc DEBUG:LyricsScreenlet:lyrics should be here: /d1/users/col/LYRICS/Fabrizio De André/In Direzione Ostinata E Contraria/Amore Che Vieni Amore Che Vai.lrc lyrics from file: /d1/users/col/LYRICS/Fabrizio De André/In Direzione Ostinata E Contraria/Amore Che Vieni Amore Che Vai.lrc TAGS {} >>>>>>>>>SONG NOT FOUND ON DISK DEBUG:LyricsScreenlet:######## Song Changed: /d1/users/col/IPOD/Fabrizio De Andre/In Direzione Ostinata E Contraria/10_-_Khorakhane (A Forza Di Essere Vento).mp3 Start TimeLine is_playing get elapsed CHANGE LYRICS STOP ANIMATION SET TIME 200.000000 STOP ANIMATION Song Info: {'album': dbus.String(u'In Direzione Ostinata E Contraria', variant_level=1), 'artist': dbus.String(u'Fabrizio De Andr\xe9', variant_level=1), 'file': '/d1/users/col/IPOD/Fabrizio De Andre/In Direzione Ostinata E Contraria/10_-_Khorakhane (A Forza Di Essere Vento).mp3', 'title': dbus.String(u'Khorakhan\xe9 (A Forza Di Essere Vento)', variant_level=1)} Fabrizio De André/In Direzione Ostinata E Contraria/Khorakhané (A Forza Di Essere Vento).lrc {'album': dbus.String(u'In Direzione Ostinata E Contraria', variant_level=1), 'artist': dbus.String(u'Fabrizio De Andr\xe9', variant_level=1), 'file': '/d1/users/col/IPOD/Fabrizio De Andre/In Direzione Ostinata E Contraria/10_-_Khorakhane (A Forza Di Essere Vento).mp3', 'title': dbus.String(u'Khorakhan\xe9 (A Forza Di Essere Vento)', variant_level=1)} DEBUG:LyricsScreenlet:searching lyrics on disk ....... searching on disk /d1/users/col/LYRICS Fabrizio De André/In Direzione Ostinata E Contraria/Khorakhané (A Forza Di Essere Vento).lrc matching_folders: ['/d1/users/col/LYRICS/Fabrizio De Andr\xc3\xa9/In Direzione Ostinata E Contraria'] khorakhané (a forza di essere vento).lrc DEBUG:LyricsScreenlet:lyrics should be here: None Nothing on disk 1636089108a3cb96db6213c250ec046a search on net >>>>>>>>>> HERE IS THE SEARCH RESULT (I have removed some "get elapsed" ############ Elapsed Event ELAPSED 1 fading = False DEBUG:LyricsScreenlet:set elapsed: 1.366 SET TIME 1366.000000 STOP ANIMATION DEBUG:LyricsScreenlet:redraw in onElapsed ALSong Server2 Lyrics Count: 0 start alsong start minilyrics minilyrics start lrcdb start lyricsscreenlet not well-formed (invalid token): line 1, column 0 Minilyrics Lyrics Count: 0 end of response ALSong Server1 Lyrics Count: 0 end of response ALSong Server2 Lyrics Count: 0 INFO:LyricsScreenlet:lyrics engine finished! >>>>>>> Is it the "not well-formed" ok?

Pling
0 Affiliates
Details
license
version 0.7.2
updated
added
downloads 24h 0
mediaviews 24h 0
pageviews 24h 0

More Conky from dencer:

AnotherFolderView Screenlet
dencer
last update date: 15 years ago

Score 6.1

Other Conky:

System Status
Whise
last update date: 17 years ago

Score 5.0

Genetic code
Whise
last update date: 17 years ago

Score 5.0

BCCRScreenlet
gartuz
last update date: 17 years ago

Score 5.0

Diggler
Whise
last update date: 17 years ago

Score 5.0

Comic
Whise
last update date: 17 years ago

Score 5.0

Clear-enGlish Theme pack (Picframe Theme
ClearenGlish
last update date: 17 years ago

Score 4.7