Whole Album/Directory Lyrics Tool

New Version 1.0.0.20

:stuck_out_tongue:

SPEAKING OF WHICH:
This tool now defaults to LyricsWiki.com as its lookup; however, per Luctus's request, I have the option of DarkLyrics.com lookups as an alternative. Please review the changes in the Readme.pdf file, but feel free to ask for clarification or assistance. I have also just added ViewLyrics.com as an option, per Zedicus's request.

You can also just use the executable outside of MP3tag to get the lyrics ahead of time for complete directories or specific files. That way, you can just have an "import lyrics" action in MP3tag, and thereby skip the first 2 of the 3 steps in the above PDF. However, running the executable relies on parts of Windows that may not ship standard in European editions of Windows. That is why there is the option to create an 'Export file' from within MP3tag.

New "-quiet" feature to bypass summary window, and improvements to code that may address the 'variable error' issues that soehest found.

New "-nostrip" feature to skip the check for cell phone ringtone advertisement lines in lyrics from LyricsWiki. This feature is to address the missing lines that tappan is experiencing.

Also, like soehest also found, LyricsWiki has some songs that they give 'teaser' lyrics for, but are not allowed to display full lyrics. these are now treated as if the lyrics were not found at all.

As PeterPan176 found, there have been some changes on LyricsWiki which were adding "junk" Java code to the beginning and end of all lyrics. Attempted a fix in version 1.0.0.20.

Feedback welcome and appreciated.

~Matt

1 Like

This tool will be awesome! I've been wanting to tag lyrics to a bunch of files at once (and I'm sure I'm not the only one), and this works great...when it works. The DarkLyrics script works good for this, except it only works with metal...which I have a lot of, but I'd like to tag more than that, of course. I get AutoIt errors, sometimes it wants to save non-text files, or it doesn't find stuff on the first try. Sometimes it notifies you it's done and sometimes it doesn't. Sometimes it works perfectly when run on a couple albums. I haven't been able to figure out a pattern. But when it works right, I couldn't ask for much more. Please keep up the work on it so it works consistently! Thanks for posting it in the first place! Unfortunately, I don't have any ideas to help with the instability...even AutoIt is a bit over my head. I did make an import action though, for those who want instructions:

Actions -> New -> (Name of action group = Import lyrics, for example)

New -> Select Action type = Import text file -> OK

Field = UNSYNCEDLYRICS, Filename = %title%.txt -> OK -> OK

Hope that can help someone else test this out!

alright. sorry i've been out of town and such during the summer, and therefore taken a long time to respond.

what errors do you get, if you can bring them up again? I've not gotten ANY auto-it errors on my machine personally, so i need to know what it's complaining about on your system.

I'm still working on making a good process for saving incorrect file-names. i'm realizing now how many songs i have whose titles don't create filenames allowed under windows. i hadn't heard from anyone else using this so i just wasn't worrying about it. now i shall renew my efforts. :slight_smile:

When you say "it doesn't find stuff on the first try" ... do you change anything about the tags on the file and then it works, or you just run it again? i've noticed a few times where it runs but exits immediately and i am tracking down that bug. just want to know what you're speaking of, to make sure it's the same issue as i've seen.

as far as the notification, i'm working on making it so it only runs the program as one instance instead of however many files you selected lol.
what's the max. amount of songs you've successfully run this with?

THANK YOU SO MUCH FOR YOUR FEEDBACK. This is one of my most used tools personally, even if it's rough, but feedback will make it much more. :slight_smile:

After using the script for a little bit I found a component for foobar2000 that is extremely simple and great for getting lyrics, Lyrics Grabber (foo_lyricsgrabber). http://www.hydrogenaudio.org/forums/index....showtopic=62821 . So I don't have too much feedback. But I like to work in mp3tag rather than foobar2000, since I don't like how you can spend hours with that foobar2000 interface to set it up nicely, and I normally use Winamp for my player.

When the script wouldn't find anything, I wouldn't change the mp3 files, I would just run it again, and would often get better, or worse results. But besides running it again, I didn't make changes.

