kindler 0.2.0 → 0.2.1
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.
- data/.gitignore +1 -1
- data/lib/kindler/version.rb +1 -1
- data/lib/kindler.rb +28 -7
- data/spec/cases/generator_spec.rb +14 -3
- metadata +4 -4
data/.gitignore
CHANGED
data/lib/kindler/version.rb
CHANGED
data/lib/kindler.rb
CHANGED
@@ -261,30 +261,51 @@ module Kindler
|
|
261
261
|
@opf = contents
|
262
262
|
end
|
263
263
|
|
264
|
+
def get_image_extname(image_data,url)
|
265
|
+
ext = File.extname('url')
|
266
|
+
if ext == ''
|
267
|
+
ext = case image_data.content_type
|
268
|
+
when /jpeg/i
|
269
|
+
'.jpg'
|
270
|
+
when /png/i
|
271
|
+
'.png'
|
272
|
+
when /gif/i
|
273
|
+
'.gif'
|
274
|
+
else
|
275
|
+
'.jpg'
|
276
|
+
end
|
277
|
+
end
|
278
|
+
ext
|
279
|
+
end
|
280
|
+
|
264
281
|
def localize_images
|
265
282
|
images_count = 1
|
266
283
|
pages.each do |page|
|
267
284
|
article = Nokogiri::HTML(page[:content])
|
268
285
|
article.css('img').each do |img|
|
269
286
|
begin
|
287
|
+
# get remote address
|
270
288
|
image_remote_address = img.attr('src')
|
271
289
|
unless image_remote_address.start_with?('http')
|
272
290
|
image_remote_address = "http://#{URI(page[:url]).host}#{image_remote_address}"
|
273
291
|
end
|
274
|
-
|
292
|
+
# get local address
|
293
|
+
image_data = open(image_remote_address)
|
294
|
+
image_extname = get_image_extname(image_data,image_remote_address)
|
295
|
+
image_local_address = File.join(tmp_dir,"#{images_count}#{image_extname}")
|
275
296
|
# download images
|
276
297
|
debug "begin fetch image #{image_remote_address}"
|
277
298
|
debug "save to #{image_local_address}"
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
299
|
+
#`curl #{image_remote_address} > #{image_local_address}`
|
300
|
+
File.open(image_local_address,'wb') do |f|
|
301
|
+
f.write image_data.read
|
302
|
+
end
|
282
303
|
debug 'Image saved'
|
283
304
|
# replace local url address
|
284
|
-
img.attributes['src'].value = "#{
|
305
|
+
img.attributes['src'].value = "#{image_local_address}"
|
285
306
|
page[:content] = article.inner_html
|
286
307
|
# add to manifest
|
287
|
-
local_images << "#{
|
308
|
+
local_images << "#{image_local_address}"
|
288
309
|
images_count += 1
|
289
310
|
rescue Exception => e
|
290
311
|
debug "got error when fetch and save image: #{e}"
|
@@ -3,7 +3,7 @@ describe "Mobi book file generator" do
|
|
3
3
|
|
4
4
|
after :all do
|
5
5
|
puts '==== clear tmp files ==='
|
6
|
-
|
6
|
+
#`rm -rf ./__*`
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should have the title,author property" do
|
@@ -58,7 +58,7 @@ describe "Mobi book file generator" do
|
|
58
58
|
book = Kindler::Book.new :title=>title,:author=>'mike',:debug=>true
|
59
59
|
book.add_page :title=>'page1',:author=>'mike1',:content=>'this is the page 1',:wrap=>true
|
60
60
|
book.add_page :title=>'page2',:author=>'mike1',:content=>'this is the page 2',:wrap=>true
|
61
|
-
book.add_page :title=>'page3',:author=>'mike1',:content=>'<img src="http://media2.glamour-sales.com.cn/media/catalog/category/Stroili_banner_02.jpg"
|
61
|
+
book.add_page :title=>'page3',:author=>'mike1',:content=>'<img src="http://media2.glamour-sales.com.cn/media/catalog/category/Stroili_banner_02.jpg"/>this is the page 3',:wrap=>true
|
62
62
|
book.generate
|
63
63
|
book.should be_generated
|
64
64
|
File.should be_exist("./#{Kindler::Book::TMP_DIR_PREFIX}#{title}/1.jpg")
|
@@ -110,7 +110,7 @@ describe "Mobi book file generator" do
|
|
110
110
|
book = Kindler::Book.new :title=>title,:author=>'mike',:debug=>true
|
111
111
|
book.add_page :title=>'page1',:author=>'mike1',:content=>'this is the page 1',:wrap=>true
|
112
112
|
book.add_page :title=>'page2',:author=>'mike1',:content=>'this is the page 2',:wrap=>true
|
113
|
-
book.add_page :title=>'page3',:author=>'mike1',:url => 'http://media2.glamour-sales.com.cn/media/some_url',:content=>'<img src="/media/catalog/category/Stroili_banner_02.jpg"
|
113
|
+
book.add_page :title=>'page3',:author=>'mike1',:url => 'http://media2.glamour-sales.com.cn/media/some_url',:content=>'<img src="/media/catalog/category/Stroili_banner_02.jpg"/>this is the page 3',:wrap=>true
|
114
114
|
book.generate
|
115
115
|
book.should be_generated
|
116
116
|
File.should be_exist("./#{Kindler::Book::TMP_DIR_PREFIX}#{title}/1.jpg")
|
@@ -138,4 +138,15 @@ describe "Mobi book file generator" do
|
|
138
138
|
File.should be_exist(File.expand_path(custom_dir))
|
139
139
|
end
|
140
140
|
|
141
|
+
it "should get correct image type when no extname found" do
|
142
|
+
title = "no_extname_found_book"
|
143
|
+
book = Kindler::Book.new :title=>title,:author=>'mike',:debug=>true
|
144
|
+
image_url = "https://lh3.googleusercontent.com/Lpu3TQdWzvnJKkx4U4uyjJzQxvXSFTbwbb_Ni3XJp8stydrlKpI_VHbY2rAcphMMcrkq-wev2zKkSpbGSQr_T5BfrRuHYqlLQ-NTPmPk--mS2PYu_Rk"
|
145
|
+
book.add_page :title=>'page1',:author=>'mike1',:content=>'this is the page 1',:wrap=>true
|
146
|
+
book.add_page :title=>'page2',:author=>'mike1',:content=>'this is the page 2',:wrap=>true
|
147
|
+
book.add_page :title=>'page3',:author=>'mike1',:content=>"<img src='#{image_url}'/>this is the page 3",:wrap=>true
|
148
|
+
book.generate
|
149
|
+
book.should be_generated
|
150
|
+
end
|
151
|
+
|
141
152
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kindler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-15 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153362980 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153362980
|
25
25
|
description: kindler is a rubygem allow you to generate kindle mobi book very easily
|
26
26
|
email:
|
27
27
|
- mike.d.1984@gmail.com
|