lyrics fetcher: add songlyrics.com and lyriczz.com support
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user