Rolled back debian/control deps changes
[maelyrica:maelyrica.git] / AZLyricsDownloader.cpp
1 #include "AZLyricsDownloader.h"
2 #include <QTextDocument>
3
4 const QString AZLyricsDownloader::rooturl("http://azlyrics.com/lyrics");
5 const QRegExp AZLyricsDownloader::endcomment("<!-- end of lyrics -->");
6 const QRegExp AZLyricsDownloader::startcomment("<!-- start of lyrics -->");
7
8 string AZLyricsDownloader::toProviderCode(const string& artist, const string& track) const
9 {
10     QString artist_www, track_www;
11     artist_www = QString::fromStdString(artist).toLower().remove(QRegExp("^the")).remove(QRegExp("\\W"));
12     track_www = QString::fromStdString(track).toLower().remove(QRegExp("\\W"));
13
14     return (rooturl + "/" + artist_www + "/" + track_www + ".html").toStdString();
15
16 }
17
18 bool AZLyricsDownloader::parse()
19 {
20     istringstream temp(buff.str());
21     buff.str("");
22     string line;
23     QString lyrics_QStr, line_QStr;
24     while ( temp.good() ) // looking for comment about starting lyrics
25     {
26         getline(temp, line);
27         if (QString::fromStdString(line).contains(startcomment)) break;
28     }
29     if ( !temp.good() ) return false; // something went wrong
30     // get every line until endcomment
31     while ( temp.good() )
32     {
33         getline(temp, line);
34         if (( line_QStr = QString::fromStdString(line) ).contains(endcomment)) break;
35         lyrics_QStr += line_QStr;
36         //lyrics_QStr += line_QStr.remove(QRegExp("<br[ ]{0,1}[/]{0,1}>"));
37         //lyrics_QStr += " \n";
38     }
39     if ( !temp.good() ) return false; // something went wrong, returning blank string
40
41
42     QTextDocument lyricsHtml;
43     lyricsHtml.setHtml(lyrics_QStr);
44     lyrics_qstr = lyricsHtml.toPlainText();
45     return true;
46 }