mirror of
https://github.com/wezm/wezm.net.git
synced 2024-11-18 04:42:47 +00:00
Implement post importing
This commit is contained in:
parent
e88a524007
commit
d5f2816204
2 changed files with 63 additions and 5 deletions
|
@ -2,6 +2,11 @@ require 'rubygems'
|
|||
|
||||
require 'wordpress'
|
||||
|
||||
i = Importer::Wordpress.new('wezm.net.2009-11-17.xml')
|
||||
if ARGV.size < 2
|
||||
puts "Usage importer.rb worpress-export.xml /path/to/nanoc/site"
|
||||
exit 3
|
||||
end
|
||||
|
||||
i = Importer::Wordpress.new(ARGV[0], ARGV[1])
|
||||
|
||||
i.run
|
||||
|
|
|
@ -2,12 +2,13 @@ require 'nokogiri'
|
|||
require 'nanoc3'
|
||||
|
||||
module Importer
|
||||
|
||||
|
||||
class Wordpress
|
||||
|
||||
def initialize(wordpress_export_path)
|
||||
def initialize(wordpress_export_path, nanoc_site_path)
|
||||
@export_file = File.open(wordpress_export_path)
|
||||
@export = Nokogiri::XML(@export_file)
|
||||
@site = Nanoc3::Site.new(nanoc_site_path)
|
||||
end
|
||||
|
||||
def run
|
||||
|
@ -29,10 +30,48 @@ module Importer
|
|||
|
||||
protected
|
||||
|
||||
def get(node, xpath)
|
||||
elem = node.xpath(xpath).first
|
||||
elem ? elem.content : nil
|
||||
end
|
||||
|
||||
def process_post(post)
|
||||
puts "Processing post: #{post.css('title').first.text}"
|
||||
content = get(post, 'content:encoded')
|
||||
|
||||
tags = []
|
||||
post.css('category[domain=tag]').each do |tag|
|
||||
if tag['nicename']
|
||||
tags << tag['nicename']
|
||||
else
|
||||
tags << tag.text.downcase
|
||||
end
|
||||
end
|
||||
|
||||
categories = []
|
||||
post.css('category[domain=category]').each do |category|
|
||||
categories << category.text
|
||||
end
|
||||
|
||||
attributes = {
|
||||
:tags => tags.uniq,
|
||||
:categories => categories.uniq,
|
||||
:permalink => get(post, 'link'),
|
||||
:status => get(post, 'wp:status'),
|
||||
:slug => get(post, 'wp:post_name'),
|
||||
:post_id => get(post, 'wp:post_id').to_i,
|
||||
:post_date => get(post, 'wp:post_date_gmt'),
|
||||
}
|
||||
|
||||
unless attributes[:slug]
|
||||
puts "Error post #{post_id} has no slug"
|
||||
return
|
||||
end
|
||||
|
||||
path = "/articles/#{slug}"
|
||||
add_item(content, attributes, identifier)
|
||||
end
|
||||
|
||||
|
||||
def process_page(page)
|
||||
puts "Processing page: #{page.css('title').first.text}"
|
||||
end
|
||||
|
@ -41,6 +80,20 @@ module Importer
|
|||
puts "Processing attachment"
|
||||
end
|
||||
|
||||
def add_item(content, attributes, identifier)
|
||||
# content = row['post_content']
|
||||
# attributes = {
|
||||
# :title => row['post_title'],
|
||||
# :published_on => row['post_date_gmt'],
|
||||
# :modified_on => row['post_modified_gmt'],
|
||||
# :status => row['post_status'],
|
||||
# :excerpt => row['post_excerpt']
|
||||
# }
|
||||
# identifier = '/posts/' + post_date.year.to_s + '/' + post_date.month.to_s + '/' + post_name + '/'
|
||||
@site.data_sources.first.create_item(content, attributes, identifier)
|
||||
puts "Added item at #{identifier}"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue