diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-10-03 19:56:56 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-10-03 19:56:56 +0000 |
| commit | 00c75af2d94243249ff37168a980352fc6f65ebd (patch) | |
| tree | f33772508df3aceca37e611e969d9a5e7602e71f | |
| parent | 30142bc1aacc6e0f92f8bb6311bff2cab6168bb8 (diff) | |
| download | qmmp-00c75af2d94243249ff37168a980352fc6f65ebd.tar.gz qmmp-00c75af2d94243249ff37168a980352fc6f65ebd.tar.bz2 qmmp-00c75af2d94243249ff37168a980352fc6f65ebd.zip | |
added lyrics providers
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9081 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/General/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/plugins/General/lyrics/lyricswindow.cpp | 14 | ||||
| -rw-r--r-- | src/plugins/General/lyrics/lyricswindow.h | 3 | ||||
| -rw-r--r-- | src/plugins/General/lyrics/providers/providers.qrc | 6 | ||||
| -rw-r--r-- | src/plugins/General/lyrics/providers/ultimate_providers.xml | 313 |
5 files changed, 330 insertions, 8 deletions
diff --git a/src/plugins/General/CMakeLists.txt b/src/plugins/General/CMakeLists.txt index f6c81baf5..71dd3a686 100644 --- a/src/plugins/General/CMakeLists.txt +++ b/src/plugins/General/CMakeLists.txt @@ -41,7 +41,7 @@ add_subdirectory(notifier) ENDIF(USE_NOTIFIER) IF(USE_LYRICS) -add_subdirectory(lyrics) +#add_subdirectory(lyrics) ENDIF(USE_LYRICS) IF(USE_HAL AND Qt5DBus_FOUND) diff --git a/src/plugins/General/lyrics/lyricswindow.cpp b/src/plugins/General/lyrics/lyricswindow.cpp index 1754413b3..3e59893df 100644 --- a/src/plugins/General/lyrics/lyricswindow.cpp +++ b/src/plugins/General/lyrics/lyricswindow.cpp @@ -28,7 +28,6 @@ #include <QCryptographicHash> #include <qmmp/qmmpsettings.h> #include <qmmp/qmmp.h> -//#include "ultimatelyricsparser.h" #include "lyricswindow.h" LyricsWindow::LyricsWindow(const QString &artist, const QString &title, QWidget *parent) @@ -59,6 +58,9 @@ LyricsWindow::LyricsWindow(const QString &artist, const QString &title, QWidget } connect(m_http, SIGNAL(finished (QNetworkReply *)), SLOT(showText(QNetworkReply *))); + if(!m_parser.load(":/ultimate_providers.xml")) + qWarning("LyricsWindow: unable to load ultimate_providers.xml"); + QDir cacheDir(m_cachePath); if(!cacheDir.exists()) { @@ -67,9 +69,6 @@ LyricsWindow::LyricsWindow(const QString &artist, const QString &title, QWidget } if(!loadFromCache()) on_searchPushButton_clicked(); - - //UltimateLyricsParser parser; - //parser.load(":/ultimate_providers.xml"); } @@ -180,13 +179,16 @@ void LyricsWindow::showText(QNetworkReply *reply) void LyricsWindow::on_searchPushButton_clicked() { m_ui.stateLabel->setText(tr("Receiving")); - setWindowTitle(QString(tr("Lyrics: %1 - %2")).arg(m_ui.artistLineEdit->text()) + qDebug() << m_parser.providers().count(); + + + /*setWindowTitle(QString(tr("Lyrics: %1 - %2")).arg(m_ui.artistLineEdit->text()) .arg(m_ui.titleLineEdit->text())); QNetworkRequest request; request.setUrl(QUrl("https://lyrics.fandom.com/api.php?action=lyrics&artist=" + m_ui.artistLineEdit->text()+"&song=" + m_ui.titleLineEdit->text() + "&fmt=xml")); request.setRawHeader("User-Agent", QString("qmmp/%1").arg(Qmmp::strVersion()).toLatin1()); - m_requestReply = m_http->get(request); + m_requestReply = m_http->get(request);*/ } QString LyricsWindow::cacheFilePath() const diff --git a/src/plugins/General/lyrics/lyricswindow.h b/src/plugins/General/lyrics/lyricswindow.h index f8a4e8ca8..2843cc959 100644 --- a/src/plugins/General/lyrics/lyricswindow.h +++ b/src/plugins/General/lyrics/lyricswindow.h @@ -21,7 +21,7 @@ #define LYRICSWINDOW_H #include <QWidget> - +#include "ultimatelyricsparser.h" #include "ui_lyricswindow.h" class QNetworkAccessManager; @@ -51,6 +51,7 @@ private: QNetworkReply *m_requestReply; QString m_artist, m_title; QString m_cachePath; + UltimateLyricsParser m_parser; }; #endif diff --git a/src/plugins/General/lyrics/providers/providers.qrc b/src/plugins/General/lyrics/providers/providers.qrc new file mode 100644 index 000000000..102d6b40e --- /dev/null +++ b/src/plugins/General/lyrics/providers/providers.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC> +<RCC version="1.0"> + <qresource> + <file>ultimate_providers.xml</file> + </qresource> +</RCC> diff --git a/src/plugins/General/lyrics/providers/ultimate_providers.xml b/src/plugins/General/lyrics/providers/ultimate_providers.xml new file mode 100644 index 000000000..98a043695 --- /dev/null +++ b/src/plugins/General/lyrics/providers/ultimate_providers.xml @@ -0,0 +1,313 @@ +<?xml version="1.0" encoding="UTF-8"?> +<lyricproviders> + <provider name="azlyrics.com" title="{artist} LYRICS - {title}" charset="utf-8" url="http://www.azlyrics.com/lyrics/{artist}/{title}.html"> + <urlFormat replace=" ._@,;&\/()'"-" with=""/> + <extract> + <item begin="<!-- Usage of azlyrics.com content by any third-party lyrics provider is prohibited by our licensing agreement. Sorry about that. -->" end="</div>"/> + </extract> + <exclude> + <item tag="<B>"/> + <item begin="<i>[" end="]</i>"/> + <item begin="[" end="]"/> + </exclude> + <invalidIndicator value="<h1>Welcome to AZLyrics!</h1>"/> + </provider> + <provider name="bollywoodlyrics.com (Bollywood songs)" title="{title} Song Lyrics - BollywoodLyrics.com" charset="utf-8" url="http://www.bollywoodlyrics.com/lyric/{Title}"> + <urlFormat replace=" _@;\/"'()[]" with="-"/> + <urlFormat replace="?" with=""/> + <extract> + <item begin="<div class="entry-content">" end="</div>"/> + </extract> + <invalidIndicator value="Couldn't find that page."/> + </provider> + <provider name="darklyrics.com" title ="{ARTIST} LYRICS - "{title}" ({year}) album" charset="utf-8" url="http://www.darklyrics.com/lyrics/{artist2}/{album2}.html"> + <extract> + <item begin="<h3><a name="{track}">{track}. {Title2}</a></h3><br />" end="<h3>"/> + </extract> + <extract> + <item begin="<h3><a name="{track}">{track}. {Title2}</a></h3><br />" end="<div class="thanks">"/> + </extract> + <invalidIndicator value="The page you requested was not found on DarkLyrics.com."/> + </provider> + <provider name="directlyrics.com" title="{artist} - {title} lyrics" charset="iso-8859-1" url="http://www.directlyrics.com/{artist}-{title}-lyrics.html"> + <urlFormat replace=" _@,;&\/'"" with="-"/> + <urlFormat replace="." with=""/> + <extract> + <item tag="<div id="lyricsContent">"/> + <item tag="<p>"/> + </extract> + <exclude> + <item begin="<b>" end="</b>"/> + </exclude> + </provider> + <provider name="elyrics.net" title="{title} Lyrics - {artist}" charset="iso-8859-1" url="http://www.elyrics.net/read/{a}/{artist}-lyrics/{title}-lyrics.html"> + <urlFormat replace=" _@;&\/"" with="-"/> + <urlFormat replace="'" with="_"/> + <extract> + <item tag="<div class='ly' style='font-size:12px;'>"/> + </extract> + <exclude> + <item tag="<strong>"/> + <item tag="<em>"/> + </exclude> + <invalidIndicator value="Page not Found"/> + </provider> + <provider name="Encyclopaedia Metallum" title="{title Lyrics - {artist}" charset="utf-8" url="http://www.metal-archives.com/search/ajax-advanced/searching/songs/?songTitle={title}&bandName={artist}&ExactBandMatch=1"> + <extract> + <item url="http://www.metal-archives.com/release/ajax-view-lyrics/id/{id}"/> + <item begin="id=\"lyricsLink_" end="""/> + </extract> + <invalidIndicator value=""iTotalRecords": 0"/> + <invalidIndicator value="lyrics not available"/> + </provider> + <provider name="genius.com" charset="utf-8" url="https://www.genius.com/{artist}-{title}-lyrics"> + <urlFormat replace=",._@!#%^*+;\/"'()[]" with=""/> + <urlFormat replace=" :" with="-"/> + <!-- When $ is used as the dollar sign it is omitted from the url + When $ is used instead of 's', + in some cases it is replaced by 's'(Too $hort -> too-short) + in other cases it is omitted ($uicideboy$ -> uicideboy) + I chose to omit it though, in some cases it's gonna be problematic --> + <urlFormat replace="$" with=""/> + <urlFormat replace="ÄÂÀÁÃäâàáã" with="a"/> + <urlFormat replace="ËÊÈÉëêèé" with="e"/> + <urlFormat replace="ÏÌïì" with="i"/> + <urlFormat replace="ÖÔÒÓÕöôòóõ" with="o"/> + <urlFormat replace="ÜŪÙÚüūùú" with="u"/> + <urlFormat replace="ŸÝÿý" with="y"/> + <urlFormat replace="Ññ" with="n"/> + <urlFormat replace="Çç" with="c"/> + <urlFormat replace="ß" with="ss"/> + <urlFormat replace="&" with="and"/> + <extract> + <item tag="<div class="lyrics">"/> + </extract> + <exclude> + <item begin="<!--" end="-->"/> + <item begin="<a href=" end=">"/> + <item begin="</a" end=">"/> + </exclude> + </provider> + <provider name="hindilyrics.net (Bollywood songs)" title="{title} ({album})" charset="utf-8" url="http://www.hindilyrics.net/lyrics/of-{Title}.html"> + <urlFormat replace=" _@;\/"'()[]" with="%20"/> + <urlFormat replace="?" with=""/> + <extract> + <item begin="<div class=nm>Movie</div>:" end="</pre>"/> + </extract> + <exclude> + <item begin="<span class=" end="">"/> + </exclude> + <invalidIndicator value="Couldn't find that page."/> + </provider> + <provider name="letras.mus.br" title="" charset="utf-8" url="https://www.letras.mus.br/winamp.php?musica={title}&artista={artist}"> + <urlFormat replace="_@,;&\/"" with="_"/> + <urlFormat replace=" " with="+"/> + <extract> + <item begin="</div>" end="</div>"/> + </extract> + <invalidIndicator value="Verifique se o nome do seu arquivo e sua"/> + </provider> + <provider name="lololyrics.com" title="" charset="utf-8" url="http://api.lololyrics.com/0.5/getLyric?artist={artist}&track={title}"> + <urlFormat replace="_@,;&\/"#" with="_"/> + <extract> + <item tag="<response>"/> + </extract> + <invalidIndicator value="ERROR"/> + </provider> + <provider name="loudson.gs" title="" charset="utf-8" url="http://www.loudson.gs/{a}/{artist}/{album}/{title}"> + <urlFormat replace=" _@,;&\/"" with="-"/> + <urlFormat replace="." with=""/> + <extract> + <item tag="<div class="middle_col_TracksLyrics ">"/> + </extract> + </provider> + <provider name="lyrics.com" title="{artist} - {title} Lyrics" charset="utf-8" url="http://www.lyrics.com/lyrics/{artist}/{title}.html"> + <urlFormat replace=" _@,;&\/"" with="-"/> + <urlFormat replace="'." with=""/> + <extract> + <item tag="<div id="lyrics" class="SCREENONLY">"/> + </extract> + <exclude> + <item begin="<br><br><a target='_blank'" end="></a>"/> + </exclude> + <invalidIndicator value="Click to search for the Lyrics on Lyrics.com"/> + <invalidIndicator value="we do not have the lyric for this song"/> + </provider> + <provider name="lyrics.wikia.com" title="{artist}:{title} Lyrics - " charset="utf-8" url="http://lyrics.wikia.com/{Artist}:{Title}"> + <urlFormat replace=" _@;\"" with="_"/> + <urlFormat replace="?" with="%3F"/> + <extract> + <item begin="<div class='lyricbox'>" end="<div class='lyricsbreak'"/> + </extract> + <exclude> + <item tag="<div class='rtMatcher'>"/> + <item tag="<span style="padding:1em">"/> + </exclude> + </provider> + <provider name="lyricsbay.com" title="{title} lyrics {artist}" charset="iso-8859-1" url="http://www.lyricsbay.com/{title}_lyrics-{artist}.html"> + <urlFormat replace=" _@,;&\/'"" with="_"/> + <urlFormat replace="." with=""/> + <extract> + <item tag="<div id=EchoTopic>"/> + </extract> + <exclude> + <item tag="<textarea name="songscpy" id="songscpyid" onclick="callselect('songscpyid','selectswf')" rows="3" cols="45" READONLY>"/> + </exclude> + </provider> + <provider name="lyricsdownload.com" title="{artist} - {title} LYRICS" charset="utf-8" url="http://www.lyricsdownload.com/{artist}-{title}-lyrics.html"> + <urlFormat replace=" _@,;&\/"" with="-"/> + <urlFormat replace="." with=""/> + <extract> + <item tag="<div id="div_customCSS">"/> + </extract> + <invalidIndicator value="We haven't lyrics of this song"/> + </provider> + <provider name="lyricsmania.com" title="{artist} - {title} Lyrics" charset="iso-8859-1" url="http://www.lyricsmania.com/{title}_lyrics_{artist}.html"> + <urlFormat replace=" _@;&\/"'." with="_"/> + <extract> + <item begin="<span style="font-size:14px;">" end="<span style="font-size:14px;">"/> + <item begin="</center>" end="<a"/> + </extract> + <invalidIndicator value="The lyrics you requested is not in our archive yet,"/> + </provider> + <provider name="lyricsmode.com" title="{artist} - {title} lyrics" charset="iso-8859-1" url="http://www.lyricsmode.com/lyrics/{a}/{artist}/{title}.html"> + <urlFormat replace=" ._@,;&\/"" with="_"/> + <extract> + <item tag="<div id='songlyrics_h' class='dn'>"/> + </extract> + <invalidIndicator value="Sorry, we have no"/> + </provider> + <provider name="lyricsplugin.com" title="{artist} - {title} Lyrics" charset="utf-8" url="http://www.lyricsplugin.com/winamp03/plugin/?title={title}&artist={artist}"> + <urlFormat replace="_@;&\/"" with="-"/> + <urlFormat replace="'" with=""/> + <urlFormat replace=" " with="%20"/> + <extract> + <item tag="<div id="lyrics">"/> + </extract> + </provider> + <provider name="lyricsreg.com" title="{title} lyrics {artist}" charset="iso-8859-1" url="http://www.lyricsreg.com/lyrics/{artist}/{title}/"> + <urlFormat replace=" _@,;&\/"" with="+"/> + <urlFormat replace="'." with=""/> + <extract> + <item begin="Ringtone to your Cell" end="Ringtone to your Cell"/> + <item begin="<div style="text-align:center;">" end="<a"/> + </extract> + <invalidIndicator value="Page not Found"/> + </provider> + <provider name="lyricstime.com" title="{artist} - {title} Lyrics" charset="iso-8859-1" url="http://www.lyricstime.com/{artist}-{title}-lyrics.html"> + <urlFormat replace=" _@,;&\/"'" with="-"/> + <urlFormat replace="." with=""/> + <extract> + <item tag="<div id="songlyrics" >"/> + <item tag="<p>"/> + </extract> + </provider> + <provider name="lyriki.com" title="" charset="utf-8" url="http://www.lyriki.com/{artist}:{title}"> + <urlFormat replace=" _@,;&\/"" with="_"/> + <urlFormat replace="." with=""/> + <extract> + <item begin="</table>" end="<div class="printfooter">"/> + <item tag="<p>"/> + </extract> + </provider> + <provider name="metrolyrics.com" title="{artist} - {title} LYRICS" charset="utf-8" url="http://www.metrolyrics.com/{title}-lyrics-{artist}.html"> + <urlFormat replace=" _@,;&\/"" with="-"/> + <urlFormat replace="'." with=""/> + <extract> + <item tag="<span id="lyrics">"/> + </extract> + <extract> + <item tag="<div id="lyrics">"/> + </extract> + <exclude> + <item tag="<h5>"/> + </exclude> + <invalidIndicator value="These lyrics are missing"/> + </provider> + <provider name="mp3lyrics.org" title="{artist} &quot;{title}&quot; Lyrics" charset="utf-8" url="http://www.mp3lyrics.org/{a}/{artist}/{title}/"> + <urlFormat replace=" _@,;&\/"" with="-"/> + <urlFormat replace="'." with=""/> + <extract> + <item tag="<span id=gn_lyricsB>"/> + </extract> + <extract> + <item tag="<div class="KonaBody" id="EchoTopic">"/> + </extract> + <exclude> + <item tag="<font size=2>"/> + <item begin="<b><i>" end="</u></b>:"/> + <item begin="<b>Lyrics" end="</b>"/> + </exclude> + <invalidIndicator value="Something went wrong"/> + </provider> + <provider name="musixmatch.com" title="{artist} - {title} lyrics | Musixmatch" charset="utf-8" url="https://www.musixmatch.com/lyrics/{Artist}/{Title}"> + <urlFormat replace=" _@;\/"'()[]" with="-"/> + <urlFormat replace="?" with=""/> + <extract> + <item begin="<span id="lyrics-html"" end="</span>"/> + </extract> + <exclude> + <item begin=" data-reactid="" end="">"/> + </exclude> + <invalidIndicator value="We couldn't find that page."/> + </provider> + <provider name="seeklyrics.com" title="{artist} - {title} Lyrics" charset="iso-8859-1" url="http://www.seeklyrics.com/lyrics/{Artist}/{Title}.html"> + <urlFormat replace=" _@,;&\/'"" with="-"/> + <urlFormat replace="." with=""/> + <extract> + <item tag="<div id="songlyrics">"/> + </extract> + </provider> + <provider name="songlyrics.com" title="{title} LYRICS - {artist}" charset="utf-8" url="http://www.songlyrics.com/{artist}/{title}-lyrics/"> + <urlFormat replace=" ._@,;&\/"" with="-"/> + <urlFormat replace="'" with="_"/> + <extract> + <item tag="<p id="songLyricsDiv" ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" class="songLyricsV14" style="font-size: 14px;z-index: 9999;position: absolute;left: -6000px;">"/> + </extract> + <exclude> + <item begin=" [" end="] "/> + </exclude> + <invalidIndicator value="Sorry, we have no"/> + <invalidIndicator value="This is an upcoming album and we do not have the"/> + </provider> + <provider name="tekstowo.pl (Original lyric language)" title="{artist} - {title} - tekst" charset="utf-8" url="http://www.tekstowo.pl/piosenka,{artist},{title}.html"> + <urlFormat replace=" _@,;&\/'"." with="_"/> + <extract> + <item begin="<div class="song-text">" end="<a href="javascript:;""/> + </extract> + <extract> + <item tag="<div class="tlumaczenie">"/> + </extract> + <exclude> + <item begin="<h2>" end="</h2><br />"/> + </exclude> + </provider> + <provider name="tekstowo.pl (Translated to Polish)" title="{artist} - {title} - tekst" charset="utf-8" url="http://www.tekstowo.pl/piosenka,{artist},{title}.html"> + <urlFormat replace=" _@,;&\/'"." with="_"/> + <extract> + <item begin="<div id="translation" class=" end="<a href="/> + </extract> + <exclude> + <item begin=""id-" end="">"/> + </exclude> + </provider> + <provider name="teksty.org" title="{artist} - {title} - tekst" charset="utf-8" url="http://teksty.org/{artist},{title},tekst-piosenki"> + <urlFormat replace=" _@,;&\/"'" with="-"/> + <urlFormat replace="." with=""/> + <extract> + <item begin="<div class="songText" id="songContent">" end="</div>"/> + </extract> + </provider> + <provider name="vagalume.com.br" title="{title} de {artist} no VAGALUME" charset="iso-8859-1" url="http://vagalume.com.br/{artist}/{title}.html"> + <urlFormat replace=" _@,;&\/'"." with="-"/> + <extract> + <item tag="<span class="editable_area">"/> + </extract> + </provider> + <provider name="vagalume.com.br (Portuguese translations)" title="{title} de {artist} no VAGALUME" charset="iso-8859-1" url="http://vagalume.com.br/{artist}/{title}-traducao.html"> + <urlFormat replace=" _@,;&\/'"." with="-"/> + <extract> + <item tag="<div class="tab_traducao sideBySide lyricArea tab_tra_pt">"/> + </extract> + </provider> +</lyricproviders> |
