Lyrics screenlet
Conky
Score 77%
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 :P)
Steps to create synchronized lyrics:
[li]find unsynchronized lyrics (later will be implemented by the screenlet itself)[/li]
[li]drag&drop text or file with lyrics to screenlet[/li]
[li]during playing song, use Space key to insert time info[/li]
[li]save or upload lyrics before screenlet switch to another song :)[/li]

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:

6 years ago

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 :D
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

waltergallegog

3 years ago

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.

Report

imamulmqn

3 years ago

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

Report

saeednm

4 years ago

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.

Report

frznn

4 years ago

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.

Report

pchaubal89

4 years ago

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.

Report

hadnet

5 years ago

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

Report

dencer

5 years ago

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

Report

hadnet

5 years ago

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

Report

dencer

5 years ago

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

Report

hadnet

5 years ago

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

Report

hadnet

5 years ago

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

Report

hadnet

5 years ago

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

Report

asun200

5 years ago

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

Report

dencer

5 years ago

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.

Report

torturedutopian

5 years ago

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 !

Report

dencer

5 years ago

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.

Report

thecurseddevil

6 years ago

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

Report

thecurseddevil

6 years ago

*running

Report

stratok

6 years ago

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

Report

venkatanaresh

5 years ago

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

Report

KrakenHimoto

4 years ago

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

Report

marcocolombini

6 years ago

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

Report

marcocolombini

6 years ago

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

Report

marcocolombini

6 years ago

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


Report

marcocolombini

6 years ago

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?

Report

6 years ago

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 :D
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

File (click to download) Version Description Filetype Packagetype License Downloads Date Filesize OCS-Install DL
Details
version
0.7.2
updated Mar 30 2011
added Feb 03 2009
downloads today
0
page views today 0