Sha256: aa53db47c79a4a1d46b7251c403344be545a1cb7e5b9f2cd07957e86da515bad

Contents?: true

Size: 906 Bytes

Versions: 5

Compression:

Stored size: 906 Bytes

Contents

require 'open-uri'
require 'uri'

require 'nokogiri'

module Murlsh

  module_function

  # Parse a delicious xml export and yield a hash for each bookmark.
  #
  # To export your delicious bookmarks:
  #   curl https://user:password@api.del.icio.us/v1/posts/all > delicious.xml
  def delicious_parse(source)
    doc = Nokogiri::XML(open(source))

    doc.xpath('//post').each do |p|
      result = {}
      p.each { |k,v| result[k.to_sym] = v }

      result[:tag] = result[:tag].split
      result[:time] = Time.parse(result[:time])

      # extract via information from extended
      result[:via] = result[:extended].chomp(')')[%r{via\s+([^\s]+)}, 1]
      result[:via_url] = begin
        if result[:via] and
          %w{http https}.include?(URI(result[:via]).scheme.to_s.downcase)
          result[:via]
        end
      rescue URI::InvalidURIError
      end

      yield result
    end
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
murlsh-1.4.1 lib/murlsh/delicious_parse.rb
murlsh-1.4.0 lib/murlsh/delicious_parse.rb
murlsh-1.3.1 lib/murlsh/delicious_parse.rb
murlsh-1.3.0 lib/murlsh/delicious_parse.rb
murlsh-1.2.1 lib/murlsh/delicious_parse.rb