aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/General/CMakeLists.txt2
-rw-r--r--src/plugins/General/General.pro2
-rw-r--r--src/plugins/General/scrobbler/CMakeLists.txt10
-rw-r--r--src/plugins/General/scrobbler/scrobbler.cpp168
-rw-r--r--src/plugins/General/scrobbler/scrobbler.h46
-rw-r--r--src/plugins/General/scrobbler/scrobbler.pro2
-rw-r--r--src/plugins/General/scrobbler/scrobblerfactory.cpp2
-rw-r--r--src/plugins/General/scrobbler/scrobblerfactory.h3
-rw-r--r--src/plugins/General/scrobbler/settingsdialog.cpp11
-rw-r--r--src/plugins/General/scrobbler/settingsdialog.h4
-rw-r--r--src/plugins/General/scrobbler/settingsdialog.ui53
-rw-r--r--src/plugins/General/scrobbler/translations/scrobbler_plugin_cs.ts10
-rw-r--r--src/plugins/General/scrobbler/translations/scrobbler_plugin_de.ts11
-rw-r--r--src/plugins/General/scrobbler/translations/scrobbler_plugin_ru.ts11
-rw-r--r--src/plugins/General/scrobbler/translations/scrobbler_plugin_uk_UA.ts11
-rw-r--r--src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_CN.ts10
-rw-r--r--src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_TW.ts10
17 files changed, 226 insertions, 140 deletions
diff --git a/src/plugins/General/CMakeLists.txt b/src/plugins/General/CMakeLists.txt
index d596e06ef..e78c28075 100644
--- a/src/plugins/General/CMakeLists.txt
+++ b/src/plugins/General/CMakeLists.txt
@@ -8,7 +8,7 @@ add_subdirectory(mpris)
ENDIF(USE_DBUS)
IF(USE_SCROBBLER)
-#add_subdirectory(scrobbler)
+add_subdirectory(scrobbler)
ENDIF(USE_SCROBBLER)
IF(USE_STATICON)
diff --git a/src/plugins/General/General.pro b/src/plugins/General/General.pro
index 8ba55358b..61fcd2967 100644
--- a/src/plugins/General/General.pro
+++ b/src/plugins/General/General.pro
@@ -1,5 +1,5 @@
SUBDIRS += statusicon \
- #scrobbler \
+ scrobbler \
mpris \
notifier
TEMPLATE = subdirs
diff --git a/src/plugins/General/scrobbler/CMakeLists.txt b/src/plugins/General/scrobbler/CMakeLists.txt
index 5aa0cc773..19b06d585 100644
--- a/src/plugins/General/scrobbler/CMakeLists.txt
+++ b/src/plugins/General/scrobbler/CMakeLists.txt
@@ -20,17 +20,13 @@ ADD_DEFINITIONS(-DQT_NO_DEBUG)
ADD_DEFINITIONS(-DQT_SHARED)
ADD_DEFINITIONS(-DQT_THREAD)
-
include_directories(${CMAKE_CURRENT_BINARY_DIR})
-SET(QT_INCLUDES
- ${QT_INCLUDES}
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../
-)
-
# libqmmpui
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../)
link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmpui)
+#libqmmp
+link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp)
SET(libscrobbler_SRCS
settingsdialog.cpp
@@ -65,5 +61,5 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
ADD_LIBRARY(scrobbler SHARED ${libscrobbler_SRCS} ${libscrobbler_MOC_SRCS} ${libscrobbler_UIS_H}
${libscrobbler_RCC_SRCS})
add_dependencies(scrobbler qmmpui)
-target_link_libraries(scrobbler ${QT_LIBRARIES} -lqmmpui)
+target_link_libraries(scrobbler ${QT_LIBRARIES} -lqmmpui -lqmmp)
install(TARGETS scrobbler DESTINATION ${LIB_DIR}/qmmp/General)
diff --git a/src/plugins/General/scrobbler/scrobbler.cpp b/src/plugins/General/scrobbler/scrobbler.cpp
index 7236bef88..af0ecd40b 100644
--- a/src/plugins/General/scrobbler/scrobbler.cpp
+++ b/src/plugins/General/scrobbler/scrobbler.cpp
@@ -26,21 +26,23 @@
#include <QTime>
#include <QSettings>
#include <QDir>
+#include <qmmp/soundcore.h>
#include "scrobbler.h"
#define SCROBBLER_HS_URL "post.audioscrobbler.com"
#define PROTOCOL_VER "1.2"
#define CLIENT_ID "qmm"
-#define CLIENT_VER "0.1"
+#define CLIENT_VER "0.2"
+
Scrobbler::Scrobbler(QObject *parent)
: General(parent)
{
m_http = new QHttp(this);
m_http->setHost(SCROBBLER_HS_URL, 80);
- m_state = General::Stopped;
- QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
+ m_state = Qmmp::Stopped;
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("Scrobbler");
m_login = settings.value("login").toString();
m_passw = settings.value("password").toString();
@@ -64,10 +66,16 @@ Scrobbler::Scrobbler(QObject *parent)
connect(m_http, SIGNAL(requestFinished (int, bool)), SLOT(processResponse(int, bool)));
connect(m_http, SIGNAL(readyRead (const QHttpResponseHeader&)),
SLOT(readResponse(const QHttpResponseHeader&)));
+
+ m_core = SoundCore::instance();
+ connect (m_core, SIGNAL(metaDataChanged()), SLOT(updateMetaData()));
+ connect (m_core, SIGNAL(stateChanged (Qmmp::State)), SLOT(setState(Qmmp::State)));
+
m_time = new QTime();
m_submitedSongs = 0;
m_handshakeid = 0;
m_submitid = 0;
+ m_notificationid = 0;
if (!m_disabled)
handshake();
}
@@ -78,14 +86,14 @@ Scrobbler::~Scrobbler()
delete m_time;
}
-void Scrobbler::setState(const uint &state)
+void Scrobbler::setState(Qmmp::State state)
{
m_state = state;
if (m_disabled)
return;
switch ((uint) state)
{
- case General::Playing:
+ case Qmmp::Playing:
{
m_start_ts = time(NULL);
m_time->restart();
@@ -93,13 +101,13 @@ void Scrobbler::setState(const uint &state)
handshake();
break;
}
- case General::Paused:
+ case Qmmp::Paused:
{
break;
}
- case General::Stopped:
+ case Qmmp::Stopped:
{
- if (!m_song.isEmpty()
+ if (!m_song.metaData().isEmpty()
&& ((m_time->elapsed ()/1000 > 240)
|| (m_time->elapsed ()/1000 > int(m_song.length()/2)))
&& (m_time->elapsed ()/1000 > 60))
@@ -124,20 +132,24 @@ void Scrobbler::setState(const uint &state)
}
}
-void Scrobbler::setSongInfo(const SongInfo &song)
+void Scrobbler::updateMetaData()
{
- if (m_state == General::Playing
- && !song.title().isEmpty() //skip empty tags
- && !song.artist().isEmpty()
- && !song.isStream() //skip stream
- && !song.artist().contains("&") //skip tags with special symbols
- && !song.title().contains("&")
- && !song.album().contains("&")
- && !song.artist().contains("=")
- && !song.title().contains("=")
- && !song.album().contains("="))
+ QMap <Qmmp::MetaData, QString> metadata = m_core->metaData();
+ if (m_state == Qmmp::Playing
+ && !metadata.value(Qmmp::TITLE).isEmpty() //skip empty tags
+ && !metadata.value(Qmmp::ARTIST).isEmpty()
+ && m_core->length() //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::TITLE).contains("=")
+ && !metadata.value(Qmmp::ALBUM).contains("="))
{
- m_song = song;
+ m_song = SongInfo(metadata, m_core->length());
+
+ if (isReady() && m_notificationid == 0)
+ sendNotification(m_song);
}
}
@@ -173,7 +185,9 @@ void Scrobbler::processResponse(int id, bool error)
qDebug("Scrobbler: Now-Playing URL: %s",qPrintable(strlist[2]));
qDebug("Scrobbler: Submission URL: %s",qPrintable(strlist[3]));
m_submitUrl = strlist[3];
+ m_nowPlayingUrl = strlist[2];
m_session = strlist[1];
+ updateMetaData(); //send now-playing notification for already playing song
return;
}
}
@@ -194,6 +208,17 @@ void Scrobbler::processResponse(int id, bool error)
m_songCache.removeFirst ();
}
}
+ else if (id == m_notificationid)
+ {
+ m_notificationid = 0;
+ if (!strlist[0].contains("OK"))
+ {
+ qWarning("Scrobbler: notification error: %s", qPrintable(strlist[0]));
+ //TODO badsession handling
+ return;
+ }
+ qDebug("Scrobbler: Now-Playing notification done");
+ }
m_array.clear();
}
@@ -242,31 +267,122 @@ void Scrobbler::submit()
{
SongInfo info = m_songCache[i];
body += QString("&a[%9]=%1&t[%9]=%2&i[%9]=%3&o[%9]=%4&r[%9]=%5&l[%9]=%6&b[%9]=%7&n[%9]=%8&m[%9]=")
- .arg(info.artist())
- .arg(info.title())
+ .arg(info.metaData(Qmmp::ARTIST))
+ .arg(info.metaData(Qmmp::TITLE))
.arg( m_timeStamps[i])
.arg("P")
.arg("")
.arg(info.length())
- .arg(info.album())
- .arg(info.track())
+ .arg(info.metaData(Qmmp::ALBUM))
+ .arg(info.metaData(Qmmp::TRACK))
.arg(i);
}
QUrl url(m_submitUrl);
m_http->setHost(url.host(), url.port());
QHttpRequestHeader header("POST", url.path());
header.setContentType("application/x-www-form-urlencoded");
- header.setValue("User-Agent","iScrobbler/1.5.1qmmp-plugins/0.2");
+ 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());
qDebug("Scrobbler: submit request header");
- qDebug(qPrintable(header.toString()));
+ qDebug(qPrintable(header.toString().trimmed()));
qDebug("*****************************");
m_submitid = m_http->request(header, QUrl::toPercentEncoding(body,":/[]&="));
}
+void Scrobbler::sendNotification(const SongInfo &info)
+{
+ qDebug("Scrobbler::sendNotification()");
+ QString body = QString("s=%1").arg(m_session);
+ body += QString("&a=%1&t=%2&b=%3&l=%4&n=%5&m=")
+ .arg(info.metaData(Qmmp::ARTIST))
+ .arg(info.metaData(Qmmp::TITLE))
+ .arg(info.metaData(Qmmp::ALBUM))
+ .arg(info.length())
+ .arg(info.metaData(Qmmp::TRACK));
+ QUrl url(m_nowPlayingUrl);
+ m_http->setHost(url.host(), url.port());
+ QHttpRequestHeader header("POST", url.path());
+ header.setContentType("application/x-www-form-urlencoded");
+ 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());
+ qDebug("Scrobbler: Now-Playing notification request header");
+ qDebug(qPrintable(header.toString().trimmed()));
+ qDebug("*****************************");
+ m_notificationid = m_http->request(header, QUrl::toPercentEncoding(body,":/[]&="));
+}
+
bool Scrobbler::isReady()
{
return !m_submitUrl.isEmpty() && !m_session.isEmpty();
}
+
+SongInfo::SongInfo()
+{
+ m_length = 0;
+}
+
+SongInfo::SongInfo(const QMap <Qmmp::MetaData, QString> metadata, qint64 length)
+{
+ m_metadata = metadata;
+ m_length = length;
+}
+
+SongInfo::SongInfo(const SongInfo &other)
+{
+ m_metadata = other.metaData();
+ m_length = other.length();
+}
+
+SongInfo::~SongInfo()
+{}
+
+void SongInfo::operator=(const SongInfo &info)
+{
+ m_metadata = info.metaData();
+ m_length = info.length();
+}
+
+bool SongInfo::operator==(const SongInfo &info)
+{
+ return (m_metadata == info.metaData()) && (m_length == info.length());
+}
+
+bool SongInfo::operator!=(const SongInfo &info)
+{
+ return !operator==(info);
+}
+
+void SongInfo::setMetaData(const QMap <Qmmp::MetaData, QString> metadata)
+{
+ m_metadata = metadata;
+}
+
+void SongInfo::setLength(qint64 l)
+{
+ m_length = l;
+}
+
+const QMap <Qmmp::MetaData, QString> SongInfo::metaData() const
+{
+ return m_metadata;
+}
+
+const QString SongInfo::metaData(Qmmp::MetaData key) const
+{
+ return m_metadata.value(key);
+}
+
+qint64 SongInfo::length () const
+{
+ return m_length;
+}
+
+void SongInfo::clear()
+{
+ m_metadata.clear();
+ m_length = 0;
+}
diff --git a/src/plugins/General/scrobbler/scrobbler.h b/src/plugins/General/scrobbler/scrobbler.h
index 3f1294131..dd058263d 100644
--- a/src/plugins/General/scrobbler/scrobbler.h
+++ b/src/plugins/General/scrobbler/scrobbler.h
@@ -21,44 +21,73 @@
#define SCROBBLER_H
#include <QHttpResponseHeader>
+#include <QMap>
#include <qmmpui/general.h>
+#include <qmmp/qmmp.h>
#include <time.h>
class QHttp;
class QTime;
-
-
+class SoundCore;
/**
- @author Ilya Kotov <forkotov02@hotmail.ru>
+ @author Ilya Kotov <forkotov02@hotmail.ru>
*/
+class SongInfo
+{
+public:
+ SongInfo();
+ SongInfo(const QMap <Qmmp::MetaData, QString> metadata, qint64 length);
+ SongInfo(const SongInfo &other);
+
+ ~SongInfo();
+
+ void operator=(const SongInfo &info);
+ bool operator==(const SongInfo &info);
+ bool operator!=(const SongInfo &info);
+
+ void setMetaData(const QMap <Qmmp::MetaData, QString> metadata);
+ void setLength(qint64 l);
+ const QMap <Qmmp::MetaData, QString> metaData() const;
+ const QString metaData(Qmmp::MetaData) const;
+ qint64 length () const;
+ void clear();
+
+private:
+ QMap <Qmmp::MetaData, QString> m_metadata;
+ qint64 m_length;
+
+};
+
class Scrobbler : public General
{
-Q_OBJECT
+ Q_OBJECT
public:
Scrobbler(QObject *parent = 0);
~Scrobbler();
- void setState(const uint& state);
- void setSongInfo(const SongInfo &song);
-
private slots:
+ void setState(Qmmp::State state);
+ void updateMetaData();
void processResponse(int, bool);
void readResponse(const QHttpResponseHeader&);
private:
void handshake();
void submit();
+ void sendNotification(const SongInfo &info);
bool isReady();
time_t m_start_ts;
SongInfo m_song;
QHttp *m_http;
- uint m_state;
+ Qmmp::State m_state;
+ SoundCore *m_core;
QString m_login;
QString m_passw;
QString m_submitUrl;
+ QString m_nowPlayingUrl;
QString m_session;
QList <time_t> m_timeStamps;
QList <SongInfo> m_songCache;
@@ -66,6 +95,7 @@ private:
int m_submitedSongs;
int m_handshakeid;
int m_submitid;
+ int m_notificationid;
QByteArray m_array;
bool m_disabled;
diff --git a/src/plugins/General/scrobbler/scrobbler.pro b/src/plugins/General/scrobbler/scrobbler.pro
index f5df78011..118b03c84 100644
--- a/src/plugins/General/scrobbler/scrobbler.pro
+++ b/src/plugins/General/scrobbler/scrobbler.pro
@@ -40,7 +40,7 @@ QT += network
INCLUDEPATH += ../../../
-LIBS += -lqmmpui
+LIBS += -lqmmpui -lqmmp
FORMS += settingsdialog.ui
diff --git a/src/plugins/General/scrobbler/scrobblerfactory.cpp b/src/plugins/General/scrobbler/scrobblerfactory.cpp
index 21a3b522b..2f36f971a 100644
--- a/src/plugins/General/scrobbler/scrobblerfactory.cpp
+++ b/src/plugins/General/scrobbler/scrobblerfactory.cpp
@@ -34,7 +34,7 @@ const GeneralProperties ScrobblerFactory::properties() const
return properties;
}
-General *ScrobblerFactory::create(Control*, QObject *parent)
+General *ScrobblerFactory::create(QObject *parent)
{
return new Scrobbler(parent);
}
diff --git a/src/plugins/General/scrobbler/scrobblerfactory.h b/src/plugins/General/scrobbler/scrobblerfactory.h
index d883da917..a0bd0a626 100644
--- a/src/plugins/General/scrobbler/scrobblerfactory.h
+++ b/src/plugins/General/scrobbler/scrobblerfactory.h
@@ -27,7 +27,6 @@
#include <QTranslator>
#include <qmmpui/general.h>
-#include <qmmpui/control.h>
#include <qmmpui/generalfactory.h>
class ScrobblerFactory : public QObject, public GeneralFactory
@@ -36,7 +35,7 @@ Q_OBJECT
Q_INTERFACES(GeneralFactory);
public:
const GeneralProperties properties() const;
- General *create(Control*, QObject *parent);
+ General *create(QObject *parent);
QDialog *createConfigDialog(QWidget *parent);
void showAbout(QWidget *parent);
QTranslator *createTranslator(QObject *parent);
diff --git a/src/plugins/General/scrobbler/settingsdialog.cpp b/src/plugins/General/scrobbler/settingsdialog.cpp
index 9280550f1..346e53631 100644
--- a/src/plugins/General/scrobbler/settingsdialog.cpp
+++ b/src/plugins/General/scrobbler/settingsdialog.cpp
@@ -19,7 +19,7 @@
***************************************************************************/
#include <QSettings>
-#include <QDir>
+#include <qmmp/qmmp.h>
#include "settingsdialog.h"
@@ -27,24 +27,23 @@ SettingsDialog::SettingsDialog(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
- QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
+ QSettings settings(Qmmp::configFile() + "/.qmmp/qmmprc", QSettings::IniFormat);
settings.beginGroup("Scrobbler");
ui.userLineEdit->setText(settings.value("login").toString());
ui.passwordLineEdit->setText(settings.value("password").toString());
settings.endGroup();
- connect(ui.okButton, SIGNAL(clicked()), SLOT(writeSettings()));
}
SettingsDialog::~SettingsDialog()
{}
-void SettingsDialog::writeSettings()
+void SettingsDialog::accept()
{
- QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
+ QSettings settings(Qmmp::configFile() + "/.qmmp/qmmprc", QSettings::IniFormat);
settings.beginGroup("Scrobbler");
settings.setValue("login",ui.userLineEdit->text());
settings.setValue("password",ui.passwordLineEdit->text());
settings.endGroup();
- accept();
+ QDialog::accept();
}
diff --git a/src/plugins/General/scrobbler/settingsdialog.h b/src/plugins/General/scrobbler/settingsdialog.h
index 0d5b21d52..81494dfb5 100644
--- a/src/plugins/General/scrobbler/settingsdialog.h
+++ b/src/plugins/General/scrobbler/settingsdialog.h
@@ -37,8 +37,8 @@ public:
~SettingsDialog();
-private slots:
- void writeSettings();
+public slots:
+ virtual void accept();
private:
Ui::SettingsDialog ui;
diff --git a/src/plugins/General/scrobbler/settingsdialog.ui b/src/plugins/General/scrobbler/settingsdialog.ui
index 37ccc4157..90d2fa481 100644
--- a/src/plugins/General/scrobbler/settingsdialog.ui
+++ b/src/plugins/General/scrobbler/settingsdialog.ui
@@ -6,13 +6,13 @@
<x>0</x>
<y>0</y>
<width>250</width>
- <height>123</height>
+ <height>101</height>
</rect>
</property>
<property name="windowTitle" >
<string>Scrobbler Plugin Settings</string>
</property>
- <layout class="QGridLayout" >
+ <layout class="QGridLayout" name="gridLayout" >
<item row="0" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
@@ -38,31 +38,24 @@
</widget>
</item>
<item row="2" column="0" colspan="2" >
- <layout class="QHBoxLayout" >
+ <layout class="QHBoxLayout" name="horizontalLayout" >
<item>
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0" >
<size>
- <width>61</width>
- <height>20</height>
+ <width>136</width>
+ <height>18</height>
</size>
</property>
</spacer>
</item>
<item>
- <widget class="QPushButton" name="okButton" >
- <property name="text" >
- <string>OK</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="cancelButton" >
- <property name="text" >
- <string>Cancel</string>
+ <widget class="QDialogButtonBox" name="buttonBox" >
+ <property name="standardButtons" >
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
@@ -73,18 +66,34 @@
<resources/>
<connections>
<connection>
- <sender>cancelButton</sender>
- <signal>clicked()</signal>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>SettingsDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>156</x>
+ <y>77</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>16</x>
+ <y>69</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
<receiver>SettingsDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel" >
- <x>204</x>
- <y>90</y>
+ <x>216</x>
+ <y>81</y>
</hint>
<hint type="destinationlabel" >
- <x>26</x>
- <y>102</y>
+ <x>75</x>
+ <y>81</y>
</hint>
</hints>
</connection>
diff --git a/src/plugins/General/scrobbler/translations/scrobbler_plugin_cs.ts b/src/plugins/General/scrobbler/translations/scrobbler_plugin_cs.ts
index 11213151e..225c2503e 100644
--- a/src/plugins/General/scrobbler/translations/scrobbler_plugin_cs.ts
+++ b/src/plugins/General/scrobbler/translations/scrobbler_plugin_cs.ts
@@ -26,16 +26,6 @@
<context>
<name>SettingsDialog</name>
<message>
- <location filename="../settingsdialog.ui" line="58"/>
- <source>OK</source>
- <translation>OK</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="65"/>
- <source>Cancel</source>
- <translation>Zrušit</translation>
- </message>
- <message>
<location filename="../settingsdialog.ui" line="13"/>
<source>Scrobbler Plugin Settings</source>
<translation>Nastavení modulu Scrobbler</translation>
diff --git a/src/plugins/General/scrobbler/translations/scrobbler_plugin_de.ts b/src/plugins/General/scrobbler/translations/scrobbler_plugin_de.ts
index dd3c5bae7..dd979238f 100644
--- a/src/plugins/General/scrobbler/translations/scrobbler_plugin_de.ts
+++ b/src/plugins/General/scrobbler/translations/scrobbler_plugin_de.ts
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="1.1" language="de">
-<defaultcodec></defaultcodec>
<context>
<name>ScrobblerFactory</name>
<message>
@@ -41,15 +40,5 @@
<source>Password:</source>
<translation>Passwort:</translation>
</message>
- <message>
- <location filename="../settingsdialog.ui" line="58"/>
- <source>OK</source>
- <translation>OK</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="65"/>
- <source>Cancel</source>
- <translation>Abbrechen</translation>
- </message>
</context>
</TS>
diff --git a/src/plugins/General/scrobbler/translations/scrobbler_plugin_ru.ts b/src/plugins/General/scrobbler/translations/scrobbler_plugin_ru.ts
index af8bdd115..fdd6c84b6 100644
--- a/src/plugins/General/scrobbler/translations/scrobbler_plugin_ru.ts
+++ b/src/plugins/General/scrobbler/translations/scrobbler_plugin_ru.ts
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="1.1" language="ru">
-<defaultcodec></defaultcodec>
<context>
<name>ScrobblerFactory</name>
<message>
@@ -41,15 +40,5 @@
<source>Password:</source>
<translation>Пароль:</translation>
</message>
- <message>
- <location filename="../settingsdialog.ui" line="58"/>
- <source>OK</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="65"/>
- <source>Cancel</source>
- <translation>Отмена</translation>
- </message>
</context>
</TS>
diff --git a/src/plugins/General/scrobbler/translations/scrobbler_plugin_uk_UA.ts b/src/plugins/General/scrobbler/translations/scrobbler_plugin_uk_UA.ts
index 868a710ab..0b3d70ff4 100644
--- a/src/plugins/General/scrobbler/translations/scrobbler_plugin_uk_UA.ts
+++ b/src/plugins/General/scrobbler/translations/scrobbler_plugin_uk_UA.ts
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="1.1" language="uk">
-<defaultcodec></defaultcodec>
<context>
<name>ScrobblerFactory</name>
<message>
@@ -41,15 +40,5 @@
<source>Password:</source>
<translation>Пароль:</translation>
</message>
- <message>
- <location filename="../settingsdialog.ui" line="58"/>
- <source>OK</source>
- <translation>Застосувати</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="65"/>
- <source>Cancel</source>
- <translation>Відміна</translation>
- </message>
</context>
</TS>
diff --git a/src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_CN.ts b/src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_CN.ts
index db60bc97d..cac4dd97c 100644
--- a/src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_CN.ts
+++ b/src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_CN.ts
@@ -40,15 +40,5 @@
<source>Password:</source>
<translation>密码:</translation>
</message>
- <message>
- <location filename="../settingsdialog.ui" line="58"/>
- <source>OK</source>
- <translation>确定</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="65"/>
- <source>Cancel</source>
- <translation>取消</translation>
- </message>
</context>
</TS>
diff --git a/src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_TW.ts b/src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_TW.ts
index 6c42fd1ef..43fb8ccc3 100644
--- a/src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_TW.ts
+++ b/src/plugins/General/scrobbler/translations/scrobbler_plugin_zh_TW.ts
@@ -40,15 +40,5 @@
<source>Password:</source>
<translation>密碼:</translation>
</message>
- <message>
- <location filename="../settingsdialog.ui" line="58"/>
- <source>OK</source>
- <translation>確定</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="65"/>
- <source>Cancel</source>
- <translation>取消</translation>
- </message>
</context>
</TS>