14

I have a large music library (most of them are .mp3 & .m4a) and none of them have lyrics. Is there any program or plug-in that automatically adds lyrics to all of my music by querying the internet?

Because I don't usually have an Internet connection I need a program which automatically adds all lyrics to music file tags so I can view them offline.

  • 2
    Add lyrics how? To each music file? What format is your music collection? How do you intend to view the lyrics that is found? – fossfreedom May 5 '14 at 16:49
  • All I want is that when music files(mostly .mp3 & .m4a) get played in a music player and I click on "display lyrics" It should be able to display lyrics.And I need some software which does that for every music file(all my tags for music files are correct). – Bharat May 6 '14 at 4:13
  • 2
    This comment is far different from the original question. You should at least update the question to make it reflect your new aims. – Luís de Sousa May 7 '14 at 11:11
  • Amarok and Clementine have an option to edit the lyrics which are fetched. I haven't tried it, but it must store them somewhere local and then retrieve them for you. Doing this on a song by song basis would be really tedious, but it would probably work. – Joe May 8 '14 at 7:17
  • There is a nice software called clementine. Try it. It has support for different lyrics online DBs. (Fork of the old Amarok 1*). – ddmytrenko Oct 19 '15 at 20:08
5
+25

This is a semi answer as I don't know your environment and the code I provide is intended to serve as an example only - running it as is shouldn't do any harm but I can't give any guarantee.

Tasks like this can be dealt with using simple bash scripts, e.g. in the following example I use eyeD3 to extract artist and title, then a free wikilyrics mirror to fetch the lyrics and then eyeD3 again to save the new tag. I encourage every one who will use this code to look up another lyrics API, as exploiting the same service over and over can be considered malicious.

#!/bin/bash

_TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>'
_SRY="Sorry, We don't have lyrics for this song yet."

[ "$1" ] && _PATH="$1" || _PATH=$PWD

cd $_PATH

for _FILE in {*.mp3,*.m4a}; do
    if [[ -r $_FILE ]]; then
        _SONG=$(eyeD3 --no-color "$_FILE" | grep title)

        _ARTIST="${_SONG#*"artist: "}"
        _TITLE="${_SONG%"artist: "*}"
        _TITLE="${_TITLE#"title: "}"

        echo -n "$_ARTIST - $_TITLE"

        _ARTIST="${_ARTIST// /+}"
        _TITLE="${_TITLE// /+}"
        _URL="${_TPL//"<artist>"/$_ARTIST}"
        _URL="${_URL//"<title>"/$_TITLE}"

        _LYRICS=$(wget -qO- $_URL)

        if [ "$_LYRICS" != "$_SRY" ]; then
            eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null
        else
            echo "No lyrics found... skipping!"
        fi
    fi
done

cd $OLDPWD

Instructions (run commands in terminal):

  1. install wget and eyeD3 by issuing sudo apt-get install wget eyed3
  2. save above code to a file, e.g. /home/user/lyrics_fetcher.sh
  3. add permission to run the file: chmod u+x /home/user/lyrics_fetcher.sh
  4. run the file (mind the quotes): /home/user/lyrics_fetcher.sh "path_to_my_album"
  5. you can stop script execution at any time by pressing ctrl+c

I checked this code with "AM" album by Arctic Monkeys and it did sweetly.

If you really want to fetch lyrics for all of your albums at once you can run the script in a loop for each directory, I guess. Still, I wouldn't use it as a final solution - wikilyrics and everyone who supports it by mirroring are good guys and this answer is here to promote thinking, not abuse.

|improve this answer|||||
  • I did exactly as you said,saved the given code as lyrics_fetcher.sh in home and then ran the command in point 2 in the terminal.then ran this command "./lyrics_fetcher.sh /home/bharat/Music/Linkin-park/LIVING-THINGS ", now there is no further output.I am a complete beginner,please help me out.. – Bharat May 10 '14 at 8:20
  • 1. Do you run all commands in terminal? (there should be terminal output) 2. Do you have wget and eyeD3 installed? If not, run 'sudo apt-get install wget eyed3' – cprn May 10 '14 at 11:58
  • @Bharat , you should've used the command ./lyrics_fetcher.sh "/home/bharat/Music/Linkin-park/LIVING-THINGS" In the folder that the script is in. You missed out the quote marks. – Ads20000 May 14 '14 at 9:26
  • 1
    @Ads20000 I added these instructions later on when saw what kind of problem Bharat encountered. He was notified. – cprn May 14 '14 at 12:30
  • I got an error (in red) "'ascii' codec can't encode characters in position 25-26: ordinal not in range(128)" while running the script. What does it mean? – noir1993 Apr 29 '15 at 20:10
3

I recently wrote a python script for Automatically fetching and tagging lyrics to your music. Check it out here. This will download the lyrics as txt file and embed it in your .mp3 file

Youtube Demo.

|improve this answer|||||
1
  • lrc.pl is a pearl script using David Precious' Lyrics::Fetcher package, for batch downloading of lyrics for MP3.

  • Also try the Amarok plug-in Ultimate Lyrics. Ultimate Lyrics is a configurable script that fetches lyrics from many sites.

  • Another option: Lyrics extension for banshee

|improve this answer|||||
  • You havent really answered the question - can you download lyrics en masse - and store these lyrics offline within the music files themselves? – fossfreedom May 12 '14 at 23:11
1

as music fan I can recommend you Guayadeque player, fast and light and full featured player and if I'm not mistaken it's got lyrics extensions by default and there's ability to choose more and which, I'm listening through songs right now and it shows lyrics to every song even band bio. There's posibillity to store lyrics to a song manually too, but it's better to sync with internet of course, anyways it's your choice.

sudo add-apt-repository ppa:anonbeat/guayadeque

sudo apt-get update

sudo apt-get install guayadeque-svn
|improve this answer|||||
  • You havent really answered the question - can you download lyrics en masse - and store these lyrics offline within the music files themselves? – fossfreedom May 12 '14 at 23:11
  • yes it has built-in editor for setting/option to edit song and paste or write lyrics by yourself to a song within player. – JoKeR May 12 '14 at 23:18
  • @JohnnyD. "by yourself" - OP meant to do so automatically in batch, not manually one by one. – cprn May 14 '14 at 12:32
  • @CyprianGuerra maybe I misunderstood what he was asking :-) – JoKeR May 14 '14 at 17:11
1

beets is a command line tool for organising your music library that can fetch lyrics automatically, as well as lots of other things. From the website:

The purpose of beets is to get your music collection right once and for all. It catalogs your collection, automatically improving its metadata as it goes using the MusicBrainz database. Then it provides a bouquet of tools for manipulating and accessing your music.

Specifically, it has a lyrics plugin that fetches lyrics from Lyric Wiki, Lyrics.com, Musixmatch, Genius.com, or a Google custom search API.

The community around it is very active. Check it out!

|improve this answer|||||
0

Mp3nity is free for 1.5 months(maybe). Then you have to buy the premium version. It embeds artworks for albums. You can get lyrics for all your music files at once.

|improve this answer|||||
0

I personally use lyrics finder: https://www.lyricfinder.org/

You can use add folder to have it recursively search through folders and find all music files and then try to find and add lyrics to the ID3-tag of them.

|improve this answer|||||
0

I use lyrico, a python script to download lyrics and embed them into the ID3 or ogg vorbis meta tags.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.