ocawari 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +5 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +95 -0
  8. data/Rakefile +13 -0
  9. data/bin/console +11 -0
  10. data/bin/setup +8 -0
  11. data/exe/oca +51 -0
  12. data/lib/ocawari.rb +72 -0
  13. data/lib/ocawari/parser.rb +20 -0
  14. data/lib/ocawari/strategy/ameblo.rb +51 -0
  15. data/lib/ocawari/strategy/entame_clip.rb +18 -0
  16. data/lib/ocawari/strategy/gendai_business.rb +37 -0
  17. data/lib/ocawari/strategy/girls_news.rb +19 -0
  18. data/lib/ocawari/strategy/google_plus.rb +30 -0
  19. data/lib/ocawari/strategy/hustlepress.rb +18 -0
  20. data/lib/ocawari/strategy/imgur.rb +14 -0
  21. data/lib/ocawari/strategy/instagram.rb +37 -0
  22. data/lib/ocawari/strategy/kaiyou.rb +25 -0
  23. data/lib/ocawari/strategy/keyakizaka46.rb +23 -0
  24. data/lib/ocawari/strategy/line.rb +31 -0
  25. data/lib/ocawari/strategy/mantan_web.rb +27 -0
  26. data/lib/ocawari/strategy/mens_fashion.rb +20 -0
  27. data/lib/ocawari/strategy/modelpress.rb +25 -0
  28. data/lib/ocawari/strategy/nana_bun_no_nijuuni.rb +18 -0
  29. data/lib/ocawari/strategy/nana_go_go.rb +18 -0
  30. data/lib/ocawari/strategy/natalie.rb +18 -0
  31. data/lib/ocawari/strategy/news_dwango.rb +18 -0
  32. data/lib/ocawari/strategy/nikkan_sports.rb +22 -0
  33. data/lib/ocawari/strategy/no_match.rb +12 -0
  34. data/lib/ocawari/strategy/okmusicjp.rb +19 -0
  35. data/lib/ocawari/strategy/sirabee.rb +29 -0
  36. data/lib/ocawari/strategy/stereo_sound.rb +19 -0
  37. data/lib/ocawari/strategy/tokyo_idol_net.rb +14 -0
  38. data/lib/ocawari/strategy/tumblr.rb +58 -0
  39. data/lib/ocawari/strategy/tv_tokyo.rb +18 -0
  40. data/lib/ocawari/strategy/twitter.rb +29 -0
  41. data/lib/ocawari/strategy_delegator.rb +52 -0
  42. data/lib/ocawari/version.rb +3 -0
  43. data/ocawari.gemspec +45 -0
  44. metadata +342 -0
