23 ".atp|.ra|.dts|.aac|.m4a|.aa3|.tta|.mka|.aiff|.swa|.wv");
26 : m_filenameFormat(
gCoreContext->GetSetting(
"NonID3FileNameFormat").toUpper())
34 QString extension = fi.suffix().toLower();
38 LOG(VB_FILE, LOG_WARNING, QString(
"MetaIO: unknown extension: '%1'").arg(extension));
42 if (extension ==
"mp3" || extension ==
"mp2")
44 if (extension ==
"ogg" || extension ==
"oga")
46 if (extension ==
"flac")
54 if (extension ==
"m4a")
56 if (extension ==
"wv")
73 if (ignoreID3 || !mdata)
81 LOG(VB_GENERAL, LOG_ERR,
82 QString(
"MetaIO::readMetadata(): Could not read '%1'")
102 QString &artist, QString &album, QString &title,
103 QString &genre,
int &tracknum)
115 lfilename.replace(
'_',
' ');
116 lfilename = lfilename.section(
'.', 0, -2);
118 QStringList::iterator fmt_it = fmt_list.begin();
121 for (; fmt_it != fmt_list.end(); ++fmt_it, --part_num) {}
124 fmt_it = fmt_list.begin();
125 for(; fmt_it != fmt_list.end(); ++fmt_it, ++part_num)
127 QString part_str = lfilename.section(
"/", part_num, part_num);
129 if ( *fmt_it ==
"GENRE" )
133 else if ( *fmt_it ==
"ARTIST" )
137 else if ( *fmt_it ==
"ALBUM" )
141 else if ( *fmt_it ==
"TITLE" )
145 else if ( *fmt_it ==
"TRACK_TITLE" )
147 QStringList tracktitle_list = part_str.split(
"-");
148 if (tracktitle_list.size() > 1)
150 tracknum = tracktitle_list[0].toInt();
151 title = tracktitle_list[1].simplified();
158 else if ( *fmt_it ==
"ARTIST_TITLE" )
160 QStringList artisttitle_list = part_str.split(
"-");
161 if (artisttitle_list.size() > 1)
163 artist = artisttitle_list[0].simplified();
164 title = artisttitle_list[1].simplified();
170 if (artist.isEmpty())
190 0, tracknum, length);
215 if (metadata->
Artist().isEmpty())
218 if (metadata->
Album().isEmpty())
221 if (metadata->
Title().isEmpty())
224 if (metadata->
Genre().isEmpty())
227 if (metadata->
Track() <= 0)
235 LOG(VB_GENERAL, LOG_ERR,
236 QString(
"MetaIO::saveTimeStamps: failed to stat file: %1").arg(
m_filename) +
ENO);
242 struct utimbuf new_times {.actime=
m_fileinfo.st_atime,
245 if (utime(
m_filename.toLocal8Bit().constData(), &new_times) < 0)
247 LOG(VB_GENERAL, LOG_ERR,
248 QString(
"MetaIO::restoreTimeStamps: failed to utime file: %1").arg(
m_filename) +
ENO);
int GetNumSetting(const QString &key, int defaultval=0)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
#define ENO
This can be appended to the LOG args with "+".
#define LOG(_MASK_, _LEVEL_, _QSTRING_)