Sha256: e8879d3b2019a4b2625fa5c2ed8ecd735c739767e5b51ae611c4dd08211e2a30

Contents?: true

Size: 1.18 KB

Versions: 11

Compression:

Stored size: 1.18 KB

Contents

module Sources
  
  # Describes a Delicious (http://deli.cio.us) source.
  #
  # This source has a fixed set of categories:
  # * title
  # * tags
  # * url
  #
  # Examples:
  #  Sources::CSV.new('usrnam', 'paswrd')
  #
  class Delicious < Base
    
    def initialize username, password
      check_gem
      @username = username
      @password = password
    end
    def check_gem # :nodoc:
      require 'www/delicious'
    rescue LoadError
      puts_gem_missing 'www-delicious', 'the delicious source'
      exit 1
    end
    
    # Harvests the data to index.
    #
    def harvest _, category
      get_data do |indexed_id, data|
        text = data[category.from]
        next unless text
        text.force_encoding 'utf-8' # TODO Still needed?
        yield indexed_id, text
      end
    end
    
    #
    #
    def get_data # :nodoc:
      @generated_id ||= 0
      @posts ||= WWW::Delicious.new(@username, @password).posts_recent(count: 100)
      @posts.each do |post|
        data = {
          title: post.title,
          tags:  post.tags.join(' '),
          url:   post.url.to_s
        }
        @generated_id += 1
        yield @generated_id, data
      end
    end
    
  end
  
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
picky-1.5.2 lib/picky/sources/delicious.rb
picky-1.5.1 lib/picky/sources/delicious.rb
picky-1.5.0 lib/picky/sources/delicious.rb
picky-1.4.3 lib/picky/sources/delicious.rb
picky-1.4.2 lib/picky/sources/delicious.rb
picky-1.4.1 lib/picky/sources/delicious.rb
picky-1.4.0 lib/picky/sources/delicious.rb
picky-1.3.4 lib/picky/sources/delicious.rb
picky-1.3.3 lib/picky/sources/delicious.rb
picky-1.3.2 lib/picky/sources/delicious.rb
picky-1.3.1 lib/picky/sources/delicious.rb