Get lyrics from letras.mus.br. Fixes issue #910
This commit is contained in:
parent
4356adb9e3
commit
1d374078a1
@ -34,6 +34,14 @@
|
||||
</exclude>
|
||||
<invalidIndicator value="Page not Found"/>
|
||||
</provider>
|
||||
<provider name="letras.mus.br" title="" charset="iso-8859-1" url="http://letras.terra.com.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="loudson.gs" title="" charset="utf-8" url="http://www.loudson.gs/{a}/{artist}/{album}/{title}">
|
||||
<urlFormat replace=" _@,;&\/"" with="-"/>
|
||||
<urlFormat replace="." with=""/>
|
||||
|
567
tools/ultimate_lyrics_parser/sites.js
Normal file
567
tools/ultimate_lyrics_parser/sites.js
Normal file
@ -0,0 +1,567 @@
|
||||
/*
|
||||
descriptor fields specification:
|
||||
- url - parameters: {artist},{title},{album},{Artist},{Title},{Album},{a}
|
||||
- urlFormat - specify character replacements for url parameters
|
||||
- title - use <title>{artist} - {title} lyrics</title> for extracting artist and title from returned html
|
||||
- charset
|
||||
- extract - short rule(s) for extracting reply from returned html
|
||||
- exclude - similar as extract but inverse
|
||||
- invalidIndicator - string(s) that identify returned page as invalid if page contains the invalidIndicator(s)
|
||||
- getReply - javascript function that manually extract reply from a html page
|
||||
extract, exclude and invalidIndicator fields are alternative to getReply
|
||||
extract, exclude and invalidIndicator fields can be catenated in an array
|
||||
|
||||
extract, exclude fields specification (2 formats):
|
||||
- string - an html tag
|
||||
- 2 lenght array - specify starting and ending string that surround data
|
||||
alternative (fallback) rules for extract are named extract2,extract3,extract4 (useful when a site use multiple templates)
|
||||
*/
|
||||
/*
|
||||
var reply = "<FONT color=#DDDDDD><b>13. Payback</b></font>"
|
||||
var start = reply.search(new RegExp("<b>\\d+. Payback<\\/b>","i"));
|
||||
Amarok.alert(start);
|
||||
*/
|
||||
const siteDescriptors = {
|
||||
"lyrics.wikia.com": {
|
||||
title: "{artist}:{title} Lyrics - ",
|
||||
charset: "utf-8",
|
||||
extract: [["<div class='lyricbox'>","<!--"]],
|
||||
// extract2: [["<div class='lyricbox' >","<!--"]],
|
||||
exclude: ["<div class='rtMatcher'>",'<span style="padding:1em">'],
|
||||
setup: function(){
|
||||
this.multiple = settings.multi_lang_wikia;
|
||||
this.urlHashDiscriminator = this.multiple;
|
||||
},
|
||||
|
||||
url: "http://lyrics.wikia.com/{Artist}:{Title}",
|
||||
urlFormat : [
|
||||
{punct: " _@;\\\"", rep: "_" }, // removed ,/
|
||||
{punct: "?", rep: "%3F" },
|
||||
]
|
||||
},
|
||||
"lyricsplugin.com": {
|
||||
title: "{artist} - {title} Lyrics",
|
||||
charset: "utf-8",
|
||||
extract: '<div id="lyrics">',
|
||||
|
||||
url: "http://www.lyricsplugin.com/winamp03/plugin/?title={title}&artist={artist}",
|
||||
urlFormat : [
|
||||
{punct: "_@;&\\/\"", rep: "-"},// removed ,
|
||||
{punct: "'", rep: ""},
|
||||
{punct: " ", rep: "%20"},
|
||||
]
|
||||
},
|
||||
"lyricstime.com": {
|
||||
title: "{artist} - {title} Lyrics",
|
||||
charset: "iso-8859-1",
|
||||
extract: ['<div id="songlyrics" >','<p>'],
|
||||
|
||||
url: "http://www.lyricstime.com/{artist}-{title}-lyrics.html",
|
||||
urlFormat : [
|
||||
{punct: " _@,;&\\/\"'", rep: "-"},
|
||||
{punct: ".", rep: ""},
|
||||
]
|
||||
},
|
||||
"lyricsreg.com": {
|
||||
title: "{title} lyrics {artist}",
|
||||
charset: "iso-8859-1",
|
||||
invalidIndicator: "Page not Found",
|
||||
extract: [['Ringtone to your Cell','Ringtone to your Cell'],['<div style="text-align:center;">','<a']],
|
||||
|
||||
url: "http://www.lyricsreg.com/lyrics/{artist}/{title}/",
|
||||
urlFormat : [
|
||||
{rep: "+", punct: " _@,;&\\/\"" },
|
||||
{rep: "", punct: "'." },
|
||||
]
|
||||
},
|
||||
"lyricsmania.com": {
|
||||
title: "{artist} - {title} Lyrics",
|
||||
charset: "iso-8859-1",
|
||||
invalidIndicator: "The lyrics you requested is not in our archive yet,",
|
||||
extract: [['<span style="font-size:14px;">','<span style="font-size:14px;">'],['</center>','<a']],
|
||||
|
||||
url: "http://www.lyricsmania.com/{title}_lyrics_{artist}.html",
|
||||
urlFormat : [
|
||||
{rep: "_", punct: " _@;&\\/\"'." }, // removed ,
|
||||
]
|
||||
},
|
||||
"seeklyrics.com": {
|
||||
title: "{artist} - {title} Lyrics",
|
||||
charset: "iso-8859-1",
|
||||
extract: '<div id="songlyrics">',
|
||||
|
||||
url: "http://www.seeklyrics.com/lyrics/{Artist}/{Title}.html",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/'\"" },
|
||||
{rep: "", punct: "." },
|
||||
]
|
||||
},
|
||||
"azlyrics.com": {
|
||||
title: "{artist} LYRICS - {title}",
|
||||
charset: "utf-8",
|
||||
// charset: "iso-8859-1",
|
||||
extract: [['<!-- END OF RINGTONE 1 -->','<!-- RINGTONE 2 -->']],
|
||||
exclude: ['<B>',['<i>[',']</i>'],['[',']']],
|
||||
|
||||
url: "http://www.azlyrics.com/lyrics/{artist}/{title}.html",
|
||||
urlFormat : [
|
||||
{rep: "", punct: " ._@,;&\\/'\"-" },
|
||||
]
|
||||
},
|
||||
"metrolyrics.com": {
|
||||
title: "{artist} - {title} LYRICS",
|
||||
charset: "utf-8",
|
||||
invalidIndicator: "These lyrics are missing",
|
||||
extract: '<span id="lyrics">',
|
||||
extract2: '<div id="lyrics">',
|
||||
exclude: '<h5>',
|
||||
|
||||
url: "http://www.metrolyrics.com/{title}-lyrics-{artist}.html",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/\"" },
|
||||
{rep: "", punct: "'." },
|
||||
]
|
||||
},
|
||||
"jamendo.com": {
|
||||
charset: "utf-8",
|
||||
getReply: function(reply){
|
||||
if(reply.indexOf('<div')>0)
|
||||
reply = reply.extractXmlTag('<div id="lyrics" style="margin-left:5px;">');
|
||||
else
|
||||
reply = reply.replace(/\n/g,"<br />")
|
||||
return reply;
|
||||
},
|
||||
|
||||
url: "http://www.jamendo.com/en/get/track/list/track-artist/lyricstext/plain/?searchterm={Title}&artist_searchterm={Artist}",
|
||||
// url: "http://www.jamendo.com/en/get/track/list/track-artist-album/lyricstext/plain/?searchterm={title}&artist_searchterm={artist}",
|
||||
urlFormat : []
|
||||
},
|
||||
"mp3lyrics.org": {
|
||||
title: "{artist} "{title}" Lyrics",
|
||||
charset: "utf-8",
|
||||
invalidIndicator: "Something went wrong",
|
||||
extract: "<span id=gn_lyricsB>",
|
||||
extract2: '<div class="KonaBody" id="EchoTopic">',
|
||||
exclude: ["<font size=2>",["<b><i>","</u></b>:"],["<b>Lyrics","</b>"]],
|
||||
|
||||
url: "http://www.mp3lyrics.org/{a}/{artist}/{title}/",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/\"" },
|
||||
{rep: "", punct: "'." },
|
||||
]
|
||||
},
|
||||
"songlyrics.com": {
|
||||
title: "{title} LYRICS - {artist}",
|
||||
charset: "utf-8",
|
||||
invalidIndicator: ["Sorry, we have no", "This is an upcoming album and we do not have the"],
|
||||
extract: '<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;">',
|
||||
exclude: [['\n[','] ']],
|
||||
|
||||
url: "http://www.songlyrics.com/{artist}/{title}-lyrics/",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " ._@,;&\\/\"" },
|
||||
{rep: "_", punct: "'" },
|
||||
]
|
||||
},
|
||||
"darklyrics.com": {
|
||||
title: "{artist} LYRICS - {title}",
|
||||
charset: "utf-8",
|
||||
getReply: function(reply, info){
|
||||
// var start = reply.search(new RegExp(("<FONT color=#DDDDDD><b>\d+. " + info.arrange(info.title,this.urlFormat,false) + "</b></font>").escapeRegExp(),"i"));
|
||||
var start = reply.search(new RegExp("<b>\\d+. " + info.arrange(info.title,SearchInfo.prototype.defaultReplaces,false) + "[^<]*<\\/b>","i"));
|
||||
// var start = reply.search(new RegExp("<FONT color=#DDDDDD>","i"));
|
||||
if (start<0)
|
||||
return "";
|
||||
// Amarok.alert(start);
|
||||
reply = reply.substring(start);
|
||||
var end = reply.search(new RegExp("<font","i"));
|
||||
reply = reply.substring(0,end);
|
||||
reply = reply.substring(reply.indexOf("</b>")+4);
|
||||
reply = reply.replace(/<\/font>/ig,"");
|
||||
reply = reply.replace(/<a name=\d+>/ig,"");
|
||||
|
||||
return reply;
|
||||
},
|
||||
/*
|
||||
matchInfo:function(reply,info,info2){
|
||||
if (info2){
|
||||
info.matchedTitle = info2.title;
|
||||
info.matchedArtist = info2.artist;
|
||||
// Amarok.alert(info.matchedTitle + " | " + info.matchedArtist);
|
||||
}else{
|
||||
LyricsClass.prototype.matchInfo.call(this,reply,info);
|
||||
if (!info.arrange)
|
||||
return;
|
||||
var title = reply.match(new RegExp("<b>\\d+. (" + info.arrange(info.title,SearchInfo.prototype.defaultReplaces,false) + "[^<]*)<\\/b>","i"));
|
||||
if (title)
|
||||
info.matchedTitle = title[1];
|
||||
}
|
||||
Amarok.alert(info.matchedTitle + " | " + info.matchedArtist);
|
||||
},
|
||||
*/
|
||||
invalidIndicator: "Not Found",
|
||||
|
||||
url: "http://www.darklyrics.com/lyrics/{artist}/{album}.html",
|
||||
urlFormat : [
|
||||
{rep: "", punct: " _@,;&\\/\"'." },
|
||||
]
|
||||
},
|
||||
"lyricsmode.com": {
|
||||
title: "{artist} - {title} lyrics",
|
||||
charset: "iso-8859-1",
|
||||
invalidIndicator: "Sorry, we have no",
|
||||
// extract: '<div id="songlyrics">',
|
||||
// extract2: '<span id="lyrics">',
|
||||
extract: "<div id='songlyrics_h' class='dn'>",
|
||||
|
||||
url: "http://www.lyricsmode.com/lyrics/{a}/{artist}/{title}.html",
|
||||
urlFormat : [
|
||||
{rep: "_", punct: " ._@,;&\\/\"" },
|
||||
]
|
||||
},
|
||||
"elyrics.net": {
|
||||
title: "{title} Lyrics - {artist}",
|
||||
charset: "iso-8859-1",
|
||||
invalidIndicator: "Page not Found",
|
||||
extract : "<div class='ly' style='font-size:12px;'>",
|
||||
exclude : ["<strong>","<em>"],
|
||||
|
||||
url: "http://www.elyrics.net/read/{a}/{artist}-lyrics/{title}-lyrics.html",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@;&\\/\"" }, // removed ,
|
||||
{rep: "_", punct: "'" },
|
||||
]
|
||||
},
|
||||
"lyricsdownload.com": {
|
||||
title: "{artist} - {title} LYRICS",
|
||||
charset: "utf-8",
|
||||
invalidIndicator: "We haven't lyrics of this song",
|
||||
extract : '<div id="div_customCSS">',
|
||||
|
||||
url: "http://www.lyricsdownload.com/{artist}-{title}-lyrics.html",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/\"" },
|
||||
{rep: "", punct: "." },
|
||||
]
|
||||
},
|
||||
"lyrics.com": {
|
||||
title: "{artist} - {title} Lyrics",
|
||||
charset: "utf-8",
|
||||
invalidIndicator: "we do not have the lyric for this song",
|
||||
extract: '<div id="lyrics" class="SCREENONLY">',
|
||||
// extract: '<div id="lyric_space">',
|
||||
|
||||
url: "http://www.lyrics.com/lyrics/{artist}/{title}.html",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/\"" },
|
||||
{rep: "", punct: "'." },
|
||||
]
|
||||
},
|
||||
"lyriki.com": {
|
||||
charset: "utf-8",
|
||||
extract: [['</table>','<div class="printfooter">'],'<p>'],
|
||||
|
||||
url: "http://www.lyriki.com/{artist}:{title}",
|
||||
urlFormat : [
|
||||
{rep: "_", punct: " _@,;&\\/\"" },
|
||||
{rep: "", punct: "." },
|
||||
]
|
||||
},
|
||||
"lyricsbay.com": {
|
||||
title: "{title} lyrics {artist}",
|
||||
charset: "iso-8859-1",
|
||||
extract: "<div id=EchoTopic>",
|
||||
exclude: '<textarea name="songscpy" id="songscpyid" onclick="callselect(\'songscpyid\',\'selectswf\')" rows="3" cols="45" READONLY>',
|
||||
// exclude: [["<i>[","]</i>"]],
|
||||
|
||||
url: "http://www.lyricsbay.com/{title}_lyrics-{artist}.html",
|
||||
urlFormat : [
|
||||
{rep: "_", punct: " _@,;&\\/'\"" },
|
||||
{rep: "", punct: "." },
|
||||
]
|
||||
},
|
||||
"directlyrics.com": {
|
||||
title: "{artist} - {title} lyrics",
|
||||
charset: "iso-8859-1",
|
||||
extract: ['<div id="lyricsContent">','<p>'],
|
||||
exclude: [["<b>","</b>"]],
|
||||
|
||||
url: "http://www.directlyrics.com/{artist}-{title}-lyrics.html",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/'\"" },
|
||||
{rep: "", punct: "." },
|
||||
]
|
||||
},
|
||||
"loudson.gs": {
|
||||
charset: "utf-8",
|
||||
extract : '<div class="middle_col_TracksLyrics ">',
|
||||
|
||||
url: "http://www.loudson.gs/{a}/{artist}/{album}/{title}",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/\"" },
|
||||
{rep: "", punct: "." },
|
||||
]
|
||||
},
|
||||
"lyricsfreak.com": {
|
||||
// title: "{artist} | {title} lyrics",
|
||||
title: "{artist}, {title}",
|
||||
charset: "iso-8859-1",
|
||||
extract: "<div id='content_h' class='dn'>",
|
||||
// extract : '<div id="content" style="float: none; clear: both;FONT-SIZE: 15px; FONT-FAMILY: \'Times New Roman\', serif;" lang="en">'
|
||||
},
|
||||
"sing365.com": {
|
||||
title: "{artist} - {title} LYRICS",
|
||||
charset: "utf-8",
|
||||
extract: [['<img src=http://www.sing365.com/images/phone2.gif border=0><br><br></div>','<div']]
|
||||
},
|
||||
"allreggaelyrics.com": {
|
||||
charset: "iso-8859-1",
|
||||
getReply: function(reply){
|
||||
reply = reply.extractXmlTag("<pre>");
|
||||
reply = reply.replace(/\n/g,'<br/>\n');
|
||||
return reply;
|
||||
}
|
||||
},
|
||||
"stixoi.info (Greek songs)": {
|
||||
charset: "utf-8",
|
||||
extract: [['<font class=creators>','</td>']]
|
||||
},
|
||||
"teksty.org": {
|
||||
title: "{artist} - {title} - tekst",
|
||||
charset: "UTF-8",
|
||||
extract: "<span class=\"text\" id='text25534-dta'>",
|
||||
exclude: [['<div style="float:left"','>']],
|
||||
|
||||
url: "http://www.teksty.org/{Artist},{Title2}",
|
||||
urlFormat : [
|
||||
{rep: "_", punct: " _@,;&\\/\"." }, // removed '
|
||||
{rep: "", punct: "'" },
|
||||
]
|
||||
},
|
||||
"tekstowo.pl (Polish translations)": {
|
||||
title: " {artist} - {title} - ",
|
||||
charset: "iso-8859-2",
|
||||
extract: '<div id="tran" style="display:none">', // original
|
||||
extract2: '<div id="tex" style="display:block">', // translated
|
||||
exclude: [['<div style="float:left"','>']],
|
||||
|
||||
url: "http://www.tekstowo.pl/piosenka,{artist},{title}.html",
|
||||
urlFormat : [
|
||||
{rep: "_", punct: " _@,;&\\/'\"." },
|
||||
]
|
||||
},
|
||||
"vagalume.uol.com.br": {
|
||||
title: "{title} de {artist} no VAGALUME",
|
||||
charset: "iso-8859-1",
|
||||
extract: '<div class="tab_original">',
|
||||
// exclude: [['<div style="float:left"','>']],
|
||||
|
||||
url: "http://vagalume.uol.com.br/{artist}/{title}.html",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/'\"." },
|
||||
]
|
||||
},
|
||||
"vagalume.uol.com.br (Portuguese translations)": {
|
||||
title: "{title} de {artist} no VAGALUME",
|
||||
charset: "iso-8859-1",
|
||||
extract: '<div class="tab_tra_pt">',
|
||||
// exclude: [['<div style="float:left"','>']],
|
||||
|
||||
url: "http://vagalume.uol.com.br/{artist}/{title}-traducao.html",
|
||||
urlFormat : [
|
||||
{rep: "-", punct: " _@,;&\\/'\"." },
|
||||
]
|
||||
},
|
||||
"zeneszoveg.hu": {
|
||||
title: "{artist} : {title} - dalszöveg",
|
||||
charset: "utf-8",
|
||||
extract: [['</a>?','<div']]
|
||||
},
|
||||
"letras.mus.br": {
|
||||
charset: "iso-8859-1",
|
||||
url: "http://letras.terra.com.br/winamp.php?musica={title}&artista={artist}",
|
||||
urlFormat : [
|
||||
{rep: "_", punct: "_@,;&\\/\"" },
|
||||
{rep: "+", punct: " " },
|
||||
],
|
||||
extract: [["</div>","</div>"]],
|
||||
invalidIndicator: "Verifique se o nome do seu arquivo e sua",
|
||||
},
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function UniversalSite(){
|
||||
|
||||
this.charset = "utf-8";
|
||||
this.urlHashDiscriminator = settings.max_size_html + settings.max_size_lyrics;
|
||||
this.postExtractReplaces = [];
|
||||
|
||||
this.getReply = function(reply){
|
||||
if (!arguments.callee.preReplaces){
|
||||
arguments.callee.preReplaces = [
|
||||
{expr:/[\r\t\n]/g, str:""}, // removes tab and return and new line chars
|
||||
{expr:/ +/g, str:" "}, // compress multiple spaces
|
||||
{expr:/<script[^>]*(?!<\/script>)*<\/script>/mig , str:""}, // removes <script> tag
|
||||
{expr:/<!--(?!-->)*-->/mig , str:""}, // removes html comments <!-- -->
|
||||
{expr:/<[^>]*[biup]>/ig , str:""}, // removes xml tags <b> <i> <p>...
|
||||
];
|
||||
arguments.callee.postReplaces = [
|
||||
{expr:/\n((<[^>\n]*>)| )*\n/g, str:""}, // removes empty lines
|
||||
{expr:/\n+/g, str:"\n"}, // removes empty lines
|
||||
];
|
||||
}
|
||||
// reply = reply.excludeAll("<script","/script>");
|
||||
reply = reply.multiReplace(arguments.callee.preReplaces);
|
||||
|
||||
reply = reply.match(/>([^<]*)<\/?[biup]/mig); // anything that has <br>
|
||||
if (reply == null)
|
||||
reply = [];
|
||||
var html = "";
|
||||
for (i=0;i<reply.length;i++)
|
||||
html+=reply[i].match(/>([^<]*)<\/?[biup]/mi)[1] + "<br/>";
|
||||
|
||||
html = html.multiReplace(arguments.callee.postReplaces);
|
||||
html = html.multiReplace(LyricsClass.prototype.postExtractReplaces);
|
||||
|
||||
if (html == "")
|
||||
html = "<i>{msg:no text found}</i>";
|
||||
return html;
|
||||
}
|
||||
|
||||
this.downloadableReply = function(info){
|
||||
return info.url!="";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
String.prototype.encodeSuggestionURL = function(){
|
||||
return this.toString();
|
||||
}
|
||||
|
||||
String.prototype.decodeSuggestionURL = function(){
|
||||
return this.toString();
|
||||
}
|
||||
|
||||
String.prototype.formatSuggestionInfo = function(){
|
||||
return this.toString();
|
||||
}
|
||||
|
||||
function GLyrics(){
|
||||
this.charset = "utf-8";
|
||||
this.display_mode = "Suggestions";
|
||||
this.url = "http://www.google.com/search?num={gsearch_no}&q={artist}+{title}+{gsearch}";
|
||||
this.urlFormat = [
|
||||
{punct: "&", rep: "" }
|
||||
];
|
||||
this.urlHashDiscriminator = settings.gsearch_filter_expr + settings.gsearch_filter_url + binToInt(settings.gsearch_filter_artist);
|
||||
// alert(this.urlHashDiscriminator);
|
||||
|
||||
this.getUrl = function(info){
|
||||
var url = LyricsClass.prototype.getUrl.call(this,info);
|
||||
url = url.fill1(settings);
|
||||
// url = url.replace(/\ /g,"+");
|
||||
return url;
|
||||
}
|
||||
|
||||
this.getReply = function(reply,info){
|
||||
if (!arguments.callee.filterURL){
|
||||
arguments.callee.filterURL = function(url){
|
||||
if(!arguments.callee.filter_expr){
|
||||
var filter_expr = settings.gsearch_filter_expr.split("|");
|
||||
for(var i in filter_expr)
|
||||
filter_expr[i] = "(" + filter_expr[i].escapeRegExp() + ")";
|
||||
arguments.callee.filter_expr = new RegExp(filter_expr.join("|"),"i");
|
||||
}
|
||||
|
||||
if (settings.gsearch_filter_url == "no filter")
|
||||
return true;
|
||||
if (settings.gsearch_filter_url == "hostname")
|
||||
url = (new QUrl(url)).host();
|
||||
return url.search(arguments.callee.filter_expr)>=0;
|
||||
}
|
||||
arguments.callee.filterTitle = function(title, info){
|
||||
var b = new RegExp(info.artist,"i").test(title);
|
||||
// if (!b) alert(title);
|
||||
return b;
|
||||
}
|
||||
}
|
||||
if (!info.isValid)
|
||||
return "not found";
|
||||
|
||||
reply = reply.replace(/<\/?em>/g,"");
|
||||
reply = reply.replace(/<\/?b>/g,"");
|
||||
var suggestions = reply.match( /href=\"([^\"]*)\" class=l[^>]*>([^<]*)<\/a>/g );
|
||||
if (suggestions === null || !suggestions)
|
||||
return "not found";
|
||||
// Amarok.alert(suggestions);
|
||||
var fullySupported = "";
|
||||
var universalSupported = "";
|
||||
for (i=0;i<suggestions.length;i++){
|
||||
suggestions[i] = suggestions[i].match(/href=\"([^\"]*)\" class=l[^>]*>([^<]*)<\/a>/);
|
||||
var url = suggestions[i][1].escapeXmlChars().encodeSuggestionURL();
|
||||
var title = suggestions[i][2];
|
||||
if (!arguments.callee.filterURL(url) || (settings.gsearch_filter_artist && !arguments.callee.filterTitle(title, info)))
|
||||
continue;
|
||||
var site = SiteManager.domains[(new QUrl(url)).host()];
|
||||
var inf = {artist:info.artist,title:title};
|
||||
var bFullySupported = !(!site);
|
||||
if (!site)
|
||||
site = this;
|
||||
|
||||
site.matchInfo("<title>"+inf.title+"</title>",inf,info);
|
||||
// alert(site.domain + " " + SiteManager.domains[(new QUrl(url)).host()] + " " + (new QUrl(url)).host());
|
||||
var artist = inf.matchedArtist.escapeNumberedChars().escapeHtmlEntities().capitalize();
|
||||
var title = inf.matchedTitle.escapeNumberedChars().escapeHtmlEntities().capitalize();
|
||||
var host = " (" + (new QUrl(url)).host()+")";
|
||||
if (artist == ""){
|
||||
artist = "unknown";
|
||||
// bFullySupported = false;
|
||||
// artist = "(" + (new QUrl(url)).host()+")";
|
||||
// if (title.length > 40 - artist.length - host.length)
|
||||
// title = title.substr(0, 40 - artist.length - host.length) + "..";
|
||||
}
|
||||
title += host;
|
||||
// Amarok.alert(url);
|
||||
var suggestion = "<suggestion artist=\"" + artist.formatSuggestionInfo().replace(/\"/g,"'").escapeXmlChars() + "\" title=\"" + title.formatSuggestionInfo().replace(/\"/g,"'").escapeXmlChars()+ "\" url=\"" + url + "\" />\n";
|
||||
if (bFullySupported)
|
||||
fullySupported += suggestion;
|
||||
else
|
||||
universalSupported += suggestion;
|
||||
}
|
||||
var xml = fullySupported+universalSupported;
|
||||
if (xml=="")
|
||||
return "not found";
|
||||
return xml;
|
||||
}
|
||||
|
||||
this.filter = function(info){
|
||||
return true;
|
||||
}
|
||||
|
||||
this.downloadableReply = function(info){
|
||||
return info.url=="" && !this.skipSearch;
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function NotFound(){
|
||||
this.display_mode = "Suggestions";
|
||||
|
||||
this.getReply = function(reply,info){
|
||||
return "not found";
|
||||
}
|
||||
/*
|
||||
this.downloadableReply = function(info){
|
||||
return false;
|
||||
};
|
||||
*/
|
||||
this.filter = function(info){
|
||||
return !info.isValid;
|
||||
}
|
||||
|
||||
}
|
||||
|
19
tools/ultimate_lyrics_parser/sites.js.diff
Normal file
19
tools/ultimate_lyrics_parser/sites.js.diff
Normal file
@ -0,0 +1,19 @@
|
||||
--- sites.js-old 2010-11-21 15:51:17.000000000 +0000
|
||||
+++ sites.js 2010-11-21 16:07:11.000000000 +0000
|
||||
@@ -377,6 +377,16 @@
|
||||
charset: "utf-8",
|
||||
extract: [['</a>?','<div']]
|
||||
},
|
||||
+ "letras.mus.br": {
|
||||
+ charset: "iso-8859-1",
|
||||
+ url: "http://letras.terra.com.br/winamp.php?musica={title}&artista={artist}",
|
||||
+ urlFormat : [
|
||||
+ {rep: "_", punct: "_@,;&\\/\"" },
|
||||
+ {rep: "+", punct: " " },
|
||||
+ ],
|
||||
+ extract: [["</div>","</div>"]],
|
||||
+ invalidIndicator: "Verifique se o nome do seu arquivo e sua",
|
||||
+ },
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------
|
Loading…
x
Reference in New Issue
Block a user