|
MythTV
0.26-pre
|
00001 00002 // Mythmusic 00003 #include "metaio.h" 00004 #include "metadata.h" 00005 00006 // Libmyth 00007 #include <mythcontext.h> 00008 00012 MetaIO::MetaIO() 00013 { 00014 mFilenameFormat = gCoreContext->GetSetting("NonID3FileNameFormat").toUpper(); 00015 } 00016 00020 MetaIO::~MetaIO() 00021 { 00022 } 00023 00030 void MetaIO::readFromFilename(const QString &filename, 00031 QString &artist, QString &album, QString &title, 00032 QString &genre, int &tracknum) 00033 { 00034 QString lfilename = filename; 00035 // Clear 00036 artist.clear(); 00037 album.clear(); 00038 title.clear(); 00039 genre.clear(); 00040 tracknum = 0; 00041 00042 int part_num = 0; 00043 // Replace 00044 lfilename.replace('_', ' '); 00045 lfilename.section('.', 0, -2); 00046 QStringList fmt_list = mFilenameFormat.split("/"); 00047 QStringList::iterator fmt_it = fmt_list.begin(); 00048 00049 // go through loop once to get minimum part number 00050 for (; fmt_it != fmt_list.end(); ++fmt_it, --part_num) {} 00051 00052 // reset to go through loop for real 00053 fmt_it = fmt_list.begin(); 00054 for(; fmt_it != fmt_list.end(); ++fmt_it, ++part_num) 00055 { 00056 QString part_str = lfilename.section( "/", part_num, part_num); 00057 00058 if ( *fmt_it == "GENRE" ) 00059 genre = part_str; 00060 else if ( *fmt_it == "ARTIST" ) 00061 artist = part_str; 00062 else if ( *fmt_it == "ALBUM" ) 00063 album = part_str; 00064 else if ( *fmt_it == "TITLE" ) 00065 title = part_str; 00066 else if ( *fmt_it == "TRACK_TITLE" ) 00067 { 00068 QStringList tracktitle_list = part_str.split("-"); 00069 if (tracktitle_list.size() > 1) 00070 { 00071 tracknum = tracktitle_list[0].toInt(); 00072 title = tracktitle_list[1].simplified(); 00073 } 00074 else 00075 title = part_str; 00076 } 00077 else if ( *fmt_it == "ARTIST_TITLE" ) 00078 { 00079 QStringList artisttitle_list = part_str.split("-"); 00080 if (artisttitle_list.size() > 1) 00081 { 00082 artist = artisttitle_list[0].simplified(); 00083 title = artisttitle_list[1].simplified(); 00084 } 00085 else 00086 { 00087 if (title.isEmpty()) 00088 title = part_str; 00089 if (artist.isEmpty()) 00090 title = part_str; 00091 } 00092 } 00093 } 00094 } 00095 00104 Metadata* MetaIO::readFromFilename(const QString &filename, bool blnLength) 00105 { 00106 QString artist, album, title, genre; 00107 int tracknum = 0, length = 0; 00108 00109 readFromFilename(filename, artist, album, title, genre, tracknum); 00110 00111 if (blnLength) 00112 length = getTrackLength(filename); 00113 00114 Metadata *retdata = new Metadata(filename, artist, "", album, 00115 title, genre, 0, tracknum, length); 00116 00117 return retdata; 00118 } 00119 00125 void MetaIO::readFromFilename(Metadata* metadata) 00126 { 00127 QString artist, album, title, genre; 00128 int tracknum = 0; 00129 00130 const QString filename = metadata->Filename(); 00131 00132 if (filename.isEmpty()) 00133 return; 00134 00135 readFromFilename(filename, artist, album, title, genre, tracknum); 00136 00137 if (metadata->Artist().isEmpty()) 00138 metadata->setArtist(artist); 00139 00140 if (metadata->Album().isEmpty()) 00141 metadata->setAlbum(album); 00142 00143 if (metadata->Title().isEmpty()) 00144 metadata->setTitle(title); 00145 00146 if (metadata->Genre().isEmpty()) 00147 metadata->setGenre(genre); 00148 00149 if (metadata->Track() <= 0) 00150 metadata->setTrack(tracknum); 00151 }
1.7.6.1