Code

list_window: document list_window_center
[ncmpc.git] / lyrics / 20-lyricwiki.rb
index db7b970307dd03d944eb76e971cedaf8698c72ce..87022492b95497a4659beb7f610190a02eba6610 100755 (executable)
 require 'uri'
 require 'net/http'
 require 'cgi'
+require 'iconv'
+
+# We need this because URI.escape doesn't escape ampersands.
+def escape(string)
+       new = URI.escape(string)
+       new.gsub(/&/, "%26")
+end
 
 url = "http://lyrics.wikia.com/api.php?action=lyrics&fmt=xml&func=getSong" + \
-    "&artist=#{URI.escape(ARGV[0])}&song=#{URI.escape(ARGV[1])}"
+    "&artist=#{escape(ARGV[0])}&song=#{escape(ARGV[1])}"
 response = Net::HTTP.get(URI.parse(url))
 
 if not response =~ /<url>\s*(.*?)\s*<\/url>/im
@@ -48,4 +55,6 @@ if not $1 =~ /^.*<\/div>(.*?)$/im
        exit(1)
 end
 
-puts CGI::unescapeHTML($1.gsub(/<br \/>/, "\n"))
+# lyrics come in Latin1, but we need UTF-8
+lyrics_latin1 = CGI::unescapeHTML($1.gsub(/<br \/>/, "\n"))
+puts Iconv.conv('UTF-8//TRANSLIT//IGNORE', 'Latin1', lyrics_latin1)