jekyll-import 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/jekyll-import.rb +10 -8
- data/lib/jekyll-import/importer.rb +1 -1
- data/lib/jekyll-import/importers.rb +1 -1
- data/lib/jekyll-import/importers/behance.rb +20 -20
- data/lib/jekyll-import/importers/blogger.rb +108 -118
- data/lib/jekyll-import/importers/csv.rb +7 -7
- data/lib/jekyll-import/importers/drupal6.rb +5 -6
- data/lib/jekyll-import/importers/drupal7.rb +7 -13
- data/lib/jekyll-import/importers/drupal_common.rb +57 -59
- data/lib/jekyll-import/importers/easyblog.rb +30 -30
- data/lib/jekyll-import/importers/enki.rb +28 -29
- data/lib/jekyll-import/importers/ghost.rb +46 -33
- data/lib/jekyll-import/importers/google_reader.rb +9 -9
- data/lib/jekyll-import/importers/joomla.rb +32 -32
- data/lib/jekyll-import/importers/joomla3.rb +41 -39
- data/lib/jekyll-import/importers/jrnl.rb +16 -17
- data/lib/jekyll-import/importers/marley.rb +25 -26
- data/lib/jekyll-import/importers/mephisto.rb +26 -26
- data/lib/jekyll-import/importers/mt.rb +76 -75
- data/lib/jekyll-import/importers/posterous.rb +30 -29
- data/lib/jekyll-import/importers/rss.rb +13 -10
- data/lib/jekyll-import/importers/s9y.rb +16 -17
- data/lib/jekyll-import/importers/s9y_database.rb +98 -89
- data/lib/jekyll-import/importers/textpattern.rb +18 -17
- data/lib/jekyll-import/importers/tmp.rb +0 -0
- data/lib/jekyll-import/importers/tumblr.rb +146 -143
- data/lib/jekyll-import/importers/typo.rb +31 -31
- data/lib/jekyll-import/importers/wordpress.rb +100 -100
- data/lib/jekyll-import/importers/wordpressdotcom.rb +70 -60
- data/lib/jekyll-import/util.rb +24 -24
- data/lib/jekyll-import/version.rb +1 -1
- data/lib/jekyll/commands/import.rb +32 -35
- metadata +14 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e855d9fab183b0627590b601d2773b2c03deab6
|
4
|
+
data.tar.gz: f167d6f4b2a76aa9ccb9d03bf8c263c4f3c0d8e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0de306ccd211d7c972362ba8624ff747f3a73e6c4cac5019cdf0c6c8d3253c1ca0fdcdc077ce2bd7372bac297da0ca8f1f16a927b34c2dd6788893f7cb0fff85
|
7
|
+
data.tar.gz: 02fed28e00f8920850e0006d814ad6087a3664332679fd929f38b994bc6bd7941a4319710fcfc478cc98f434161a036d0b2b764259aeb5df88166486a9476ad1
|
data/lib/jekyll-import.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'jekyll'
|
4
|
-
require 'jekyll/commands/import'
|
5
|
-
require 'colorator'
|
1
|
+
# For use/testing when no gem is installed
|
2
|
+
$LOAD_PATH.unshift __dir__
|
6
3
|
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
4
|
+
require "rubygems"
|
5
|
+
require "jekyll"
|
6
|
+
require "jekyll/commands/import"
|
7
|
+
require "colorator"
|
8
|
+
|
9
|
+
require "jekyll-import/importer"
|
10
|
+
require "jekyll-import/importers"
|
11
|
+
require "jekyll-import/util"
|
10
12
|
|
11
13
|
module JekyllImport
|
12
14
|
# Public: Add the subcommands for each importer
|
@@ -11,7 +11,7 @@ module JekyllImport
|
|
11
11
|
def self.stringify_keys(hash)
|
12
12
|
the_hash = hash.clone
|
13
13
|
the_hash.keys.each do |key|
|
14
|
-
the_hash[(key.to_s rescue key) || key] =
|
14
|
+
the_hash[(key.to_s rescue key) || key] = the_hash.delete(key)
|
15
15
|
end
|
16
16
|
the_hash
|
17
17
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module JekyllImport
|
2
2
|
module Importers
|
3
|
-
Dir.chdir(File.expand_path(File.join("importers"),
|
3
|
+
Dir.chdir(File.expand_path(File.join("importers"), __dir__)) do
|
4
4
|
Dir.entries(".").each do |f|
|
5
5
|
next if f[0..0].eql?(".")
|
6
6
|
require "jekyll-import/importers/#{f}"
|
@@ -2,22 +2,22 @@ module JekyllImport
|
|
2
2
|
module Importers
|
3
3
|
class Behance < Importer
|
4
4
|
def self.require_deps
|
5
|
-
JekyllImport.require_with_fallback(%w
|
5
|
+
JekyllImport.require_with_fallback(%w(
|
6
6
|
fileutils
|
7
7
|
safe_yaml
|
8
8
|
date
|
9
9
|
time
|
10
10
|
behance
|
11
|
-
|
11
|
+
))
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.specify_options(c)
|
15
|
-
c.option
|
16
|
-
c.option
|
15
|
+
c.option "user", "--user NAME", "The username of the account"
|
16
|
+
c.option "api_token", "--api_token TOKEN", "The API access token for the account"
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.validate(options)
|
20
|
-
%w
|
20
|
+
%w(user api_token).each do |option|
|
21
21
|
if options[option].nil?
|
22
22
|
abort "Missing mandatory option --#{option}."
|
23
23
|
end
|
@@ -31,8 +31,8 @@ module JekyllImport
|
|
31
31
|
#
|
32
32
|
# Returns nothing.
|
33
33
|
def self.process(options)
|
34
|
-
user = options.fetch(
|
35
|
-
token = options.fetch(
|
34
|
+
user = options.fetch("user")
|
35
|
+
token = options.fetch("api_token")
|
36
36
|
|
37
37
|
client = fetch_behance(token)
|
38
38
|
|
@@ -41,21 +41,20 @@ module JekyllImport
|
|
41
41
|
puts "#{user_projects.length} project(s) found. Importing now..."
|
42
42
|
|
43
43
|
user_projects.each do |project|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
formatted_date = Time.at(project['published_on'].to_i).to_date.to_s
|
44
|
+
details = client.project(project["id"])
|
45
|
+
title = project["name"].to_s
|
46
|
+
formatted_date = Time.at(project["published_on"].to_i).to_date.to_s
|
48
47
|
|
49
48
|
post_name = title.split(%r{ |!|/|:|&|-|$|,}).map do |character|
|
50
49
|
character.downcase unless character.empty?
|
51
|
-
end.compact.join(
|
50
|
+
end.compact.join("-")
|
52
51
|
|
53
52
|
name = "#{formatted_date}-#{post_name}"
|
54
53
|
|
55
54
|
header = {
|
56
|
-
"layout"
|
57
|
-
"title"
|
58
|
-
"details" => details
|
55
|
+
"layout" => "post",
|
56
|
+
"title" => title,
|
57
|
+
"details" => details,
|
59
58
|
}
|
60
59
|
|
61
60
|
FileUtils.mkdir_p("_posts")
|
@@ -63,17 +62,18 @@ module JekyllImport
|
|
63
62
|
File.open("_posts/#{name}.md", "w") do |f|
|
64
63
|
f.puts header.to_yaml
|
65
64
|
f.puts "---\n\n"
|
66
|
-
f.puts details[
|
65
|
+
f.puts details["description"].to_s
|
67
66
|
end
|
68
67
|
end
|
69
68
|
|
70
69
|
puts "Finished importing."
|
71
70
|
end
|
72
71
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
72
|
+
class << self
|
73
|
+
private
|
74
|
+
def fetch_behance(token)
|
75
|
+
::Behance::Client.new(:access_token => token)
|
76
|
+
end
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
@@ -2,22 +2,22 @@ module JekyllImport
|
|
2
2
|
module Importers
|
3
3
|
class Blogger < Importer
|
4
4
|
def self.specify_options(c)
|
5
|
-
c.option
|
6
|
-
c.option
|
7
|
-
c.option
|
8
|
-
c.option
|
5
|
+
c.option "source", "--source NAME", "The XML file (blog-MM-DD-YYYY.xml) path to import"
|
6
|
+
c.option "no-blogger-info", "--no-blogger-info", "not to leave blogger-URL info (id and old URL) in the front matter (default: false)"
|
7
|
+
c.option "replace-internal-link", "--replace-internal-link", "replace internal links using the post_url liquid tag. (default: false)"
|
8
|
+
c.option "comments", "--comments", "import comments to _comments collection"
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.validate(options)
|
12
|
-
if options[
|
13
|
-
raise
|
14
|
-
elsif
|
15
|
-
raise Errno::ENOENT, "File not found: #{options[
|
12
|
+
if options["source"].nil?
|
13
|
+
raise "Missing mandatory option: --source"
|
14
|
+
elsif !File.exist?(options["source"])
|
15
|
+
raise Errno::ENOENT, "File not found: #{options["source"]}"
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.require_deps
|
20
|
-
JekyllImport.require_with_fallback(%w
|
20
|
+
JekyllImport.require_with_fallback(%w(
|
21
21
|
rexml/document
|
22
22
|
rexml/streamlistener
|
23
23
|
rexml/parsers/streamparser
|
@@ -26,7 +26,7 @@ module JekyllImport
|
|
26
26
|
fileutils
|
27
27
|
safe_yaml
|
28
28
|
open-uri
|
29
|
-
|
29
|
+
))
|
30
30
|
end
|
31
31
|
|
32
32
|
# Process the import.
|
@@ -37,19 +37,19 @@ module JekyllImport
|
|
37
37
|
#
|
38
38
|
# Returns nothing.
|
39
39
|
def self.process(options)
|
40
|
-
source = options.fetch(
|
40
|
+
source = options.fetch("source")
|
41
41
|
|
42
42
|
listener = BloggerAtomStreamListener.new
|
43
43
|
|
44
|
-
listener.leave_blogger_info = !
|
45
|
-
listener.comments = options.fetch(
|
44
|
+
listener.leave_blogger_info = !options.fetch("no-blogger-info", false),
|
45
|
+
listener.comments = options.fetch("comments", false),
|
46
46
|
|
47
|
-
File.open(source,
|
47
|
+
File.open(source, "r") do |f|
|
48
48
|
f.flock(File::LOCK_SH)
|
49
|
-
REXML::Parsers::StreamParser.new(f, listener).parse
|
49
|
+
REXML::Parsers::StreamParser.new(f, listener).parse
|
50
50
|
end
|
51
51
|
|
52
|
-
options[
|
52
|
+
options["original-url-base"] = listener.original_url_base
|
53
53
|
|
54
54
|
postprocess(options)
|
55
55
|
end
|
@@ -61,27 +61,27 @@ module JekyllImport
|
|
61
61
|
# Returns nothing.
|
62
62
|
def self.postprocess(options)
|
63
63
|
# Replace internal link URL
|
64
|
-
if options.fetch(
|
65
|
-
original_url_base = options.fetch(
|
64
|
+
if options.fetch("replace-internal-link", false)
|
65
|
+
original_url_base = options.fetch("original-url-base", nil)
|
66
66
|
if original_url_base
|
67
67
|
orig_url_pattern = Regexp.new(" href=([\"\'])(?:#{Regexp.escape(original_url_base)})?/([0-9]{4})/([0-9]{2})/([^\"\']+\.html)\\1")
|
68
68
|
|
69
|
-
Dir.glob(
|
69
|
+
Dir.glob("_posts/*.*") do |filename|
|
70
70
|
body = nil
|
71
|
-
File.open(filename,
|
71
|
+
File.open(filename, "r") do |f|
|
72
72
|
f.flock(File::LOCK_SH)
|
73
73
|
body = f.read
|
74
74
|
end
|
75
75
|
|
76
76
|
body.gsub!(orig_url_pattern) do
|
77
77
|
# for post_url
|
78
|
-
quote =
|
79
|
-
post_file = Dir.glob("_posts/#{
|
80
|
-
raise "Could not found: _posts/#{
|
81
|
-
" href=#{quote}{{ site.baseurl }}{% post_url #{File.basename(post_file,
|
78
|
+
quote = Regexp.last_match(1)
|
79
|
+
post_file = Dir.glob("_posts/#{Regexp.last_match(2)}-#{Regexp.last_match(3)}-*-#{Regexp.last_match(4).to_s.tr("/", "-")}").first
|
80
|
+
raise "Could not found: _posts/#{Regexp.last_match(2)}-#{Regexp.last_match(3)}-*-#{Regexp.last_match(4).to_s.tr("/", "-")}" if post_file.nil?
|
81
|
+
" href=#{quote}{{ site.baseurl }}{% post_url #{File.basename(post_file, ".html")} %}#{quote}"
|
82
82
|
end
|
83
83
|
|
84
|
-
File.open(filename,
|
84
|
+
File.open(filename, "w") do |f|
|
85
85
|
f.flock(File::LOCK_EX)
|
86
86
|
f << body
|
87
87
|
end
|
@@ -110,45 +110,45 @@ module JekyllImport
|
|
110
110
|
@tag_bread.push(tag)
|
111
111
|
|
112
112
|
case tag
|
113
|
-
when
|
114
|
-
raise
|
115
|
-
@in_entry_elem = {:meta => {}, :body => nil}
|
116
|
-
when
|
113
|
+
when "entry"
|
114
|
+
raise "nest entry element" if @in_entry_elem
|
115
|
+
@in_entry_elem = { :meta => {}, :body => nil }
|
116
|
+
when "title"
|
117
117
|
if @in_entry_elem
|
118
|
-
raise 'only <title type="text"></title> is supported' if attrs[
|
118
|
+
raise 'only <title type="text"></title> is supported' if attrs["type"] != "text"
|
119
119
|
end
|
120
|
-
when
|
120
|
+
when "category"
|
121
121
|
if @in_entry_elem
|
122
|
-
if attrs[
|
122
|
+
if attrs["scheme"] == "http://www.blogger.com/atom/ns#"
|
123
123
|
@in_entry_elem[:meta][:category] = [] unless @in_entry_elem[:meta][:category]
|
124
|
-
@in_entry_elem[:meta][:category] << attrs[
|
125
|
-
elsif attrs[
|
126
|
-
kind = attrs[
|
127
|
-
kind.sub!(Regexp.new("^http://schemas\\.google\\.com/blogger/2008/kind\\#"),
|
124
|
+
@in_entry_elem[:meta][:category] << attrs["term"]
|
125
|
+
elsif attrs["scheme"] == "http://schemas.google.com/g/2005#kind"
|
126
|
+
kind = attrs["term"]
|
127
|
+
kind.sub!(Regexp.new("^http://schemas\\.google\\.com/blogger/2008/kind\\#"), "")
|
128
128
|
@in_entry_elem[:meta][:kind] = kind
|
129
129
|
end
|
130
130
|
end
|
131
|
-
when
|
131
|
+
when "content"
|
132
132
|
if @in_entry_elem
|
133
|
-
@in_entry_elem[:meta][:content_type] = attrs[
|
133
|
+
@in_entry_elem[:meta][:content_type] = attrs["type"]
|
134
134
|
end
|
135
|
-
when
|
135
|
+
when "link"
|
136
136
|
if @in_entry_elem
|
137
|
-
if attrs[
|
138
|
-
@in_entry_elem[:meta][:original_url] = attrs[
|
139
|
-
elsif attrs[
|
137
|
+
if attrs["rel"] == "alternate" && attrs["type"] == "text/html"
|
138
|
+
@in_entry_elem[:meta][:original_url] = attrs["href"]
|
139
|
+
elsif attrs["rel"] == "replies" && attrs["type"] == "text/html"
|
140
140
|
unless @in_entry_elem[:meta][:original_url]
|
141
|
-
@in_entry_elem[:meta][:original_url] = attrs[
|
141
|
+
@in_entry_elem[:meta][:original_url] = attrs["href"].sub(%r!\#comment-form$!, "")
|
142
142
|
end
|
143
143
|
end
|
144
144
|
end
|
145
|
-
when
|
145
|
+
when "media:thumbnail"
|
146
146
|
if @in_entry_elem
|
147
|
-
@in_entry_elem[:meta][:thumbnail] = attrs[
|
147
|
+
@in_entry_elem[:meta][:thumbnail] = attrs["url"]
|
148
148
|
end
|
149
|
-
when
|
149
|
+
when "thr:in-reply-to"
|
150
150
|
if @in_entry_elem
|
151
|
-
@in_entry_elem[:meta][:post_id] = attrs[
|
151
|
+
@in_entry_elem[:meta][:post_id] = attrs["ref"]
|
152
152
|
end
|
153
153
|
end
|
154
154
|
end
|
@@ -156,23 +156,23 @@ module JekyllImport
|
|
156
156
|
def text(text)
|
157
157
|
if @in_entry_elem
|
158
158
|
case @tag_bread.last
|
159
|
-
when
|
159
|
+
when "id"
|
160
160
|
@in_entry_elem[:meta][:id] = text
|
161
|
-
when
|
161
|
+
when "published"
|
162
162
|
@in_entry_elem[:meta][:published] = text
|
163
|
-
when
|
163
|
+
when "updated"
|
164
164
|
@in_entry_elem[:meta][:updated] = text
|
165
|
-
when
|
165
|
+
when "title"
|
166
166
|
@in_entry_elem[:meta][:title] = text
|
167
|
-
when
|
167
|
+
when "content"
|
168
168
|
@in_entry_elem[:body] = text
|
169
|
-
when
|
170
|
-
if @tag_bread[-2..-1] == %w
|
169
|
+
when "name"
|
170
|
+
if @tag_bread[-2..-1] == %w(author name)
|
171
171
|
@in_entry_elem[:meta][:author] = text
|
172
172
|
end
|
173
|
-
when
|
174
|
-
if @tag_bread[-2..-1] == %w
|
175
|
-
@in_entry_elem[:meta][:draft] = true if text ==
|
173
|
+
when "app:draft"
|
174
|
+
if @tag_bread[-2..-1] == %w(app:control app:draft)
|
175
|
+
@in_entry_elem[:meta][:draft] = true if text == "yes"
|
176
176
|
end
|
177
177
|
end
|
178
178
|
end
|
@@ -180,20 +180,20 @@ module JekyllImport
|
|
180
180
|
|
181
181
|
def tag_end(tag)
|
182
182
|
case tag
|
183
|
-
when
|
184
|
-
raise
|
183
|
+
when "entry"
|
184
|
+
raise "nest entry element" unless @in_entry_elem
|
185
185
|
|
186
|
-
if @in_entry_elem[:meta][:kind] ==
|
186
|
+
if @in_entry_elem[:meta][:kind] == "post"
|
187
187
|
post_data = get_post_data_from_in_entry_elem_info
|
188
188
|
|
189
189
|
if post_data
|
190
|
-
target_dir =
|
191
|
-
target_dir =
|
190
|
+
target_dir = "_posts"
|
191
|
+
target_dir = "_drafts" if @in_entry_elem[:meta][:draft]
|
192
192
|
|
193
193
|
FileUtils.mkdir_p(target_dir)
|
194
194
|
|
195
|
-
file_name = URI
|
196
|
-
File.open(File.join(target_dir, file_name),
|
195
|
+
file_name = URI.decode("#{post_data[:filename]}.html")
|
196
|
+
File.open(File.join(target_dir, file_name), "w") do |f|
|
197
197
|
f.flock(File::LOCK_EX)
|
198
198
|
|
199
199
|
f << post_data[:header].to_yaml
|
@@ -201,16 +201,16 @@ module JekyllImport
|
|
201
201
|
f << post_data[:body]
|
202
202
|
end
|
203
203
|
end
|
204
|
-
elsif @in_entry_elem[:meta][:kind] ==
|
204
|
+
elsif @in_entry_elem[:meta][:kind] == "comment" && @comments
|
205
205
|
post_data = get_post_data_from_in_entry_elem_info
|
206
206
|
|
207
207
|
if post_data
|
208
|
-
target_dir =
|
208
|
+
target_dir = "_comments"
|
209
209
|
|
210
210
|
FileUtils.mkdir_p(target_dir)
|
211
211
|
|
212
|
-
file_name = URI
|
213
|
-
File.open(File.join(target_dir, file_name),
|
212
|
+
file_name = URI.decode("#{post_data[:filename]}.html")
|
213
|
+
File.open(File.join(target_dir, file_name), "w") do |f|
|
214
214
|
f.flock(File::LOCK_EX)
|
215
215
|
|
216
216
|
f << post_data[:header].to_yaml
|
@@ -227,104 +227,94 @@ module JekyllImport
|
|
227
227
|
end
|
228
228
|
|
229
229
|
def get_post_data_from_in_entry_elem_info
|
230
|
-
if
|
230
|
+
if @in_entry_elem.nil? || !@in_entry_elem.key?(:meta) || !@in_entry_elem[:meta].key?(:kind)
|
231
231
|
nil
|
232
|
-
elsif @in_entry_elem[:meta][:kind] ==
|
233
|
-
timestamp = Time.parse(@in_entry_elem[:meta][:published]).strftime(
|
232
|
+
elsif @in_entry_elem[:meta][:kind] == "post"
|
233
|
+
timestamp = Time.parse(@in_entry_elem[:meta][:published]).strftime("%Y-%m-%d")
|
234
234
|
if @in_entry_elem[:meta][:original_url]
|
235
235
|
original_uri = URI.parse(@in_entry_elem[:meta][:original_url])
|
236
236
|
original_path = original_uri.path.to_s
|
237
|
-
filename = "%s-%s"
|
238
|
-
[timestamp,
|
239
|
-
File.basename(original_path, File.extname(original_path))]
|
237
|
+
filename = format("%s-%s", timestamp, File.basename(original_path, File.extname(original_path)))
|
240
238
|
|
241
239
|
@original_url_base = "#{original_uri.scheme}://#{original_uri.host}"
|
242
240
|
elsif @in_entry_elem[:meta][:draft]
|
243
241
|
# Drafts don't have published urls
|
244
242
|
name = @in_entry_elem[:meta][:title]
|
245
|
-
if name.nil?
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
CGI.escape(name.downcase).tr('+','-')]
|
251
|
-
end
|
243
|
+
filename = if name.nil?
|
244
|
+
timestamp
|
245
|
+
else
|
246
|
+
format("%s-%s", timestamp, CGI.escape(name.downcase.tr("+/\\:'\"<>{}?%*|.", "-")))
|
247
|
+
end
|
252
248
|
else
|
253
|
-
raise
|
249
|
+
raise "Original URL is missing"
|
254
250
|
end
|
255
251
|
|
256
252
|
header = {
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
253
|
+
"layout" => "post",
|
254
|
+
"title" => @in_entry_elem[:meta][:title],
|
255
|
+
"date" => @in_entry_elem[:meta][:published],
|
256
|
+
"author" => @in_entry_elem[:meta][:author],
|
257
|
+
"tags" => @in_entry_elem[:meta][:category],
|
262
258
|
}
|
263
|
-
header[
|
264
|
-
header[
|
265
|
-
header[
|
266
|
-
header[
|
259
|
+
header["modified_time"] = @in_entry_elem[:meta][:updated] if @in_entry_elem[:meta][:updated] && @in_entry_elem[:meta][:updated] != @in_entry_elem[:meta][:published]
|
260
|
+
header["thumbnail"] = @in_entry_elem[:meta][:thumbnail] if @in_entry_elem[:meta][:thumbnail]
|
261
|
+
header["blogger_id"] = @in_entry_elem[:meta][:id] if @leave_blogger_info
|
262
|
+
header["blogger_orig_url"] = @in_entry_elem[:meta][:original_url] if @leave_blogger_info && @in_entry_elem[:meta][:original_url]
|
267
263
|
|
268
264
|
body = @in_entry_elem[:body]
|
269
265
|
|
270
266
|
# body escaping associated with liquid
|
271
|
-
if body =~
|
272
|
-
body.gsub!(
|
267
|
+
if body =~ %r!{{!
|
268
|
+
body.gsub!(%r!{{!, '{{ "{{" }}')
|
273
269
|
end
|
274
|
-
if body =~
|
275
|
-
body.gsub!(
|
270
|
+
if body =~ %r!{%!
|
271
|
+
body.gsub!(%r!{%!, '{{ "{%" }}')
|
276
272
|
end
|
277
273
|
|
278
274
|
{ :filename => filename, :header => header, :body => body }
|
279
|
-
elsif @in_entry_elem[:meta][:kind] ==
|
280
|
-
timestamp = Time.parse(@in_entry_elem[:meta][:published]).strftime(
|
275
|
+
elsif @in_entry_elem[:meta][:kind] == "comment"
|
276
|
+
timestamp = Time.parse(@in_entry_elem[:meta][:published]).strftime("%Y-%m-%d")
|
281
277
|
if @in_entry_elem[:meta][:original_url]
|
282
|
-
|
278
|
+
unless @comment_seq
|
283
279
|
@comment_seq = 1
|
284
280
|
end
|
285
281
|
|
286
282
|
original_uri = URI.parse(@in_entry_elem[:meta][:original_url])
|
287
283
|
original_path = original_uri.path.to_s
|
288
|
-
filename = "%s-%s-%s"
|
289
|
-
[timestamp,
|
290
|
-
File.basename(original_path, File.extname(original_path)),
|
291
|
-
@comment_seq]
|
284
|
+
filename = format("%s-%s-%s", timestamp, File.basename(original_path, File.extname(original_path)), @comment_seq)
|
292
285
|
|
293
|
-
@comment_seq
|
286
|
+
@comment_seq += 1
|
294
287
|
|
295
288
|
@original_url_base = "#{original_uri.scheme}://#{original_uri.host}"
|
296
289
|
else
|
297
|
-
raise
|
290
|
+
raise "Original URL is missing"
|
298
291
|
end
|
299
292
|
|
300
293
|
header = {
|
301
|
-
|
302
|
-
|
303
|
-
|
294
|
+
"date" => @in_entry_elem[:meta][:published],
|
295
|
+
"author" => @in_entry_elem[:meta][:author],
|
296
|
+
"blogger_post_id" => @in_entry_elem[:meta][:post_id],
|
304
297
|
}
|
305
|
-
header[
|
306
|
-
header[
|
307
|
-
header[
|
308
|
-
header[
|
298
|
+
header["modified_time"] = @in_entry_elem[:meta][:updated] if @in_entry_elem[:meta][:updated] && @in_entry_elem[:meta][:updated] != @in_entry_elem[:meta][:published]
|
299
|
+
header["thumbnail"] = @in_entry_elem[:meta][:thumbnail] if @in_entry_elem[:meta][:thumbnail]
|
300
|
+
header["blogger_id"] = @in_entry_elem[:meta][:id] if @leave_blogger_info
|
301
|
+
header["blogger_orig_url"] = @in_entry_elem[:meta][:original_url] if @leave_blogger_info && @in_entry_elem[:meta][:original_url]
|
309
302
|
|
310
303
|
body = @in_entry_elem[:body]
|
311
304
|
|
312
305
|
# body escaping associated with liquid
|
313
|
-
if body =~
|
314
|
-
body.gsub!(
|
306
|
+
if body =~ %r!{{!
|
307
|
+
body.gsub!(%r!{{!, '{{ "{{" }}')
|
315
308
|
end
|
316
|
-
if body =~
|
317
|
-
body.gsub!(
|
309
|
+
if body =~ %r!{%!
|
310
|
+
body.gsub!(%r!{%!, '{{ "{%" }}')
|
318
311
|
end
|
319
312
|
|
320
313
|
{ :filename => filename, :header => header, :body => body }
|
321
|
-
else
|
322
|
-
nil
|
323
314
|
end
|
324
315
|
end
|
325
316
|
|
326
317
|
end
|
327
|
-
|
328
318
|
end
|
329
319
|
end
|
330
320
|
end
|