aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-06-11 12:27:33 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-06-11 12:27:33 +0000
commit7a1a4b96a066b497c7df75d02c213aca1db0f6c5 (patch)
treeaea9efed293ce2a631f79398a6676a3de0f16020 /src/plugins/General
parent8adf8e8f61f4916257b3a98e698f725d47560170 (diff)
downloadqmmp-7a1a4b96a066b497c7df75d02c213aca1db0f6c5.tar.gz
qmmp-7a1a4b96a066b497c7df75d02c213aca1db0f6c5.tar.bz2
qmmp-7a1a4b96a066b497c7df75d02c213aca1db0f6c5.zip
scorbbler plugin: fixed problem with tags that contain the & sign
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@964 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General')
-rw-r--r--src/plugins/General/scrobbler/scrobbler.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/plugins/General/scrobbler/scrobbler.cpp b/src/plugins/General/scrobbler/scrobbler.cpp
index 04bbeebde..e9a909f84 100644
--- a/src/plugins/General/scrobbler/scrobbler.cpp
+++ b/src/plugins/General/scrobbler/scrobbler.cpp
@@ -195,13 +195,16 @@ void Scrobbler::updateMetaData()
&& !metadata.value(Qmmp::TITLE).isEmpty() //skip empty tags
&& !metadata.value(Qmmp::ARTIST).isEmpty()
&& m_core->totalTime() //skip stream
- && !metadata.value(Qmmp::ARTIST).contains("&") //skip tags with special symbols
- && !metadata.value(Qmmp::TITLE).contains("&")
- && !metadata.value(Qmmp::ALBUM).contains("&")
- && !metadata.value(Qmmp::ARTIST).contains("=")
+ && !metadata.value(Qmmp::ARTIST).contains("=") //skip tags with special symbols
&& !metadata.value(Qmmp::TITLE).contains("=")
&& !metadata.value(Qmmp::ALBUM).contains("="))
{
+ metadata[Qmmp::ARTIST].replace("%", QUrl::toPercentEncoding("%")); //replace special symbols
+ metadata[Qmmp::ALBUM].replace("%", QUrl::toPercentEncoding("%"));
+ metadata[Qmmp::TITLE].replace("%", QUrl::toPercentEncoding("%"));
+ metadata[Qmmp::ARTIST].replace("&", QUrl::toPercentEncoding("&"));
+ metadata[Qmmp::ALBUM].replace("&", QUrl::toPercentEncoding("&"));
+ metadata[Qmmp::TITLE].replace("&", QUrl::toPercentEncoding("&"));
m_song = SongInfo(metadata, m_core->totalTime()/1000);
if (isReady() && m_notificationid == 0)
sendNotification(m_song);
@@ -349,11 +352,11 @@ void Scrobbler::submit()
header.setValue("User-Agent","iScrobbler/1.5.1qmmp-plugins/" + Qmmp::strVersion());
header.setValue("Host",url.host());
header.setValue("Accept", "*/*");
- header.setContentLength(QUrl::toPercentEncoding(body,":/[]&=").size());
+ header.setContentLength(QUrl::toPercentEncoding(body,":/[]&=%").size());
qDebug("Scrobbler[%s]: submit request header", qPrintable(m_name));
qDebug("%s",qPrintable(header.toString().trimmed()));
qDebug("*****************************");
- m_submitid = m_http->request(header, QUrl::toPercentEncoding(body,":/[]&="));
+ m_submitid = m_http->request(header, QUrl::toPercentEncoding(body,":/[]&=%"));
}
void Scrobbler::sendNotification(const SongInfo &info)
@@ -373,11 +376,11 @@ void Scrobbler::sendNotification(const SongInfo &info)
header.setValue("User-Agent","iScrobbler/1.5.1qmmp-plugins/" + Qmmp::strVersion());
header.setValue("Host",url.host());
header.setValue("Accept", "*/*");
- header.setContentLength(QUrl::toPercentEncoding(body,":/[]&=").size());
+ header.setContentLength(QUrl::toPercentEncoding(body,":/[]&=%").size());
qDebug("Scrobbler[%s]: Now-Playing notification request header", qPrintable(m_name));
qDebug("%s",qPrintable(header.toString().trimmed()));
qDebug("*****************************");
- m_notificationid = m_http->request(header, QUrl::toPercentEncoding(body,":/[]&="));
+ m_notificationid = m_http->request(header, QUrl::toPercentEncoding(body,":/[]&=%"));
}
bool Scrobbler::isReady()