X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fyoutube.rb;h=abda9ca311fa88e5037f220c680a1583cd22a4fb;hb=41276911b95c934dd5f33ccef53b03bc9dd40975;hp=01f494d1b863e367d3fe99cd381633051086f7a7;hpb=e327a8c418759208a6cd0cab974737af6d1897eb;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/youtube.rb b/data/rbot/plugins/youtube.rb index 01f494d1..abda9ca3 100644 --- a/data/rbot/plugins/youtube.rb +++ b/data/rbot/plugins/youtube.rb @@ -12,7 +12,7 @@ class YouTubePlugin < Plugin YOUTUBE_SEARCH = "http://gdata.youtube.com/feeds/api/videos?vq=%{words}&orderby=relevance" YOUTUBE_VIDEO = "http://gdata.youtube.com/feeds/api/videos/%{id}" - YOUTUBE_VIDEO_URLS = %r{youtube.com/(?:watch\?v=|v/)(.*?)(&.*)?$} + YOUTUBE_VIDEO_URLS = %r{youtube.com/(?:watch\?(?:.*&)?v=|v/)(.*?)(&.*)?$} Config.register Config::IntegerValue.new('youtube.hits', :default => 3, @@ -24,6 +24,10 @@ class YouTubePlugin < Plugin :default => true, :desc => "Should the bot display alternative URLs (swf, rstp) for YouTube videos?") + def help(plugin, topic="") + 'youtube [search] : searches youtube videos | youtube info : returns description and video links' + end + def youtube_filter(s) loc = Utils.check_location(s, /youtube\.com/) return nil unless loc @@ -116,6 +120,7 @@ class YouTubePlugin < Plugin vids = [] title = nil begin +debug s.inspect doc = REXML::Document.new(s[:text]) title = doc.elements["feed/title"].text doc.elements.each("*/entry") { |e| @@ -148,8 +153,9 @@ class YouTubePlugin < Plugin debug id url = YOUTUBE_VIDEO % {:id => id} - resp, xml = @bot.httputil.get_response(url) - unless Net::HTTPSuccess === resp + resp = @bot.httputil.get_response(url) + xml = resp.body + unless resp.kind_of? Net::HTTPSuccess debug("error looking for movie %{id} on youtube: %{e}" % {:id => id, :e => xml}) return nil end @@ -198,8 +204,9 @@ class YouTubePlugin < Plugin what = params[:words].to_s searchfor = CGI.escape what url = YOUTUBE_SEARCH % {:words => searchfor} - resp, xml = @bot.httputil.get_response(url) - unless Net::HTTPSuccess === resp + resp = @bot.httputil.get_response(url) + xml = resp.body + unless resp.kind_of? Net::HTTPSuccess m.reply(_("error looking for %{what} on youtube: %{e}") % {:what => what, :e => xml}) return end @@ -235,3 +242,4 @@ plugin = YouTubePlugin.new plugin.map "youtube info :movie", :action => 'info', :threaded => true plugin.map "youtube [search] *words", :action => 'search', :threaded => true +