kindai 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 1.8.7
data/README.md ADDED
@@ -0,0 +1,98 @@
1
+ # kindai.rb [![Build Status](https://travis-ci.org/hitode909/kindairb.png?branch=master)](https://travis-ci.org/hitode909/kindairb)
2
+
3
+ ## 概要
4
+
5
+ 近代デジタルライブラリーから画像をダウンロードします.
6
+
7
+ ## インストール
8
+
9
+ RubyGemsからインストールできます.
10
+
11
+ ```
12
+ gem install kindai
13
+ ```
14
+
15
+ ## 使い方
16
+
17
+ gemをインストールすると,kindai.rbというコマンドがインストールされます.
18
+
19
+ 起動時の引数に,ダウンロードしたい本の URL を指定します.スペース区切りで複数指定できます.
20
+
21
+ ```
22
+ kindai.rb http://kindai.ndl.go.jp/info:ndljp/pid/922693
23
+ ```
24
+
25
+ URL の代わりに検索ワードを指定すると,ヒットした本をまとめてダウンロードします.AND検索もできます.
26
+
27
+ ```
28
+ kindai.rb 調理
29
+ kindai.rb "松茸 調理"
30
+ ```
31
+
32
+ --output オプションで,保存先を指定できます.指定したディレクトリの下に,書名のディレクトリができます.
33
+
34
+ ```
35
+ kindai.rb http://kindai.ndl.go.jp/info:ndljp/pid/922693 --output ~/Documents/
36
+ ```
37
+
38
+ ## 本の加工(自動)
39
+
40
+ ダウンロードした本は自動的にトリミングされ,trim/ディレクトリに格納されます.トリミング情報は自動的に共有され,次に同じ本をダウンロードしたときや,他のひとが同じ本をダウンロードしたときに再利用されます.
41
+
42
+ 起動時の引数で,ダウンロードした本を iPhone 用と Kindle 用に加工することができます.
43
+
44
+ --publish_iphone オプションで,iPhone用のファイルを作ります.
45
+ --publish_kindle オプションで,Kindle用のファイルを作ります.
46
+
47
+ 両方指定すると,以下のようなファイル構成になります.
48
+
49
+ ```
50
+ 正義熱血社 - 正義の叫
51
+ ├── original
52
+ │   ├── 001.jpg
53
+ │   ├── 002.jpg
54
+ │   ├── 003.jpg
55
+ (中略)
56
+ │   └── 020.jpg
57
+ ├── trim
58
+ │   ├── 001.jpg
59
+ │   ├── 002.jpg
60
+ │   ├── 003.jpg
61
+ (中略)
62
+ │   └── 020.jpg
63
+ ├── 正義熱血社 - 正義の叫_iphone.zip
64
+ └── 正義熱血社 - 正義の叫_kindle.zip
65
+ ```
66
+
67
+ - original/以下には加工前の画像が入ります.
68
+ - trim/以下にはトリミングして余白を取り除いた画像が入ります.パソコンで読むのに適しています.
69
+ - _iphone.zipは,iPhoneの画面サイズ(1280x960)にリサイズされた見開き画像のzipファイルです.Comic Glassで読むのに適しています.
70
+ - _kindle.zipは,Kindle3の画面サイズ(600x800)にリサイズされ,1ページずつに裁断された画像のzipファイルです.
71
+
72
+ --no_trimmingオプションが指定されたときは,ダウンロードだけを行い,トリミングや加工を行いません.
73
+
74
+ ## 本の加工(手動)
75
+
76
+ トリミング位置は自動的に決められますが,ダウンロード後に,ずれていることが分かった場合は,kindai.rb publishを使ってトリミング位置を指定できます.
77
+
78
+ ```
79
+ kindai.rb publish --position 2905x2510+270+190 "~/Documents/正義熱血社 - 正義の叫"
80
+ ```
81
+
82
+ 幅2905ピクセル,高さ2510ピクセル,左の余白270ピクセル,上の余白190ピクセルでトリミングされます.
83
+
84
+ ## 動作環境
85
+
86
+ - Ruby が必要です.
87
+ - RMagickを使っているので,ImageMagick が必要です.
88
+ - Homebrewを使っている場合は以下のような雰囲気
89
+
90
+ ```
91
+ brew install ruby imagemagick
92
+ ```
93
+
94
+
95
+ ## Copyright
96
+
97
+ Copyright (c) 2011 hitode909. See LICENSE.txt for
98
+ further details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.0
1
+ 2.4.0
data/kindai.gemspec CHANGED
@@ -5,23 +5,24 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "kindai"
8
- s.version = "2.3.0"
8
+ s.version = "2.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["hitode909"]
12
- s.date = "2013-03-22"
12
+ s.date = "2013-05-22"
13
13
  s.description = "kindai.rb is kindai digital library downloader."
14
14
  s.email = "hitode909@gmail.com"
15
15
  s.executables = ["kindai.rb"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE.txt",
18
- "README.rdoc"
18
+ "README.md"
19
19
  ]
