ocawari 0.9.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.ruby-version +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +95 -0
- data/Rakefile +13 -0
- data/bin/console +11 -0
- data/bin/setup +8 -0
- data/exe/oca +51 -0
- data/lib/ocawari.rb +72 -0
- data/lib/ocawari/parser.rb +20 -0
- data/lib/ocawari/strategy/ameblo.rb +51 -0
- data/lib/ocawari/strategy/entame_clip.rb +18 -0
- data/lib/ocawari/strategy/gendai_business.rb +37 -0
- data/lib/ocawari/strategy/girls_news.rb +19 -0
- data/lib/ocawari/strategy/google_plus.rb +30 -0
- data/lib/ocawari/strategy/hustlepress.rb +18 -0
- data/lib/ocawari/strategy/imgur.rb +14 -0
- data/lib/ocawari/strategy/instagram.rb +37 -0
- data/lib/ocawari/strategy/kaiyou.rb +25 -0
- data/lib/ocawari/strategy/keyakizaka46.rb +23 -0
- data/lib/ocawari/strategy/line.rb +31 -0
- data/lib/ocawari/strategy/mantan_web.rb +27 -0
- data/lib/ocawari/strategy/mens_fashion.rb +20 -0
- data/lib/ocawari/strategy/modelpress.rb +25 -0
- data/lib/ocawari/strategy/nana_bun_no_nijuuni.rb +18 -0
- data/lib/ocawari/strategy/nana_go_go.rb +18 -0
- data/lib/ocawari/strategy/natalie.rb +18 -0
- data/lib/ocawari/strategy/news_dwango.rb +18 -0
- data/lib/ocawari/strategy/nikkan_sports.rb +22 -0
- data/lib/ocawari/strategy/no_match.rb +12 -0
- data/lib/ocawari/strategy/okmusicjp.rb +19 -0
- data/lib/ocawari/strategy/sirabee.rb +29 -0
- data/lib/ocawari/strategy/stereo_sound.rb +19 -0
- data/lib/ocawari/strategy/tokyo_idol_net.rb +14 -0
- data/lib/ocawari/strategy/tumblr.rb +58 -0
- data/lib/ocawari/strategy/tv_tokyo.rb +18 -0
- data/lib/ocawari/strategy/twitter.rb +29 -0
- data/lib/ocawari/strategy_delegator.rb +52 -0
- data/lib/ocawari/version.rb +3 -0
- data/ocawari.gemspec +45 -0
- 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,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
|
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: []
|