kindai 2.3.0 → 2.4.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.
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.