ID3Lib - A tag library for all seasons

ID3Lib [ Download ]
As one may have derived from previous posts, I have a project the uses MP3s quite heavily. As such, retrieving tag data from these is quite an important thing. Having recently migrated my personal server to Windows, I needed a non-Linux variant of my previous tag read. I thought that while I was at it I could add an additional feature, namely saving embedded album art. Unfortunately, I was unable to find any clear directions on how to do so using TagLib, so I created my own library. Three different times. In three different languages. A C++ version, a .NET version and, finally, a PHP version.
Each of these libraries works pretty similar, but to give you the general idea, I'll write out a simple program for each.
- #include <iostream>
- #include "id3lib.h"
- using namespace std;
- void main () {
- ID3Lib id3("my.mp3"); // Create the object
- if (!id3)
- cout << "Unable to parse file";
- else {
- cout << "Title: " << id3.artist() << "n"; // Output title using shortcut method
- cout << "Album: " << id3.tag("TALB") << "n"; // Can retrieve any tag with this method
- id3.saveAlbumArt ("album_art.jpg"); // Save any embedded picture
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Text;
- using Id3Lib_Net;
- namespace Id3LibNet_Test
- {
- class Program
- {
- static void Main(string[] args)
- {
- Reader t = new Reader("my.mp3"); // Load the MP3 file
- Console.WriteLine(t.title()); // Print out the title using shorthand method
- Frame album = t.getFrame("TALB"); // All loaded tags can be retrieved this way
- t.savePicture ("album_art.jpg");
- }
- }
- }
- include ("id3lib.php");
- $id3 = new ID3Lib ("my.mp3"); // Create the ID3Lib object
- if (!$id3->getErr()) { // Will be null if load was successful
- echo ("Title: ".$id3->title); // A shortcut for getting the title
- echo ("Album: ".$id3->tags->TALB); // All tags can be accessed this way
- $id3->savePicture ("album_art.jpg"); // Saves an embedded picture
- }
- else
- echo ("There was an error opening the MP3: ".$id3->getErr());
- ?>
Each library includes a set of methods/properties for the following common tags: title, album, artist, disc, track, year.
All three libraries are licensed under the GPLv3 and have the original source code, so you can do with them what you wish, though credit and a link back here is always nice :-).
ID3Lib [ Download ]
Disclaimer: I have only tested these on MP3s I have available to me, so it's very possible that you may have issues with this library. If you do, please leave a comment and I'll update the libs accordingly.
Comments
Wazzup, bitch?
Reply