]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/rss.rb
More RSS plugin improvements
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / rss.rb
index e5b8c110116fd0b6b5e453c251b2bebbeb0ee385..636385a5a6afb9591855a989a0d4b22d1e4c82c0 100644 (file)
@@ -197,22 +197,28 @@ class RSSFeedsPlugin < Plugin
       forced = true\r
       m.params.gsub!(/^force /, '')\r
     end\r
-    feed = m.params.match(/^(\S+)\s+(\S+)$/)\r
-    if feed.nil?\r
+    feed = m.params.scan(/\S+/)\r
+    if feed.nil? or feed.length < 2\r
       m.reply("incorrect usage: " + help(m.plugin))\r
+      return\r
     end\r
-    handle = feed[1]\r
-    url = feed[2]\r
-    debug "Handle: #{handle.inspect}, Url: #{url.inspect}"\r
+    handle = feed[0]\r
+    handle.gsub!("|", '_')\r
+    url = feed[1]\r
+    type = feed[2] || nil\r
+    debug "Handle: #{handle.inspect}, Url: #{url.inspect}, Type: #{type.inspect}"\r
     if @feeds.fetch(handle, nil) && !forced\r
       m.reply("But there is already a feed named #{handle} with url #{@feeds[handle].url}")\r
       return\r
     end\r
-    handle.gsub!("|", '_')\r
     @@mutex.synchronize {\r
-      @feeds[handle] = RssBlob.new(url,handle)\r
+      @feeds[handle] = RssBlob.new(url,handle,type)\r
     }\r
-    m.reply "RSS: Added #{url} with name #{handle}"\r
+    reply = "Added RSS #{url} named #{handle}"\r
+    if type\r
+      reply << " (format: #{type})"\r
+    end\r
+    m.reply reply\r
     return handle\r
   end\r
 \r
@@ -351,8 +357,9 @@ class RSSFeedsPlugin < Plugin
             debug "First run, we'll see next time"\r
             firstRun = false\r
           else\r
+            otxt = oldItems.map { |item| item.to_s }\r
             dispItems = newItems.reject { |item|\r
-              oldItems.include?(item)\r
+              otxt.include?(item.to_s)\r
             }\r
             if dispItems.length > 0\r
               debug "Found #{dispItems.length} new items"\r
@@ -366,7 +373,7 @@ class RSSFeedsPlugin < Plugin
               debug "No new items found"\r
             end\r
           end\r
-          oldItems = newItems\r
+          oldItems = newItems.dup\r
         rescue Exception => e\r
           error "IO failed: #{e.inspect}"\r
           debug e.backtrace.join("\n")\r