From: Giuseppe Bilotta Date: Sat, 7 Apr 2007 11:51:45 +0000 (+0000) Subject: imdb plugin: fix parsing bug with extra information after roles other than the last X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=d4848b41b48569a2fd4f1c96a30b9fce889deb2e;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git imdb plugin: fix parsing bug with extra information after roles other than the last --- diff --git a/data/rbot/plugins/imdb.rb b/data/rbot/plugins/imdb.rb index 959b2169..ee6b59fe 100644 --- a/data/rbot/plugins/imdb.rb +++ b/data/rbot/plugins/imdb.rb @@ -202,7 +202,7 @@ class Imdb if year = opts[:movies_in_year] filmoyear = @bot.httputil.get(IMDB + sr + "filmoyear") if filmoyear - info << filmoyear.scan(/#{TITLE_MATCH} \(#{year}\)[^\[\n]*\[(.*)\]([^<]+)?(?:$|\s*<)/) + info << filmoyear.scan(/#{TITLE_MATCH} \(#{year}\)[^\[\n]*((?:\s+\[[^\]]+\](?:\s+\([^\[<]+\))*)+)\s+ (bclip == quot ? 1 : -1) - } - debug data.map { |a| a[1] }.join("\n") - data.each { |url, pre_title, pre_roles, extra| + }.each { |url, pre_title, pre_roles| title = fix_article(pre_title.ircify_html) - role_array = pre_roles.split(/\]\s+\[/).map { |txt| + role_array = [] + pre_roles.strip.scan(/\[([^\]]+)\]((?:\s+\([^\[]+\))+)?/) { |txt, comm| if txt.match(/^(.*)\s+\.\.\.\.\s+(.*)$/) - "#{$1} (#{$2})" + role_array << "#{$1} (#{$2})" else - txt + role_array << txt end + role_array.last << " " + comm.ircify_html if comm } - role_array.last << " " + extra.ircify_html if extra roles = role_array.join(', ') movies << [roles, title].join(": ")