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

master
Andrzej Rybczak 16 years ago
parent de5f3b22e0
commit 68a7d11c0e
  1. 18
      src/lyrics_fetcher.cpp
  2. 25
      src/lyrics_fetcher.h

@ -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

@ -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

Loading…
Cancel
Save