]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/tumblr.rb
plugin(script): remove deprecated $SAFE
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / tumblr.rb
index ee19ba237cb60717141a7565b436c1207451c2a6..515dc479026e26289ffcf5d1c768eeffe741b172 100644 (file)
@@ -9,7 +9,7 @@
 #
 # Submit URLs to channel-specific tumblr accounts
 #
-# TODO support video better (e.g. Vimeo or anything else with embed)
+# TODO support other video providers (maybe detect embed codes?)
 # TODO support image better (e.g. pages with a single big image)
 # TODO customize caption/description format
 # TODO do not reblog own posts (maybe?)
@@ -31,6 +31,7 @@ class TumblrPlugin < Plugin
   DESC = "&description=%{desc}"
   REBLOG = "&post-id=%{id}&reblog-key=%{reblog}"
   COMMENT = "&comment=%{desc}"
+  TAGS = "&tags=%{tags}"
 
   def help(plugin, topic="")
     case topic
@@ -56,6 +57,7 @@ class TumblrPlugin < Plugin
       line = "<#{nick}> #{line}"
     end
     html_line = line ? CGI.escapeHTML(line) : line
+    tags = line ? line.scan(/\[([^\]]+)\]/).flatten : []
 
     req = LOGIN % account
     ready = false
@@ -82,7 +84,7 @@ class TumblrPlugin < Plugin
             req << (data % {
               :id => id,
               :reblog => reblog,
-              :desc => CGI.escape(htmlline)
+              :desc => CGI.escape(html_line)
             })
             ready = true
           end
@@ -97,7 +99,7 @@ class TumblrPlugin < Plugin
         data = PHOTO
         data << CAPTION if line
       else
-        if url.match(%r{^http://(\w+\.)?youtube\.com/watch.*})
+        if url.match(%r{^http://(\w+\.)?(youtube\.com/watch.*|vimeo.com/\d+)})
           data = VIDEO
           data << CAPTION if line
         else
@@ -105,9 +107,11 @@ class TumblrPlugin < Plugin
           data << NAME if line
         end
       end
+      data << TAGS unless tags.empty?
       req << (data % {
         :src => CGI.escape(url),
         :desc => CGI.escape(html_line),
+        :tags => CGI.escape(tags.join(',')),
         :name => CGI.escape(line)
       })
     end
@@ -184,5 +188,5 @@ plugin.map 'tumblr configure [:channel]', :action => :configuration
 plugin.map 'tumblr deconfigure [:channel]', :action => :deconfigure
 plugin.map 'tumblr configure [:channel] :email :pwd [:group]',
   :action => :configure,
-  :requirements => {:channel => Regexp::Irc::GEN_CHAN, :email => /.+@.+/, :group => /[A-Za-z-]+/}
+  :requirements => {:channel => Regexp::Irc::GEN_CHAN, :email => /\S+@\S+/, :group => /[A-Za-z\-.]+/}