diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-10-13 16:03:35 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-10-13 16:03:35 +0000 |
| commit | 7acba956ed3ef3528c6fafe7cb38d94d796e6a4a (patch) | |
| tree | 541cf8a5ab5ad5685917ff18cc9acc57aeca32c5 /src/plugins/Input/cue/cueparser.cpp | |
| parent | 54e71369e1b2dde50af1ee6f41c5375f7ae32610 (diff) | |
| download | qmmp-7acba956ed3ef3528c6fafe7cb38d94d796e6a4a.tar.gz qmmp-7acba956ed3ef3528c6fafe7cb38d94d796e6a4a.tar.bz2 qmmp-7acba956ed3ef3528c6fafe7cb38d94d796e6a4a.zip | |
CUE plugin: additional metadata support, CUE codepage settings
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@583 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/cue/cueparser.cpp')
| -rw-r--r-- | src/plugins/Input/cue/cueparser.cpp | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/src/plugins/Input/cue/cueparser.cpp b/src/plugins/Input/cue/cueparser.cpp index 6fdf5d0f8..768203edc 100644 --- a/src/plugins/Input/cue/cueparser.cpp +++ b/src/plugins/Input/cue/cueparser.cpp @@ -22,6 +22,9 @@ #include <QFileInfo> #include <QRegExp> #include <QDir> +#include <QSettings> +#include <QTextStream> +#include <QTextCodec> #include <qmmp/decoder.h> @@ -29,24 +32,26 @@ CUEParser::CUEParser(const QString &fileName) { - QString album; QFile file(fileName); - if(!file.open(QIODevice::ReadOnly)) + if (!file.open(QIODevice::ReadOnly)) { - qDebug("CUEParser: Error: %s", qPrintable(file.errorString())); + qDebug("CUEParser: error: %s", qPrintable(file.errorString())); return; } - - while (!file.atEnd()) + QString album, genre, date, comment; + QTextStream textStream (&file); + QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); + QTextCodec *codec = QTextCodec::codecForName(settings.value("CUE/encoding","ISO-8859-1").toByteArray ()); + textStream.setCodec(codec); + while (!textStream.atEnd()) { - QString line = file.readLine().trimmed(); + QString line = textStream.readLine().trimmed(); QStringList words = splitLine(line); if (words.size() < 2) continue; if (words[0] == "FILE") { - //TODO check support m_filePath = QUrl(fileName).path (); m_filePath = QFileInfo(m_filePath).dir().filePath(words[1]); } @@ -79,10 +84,21 @@ CUEParser::CUEParser(const QString &fileName) m_infoList.last ().setLength(getLength(words[2])); m_offsets.last() = getLength(words[2]); } + else if (words[0] == "REM") + { + if (words.size() < 3) + continue; + if (words[1] == "GENRE") + genre = words[2]; + else if (words[1] == "DATE") + date = words[2]; + else if (words[1] == "COMMENT") + comment = words[2]; + } } //calculate length for (int i = 0; i < m_infoList.size() - 1; ++i) - m_infoList[i].setLength(m_infoList[i+1].length()-m_infoList[i].length()); + m_infoList[i].setLength(m_infoList[i+1].length() - m_infoList[i].length()); //calculate last item length QList <FileInfo *> f_list; f_list = Decoder::createPlayList(m_filePath); @@ -92,9 +108,12 @@ CUEParser::CUEParser(const QString &fileName) else m_infoList.last().setLength(0); - foreach(FileInfo info, m_infoList) + for(int i = 0; i < m_infoList.size(); ++i) { - info.setMetaData(Qmmp::ALBUM, album); + m_infoList[i].setMetaData(Qmmp::ALBUM, album); + m_infoList[i].setMetaData(Qmmp::GENRE, genre); + m_infoList[i].setMetaData(Qmmp::YEAR, date); + m_infoList[i].setMetaData(Qmmp::COMMENT, comment); } file.close(); } |
