diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-01-25 18:58:43 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-01-25 18:58:43 +0000 |
| commit | e7edcfe24763067d62e4e4145c01fb6261e0d30d (patch) | |
| tree | 177dae97509a71daff37ee02cb82a50ab5e39c72 /src | |
| parent | 5ae6aa8f58bdaf887f3b419c31a69435d5fb0a02 (diff) | |
| download | qmmp-e7edcfe24763067d62e4e4145c01fb6261e0d30d.tar.gz qmmp-e7edcfe24763067d62e4e4145c01fb6261e0d30d.tar.bz2 qmmp-e7edcfe24763067d62e4e4145c01fb6261e0d30d.zip | |
switched to lyricswiki again
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2023 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/General/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/plugins/General/General.pro | 4 | ||||
| -rw-r--r-- | src/plugins/General/lyrics/lyricswindow.cpp | 87 | ||||
| -rw-r--r-- | src/plugins/General/lyrics/lyricswindow.h | 3 |
4 files changed, 68 insertions, 28 deletions
diff --git a/src/plugins/General/CMakeLists.txt b/src/plugins/General/CMakeLists.txt index 64ae88887..cb8931cc0 100644 --- a/src/plugins/General/CMakeLists.txt +++ b/src/plugins/General/CMakeLists.txt @@ -2,7 +2,7 @@ SET(USE_MPRIS TRUE CACHE BOOL "enable/disable mpris plugin") SET(USE_SCROBBLER TRUE CACHE BOOL "enable/disable scrobbler plugin") SET(USE_STATICON TRUE CACHE BOOL "enable/disable status icon plugin") SET(USE_NOTIFIER TRUE CACHE BOOL "enable/disable notifier plugin") -#SET(USE_LYRICS TRUE CACHE BOOL "enable/disable lyrics version") +SET(USE_LYRICS TRUE CACHE BOOL "enable/disable lyrics version") SET(USE_HAL TRUE CACHE BOOL "enable/disable hal plugin") SET(USE_UDISKS TRUE CACHE BOOL "enable/disable udisks plugin") SET(USE_HOTKEY TRUE CACHE BOOL "enable/disable global hotkey plugin") diff --git a/src/plugins/General/General.pro b/src/plugins/General/General.pro index 298c36d85..f1f1facfa 100644 --- a/src/plugins/General/General.pro +++ b/src/plugins/General/General.pro @@ -1,5 +1,6 @@ SUBDIRS += statusicon \ notifier \ + lyrics \ scrobbler \ fileops unix:SUBDIRS += mpris \ @@ -7,5 +8,6 @@ unix:SUBDIRS += mpris \ udisks \ hotkey \ covermanager \ - kdenotify + kdenotify \ + streambrowser TEMPLATE = subdirs diff --git a/src/plugins/General/lyrics/lyricswindow.cpp b/src/plugins/General/lyrics/lyricswindow.cpp index a9ec4474c..25bf49554 100644 --- a/src/plugins/General/lyrics/lyricswindow.cpp +++ b/src/plugins/General/lyrics/lyricswindow.cpp @@ -71,24 +71,67 @@ void LyricsWindow::showText(QNetworkReply *reply) return; } QString content = QString::fromUtf8(reply->readAll().constData()); + //qDebug("=%s=",qPrintable(content)); if(m_requestReply == reply) { m_requestReply = 0; - QRegExp js_params("javascript:getContent\\(\\\'(.*)\\\', \\\'(.*)\\\', \\\'(.*)\\\', \\\'(.*)\\\'"); - js_params.setMinimal (true); - js_params.indexIn(content); + reply->deleteLater(); + QRegExp artist_regexp("<artist>(.*)</artist>"); + artist_regexp.setMinimal(true); + QRegExp song_regexp("<song>(.*)</song>"); + song_regexp.setMinimal(true); + QRegExp lyrics_regexp("<lyrics>(.*)</lyrics>"); + lyrics_regexp.setMinimal(true); + QRegExp url_regexp("<url>(.*)</url>"); + url_regexp.setMinimal(true); - QUrl url = QUrl::fromEncoded(QByteArray("http://www.lyricsplugin.com/winamp03/plugin/content.php?") - + "artist=" + js_params.cap(1).toAscii() - + "&title=" + js_params.cap(2).toAscii() - + "&time=" + js_params.cap(3).toAscii() - + "&check=" + js_params.cap(4).toAscii()); + if(artist_regexp.indexIn(content) < 0) + { + ui.textBrowser->setHtml("<b>" + tr("Error") + "</b>"); + return; + } + + if(artist_regexp.indexIn(content) < 0) + { + ui.textBrowser->setHtml("<b>" + tr("Error") + "</b>"); + return; + } + else + m_artist = artist_regexp.cap(1); - QString referer = QString("http://www.lyricsplugin.com/winamp03/plugin/?") - + "artist=" + js_params.cap(1) - + "&title=" + js_params.cap(2); + if(song_regexp.indexIn(content) < 0) + { + ui.textBrowser->setHtml("<b>" + tr("Error") + "</b>"); + return; + } + else + m_title = song_regexp.cap(1); + if(lyrics_regexp.indexIn(content) < 0) + { + ui.textBrowser->setHtml("<b>" + tr("Error") + "</b>"); + return; + } + else if(lyrics_regexp.cap(1) == "Not found") + { + ui.textBrowser->setHtml("<b>" + tr("Not found") + "</b>"); + return; + } + + if(url_regexp.indexIn(content) < 0) + { + ui.textBrowser->setHtml("<b>" + tr("Error") + "</b>"); + return; + } + + QString temp = url_regexp.cap(1).toAscii(); + qDebug("LyricsWindow: received url = %s", qPrintable(temp)); + temp.replace("http://lyrics.wikia.com/","http://lyrics.wikia.com/index.php?title="); + temp.append("&action=edit"); + + QUrl url = QUrl::fromEncoded(temp.toAscii()); + QString referer = url_regexp.cap(1); qDebug("LyricsWindow: request url = %s", url.toEncoded().constData()); QNetworkRequest request; request.setUrl(url); @@ -98,20 +141,15 @@ void LyricsWindow::showText(QNetworkReply *reply) reply->deleteLater(); return; } - - QRegExp artist_regexp("<div id=\\\"artist\\\">(.*)</div>"); - artist_regexp.setMinimal(true); - QRegExp title_regexp("<div id=\\\"title\\\">([^<]*)</div>"); - QRegExp lyrics_regexp("<div id=\\\"lyrics\\\">([^<]*)</div>"); - artist_regexp.indexIn(content); - title_regexp.indexIn(content); - content.replace("<br />", "[br /]"); + content.replace("<", "<"); + QRegExp lyrics_regexp("<lyrics>(.*)</lyrics>"); lyrics_regexp.indexIn(content); - QString text = "<h2>" +artist_regexp.cap(1) + " - " + title_regexp.cap(1) + "</h2>"; + QString text = "<h2>" + m_artist + " - " + m_title + "</h2>"; QString lyrics = lyrics_regexp.cap(1); - lyrics.replace("[br /]", "<br />"); - if(lyrics.trimmed().isEmpty()) + lyrics = lyrics.trimmed(); + lyrics.replace("\n", "<br>"); + if(lyrics.isEmpty()) ui.textBrowser->setHtml("<b>" + tr("Not found") + "</b>"); else { @@ -127,9 +165,8 @@ void LyricsWindow::on_searchPushButton_clicked() setWindowTitle(QString(tr("Lyrics: %1 - %2")).arg(ui.artistLineEdit->text()) .arg(ui.titleLineEdit->text())); QNetworkRequest request; - request.setUrl(QUrl("http://www.lyricsplugin.com/winamp03/plugin/?artist=" + - ui.artistLineEdit->text()+"&title=" + ui.titleLineEdit->text())); + request.setUrl(QUrl("http://lyrics.wikia.com/api.php?action=lyrics&artist=" + + ui.artistLineEdit->text()+"&song=" + ui.titleLineEdit->text() + "&fmt=xml")); request.setRawHeader("User-Agent", QString("qmmp/%1").arg(Qmmp::strVersion()).toAscii()); m_requestReply = m_http->get(request); } - diff --git a/src/plugins/General/lyrics/lyricswindow.h b/src/plugins/General/lyrics/lyricswindow.h index 026f71d0b..825885a36 100644 --- a/src/plugins/General/lyrics/lyricswindow.h +++ b/src/plugins/General/lyrics/lyricswindow.h @@ -28,7 +28,7 @@ class QNetworkAccessManager; class QNetworkReply; /** - @author Ilya Kotov <forkotov02@hotmail.ru> + @author Ilya Kotov <forkotov02@hotmail.ru> */ class LyricsWindow : public QWidget { @@ -46,6 +46,7 @@ private: Ui::LyricsWindow ui; QNetworkAccessManager *m_http; QNetworkReply *m_requestReply; + QString m_artist, m_title; }; #endif |