20
20
  s.files = [
21
+ ".travis.yml",
21
22
  "Gemfile",
22
23
  "Gemfile.lock",
23
24
  "LICENSE.txt",
24
- "README.rdoc",
25
+ "README.md",
25
26
  "Rakefile",
26
27
  "VERSION",
27
28
  "bin/kindai.rb",
data/lib/kindai/book.rb CHANGED
@@ -18,22 +18,10 @@ module Kindai
18
18
  return self.new_from_permalink(permalink)
19
19
  end
20
20
 
21
- def self.new_from_search_result_uri(search_result_uri)
22
- raise "not iss.ndl.go.jp: #{search_result_uri}" unless search_result_uri.match(/iss\.ndl\.go\.jp/)
23
- me = new
24
- me.instance_eval {
25
- @search_result_uri = search_result_uri
26
- }
27
- me
28
- end
29
-
30
21
  # ----- metadata -----
31
22
 
32
23
  def permalink_uri
33
- @permalink_uri ||=
34
- begin
35
- get_permalink_from_search_result_uri
36
- end
24
+ @permalink_uri
37
25
  end
38
26
 
39
27
  def key
@@ -104,12 +92,5 @@ module Kindai
104
92
  end
105
93
  end
106
94
 
107
- def get_permalink_from_search_result_uri
108
- "search_result_uri is required" unless @search_result_uri
109
- page = Nokogiri Kindai::Util.fetch_uri @search_result_uri
110
- a = page.at "#reviewsites a[href^='http://kindai.da.ndl.go.jp/info:ndljp/pid/']"
111
- a['href']
112
- end
113
-
114
95
  end
115
96
  end
@@ -15,12 +15,12 @@ module Kindai
15
15
  end
16
16
 
17
17
  def each
18
- (0..(1/0.0)).each{ |page|
18
+ (1..(1/0.0)).each{ |page|
19
19
  Kindai::Util.logger.debug "page #{page}"
20
20
  uris = result_for(@keyword, page)
21
21
  return if uris.empty?
22
22
  uris.each{ |uri|
23
- yield Kindai::Book.new_from_search_result_uri(uri)
23
+ yield Kindai::Book.new_from_permalink(uri)
24
24
  }
25
25
  }
26
26
  end
@@ -28,25 +28,25 @@ module Kindai
28
28
  protected
29
29
  def total_of(keyword)
30
30
  page = Nokogiri(Kindai::Util.fetch_uri(uri_for(keyword)))
31
- total = page.at('.//opensearch:totalResults', {"opensearch"=>"http://a9.com/-/spec/opensearchrss/1.0/"} ).content.to_i
31
+ total = page.at('.tableheadercontent-left p').content.scan(/\d+/).first.to_i
32
32
 
33
33
  Kindai::Util.logger.debug "total: #{total}"
34
34
  total
35
35
  end
36
36
 
37
- def result_for keyword, page = 0
37
+ def result_for keyword, page = 1
38
38
  page = Nokogiri Kindai::Util.fetch_uri(uri_for(keyword, page))
39
- page.search('item').map{ |item|
40
- item.at('link').content
39
+ page.search('a.item-link').map{ |item|
40
+ 'http://kindai.ndl.go.jp' + item.attr('href')
41
41
  }
42
42
  end
43
43
 
44
- def uri_for keyword, page = 0
45
- count = 100
46
- params = { :any => keyword, :dpid => 'ndl-dl', :idx => page * count + 1, :cnt => count}
47
- root = URI.parse("http://iss.ndl.go.jp/api/opensearch")
48
- path = '?' + Kindai::Util.expand_params(params)
49
- root + path
44
+ def uri_for keyword, page = 1
45
+ rows = 100
46
+ params = { :SID => 'kindai', :searchWord => keyword, :pageNo => page, :rows => rows }
47
+ root = URI.parse("http://kindai.ndl.go.jp/search/searchResult")
48
+ query = '?' + Kindai::Util.expand_params(params)
49
+ root + query
50
50
  end
51
51
  end
52
52
  end
data/spec/book_spec.rb CHANGED
@@ -1,24 +1,6 @@
1
- # -*- coding: utf-8 -*-
1
+ # encoding: utf-8
2
2
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
 
4
- describe Kindai::Book, 'from search result uri' do
5
- before do
6
- @book = Kindai::Book.new_from_search_result_uri('http://iss.ndl.go.jp/books/R000000008-I000162417-00')
7
- end
8
-
9
- it 'is a book' do
10
- @book.should be_kind_of Kindai::Book
11
- end
12
-
13
- it 'has permalink' do
14
- @book.permalink_uri.should == 'http://kindai.da.ndl.go.jp/info:ndljp/pid/922693'
15
- end
16
-
17
- it 'has key' do
18
- @book.key.should == "922693"
19
- end
20
- end
21
-
22
4
  describe Kindai::Book do
23
5
  before do
24
6
  @book = Kindai::Book.new_from_permalink('http://kindai.ndl.go.jp/info:ndljp/pid/922693')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kindai
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-22 00:00:00.000000000 Z
12
+ date: 2013-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -146,12 +146,13 @@ executables:
146
146
  extensions: []
147
147
  extra_rdoc_files:
148
148
  - LICENSE.txt
149
- - README.rdoc
149
+ - README.md
150
150
  files:
151
+ - .travis.yml
151
152
  - Gemfile
152
153
  - Gemfile.lock
153
154
  - LICENSE.txt
154
- - README.rdoc
155
+ - README.md
155
156
  - Rakefile
156
157
  - VERSION
157
158
  - bin/kindai.rb
@@ -194,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
195
  version: '0'
195
196
  segments:
196
197
  - 0
197
- hash: -4440122870670398827
198
+ hash: -3785671314458746577
198
199
  required_rubygems_version: !ruby/object:Gem::Requirement
199
200
  none: false
200
201
  requirements:
data/README.rdoc DELETED
@@ -1,88 +0,0 @@
1
- = kindai.rb
2
-
3
- == 概要
4
-
5
- 近代デジタルライブラリーから画像をダウンロードします.
6
-
7
- == インストール
8
-
9
- RubyGemsからインストールできます.
10
-
11
- gem install kindai
12
-
13
- == 使い方
14
-
15
- gemをインストールすると,kindai.rbというコマンドがインストールされます.
16
-
17
- 起動時の引数に,ダウンロードしたい本の URL を指定します.スペース区切りで複数指定できます.
18
-
19
- kindai.rb http://kindai.ndl.go.jp/info:ndljp/pid/922693
20
-
21
- URL の代わりに検索ワードを指定すると,ヒットした本をまとめてダウンロードします.AND検索もできます.
22
-
23
- kindai.rb 調理
24
- kindai.rb "松茸 調理"
25
-
26
- --output オプションで,保存先を指定できます.指定したディレクトリの下に,書名のディレクトリができます.
27
-
28
- kindai.rb http://kindai.ndl.go.jp/info:ndljp/pid/922693 --output ~/Documents/
29
-
30
- == 本の加工(自動)
31
-
32
- ダウンロードした本は自動的にトリミングされ,trim/ディレクトリに格納されます.トリミング情報は自動的に共有され,次に同じ本をダウンロードしたときや,他のひとが同じ本をダウンロードしたときに再利用されます.
33
-
34
- 起動時の引数で,ダウンロードした本を iPhone 用と Kindle 用に加工することができます.
35
-
36
- --publish_iphone オプションで,iPhone用のファイルを作ります.
37
- --publish_kindle オプションで,Kindle用のファイルを作ります.
38
-
39
- 両方指定すると,以下のようなファイル構成になります.
40
-
41
- 正義熱血社 - 正義の叫
42
- ├── original
43
- │   ├── 001.jpg
44
- │   ├── 002.jpg
45
- │   ├── 003.jpg
46
- (中略)
47
- │   └── 020.jpg
48
- ├── trim
49
- │   ├── 001.jpg
50
- │   ├── 002.jpg
51
- │   ├── 003.jpg
52
- (中略)
53
- │   └── 020.jpg
54
- ├── 正義熱血社 - 正義の叫_iphone.zip
55
- └── 正義熱血社 - 正義の叫_kindle.zip
56
-
57
- * original/以下には加工前の画像が入ります.
58
- * trim/以下にはトリミングして余白を取り除いた画像が入ります.パソコンで読むのに適しています.
59
- * _iphone.zipは,iPhoneの画面サイズ(1280x960)にリサイズされた見開き画像のzipファイルです.Comic Glassで読むのに適しています.
60
- * _kindle.zipは,Kindle3の画面サイズ(600x800)にリサイズされ,1ページずつに裁断された画像のzipファイルです.
61
-
62
- --no_trimmingオプションが指定されたときは,ダウンロードだけを行い,トリミングや加工を行いません.
63
-
64
- == 本の加工(手動)
65
-
66
- トリミング位置は自動的に決められますが,ダウンロード後に,ずれていることが分かった場合は,kindai.rb publishを使ってトリミング位置を指定できます.
67
-
68
- kindai.rb publish --position 2905x2510+270+190 "~/Documents/正義熱血社 - 正義の叫"
69
-
70
- 幅2905ピクセル,高さ2510ピクセル,左の余白270ピクセル,上の余白190ピクセルでトリミングされます.
71
-
72
- == 動作環境
73
-
74
- * Ruby が必要です.
75
- * RMagickを使っているので,ImageMagick が必要です.
76
-
77
- == その他
78
-
79
- 国立国会図書館デジタルアーカイブポータル(PORTA)外部提供インタフェースを利用しています.
80
-
81
- Wiki: 外部提供インタフェースについて
82
-
83
- http://porta.ndl.go.jp/wiki/Wiki.jsp?page=%E5%A4%96%E9%83%A8%E6%8F%90%E4%BE%9B%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
84
-
85
- == Copyright
86
-
87
- Copyright (c) 2011 hitode909. See LICENSE.txt for
88
- further details.