The selection menu
The manual input option
This idea came to us when scanning through our music library. It was tedious, looking through the sea of bare music files with no description other than a measly title, to find the track we so desperately needed to hear. We were motivated to create an automatic process which would flesh out an entire music library, so that every song contains much needed information for the convenience of the user. Lyrical Tag has another focus, which is to provide its service with minimal effort by the user. The interface is simple and user friendly, so as to remove the frustration the software is trying to relieve in the first place.
What it does
Lyrical Tag is built for the purpose of gathering more information of a .mp3 file. When the folder containing songs is selected, it scans through a list of songs to check existing properties, then it adds more information such as the album cover, track number, release date, and lyrics by using the song title and artist name to search for the additional information from gracenote and PyLyrics’ api. Then it adds the properties into the .mp3 file. If the song selected doesn’t have the properties required for the search (song title and artist name), then the program will take the .mp3 file name to check if it contains the song name and artist name. If the .mp3 file’s name doesn’t contain song and artist name either, then the program will ask the user manually input the song title and artist name for the searching process. Once the process is finished, the program will add the new properties of the song to the existing .mp3 file. Now, you will have a much more organized music library!
How we built it
The program can be differentiated into multiple main functionalities which group members tackled separately and finally combined to bring you Lyrical Tag. These include, respective to order:
- The GUI which links the functions to buttons
- Detection of song and artist name, either by the title of the mp3 file or by extracting hidden descriptions preset in the file.
- Using an API, the program retrieves information for the songs given song and artist
- Embeds the information returned by the API into the mp3 file
Challenges we ran into
- The biggest challenge we ran into was to get the program to scan through the properties of the .mp3 file and add additional information to the existing file. To overcome this challenge, we used a package called mutagen to scan through the id3 tags to identify the properties of the .mp3 file. We used api to gather all the missing information the file needed and add them to the file’s property.
- The link between the tkinter GUI and the function to scan through the file and add properties is another challenge we faced. Since two of us worked on the interface, while the other two worked the functionalities of the program. When we tried to combine those two programs into one, we had some troubles linking the functions between the two.
Accomplishments that we're proud of
JAMHACKS is the first hackathon we’ve ever attended, and Lyrical Tag is the first complete program we’ve ever created. In addition to that, Lyrical Tag can actually be used unlike the generic tutorials and school projects we’re usually restricted to. Therefore the act of creating Lyrical Tag itself is a great achievement for all of us.
What we learned
- The usefulness of API’s and many different types of modules and packages that we have never used before, such as mutagen for id3, urllib for easy access of web content, and ttk for an attractive yet practical interface
- How to efficiently combine numerous numbers of packages and modules together in order to create a polished product that is usable for daily applications and simply make one’s life easier
- The skills to work in a team towards one single goal, and to organize the tasks evenly for the maximum possible efficiency with the given time
What's next for Lyrical Tag
- Improve UI to make it more user friendly and inviting
- Find better API’s which contains a larger music library with a wider variety of artists
- Potentially adding a music streaming function that will play the song while displaying the lyrics in real time.
- Switch out ttk for a different module for a more consistent look between different operating systems.
- Allow different file types other than mp3
- Increase efficiency and speed of program