diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-10-05 21:13:23 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-10-05 21:13:23 +0000 |
| commit | 6503d9953ae296d176cba5092f5259932c4c09d7 (patch) | |
| tree | 5e037808021df5e98b5f800a03a849915d972be3 /src/plugins/General/lyrics/lyricsprovider.cpp | |
| parent | 1001095d12e2cd42d966d2016c34bc83ac600fd4 (diff) | |
| download | qmmp-6503d9953ae296d176cba5092f5259932c4c09d7.tar.gz qmmp-6503d9953ae296d176cba5092f5259932c4c09d7.tar.bz2 qmmp-6503d9953ae296d176cba5092f5259932c4c09d7.zip | |
lyrics: added url formatter
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9085 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/lyrics/lyricsprovider.cpp')
| -rw-r--r-- | src/plugins/General/lyrics/lyricsprovider.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/plugins/General/lyrics/lyricsprovider.cpp b/src/plugins/General/lyrics/lyricsprovider.cpp index b37f8ccff..697ed0eab 100644 --- a/src/plugins/General/lyrics/lyricsprovider.cpp +++ b/src/plugins/General/lyrics/lyricsprovider.cpp @@ -1,3 +1,6 @@ +#include <QtDebug> +#include <QRegularExpression> +#include <qmmp/trackinfo.h> #include "lyricsprovider.h" LyricsProvider::LyricsProvider() @@ -61,3 +64,55 @@ void LyricsProvider::addInvalidIndicator(const QString &indicator) { m_invalidIndicators << indicator; } + +QString LyricsProvider::getUrl(const TrackInfo *track) const +{ + QString url = m_url; + QMap<QString, QString> replaceMap = { + { "{artist}", track->value(Qmmp::ARTIST).toLower() }, + { "{artist2}", track->value(Qmmp::ARTIST).toLower().remove(' ') }, + { "{Artist}", track->value(Qmmp::ARTIST) }, + { "{ARTIST}", track->value(Qmmp::ARTIST).toUpper() }, + { "{a}", track->value(Qmmp::ARTIST).left(1).toLower() }, + { "{album}", track->value(Qmmp::ALBUM).toLower() }, + { "{album2}", track->value(Qmmp::ALBUM).toLower().remove(' ') }, + { "{Album}", track->value(Qmmp::ALBUM) }, + { "{title}", track->value(Qmmp::TITLE).toLower() }, + { "{Title}", track->value(Qmmp::TITLE) }, + { "{Title2}", fixCase(track->value(Qmmp::TITLE)) }, + { "{track}", track->value(Qmmp::TRACK) }, + { "{year}", track->value(Qmmp::YEAR) } + }; + + QMap<QString, QString>::const_iterator it = replaceMap.constBegin(); + while(it != replaceMap.constEnd()) + { + QString value = it.value(); + + for(const UrlFormat &format: m_urlFormats) + value.replace(QRegularExpression(QString("[%1]").arg(QRegularExpression::escape(format.replace))), format.with); + + url.replace(it.key(), it.value()); + + it++; + } + + return url; +} + +QString LyricsProvider::fixCase(const QString &title) const +{ + QString out; + QString::const_iterator it = title.constBegin(); + while (it != title.constEnd()) + { + if(it == title.constBegin() || (it - 1)->isSpace()) + out.append(it->toUpper()); + else + out.append(*it); + + it++; + } + + return out; +} |
