diff -r 981be8773be7 -r f0c87fb62b66 extractors/extractor-taglib.cxx --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extractors/extractor-taglib.cxx Sat Feb 12 17:03:08 2011 +0300 @@ -0,0 +1,76 @@ +/* Copyright (C) 2003 Scott Wheeler + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +#include +#include + +using namespace std; + +TagLib::String formatSeconds(int seconds) +{ + char secondsString[3]; + sprintf(secondsString, "%02i", seconds); + return secondsString; +} + +int main(int argc, char *argv[]) +{ + for(int i = 1; i < argc; i++) { + + cout << argv[i] << endl; + + TagLib::FileRef f(argv[i]); + + if(!f.isNull() && f.tag()) { + + TagLib::Tag *tag = f.tag(); + + cout << "TITLE:" << tag->title() << endl; + cout << "ARTIST:" << tag->artist() << endl; + cout << "ALBUM:" << tag->album() << endl; + cout << "YEAR:" << tag->year() << endl; + cout << "COMMENT:" << tag->comment() << endl; + cout << "TRACK:" << tag->track() << endl; + cout << "GENRE:" << tag->genre() << endl; + } + + if(!f.isNull() && f.audioProperties()) { + + TagLib::AudioProperties *properties = f.audioProperties(); + + int seconds = properties->length() % 60; + int minutes = (properties->length() - seconds) / 60; + + cout << "BITRATE:" << properties->bitrate() << endl; + cout << "SAMPLERATE:" << properties->sampleRate() << endl; + cout << "CHANNELS:" << properties->channels() << endl; + cout << "LENGTH:" << minutes << ":" << formatSeconds(seconds) << endl; + } + cout << endl; + } + return 0; +}