File amarok-2.2.0-fix-lyrics.patch of Package amarok
--- src/scripts/lyrics_lyricwiki/main.js~ 2009-09-28 19:34:03.000000000 +0200
+++ src/scripts/lyrics_lyricwiki/main.js 2009-10-16 04:01:42.000000000 +0200
@@ -97,10 +97,27 @@
return;
}
// parse the relevant part of the html source of the returned page
- relevant = /<div[^<>]*['"]lyricbox['"][^<>]*>(.*)<\/div>/.exec(response)[1];
+ var pos = response.indexOf( "lyricbox" );
+ var startPos = response.indexOf( ">", pos ) + 1;
+ var endPos = response.indexOf( "</div>", startPos );
+ var otherDivPos = response.indexOf( "<div", startPos );
+ while ( otherDivPos != -1 && otherDivPos < endPos ) {
+ endPos = response.indexOf( "</div>", endPos + 1 );
+ otherDivPos = response.indexOf( "<div", otherDivPos + 1 );
+ }
+ var relevant = response.substring( startPos, endPos );
+
// take care of a few special cases
relevant = relevant.replace(/<br\s*\/?>/g, "\n") + "\n\n"; // convert <br> to \n
relevant = relevant.replace( /—/g, "—" ); // not supported by QDomDocument
+ // strip adverts
+ pos = relevant.indexOf( "rtMatcher" );
+ while( pos != -1 ) {
+ startPos = relevant.lastIndexOf( "<div", pos );
+ endPos = relevant.indexOf( "</div>", pos );
+ relevant = relevant.substring( 0, startPos ) + relevant.substring( endPos + 6 );
+ pos = relevant.indexOf( "rtMatcher" );
+ }
// construct a QDomDocument to convert special characters in the lyrics text.
doc2 = new QDomDocument();
doc2.setContent( "<?xml version=\"1.0\" encoding=\"UTF-8\"?><lyrics>" + relevant + "</lyrics>" );