00001 #include <iostream>
00002
00003 #include "metaio.h"
00004 #include "metadata.h"
00005 #include <mythtv/mythcontext.h>
00006
00007
00013 MetaIO::MetaIO(QString fileExtension)
00014 : mFileExtension(fileExtension)
00015 {
00016 mFilenameFormat = gContext->GetSetting("NonID3FileNameFormat").upper();
00017 }
00018
00019
00020
00024 MetaIO::~MetaIO()
00025 {
00026 }
00027
00028
00029
00036 void MetaIO::readFromFilename(QString filename,
00037 QString &artist, QString &album, QString &title,
00038 QString &genre, int &tracknum)
00039 {
00040
00041 artist = album = title = genre = "";
00042 tracknum = 0;
00043
00044 static QString regext = mFileExtension + "$";
00045 int part_num = 0;
00046 filename.replace(QRegExp(QString("_")), QString(" "));
00047 filename.replace(QRegExp(regext, FALSE), QString(""));
00048 QStringList fmt_list = QStringList::split("/", mFilenameFormat);
00049 QStringList::iterator fmt_it = fmt_list.begin();
00050
00051
00052 for(; fmt_it != fmt_list.end(); fmt_it++, part_num--);
00053
00054
00055 fmt_it = fmt_list.begin();
00056 for(; fmt_it != fmt_list.end(); fmt_it++, part_num++)
00057 {
00058 QString part_str = filename.section( "/", part_num, part_num);
00059
00060 if ( *fmt_it == "GENRE" )
00061 genre = part_str;
00062 else if ( *fmt_it == "ARTIST" )
00063 artist = part_str;
00064 else if ( *fmt_it == "ALBUM" )
00065 album = part_str;
00066 else if ( *fmt_it == "TITLE" )
00067 title = part_str;
00068 else if ( *fmt_it == "TRACK_TITLE" )
00069 {
00070 QStringList tracktitle_list = QStringList::split("-", part_str);
00071 tracknum = tracktitle_list[0].toInt();
00072 title = tracktitle_list[1].simplifyWhiteSpace();
00073 }
00074 else if ( *fmt_it == "ARTIST_TITLE" )
00075 {
00076 QStringList artisttitle_list = QStringList::split("-", part_str);
00077 artist = artisttitle_list[0].simplifyWhiteSpace();
00078 title = artisttitle_list[1].simplifyWhiteSpace();
00079 }
00080 }
00081 }
00082
00083
00084
00093 Metadata* MetaIO::readFromFilename(QString filename, bool blnLength)
00094 {
00095 QString artist = "", album = "", title = "", genre = "";
00096 int tracknum = 0, length = 0;
00097
00098 readFromFilename(filename, artist, album, title, genre, tracknum);
00099
00100 if (blnLength)
00101 length = getTrackLength(filename);
00102
00103 Metadata *retdata = new Metadata(filename, artist, "", album, title, genre,
00104 0, tracknum, length);
00105
00106 return retdata;
00107 }