I think I may have run about 100 songs successfully, but based on how it's operating, it doesn't seem like the number of files chosen has anything to do with the success of getting successful results. But I can't exactly remember now. I think it may have worked fine when choosing one file at a time.

If you release a newer version, I'd be happy to test it out again. Maybe checking out that foobar component can help. It's impressive, I've had no problems with it and it gets good quality lyrics. One note though on that foobar2000 component if you look into it, I did have to change the lyrics field from its default to UNSYNCEDLYRICS to get the compatibility I wanted. Thanks for your script, I hope I've been of help!

i'll look into their work as well, maybe bring something to MP3tagger that'll perform similarly. looks like they're using lyricswiki for their data; i may see how complete that database is vs. the lyricsplugin i've been using

i'll try to figure out why it works sometimes and not others more aggresively

the number of files shouldn't affect its working or not, but may slow your computer down is why i put that idea of a limit in there, since it runs a separate instance of the program for every file. i am thinking of a way to change it so you run the program once with all the files, rather than separately.

you've been of great help and i will certainly post back with a new version in the next couple weeks. going out of town this weekend again, or i'd have one for you and i to try by monday haha.

Original post edited

I got an error:

***** ERROR: TIMEOUT	Did NOT find lyrics for '0:03:41' by French Pop.

Details.
Artist: Vanessa Paradis
Title: Be My Baby
Album: Vanessa Paradis
Year: 2001
Genre: French Pop

In my email, I saw that you asked about the IP address. LyricsPlugin.com changed over to using a PHP content redirector that queries a DNS 'viplyrics.com'. I know when I watch my IP addresses, I saw some 72 addresses instead, for instance. Not sure what's going on in the backend of their site, but i do an HTML body read to find a DIV class, and I've never had any security issues. I downloaded their JSes and found no threats or worrisome redirects aside from what I mentioned.

The program can output to a log file if you use the commandline. I haven't built in the /? switch, but the syntax for command line is "Lyrics.exe", and then optionally you can specify a directory, or individual files. If there are individual files, separate them by spaces, and include the full path to the files in quotes.
(for examples:
C:\downloads\Lyrics.exe Z:\Music Files
or
Lyrics.exe "D:\Rob Zombie\Dragula.mp3" "D:\Enya\The Celts.mp3"
or even
Lyrics.exe "E:\MP3 Folder"
)

To output a log file, call "lyrics.exe > C:\LyricsLog.txt" or similar, and tell me what the contents of the log file are.

From the error you describe, the Lyrics executable is pulling '0:03:41' as the Song ID3 tag attribute 'Title', and therefore causing this error. I know I always fix the tags first, in MP3Tag, and
then run the Lyrics tool and the import Action

*********UPDATE:
I've now added a /debug switch to the command line interface that will pop up a window of all the file attributes I'm able to retrieve for each file selected or in the directory selected. Obviously, run the Lyrics.exe with the troublesome file, and add the debug switch like so:
Lyrics.exe "C:\Music\Be My Baby.mp3" /debug

Then that array of file attributes will tell me how your particular OS and files are configured and why, as you say in the details, the Title is not being pulled as 'Be My Baby' but instead as '0:03:41'; also, the artist should be 'Vanessa Paradis' not 'French Pop'. We'll get to the bottom of this difference in attributes if you help me! :smiley:

Well, a remarkable initiative.
Sorry to say that it does not work.
Note:
"http://lyricsplugin.com/" sends only a test page.
"http://www.lyricsplugin.com/" sends only a test page.

I've just downloaded the current version, but it does not work.
--> Note: Do not forget to count up version number 1.0 even for intermediate bug release.

When I did a commandline call ...

lyrics.exe "M:\MUSIK\ROCK\Z\ZZ TOP\1970 - ZZ Top's First Album\01_SomebodyElseBeenShakingYourTree_ZZTOP_ZTFA_1970.mp3" /debug >log.txt

... the /debug switch does nothing.
Redirection to file "log.txt" creates an empty file.
Error message in window: ***** Error retrieving Artist and Title from ''.

When I did this ...

lyrics.exe >log.txt

