Class Rubilicious
In: rubilicious.rb  (CVS)
Parent: Object

Rubilicious - Delicious (del.icio.us/) bindings for Ruby.

You‘ll need to create an account at Delicious (del.icio.us/) in order to use this API.

Simple Examples:

  # connect to delicious and get a list of your recent posts
  r = Rubilicious.new('user', 'password')
  r.recent.each do |post|
    puts "#{post['desc']}: #{post['href']}"
  end

  # add a new link to delicious
  r.add('http://pablotron.org/', 'Pablotron.org')

  # save recent funny posts to an XBEL file
  File::open('funny_links.xbel', 'w') do |file|
    file.puts r.recent('funny').to_xbel
  end

Methods

add   all   all_posts   dates   delete   inbox   inbox_dates   new   posts   recent   rename   rename_tag   sub   subs   subscribe   subscriptions   tags   to_xbel   unsub   unsubscribe   update   user_posts  

Constants

VERSION = '0.1.4'

Attributes

base_uri  [RW] 
use_proxy  [RW] 
user  [R] 

Public Class methods

Connect to del.icio.us with username ‘user’ and password ‘pass’.

Note: if the username or password is incorrect, Rubilicious will not raise an exception until you make an actual call.

Example:

  r = Rubilicious.new('pabs', 'password')

Public Instance methods

Post a link to delicious, along with an optional extended description, tags (as a space-delimited list), and a timestamp.

Raises an exception on error.

Example:

  # add a link to pablotron to delicious
  r.add('http://pablotron.org/',
        'Pablotron.org : The most popular site on Internet?')

  # add a link to paulduncan.org to delicious with an extended
  # description
  r.add('http://paulduncan.org/', "Paul Duncan", "Damn he's smooth!")

  # add a link with an extended description and some tags
  r.add('http://raggle.org/',
        'Raggle', 'Console RSS Aggregator, written in Ruby.',
        'rss programming ruby console xml')

Return an array of all your posts ever, optionally filtered by tag.

WARNING: This method can generate a large request to del.icio.us, and should be used sparingly, and at your own risk.

Raises an exception on error.

Example:

  # save all 'art' posts to file "art_posts.txt"
  art_posts = r.all('art')
  File::open('art_posts.txt', 'w') do |file|
    file.puts art_posts.sort do |a, b|
      a['time'] <=> b['time']
    end.map { |post| post['href'] }
  end
all_posts(tag = nil)

Alias for all

Returns a list of dates with the number of posts at each date. If a tag is given, return a list of dates with the number of posts with the specified tag at each date.

Raises an exception on error.

Examples:

  dates = r.dates
  puts "date,count"
  dates.keys.sort.each do |date|
    puts "#{date},#{dates[date]}"
  end

  # same as above, but only display 'politics' tags
  dates = r.dates('politics')
  puts "date,count",
       dates.map { |args| args.join(',') }.join("\n")

Delete a link from Delicious.

Raises an exception on error.

Example:

  # delete a link to example.com from delicious
  r.delete('http://example.com/')

Returns a array of inbox entries, optionally filtered by date.

Raises an exception on error.

Example:

  # print a list of posts and who posted them
  r.inbox.each { |post| puts "#{post['user']},#{post['href']}" }

Returns a hash of dates containing inbox entries.

Raises an exception on error.

Example:

  # print out a list of the 10 busiest inbox dates
  dates = r.inbox_dates
  puts dates.keys.sort { |a, b| dates[b] <=> dates[a] }.slice(0, 10)

Returns an array of posts on a given date, filtered by tag. If no date is supplied, most recent date will be used.

Raises an exception on error.

Examples:

  # print out a list of recent links from oldest to newest.
  posts = r.posts
  posts.sort { |a, b| a['time'] <=> b['time'] }.each do |post|
    puts post['href']
  end

  # print out a list of link descriptions from the date '2004-09-22'
  posts = r.posts('2004-09-22')
  posts.sort { |a, b| a['description'] <=> b['description'] }
  posts.each { |post| puts post['description'] }

Returns an array of the most recent posts, optionally filtered by tag.

Raises an exception on error.

Example:

  # get the most recent links
  recent_links = r.recent.map { |post| post['href'] }

  # get the 10 most recent 'music' links
  recent_links = r.recent('music', 10).map { |post| post['href'] }

Renames tags across all posts.

Note: Delicious has currently disabled this feature, so it will not work until they reenable it.

Raises an exception on error.

Example:

  # rename tag "rss" to "xml"
  r.rename('rss', 'xml')
rename_tag(old, new)

Alias for rename

Add a subscription, optionally to a specific tag.

Raises an exception on error.

Example:

  # subscribe to 'humor' links from solarce
  r.sub('solarce', 'humor')

Returns a hash of your subscriptions.

Raises an exception on error.

Example:

  # print out a list of subscriptions
  subs = r.subs
  puts "user:tags"
  subs.keys.sort.each do |sub|
    puts "#{sub}:#{subs[sub].join(' ')}"
  end
subscribe(user, tag = nil)

Alias for sub

subscriptions()

Alias for subs

Returns a hash of tags and the number of times they’ve been used.

Raises an exception on error.

Example:

  tags = r.tags
  puts tags.keys.sort.map { |tag| "#{tag},#{tags[tag]}" }.join("\n")

Return an XBEL string of all your posts, optionally filtered by tag.

WARNING: This method can generate a large number of requests to del.icio.us, and could be construed as abuse. Use sparingly, and at your own risk.

Raises an exception on error.

Example:

  # save all posts ever in XBEL format to file "delicious.xbel"
  File::open('delicious.xbel', 'w') do |file|
    file.puts r.to_xbel
  end

Removes a subscription, optionally only a specific tag.

Raises an exception on error.

Example:

  # unsubscribe from all links from giblet
  r.unsub('giblet')
unsubscribe(user, tag = nil)

Alias for unsub

Return the last update time.

Note: this method should be used before calling methods like .posts or .all to conserve on bandwidth.

Example:

 t = r.update  #=> "Fri Mar 11 02:45:51 EST 2005"

Return all of a user’s posts, optionally filtered by tag.

WARNING: This method can generate a large number of requests to del.icio.us, and could be construed as abuse. Use sparingly, and at your own risk.

Raises an exception on error.

Example:

  # save all posts every by 'delineator' to XBEL format to file
  # "delineator.xbel"
  File::open('delineator.xbel', 'w') do |file|
    file.puts r.user_posts('delineator').to_xbel
  end

[Validate]