lyrics fetcher: add songlyrics.com and lyriczz.com support

This commit is contained in:
Andrzej Rybczak
2010-08-11 13:34:18 +02:00
parent de5f3b22e0
commit 68a7d11c0e
2 changed files with 43 additions and 0 deletions

View File

@@ -31,6 +31,8 @@
LyricsFetcher *lyricsPlugins[] =
{
new LyricwikiFetcher(),
new LyriczzFetcher(),
new SonglyricsFetcher(),
new LyricsmaniaFetcher(),
new LyricstimeFetcher(),
new MetrolyricsFetcher(),
@@ -183,6 +185,11 @@ LyricsFetcher::Result GoogleLyricsFetcher::fetch(const std::string &artist, cons
return LyricsFetcher::fetch("", "");
}
bool GoogleLyricsFetcher::notLyrics(const std::string &data)
{
return LyricsFetcher::notLyrics(data);
}
bool GoogleLyricsFetcher::isURLOk(const std::string &url)
{
return url.find(getSiteKeyword()) != std::string::npos;
@@ -230,5 +237,16 @@ void LyricsmaniaFetcher::postProcess(std::string &data)
LyricsFetcher::postProcess(data);
}
/**********************************************************************/
void SonglyricsFetcher::postProcess(std::string &data)
{
size_t i = data.find('['), j = data.find(']');
if (i != std::string::npos && i != std::string::npos)
data.replace(i, j-i+2, "");
data = unescapeHtmlUtf8(data);
LyricsFetcher::postProcess(data);
}
#endif // HAVE_CURL_CURL_H

View File

@@ -94,6 +94,7 @@ struct GoogleLyricsFetcher : public LyricsFetcher
virtual const char *getSiteKeyword() = 0;
virtual const char *getURL() { return URL; }
virtual bool notLyrics(const std::string &data);
virtual bool isURLOk(const std::string &url);
private:
const char *URL;
@@ -139,6 +140,30 @@ struct LyricsmaniaFetcher : public GoogleLyricsFetcher
virtual void postProcess(std::string &data);
};
struct SonglyricsFetcher : public GoogleLyricsFetcher
{
virtual const char *name() { return "songlyrics.com"; }
protected:
virtual const char *getSiteKeyword() { return "songlyrics"; }
virtual const char *getOpenTag() { return "-6000px;\">"; }
virtual const char *getCloseTag() { return "</p>"; }
virtual void postProcess(std::string &data);
};
struct LyriczzFetcher : public GoogleLyricsFetcher
{
virtual const char *name() { return "lyriczz.com"; }
protected:
virtual const char *getSiteKeyword() { return "lyriczz"; }
virtual const char *getOpenTag() { return "border=0 /></a>"; }
virtual const char *getCloseTag() { return "<a href"; }
//virtual void postProcess(std::string &data);
};
extern LyricsFetcher *lyricsPlugins[];
#endif // HAVE_CURL_CURL_H