24 ".atp|.ra|.dts|.aac|.m4a|.aa3|.tta|.mka|.aiff|.swa|.wv");
27 : m_filenameFormat(
gCoreContext->GetSetting(
"NonID3FileNameFormat").toUpper())
35 QString extension = fi.suffix().toLower();
39 LOG(VB_FILE, LOG_WARNING, QString(
"MetaIO: unknown extension: '%1'").arg(extension));
43 if (extension ==
"mp3" || extension ==
"mp2")
45 if (extension ==
"ogg" || extension ==
"oga")
47 if (extension ==
"opus")
49 if (extension ==
"flac")
57 if (extension ==
"m4a")
59 if (extension ==
"wv")
76 if (ignoreID3 || !mdata)
84 LOG(VB_GENERAL, LOG_ERR,
85 QString(
"MetaIO::readMetadata(): Could not read '%1'")
105 QString &artist, QString &album, QString &title,
106 QString &genre,
int &tracknum)
118 lfilename.replace(
'_',
' ');
119 lfilename = lfilename.section(
'.', 0, -2);
121 QStringList::iterator fmt_it = fmt_list.begin();
124 for (; fmt_it != fmt_list.end(); ++fmt_it, --part_num) {}
127 fmt_it = fmt_list.begin();
128 for(; fmt_it != fmt_list.end(); ++fmt_it, ++part_num)
130 QString part_str = lfilename.section(
"/", part_num, part_num);
132 if ( *fmt_it ==
"GENRE" )
136 else if ( *fmt_it ==
"ARTIST" )
140 else if ( *fmt_it ==
"ALBUM" )
144 else if ( *fmt_it ==
"TITLE" )
148 else if ( *fmt_it ==
"TRACK_TITLE" )
150 QStringList tracktitle_list = part_str.split(
"-");
151 if (tracktitle_list.size() > 1)
153 tracknum = tracktitle_list[0].toInt();
154 title = tracktitle_list[1].simplified();
161 else if ( *fmt_it ==
"ARTIST_TITLE" )
163 QStringList artisttitle_list = part_str.split(
"-");
164 if (artisttitle_list.size() > 1)
166 artist = artisttitle_list[0].simplified();
167 title = artisttitle_list[1].simplified();
173 if (artist.isEmpty())
193 0, tracknum, length);
218 if (metadata->
Artist().isEmpty())
221 if (metadata->
Album().isEmpty())
224 if (metadata->
Title().isEmpty())
227 if (metadata->
Genre().isEmpty())
230 if (metadata->
Track() <= 0)
238 LOG(VB_GENERAL, LOG_ERR,
239 QString(
"MetaIO::saveTimeStamps: failed to stat file: %1").arg(
m_filename) +
ENO);
245 struct utimbuf new_times {.actime=
m_fileinfo.st_atime,
248 if (utime(
m_filename.toLocal8Bit().constData(), &new_times) < 0)
250 LOG(VB_GENERAL, LOG_ERR,
251 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_)