Sha256: 0a3aa8ac94c14ce8e2487c2820dae9c4555c505b783889e362534af72daa5e59
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
# frozen_string_literal: true module JekyllImport module Importers class S9Y < Importer def self.specify_options(c) c.option "source", "--source SOURCE", "The URL of the S9Y RSS feed" end def self.validate(options) if options["source"].nil? abort "Missing mandatory option --source, e.g. --source \"http://blog.example.com/rss.php?version=2.0&all=1\"" end end def self.require_deps JekyllImport.require_with_fallback(%w( open-uri rss fileutils safe_yaml )) end def self.process(options) source = options.fetch("source") FileUtils.mkdir_p("_posts") text = "" URI.parse(source).open { |line| text = line.read } rss = ::RSS::Parser.parse(text) rss.items.each do |item| post_url = item.link.match(".*(/archives/.*)")[1] categories = item.categories.collect(&:content) content = item.content_encoded.strip date = item.date slug = item.link.match('.*/archives/[0-9]+-(.*)\.html')[1] name = format("%02d-%02d-%02d-%s.markdown", date.year, date.month, date.day, slug) data = { "layout" => "post", "title" => item.title, "categories" => categories, "permalink" => post_url, "s9y_link" => item.link, "date" => item.date, }.delete_if { |_k, v| v.nil? || v == "" }.to_yaml # Write out the data and content to file File.open("_posts/#{name}", "w") do |f| f.puts data f.puts "---" f.puts content end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jekyll-import-0.15.0 | lib/jekyll-import/importers/s9y.rb |