Ruby4Misawa 0.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.
Files changed (5) hide show
  1. data/Gemfile +3 -0
  2. data/README.rdoc +26 -0
  3. data/Ruby4Misawa-0.1.gemspec +13 -0
  4. data/Ruby4Misawa.rb +174 -0
  5. metadata +59 -0
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec :name => 'Ruby4Misawa'
data/README.rdoc ADDED
@@ -0,0 +1,26 @@
1
+ = Ruby4Misawa
2
+
3
+ == これはなにか
4
+
5
+ - 地獄のミサワの画像を取ってくるやつ
6
+ - 画像はURLで出力するか、保存するかを選ぶ
7
+
8
+ == インストール
9
+
10
+ gem install Ruby4Misawa でおk
11
+
12
+ == つかいかた
13
+
14
+ ruby Ruby4Misawa.rb [オプション] [値]
15
+
16
+ [-t [uri, save]] uriは画像のURIを出力、saveは保存しまくる。permission関係でこける可能性はありけり。
17
+ [-c [カテゴリ名]] ルシフェル や バイトリーダーのように指定。一つしか指定できないので注意。
18
+ [-p [対象ページ]] 1 や 0のような数値か、0..5のようにRange形式で指定
19
+
20
+ --type, --category, --pageでも可
21
+
22
+ ちなみに何も指定しないと地獄のミサワのトップページにあるミサワ画像(と思われるもの)を取ってくる
23
+
24
+ == 備考
25
+
26
+ なんかおかしかったらすいません
@@ -0,0 +1,13 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ Gem::Specification.new do | spec |
4
+ spec.name = 'Ruby4Misawa'
5
+ spec.version = '0.1'
6
+ spec.summary = 'スクレイピングライブラリ for 地獄のミサワ'
7
+ spec.description = '地獄のミサワブログにあるURLがとれたり、そのまま画像を保存したりできます。'
8
+ spec.homepage = 'https://github.com/namusyaka/Ruby4Misawa'
9
+ spec.author = 'namusyaka'
10
+ spec.email = 'namusyaka@gmail.com'
11
+ spec.files = %w( README.rdoc Ruby4Misawa-0.1.gemspec Gemfile Ruby4Misawa.rb )
12
+ spec.add_development_dependency('nokogiri')
13
+ end
data/Ruby4Misawa.rb ADDED
@@ -0,0 +1,174 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ %w( uri open-uri optparse rubygems nokogiri ).each do | name |
4
+ require name
5
+ end
6
+
7
+ class Misawa
8
+
9
+ DOMAIN = 'http://jigokuno.com/'
10
+ CATEGORIES = {
11
+ "cecil" => 79,
12
+ "D-Matt" => 25,
13
+ "KAZ" => 1,
14
+ "KOUNOIKE" => 29,
15
+ "masa" => 13,
16
+ "masao" => 53,
17
+ "NAKAYAN" => 8,
18
+ "SYUN" => 24,
19
+ "ルシフェル" => 14,
20
+ "あつしさん" => 64,
21
+ "あの御方" => 37,
22
+ "しょうへい" => 66,
23
+ "すなお" => 38,
24
+ "たばっち" => 52,
25
+ "ちんちんでか男" => 57,
26
+ "つっちー" => 7,
27
+ "てづっちゃん" => 67,
28
+ "とりっぴー" => 82,
29
+ "なかじ" => 28,
30
+ "のぶちゃん" => 22,
31
+ "のぼる" => 49,
32
+ "のりすけ" => 21,
33
+ "はしもっさん" => 44,
34
+ "はまちゃん" => 55,
35
+ "ぴーなっつ" => 58,
36
+ "まみのパパ" => 56,
37
+ "りきお" => 85,
38
+ "エ~イチ" => 83,
39
+ "キヨシロー" => 17,
40
+ "キング" => 84,
41
+ "コウヘイ" => 3,
42
+ "シュナイダー" => 34,
43
+ "ショップ店員" => 12,
44
+ "ジーンズ" => 36,
45
+ "ジェイ" => 10,
46
+ "ソドム" => 78,
47
+ "タケ" => 54,
48
+ "チーポー" => 35,
49
+ "デスピサロ" => 46,
50
+ "ドリモグ" => 40,
51
+ "ナイト" => 50,
52
+ "ハリソン・フォード" => 41,
53
+ "バイトリーダー" => 71,
54
+ "ファイナルボム" => 74,
55
+ "フェイク" => 32,
56
+ "マイク" => 65,
57
+ "ミラージュ" => 5,
58
+ "ラッシュさん" => 19,
59
+ "リアル" => 81,
60
+ "リチャード" => 80,
61
+ "リュウー" => 26,
62
+ "レオン" => 59,
63
+ "吉岡" => 6,
64
+ "久志" => 51,
65
+ "玉木宏" => 43,
66
+ "健二" => 70,
67
+ "佐伯さん" => 76,
68
+ "砂漠の狼" => 63,
69
+ "坂本竜馬の子孫" => 27,
70
+ "桜井" => 39,
71
+ "時任" => 42,
72
+ "実行委員" => 47,
73
+ "小松っち" => 75,
74
+ "松尾" => 23,
75
+ "水谷" => 11,
76
+ "袖まくり" => 60,
77
+ "太陽 " => 68,
78
+ "代官山" => 33,
79
+ "大嶽一史" => 77,
80
+ "拓真" => 31,
81
+ "達也の兄ちゃん" => 72,
82
+ "痴漢" => 15,
83
+ "中村健" => 4,
84
+ "田部" => 20,
85
+ "東大生" => 45,
86
+ "湯上谷" => 16,
87
+ "藤井" => 9,
88
+ "道明寺" => 61,
89
+ "風雲児達" => 86,
90
+ "北岡" => 62,
91
+ "野村" => 2,
92
+ "野茂" => 30,
93
+ "零" => 69,
94
+ "零" => 73,
95
+ "和田" => 48
96
+ }
97
+
98
+ attr_reader :category, :page
99
+
100
+ def initialize(category, page = 0)
101
+ @category = CATEGORIES[category]
102
+ @page = page =~ /^[0-9]+?\.\.[0-9]+?$/ ? eval(page) : page
103
+ end
104
+
105
+ def scrape
106
+ create_uri.inject([]) do | result, uri |
107
+ body = get_body(uri)
108
+ Nokogiri.HTML(body).css('img.pict').map { | img | result << img['src'] } if body
109
+ result
110
+ end
111
+ end
112
+
113
+ class << self;
114
+
115
+ def save_misawa(category, page)
116
+ misawa = self.new(category, page)
117
+ misawa.scrape.each_with_index do | src, i |
118
+ File.open("#{misawa.category}-#{i}.gif", 'w') { | f | f.write(misawa.get_body(src)) }
119
+ end
120
+ end
121
+
122
+ def uri_misawa(category, page)
123
+ misawa = self.new(category, page)
124
+ misawa.scrape.each_with_index do | src, i |
125
+ puts "#{misawa.category}-#{i} : #{src} "
126
+ end
127
+ end
128
+
129
+ def method_missing(name, *args)
130
+ raise ArgumentError;
131
+ end
132
+
133
+ end
134
+
135
+ def get_body(uri)
136
+ begin
137
+ open(URI.encode(uri)).read
138
+ rescue OpenURI::HTTPError
139
+ return nil
140
+ end
141
+ end
142
+
143
+ def create_uri
144
+ if @page.is_a?(Range)
145
+ base = "#{DOMAIN}/?cid=#{@category}&page="
146
+ @page.map { | i | "#{base}#{i}" }
147
+ else
148
+ ["#{DOMAIN}/?cid=#{@category}&page=#{@page}"]
149
+ end
150
+ end
151
+
152
+ end
153
+
154
+ if $0 === __FILE__
155
+
156
+ OptionParser.new do | opt |
157
+
158
+ arguments = {}
159
+
160
+ opt.on('-t [TYPE]', '--type [TYPE]') do | value |
161
+ arguments[:type] = value
162
+ end
163
+ opt.on('-p [PAGE]', '--page [PAGE]') do | value |
164
+ arguments[:page] = value
165
+ end
166
+ opt.on('-c [CATEGORY]', '--category [CATEGORY]') do | value |
167
+ arguments[:category] = value
168
+ end
169
+
170
+ opt.parse!(ARGV)
171
+ Misawa.send("#{arguments[:type] || 'uri'}_misawa", arguments[:category], arguments[:page])
172
+ end
173
+
174
+ end
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Ruby4Misawa
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - namusyaka
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &2151914520 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *2151914520
25
+ description: 地獄のミサワブログにあるURLがとれたり、そのまま画像を保存したりできます。
26
+ email: namusyaka@gmail.com
27
+ executables: []
28
+ extensions: []
29
+ extra_rdoc_files: []
30
+ files:
31
+ - README.rdoc
32
+ - Ruby4Misawa-0.1.gemspec
33
+ - Gemfile
34
+ - Ruby4Misawa.rb
35
+ homepage: https://github.com/namusyaka/Ruby4Misawa
36
+ licenses: []
37
+ post_install_message:
38
+ rdoc_options: []
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubyforge_project:
55
+ rubygems_version: 1.8.10
56
+ signing_key:
57
+ specification_version: 3
58
+ summary: スクレイピングライブラリ for 地獄のミサワ
59
+ test_files: []