@@ -0,0 +1,19 @@
1
+ module Ocawari
2
+ module Strategy
3
+ class StereoSound < Parser
4
+
5
+ private
6
+
7
+ CSS_SELECTORS = [
8
+ "div#addBlogArticleArea p.addPhoto a",
9
+ "div#addBlogArticleArea p.addIdolPhoto a"
10
+ ]
11
+
12
+ def parse
13
+ page.css(CSS_SELECTORS.join(", ")).map do |a|
14
+ File.join("http://www.stereosound.co.jp", a["href"])
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ module Ocawari
2
+ module Strategy
3
+ class TokyoIdolNet < Parser
4
+
5
+ private
6
+
7
+ def parse
8
+ page.css("img").map do |img|
9
+ img["data-large-file"]
10
+ end.compact
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,58 @@
1
+ module Ocawari
2
+ module Strategy
3
+ class Tumblr < Parser
4
+
5
+ private
6
+
7
+ IMAGE_FILTER_EXPRESSION = /\d_(250|400|500|540|1280)\.jpg$/
8
+ LOWER_RESOLUTION = /(250|400|540|500)\.(jpg|png)/
9
+ OPENGRAPH_COMMENTS = [
10
+ "BEGIN TUMBLR FACEBOOK OPENGRAPH TAGS",
11
+ "FACEBOOK OPEN GRAPH"
12
+ ]
13
+
14
+ def parse
15
+ if /(#{OPENGRAPH_COMMENTS.join("|")})/.match?(page.to_xml)
16
+ target_images = page.css("meta[property='og:image']")
17
+ else
18
+ target_images = page.css("img").select do |img|
19
+ IMAGE_FILTER_EXPRESSION.match?(img["src"])
20
+ end
21
+ end
22
+
23
+ if target_images.any?
24
+ image_urls = target_images.flat_map do |node|
25
+ [node["content"], node["src"]]
26
+ end.compact
27
+ else
28
+ iframe = page.css("iframe").find do |iframe|
29
+ iframe.attributes.values.any? do |v|
30
+ /photoset/.match?(v.value)
31
+ end
32
+ end
33
+
34
+ return [] unless iframe
35
+
36
+ @page = Nokogiri::HTML(open(iframe["src"]))
37
+ target_images = page.css("img").select do |img|
38
+ IMAGE_FILTER_EXPRESSION.match?(img["src"])
39
+ end
40
+
41
+ image_urls = target_images.map { |img| img["src"] }
42
+ end
43
+
44
+
45
+ image_urls.map do |url|
46
+ if LOWER_RESOLUTION.match?(url)
47
+ url.sub(
48
+ LOWER_RESOLUTION,
49
+ "1280#{File.extname(url)}"
50
+ ).strip
51
+ else
52
+ url.strip
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,18 @@
1
+ module Ocawari
2
+ module Strategy
3
+ class TvTokyo < Parser
4
+
5
+ private
6
+
7
+ CSS_SELECTORS = [
8
+ "div.txyomu_articleContent img.mt-image-center"
9
+ ]
10
+
11
+ def parse
12
+ page.css(CSS_SELECTORS.join(", ")).map do |image|
13
+ File.join("www.tv-tokyo.co.jp", image["src"])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,29 @@
1
+ module Ocawari
2
+ module Strategy
3
+ class Twitter < Parser
4
+ def initialize(uri)
5
+ @uri = uri
6
+ @page = Nokogiri::HTML(
7
+ open(uri, {"User-Agent" => Ocawari::WINDOWS_CHROME_USER_AGENT}).read
8
+ )
9
+
10
+ rescue OpenURI::HTTPError
11
+ @page = nil
12
+ end
13
+
14
+ private
15
+
16
+ CSS_SELECTORS = [
17
+ "div.permalink-tweet-container div.tweet div.AdaptiveMedia-photoContainer img"
18
+ ]
19
+
20
+ def parse
21
+ image_nodes = page.css(CSS_SELECTORS.join(","))
22
+
23
+ image_nodes.map do |img|
24
+ "#{img["src"]}:large"
25
+ end.uniq
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,52 @@
1
+ # Require all strategies
2
+ Dir[
3
+ File.join(
4
+ File.expand_path(File.dirname(__FILE__)),
5
+ "strategy",
6
+ "*"
7
+ )
8
+ ].each { |strategy| require strategy }
9
+
10
+ module Ocawari
11
+ class StrategyDelegator
12
+ STRATEGY_MAP = {
13
+ /ameblo\.jp\/[\W\w]+\/entry-\d+\.html/ => "Ameblo",
14
+ /entameclip\.com/ => "EntameClip",
15
+ /gendai\.ismedia\.jp/ => "GendaiBusiness",
16
+ /girlsnews\.tv/ => "GirlsNews",
17
+ /plus\.google\.com(\/u\/\d+)?\/\d+\/posts\/\w+/ => "GooglePlus",
18
+ /hustlepress\.co\.jp/ => "Hustlepress",
19
+ /imgur\.com\/a\/.*/ => "Imgur",
20
+ /instagram\.com\/p\/[\W\w]+/ => "Instagram",
21
+ /kai-you\.net\/article\/\d+/ => "Kaiyou",
22
+ /keyakizaka46\.com\/s\/k46o\/diary\/detail/ => "Keyakizaka46",
23
+ /lineblog\.me\/\w+\/archives\/\d+\.html/ => "Line",
24
+ /mensfashion\.cc/ => "MensFashion",
25
+ /mdpr\.jp/ => "ModelPress",
26
+ /mantan-web\.jp/ => "MantanWeb",
27
+ /blog\.nanabunnonijyuuni\.com/ => "NanaBunNoNijuuni",
28
+ /7gogo\.jp\/[\W\w]+\/\d+/ => "NanaGoGo",
29
+ /natalie\.mu/ => "Natalie",
30
+ /news\.dwango\.jp/ => "NewsDwango",
31
+ /nikkansports\.com/ => "NikkanSports",
32
+ /okmusic\.jp/ => "OkMusicJP",
33
+ /sirabee\.com/ => "Sirabee",
34
+ /stereosound\.co\.jp\/column\/idollove/ => "StereoSound",
35
+ /tokyoidol\.net\/\?p=\d+/ => "TokyoIdolNet",
36
+ /tumblr\.com\/post\/\d+\/?/ => "Tumblr",
37
+ /tv-tokyo\.co\.jp/ => "TvTokyo",
38
+ /voz48\.xyz\/post\/\d{1,}\/.*/ => "Tumblr",
39
+ /twitter\.com\/\w+\/status\/\d{1,}/ => "Twitter"
40
+ }
41
+
42
+ def self.identify(url)
43
+ STRATEGY_MAP.each do |regex, strategy|
44
+ if regex.match?(url)
45
+ return Ocawari::Strategy.const_get(strategy)
46
+ end
47
+ end
48
+
49
+ Ocawari::Strategy::NoMatch
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,3 @@
1
+ module Ocawari
2
+ VERSION = "0.9.7"
3
+ end
data/ocawari.gemspec ADDED
@@ -0,0 +1,45 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ocawari/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ocawari"
8
+ spec.version = Ocawari::VERSION
9
+ spec.authors = ["Kenneth Uy"]
10
+ spec.email = ["missingno15@gmail.com"]
11
+
12
+ spec.summary = %q{Extract the image urls of the social media posts of your favorite idols}
13
+ spec.description = %q{If there is one thing that has plagued me over the years, it's that I constantly have more tabs in my browser open that necessary. And these tabs are usually images of Japanese idols I intend to save at some point but never do. This is because the whole process of grabbing the image either through right clicking the image or having to search for it via my browser's inspector then moving it to the desired directory via the GUI interface is an incredibly tedious and time consuming task. But through the power of code and this library, I will be able to just point the links of posts containing the images I want using this library and it will generate for me the links to the images which I can then pipe into some other tool dedicated for downloading like wget. With that being said, Hashimoto Kanna is your master now and she will show you the true nature of the force.}
14
+ spec.homepage = "https://github.com/NewSchoolKaidan/ocawari"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # delete this section to allow pushing this gem to any host.
19
+ if spec.respond_to?(:metadata)
20
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
+ else
22
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_dependency "openssl", "~> 2.1"
31
+ spec.add_dependency "nokogiri", "~> 1.10", ">= 1.10.1"
32
+ spec.add_dependency "addressable", "~> 2.6"
33
+ spec.add_dependency "methadone", "~> 2.0", ">= 2.0.2"
34
+
35
+ spec.add_development_dependency "bundler", "~> 2.0", ">= 2.0.1"
36
+ spec.add_development_dependency "rake", "~> 12.3", ">= 12.3.2"
37
+ spec.add_development_dependency "rb-readline", "~> 0.5.5"
38
+ spec.add_development_dependency "pry", "~> 0.11.3"
39
+ spec.add_development_dependency "pry-rescue", "~> 1.4", ">= 1.4.5"
40
+ spec.add_development_dependency "minitest", "~> 5.11", ">= 5.11.3"
41
+ spec.add_development_dependency "minitest-reporters", "~> 1.2"
42
+ spec.add_development_dependency "vcr", "~> 4.0"
43
+ spec.add_development_dependency "webmock", "~> 3.5", ">= 3.5.1"
44
+ spec.add_development_dependency "mini_magick", "~> 4.9", ">= 4.9.2"
45
+ end
metadata ADDED
@@ -0,0 +1,342 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ocawari
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.7
5
+ platform: ruby
6
+ authors:
7
+ - Kenneth Uy
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-01-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: openssl
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.10'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.10.1
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.10'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.10.1
47
+ - !ruby/object:Gem::Dependency
48
+ name: addressable
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.6'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.6'
61
+ - !ruby/object:Gem::Dependency
62
+ name: methadone
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 2.0.2
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '2.0'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 2.0.2
81
+ - !ruby/object:Gem::Dependency
82
+ name: bundler
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '2.0'
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 2.0.1
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '2.0'
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 2.0.1
101
+ - !ruby/object:Gem::Dependency
102
+ name: rake
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '12.3'
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 12.3.2
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '12.3'
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 12.3.2
121
+ - !ruby/object:Gem::Dependency
122
+ name: rb-readline
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: 0.5.5
128
+ type: :development
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: 0.5.5
135
+ - !ruby/object:Gem::Dependency
136
+ name: pry
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: 0.11.3
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: 0.11.3
149
+ - !ruby/object:Gem::Dependency
150
+ name: pry-rescue
151
+ requirement: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: '1.4'
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: 1.4.5
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '1.4'
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: 1.4.5
169
+ - !ruby/object:Gem::Dependency
170
+ name: minitest
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '5.11'
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: 5.11.3
179
+ type: :development
180
+ prerelease: false
181
+ version_requirements: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '5.11'
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: 5.11.3
189
+ - !ruby/object:Gem::Dependency
190
+ name: minitest-reporters
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: '1.2'
196
+ type: :development
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '1.2'
203
+ - !ruby/object:Gem::Dependency
204
+ name: vcr
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '4.0'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - "~>"
215
+ - !ruby/object:Gem::Version
216
+ version: '4.0'
217
+ - !ruby/object:Gem::Dependency
218
+ name: webmock
219
+ requirement: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - "~>"
222
+ - !ruby/object:Gem::Version
223
+ version: '3.5'
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ version: 3.5.1
227
+ type: :development
228
+ prerelease: false
229
+ version_requirements: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - "~>"
232
+ - !ruby/object:Gem::Version
233
+ version: '3.5'
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: 3.5.1
237
+ - !ruby/object:Gem::Dependency
238
+ name: mini_magick
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '4.9'
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ version: 4.9.2
247
+ type: :development
248
+ prerelease: false
249
+ version_requirements: !ruby/object:Gem::Requirement
250
+ requirements:
251
+ - - "~>"
252
+ - !ruby/object:Gem::Version
253
+ version: '4.9'
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: 4.9.2
257
+ description: If there is one thing that has plagued me over the years, it's that I
258
+ constantly have more tabs in my browser open that necessary. And these tabs are
259
+ usually images of Japanese idols I intend to save at some point but never do. This
260
+ is because the whole process of grabbing the image either through right clicking
261
+ the image or having to search for it via my browser's inspector then moving it to
262
+ the desired directory via the GUI interface is an incredibly tedious and time consuming
263
+ task. But through the power of code and this library, I will be able to just point
264
+ the links of posts containing the images I want using this library and it will generate
265
+ for me the links to the images which I can then pipe into some other tool dedicated
266
+ for downloading like wget. With that being said, Hashimoto Kanna is your master
267
+ now and she will show you the true nature of the force.
268
+ email:
269
+ - missingno15@gmail.com
270
+ executables:
271
+ - oca
272
+ extensions: []
273
+ extra_rdoc_files: []
274
+ files:
275
+ - ".gitignore"
276
+ - ".ruby-version"
277
+ - ".travis.yml"
278
+ - Gemfile
279
+ - LICENSE.txt
280
+ - README.md
281
+ - Rakefile
282
+ - bin/console
283
+ - bin/setup
284
+ - exe/oca
285
+ - lib/ocawari.rb
286
+ - lib/ocawari/parser.rb
287
+ - lib/ocawari/strategy/ameblo.rb
288
+ - lib/ocawari/strategy/entame_clip.rb
289
+ - lib/ocawari/strategy/gendai_business.rb
290
+ - lib/ocawari/strategy/girls_news.rb
291
+ - lib/ocawari/strategy/google_plus.rb
292
+ - lib/ocawari/strategy/hustlepress.rb
293
+ - lib/ocawari/strategy/imgur.rb
294
+ - lib/ocawari/strategy/instagram.rb
295
+ - lib/ocawari/strategy/kaiyou.rb
296
+ - lib/ocawari/strategy/keyakizaka46.rb
297
+ - lib/ocawari/strategy/line.rb
298
+ - lib/ocawari/strategy/mantan_web.rb
299
+ - lib/ocawari/strategy/mens_fashion.rb
300
+ - lib/ocawari/strategy/modelpress.rb
301
+ - lib/ocawari/strategy/nana_bun_no_nijuuni.rb
302
+ - lib/ocawari/strategy/nana_go_go.rb
303
+ - lib/ocawari/strategy/natalie.rb
304
+ - lib/ocawari/strategy/news_dwango.rb
305
+ - lib/ocawari/strategy/nikkan_sports.rb
306
+ - lib/ocawari/strategy/no_match.rb
307
+ - lib/ocawari/strategy/okmusicjp.rb
308
+ - lib/ocawari/strategy/sirabee.rb
309
+ - lib/ocawari/strategy/stereo_sound.rb
310
+ - lib/ocawari/strategy/tokyo_idol_net.rb
311
+ - lib/ocawari/strategy/tumblr.rb
312
+ - lib/ocawari/strategy/tv_tokyo.rb
313
+ - lib/ocawari/strategy/twitter.rb
314
+ - lib/ocawari/strategy_delegator.rb
315
+ - lib/ocawari/version.rb
316
+ - ocawari.gemspec
317
+ homepage: https://github.com/NewSchoolKaidan/ocawari
318
+ licenses:
319
+ - MIT
320
+ metadata:
321
+ allowed_push_host: https://rubygems.org
322
+ post_install_message:
323
+ rdoc_options: []
324
+ require_paths:
325
+ - lib
326
+ required_ruby_version: !ruby/object:Gem::Requirement
327
+ requirements:
328
+ - - ">="
329
+ - !ruby/object:Gem::Version
330
+ version: '0'
331
+ required_rubygems_version: !ruby/object:Gem::Requirement
332
+ requirements:
333
+ - - ">="
334
+ - !ruby/object:Gem::Version
335
+ version: '0'
336
+ requirements: []
337
+ rubyforge_project:
338
+ rubygems_version: 2.7.3
339
+ signing_key:
340
+ specification_version: 4
341
+ summary: Extract the image urls of the social media posts of your favorite idols
342
+ test_files: []