X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fdelicious.rb;h=c2ab7d5d1625f763d39c9f5b56647b84f5b86472;hb=16336b4a240a4265d1f2df1e30d7b68d3a924287;hp=8ed6d5b7bd4024c9e850f3250a6064e2e297b214;hpb=d7be2632c61ddec26a7cf033f0b7cec91a1003fd;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/delicious.rb b/data/rbot/plugins/delicious.rb index 8ed6d5b7..c2ab7d5d 100644 --- a/data/rbot/plugins/delicious.rb +++ b/data/rbot/plugins/delicious.rb @@ -18,17 +18,17 @@ class DeliciousPlugin < Plugin attr_accessor :last_error - BotConfig.register BotConfigStringValue.new('delicious.user', + Config.register Config::StringValue.new('delicious.user', :default => '', :desc => "Username on del.icio.us") - BotConfig.register BotConfigStringValue.new('delicious.password', + Config.register Config::StringValue.new('delicious.password', :default => '', :desc => "Password on del.icio.us") - BotConfig.register BotConfigStringValue.new('delicious.user_fmt', + Config.register Config::StringValue.new('delicious.user_fmt', :default => 'user:%s', :desc => "How to convert users to tags?") - BotConfig.register BotConfigStringValue.new('delicious.channel_fmt', + Config.register Config::StringValue.new('delicious.channel_fmt', :default => 'channel:%s', :desc => "How to convert channels to tags?") def help(plugin, topic="") - "delicious => show url of del.icio.us feed of bot url log." + "logs urls seen to del.icio.us. you can use [tags: tag1 tag2 ...] to provide tags. special tags are: #{Underline}!hide#{Underline} - log the url as non-shared, #{Underline}!skip#{Underline} - don't log the url. Commands: !#{Bold}delicious#{Bold} => show url of del.icio.us feed of bot url log. " end def diu_req(verb, opts = {}) @@ -46,7 +46,7 @@ class DeliciousPlugin < Plugin end def diu_add(url, opts = {}) - old = diu_req('get', :url => url).root.get_elements('/posts/post')[0] rescue ni + old = diu_req('get', :url => url).root.get_elements('/posts/post')[0] rescue nil opts[:tags] ||= '' if old opts[:description] ||= old.attribute('description').to_s @@ -62,6 +62,10 @@ class DeliciousPlugin < Plugin def event_url_added(url, options = {}) debug("called with #{url}, #{options.inspect}") + if @bot.config['delicious.user'].empty? + debug "del.icio.us plugin not configured, skipping" + return + end opts = Hash.new opts[:description] = options[:title] || options[:info] || url opts[:extended] = options[:extra] if options[:extra] @@ -69,6 +73,23 @@ class DeliciousPlugin < Plugin if options[:channel] opts[:tags] << ' ' + (@bot.config['delicious.channel_fmt'] % options[:channel]) end + if options[:ircline] and options[:ircline].match(/\[tag(?:s)?:([^\]]+)\]/) + tags = $1 + tags.tr(',', ' ').split(/\s+/).each do |t| + if t.sub!(/^!/, '') + case t + when 'nolog', 'no-log', 'dont-log', 'dontlog', 'skip': + debug "skipping #{url} on user request" + return + when 'private', 'unshared', 'not-shared', 'notshared', 'hide': + debug "hiding #{url} on user request" + opts[:shared] = 'no' + end + else + opts[:tags] << ' ' + t + end + end + end debug "backgrounding del.icio.us api call" Thread.new { diu_add(url, opts) } end