First shot at attachment import

* only images for now
* only blog posts for now
* thumbnailed images are not yet replaced in blog posts body
This commit is contained in:
Marc Remolt
2011-06-05 19:14:52 +02:00
parent 9a2b5acef6
commit 7550dfa164
3 changed files with 83 additions and 0 deletions

View File

@@ -19,6 +19,7 @@ namespace :wordpress do
dump = Refinery::WordPress::Dump.new(params[:file_name])
dump.authors.each(&:to_refinery)
attachments = dump.attachments.each(&:to_refinery)
only_published = ENV['ONLY_PUBLISHED'] == 'true' ? true : false
dump.posts(only_published).each(&:to_refinery)
@@ -28,6 +29,12 @@ namespace :wordpress do
ENV["MODEL"] = 'BlogPost'
Rake::Task["friendly_id:redo_slugs"].invoke
ENV.delete("MODEL")
# parse all created BlogPosts bodys and replace the old wordpress image uls
# with the newly created ones
attachments.each do |attachment|
attachment.replace_image_url_in_blog_posts
end
end
desc "reset blog tables and then import blog data from a Refinery::WordPress XML dump"

View File

@@ -2,6 +2,7 @@ module Refinery
module WordPress
class Attachment
attr_reader :node
attr_reader :refinery_image
def initialize(node)
@node = node
@@ -15,6 +16,10 @@ module Refinery
node.xpath("description").text
end
def file_name
url.split('/').last
end
def post_date
DateTime.parse node.xpath("wp:post_date").text
end
@@ -22,6 +27,44 @@ module Refinery
def url
node.xpath("wp:attachment_url").text
end
def image?
url.match /\.(png|jpg|jpeg|gif)$/
end
def to_refinery
if image?
to_image
else
to_file
end
end
def replace_image_url_in_blog_posts
::BlogPost.all.each do |post|
if post.body.include? url
post.body = post.body.gsub(url, refinery_image.image.url)
post.save!
end
end
end
private
def to_image
image = ::Image.new
image.created_at = post_date
image.image_url = url
image.save!
@refinery_image = image
image
end
def to_file
raise "to_file is not implemented yet, sorry!"
end
end
end
end