... and follows the upcoming file open dialog ...
... there came up a window with error message:
" Did NOT find lyrics for '00:02:28' by ."
... there was created a log file output with content:
http://www.lyricsplugin.com/wmplayer03/plugin/?artist=&title=00:02:28

I see no "array of file attributes".

DD.20101106.1446.CET

I have no control over www.lyricsplugin.com, but yes, I do see it's just an apache test page at the root. try this link to see that the domain is working.

I personally hadn't tried to do both the /debug and > log.txt commands
At 6:30 AM all I had in me was enough brain to make the /debug switch activate if it is the last argument passed in.
I'm a little more awake now, and have edited the file. Latest version is 1.0.0.2, thanks for the reminder to increment.

you should get a window like so:

You should better work out the usage and syntax description of your tool.

No window.
I've tried version 1.0.0.7, still the same effect, does not work on my Win XP SP3.

I have no problems to get a lyrics text when using a user defined Mp3tag tool:
[#20]
MTTOOLSNAME=LyricsVIP
MTTOOLSPARAM='Programmable Search Engine by Google(%artist% %title%,' ','+','?','%3F')
MTTOOLSPATH=C:\\Programs\\Internet Explorer\\iexplore.exe
MTTOOLSINST=0

Well, it needs a second click to step from Google to lyricsvip, but it works.

DD.20101107.0311.CET

I just tried this on a Windows XP SP3 box, by typing "lyrics.exe /debug" and the program prompts for directory or files, I chose directory I knew had an MP3 in it, and the screen popped up with the file attributes of the file in that directory.

Low and behold, the extended info is in different places on XP. Got the 1.0.0.8 version catching Windows versions. If I remember correctly, Vista and 7 are the same as far as their extended info. So now it works on XP and Windows 7.

By the way, I was also able to type:
lyrics.exe" "Z:(Do You Wanna Date My) Avatar\Do You Wanna Date My Avatar.mp3" /debug > C:\log.txt
and had no issues under XP or 7... I'm terribly confused why you're not getting the window popping up I said you should either with command line or straight folder/file selection.

I would appreciate your continued testing of this now that XP is supported... I realize it's frustrating from your end, but you've helped.

As a side note, I ran this tool on 10,724 MP3s on a network drive today over gigabit switch. Took 8.5 hours to query for every one of those, but all I had to do to start it was click on the 'directories' button and select the root of the network-mapped music drive, and let it run in the background. that kind of ease and use is what I want more than just myself to have!

When calling Lyrics.exe with parameter on the commandline there should not popup a file open oder folder open dialog, right?
See attached screenshot what happened.


I do not understand "extended info is in different places".
The artist and title info is in the ID3v2.4 tag within the mp3 file.

DD.20101107.0755.CET


The window always pops up a summary of what happened after running on all files selected or in the directory selected, so that you know song by song if lyrics were found. That is NOT an error. The screenshot you attached is normal.
In your screenshot, you showed me the end result. what popped up before then? the window I said should pop up for the debug should have shown a vertical array of attributes for the file.
like the 'File Properties' window in the image in the earlier post

I don't pull from the ID3 tag to find the artist and title. I've always been able to use extended file attributes under Windows APIs to find that information on all my systems, and it's worked on other peoples' systems too. That's an array of values returned, with different indexes for the same info. the 'File properties' above is from Windows 7, this is from XP:

Please tell me

  1. if you ever see the 'File Properties' array Window when using on the command line with the
    /debug switch
  2. Just for grins, try lyrics.exe O:\test\t1</i> and tell me what happens.
  3. Either that, or you could always try to use this tool in MP3tag.exe with the 'Tool' settings mentioned in the original post.

The command line is there to just make scripting people happy, it's not actually necessary for you to use it, or even for you to know about it aside from the fact that you're helping test it. The GUI and MP3tag integration do just fine for most things. I want to see it working on a directory with multiple files on your system if you could. It doesn't change any files, just creates txt files from which an 'Action' in MP3tag can import.

Since a picture is worth a thousand words, I'm attaching screenshots under XP and using MP3Tag 2.46a. This is the order things should appear when using under MP3Tag.exe:

http://sites.google.com/site/droidburke/1.jpg
http://sites.google.com/site/droidburke/2.jpg
http://sites.google.com/site/droidburke/3.jpg

Windows doesn't support ID3v2.4 that's why your tool doesn't get artist/title info.

Why do you need to read the Tags ? That is the thing what Mp3tag does brilliantly!

Just change the parameters instead of %_folderpath% to %artist% %title%.

Or am I missing something here ?

Edit 18:39 Spelling Mistake

I changed the test case a bit.
Now using a ID3v2.3 UTF-16 encoded mp3 file, which properties can be seen in the explorer properties sheet.

I let run Lyrics.exe with parameter and option /debug from the command line.
There is no debug window popping up.
But I am not totally sure, because there is a short screen flicker, which could indicate, that there might be a window opened but closed immediately.
Result state see screenshot attached.


Beside the fact, that it is reporting a failure state.

There is no debug window popping up.

Sorry to say, it works not here.

Hmm, I do not want to blow up the test case. I like to keep the test case small and clear.
If it works on the commandline with one file, then it will work with all files, even when invoking the tool from within other applications.

Additional question:
Is the Lyrics.exe tool able to work on systems without Internet Explorer installed?

DD.20101107.1437.CET


Good point!!!!!

DD.20101107.1427.CET

Explain to me why it works on every system I've tried stateside. I've been using MP3s with mainly ID3v2.3 UDF-16. Windows explorer will show the details of each song under detailed view settings.
What's the benefit of ID3v2.4? And I'm going to try that just now, be right back.

The whole point of my tool is that it doesn't need MP3Tag to do its work, but it makes for easy import while using MP3Tag. The limitations of MP3Tag needing to 'Run on every file' or just passing one more general parameter makes it annoying. My first version two years ago opened up a process for each and every song selected; if you selected 50 songs, it spawned 50 processes [run for each file was checked in MP3Tag's Tools]. If you can show me how to configure a tool in MP3tag that will pass in every 'artist|title' of each selected song as a single chunk parameter to a single executable, we can leverage MP3tag to do the work that it does do very well indeed! something like for each song in selection{ %artist%|%title%|}next that doesn't open 50 processes all at once. I'd even settle for it opening 1 process 50 times, though I tried to design this tool to open once, and handle single files or directories or multiple files all seamlessly. Again, the pain of it not working on your side of the ocean... it's incredibly odd and frustrating.

The pain of having to do songs 1 by 1 is the slow, annoying part. this is supposed to bypass that and let you do whole directories, and the directories within that directory. Like I said yesterday, I opened this tool, no MP3Tag.exe running, told it the root of my network music mapped drive, and let it run for 8.5 hours all by itself. So a total of 3 clicks made it find lyrics, if they existed on the site I'm using, to 10,724 songs and store them as individual text files in the same folder as the MP3 file they represented. Then I started MP3Tag.exe, and in my 'Standard' action, I say to try to import UNSYNCEDLYRICS from %_filename%.txt.

Lyrics.exe opens an invisible Internet Explorer page to retrieve the data. Just like lyricsplugin.com's windows media player plugin, this tool relies on Internet Explorer and windows media player to be installed. Perhaps that's what's causing the hangup. Do you people having the problems use the EU version of XP (sorry, American here, we have no windows shipping without internet explorer and wmp)?

The screenshot you showed shows the issue. Your Windows XP is not retrieving the extra info, like so:

The only way to get this tool to work for people who's Windows doesn't tell them the information about their music files natively is if someone can tell me how to pass a list of every selected file's 'title|artist' on as one argument in the 'Tools' section.
To get this straight, one last time... If you guys set your type of folder view to 'Music' under the customize tab of folder properties in Windows Explorer, you can't then view in Details mode for that folder and see these columns:

???

That boggles my mind. I'm going to have to break out my MSDN's European versions of XP if that is seriously the case.

Try to implement something like Winamp's option /ADD.
Try to implement some queue manegement.
Try to make your app sensible for a second starting/running process of itself, fetch the parameter from the app's commandline, put it into a queue list and kill the second process.

DD.20101107.1715.CET