preadly-bulbasaur 0.3.0 → 0.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.
- checksums.yaml +4 -4
- data/bulbasaur.gemspec +2 -0
- data/lib/bulbasaur/extracts/extract_images_from_youtube.rb +14 -3
- data/lib/bulbasaur/version.rb +1 -1
- data/spec/bulbasaur/extracts/extract_images_from_all_resources_spec.rb +4 -0
- data/spec/bulbasaur/extracts/extract_images_from_youtube_spec.rb +18 -22
- data/spec/spec_helper.rb +5 -1
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2ce49896cc75739b7b348c8562bd27b782ae050
|
4
|
+
data.tar.gz: 8e085b9b873fe13483f5885bf4c5a26d7f4171b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36409b5eda6f8928b710698fbb7787fa387f59276f08a724e448a333e8b259096efd30cff1b8632b0e77401a3194c7b7f2a42c2b3fd64a44e20c649b3dc1be1a
|
7
|
+
data.tar.gz: bedb92be982705d050f8ea472410a34af96f4df36a528d370a593cf6087246717a4f2bc3e08f2eac34473cd71d0433d7920482d42a96bd639630dcbef75940ea
|
data/bulbasaur.gemspec
CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.add_development_dependency "bundler", "~> 1.6"
|
19
19
|
spec.add_development_dependency "rake", "~> 10.4"
|
20
20
|
spec.add_development_dependency "rspec", "~> 3.3"
|
21
|
+
spec.add_development_dependency "webmock"
|
22
|
+
|
21
23
|
|
22
24
|
spec.add_dependency "nokogiri", "~> 1.6"
|
23
25
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Bulbasaur
|
2
2
|
|
3
3
|
class ExtractImagesFromYoutube
|
4
|
-
|
4
|
+
|
5
5
|
EXTRACT_URL_PATTERN = /www\.youtube(?:-nocookie)?\.com\/(?:v|embed)\/[a-zA-Z0-9-]+/i
|
6
6
|
EXTRACT_VID_PATTERN = /(?<=v|embed)\/(?<vid>[a-zA-Z0-9-]+)/i
|
7
7
|
|
@@ -13,7 +13,7 @@ module Bulbasaur
|
|
13
13
|
images = Array.new
|
14
14
|
@html.scan(EXTRACT_URL_PATTERN).each do |video|
|
15
15
|
vid = get_vid(video)
|
16
|
-
images << { url: image_url(vid)
|
16
|
+
images << { url: image_url(vid) }
|
17
17
|
end
|
18
18
|
images
|
19
19
|
end
|
@@ -25,9 +25,20 @@ module Bulbasaur
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def image_url(vid)
|
28
|
+
image = image_url_max_resolution(vid)
|
29
|
+
response = Net::HTTP.get_response(URI(image))
|
30
|
+
case response
|
31
|
+
when Net::HTTPSuccess then
|
32
|
+
return image_url_max_resolution(vid)
|
33
|
+
else
|
34
|
+
return image_url_fallback(vid)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def image_url_max_resolution(vid)
|
28
39
|
"http://img.youtube.com/vi/#{vid}/maxresdefault.jpg"
|
29
40
|
end
|
30
|
-
|
41
|
+
|
31
42
|
def image_url_fallback(vid)
|
32
43
|
"http://img.youtube.com/vi/#{vid}/0.jpg"
|
33
44
|
end
|
data/lib/bulbasaur/version.rb
CHANGED
@@ -6,6 +6,10 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
|
|
6
6
|
described_class.new(html).call
|
7
7
|
end
|
8
8
|
|
9
|
+
before do
|
10
|
+
stub_request(:get, /\.youtube\.com/).to_return(status: 200)
|
11
|
+
end
|
12
|
+
|
9
13
|
describe "#call" do
|
10
14
|
|
11
15
|
context "When there is not youtube images" do
|
@@ -32,10 +36,6 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
|
|
32
36
|
it "Does return youtube url" do
|
33
37
|
expect(subject.first[:url]).to eq "http://img.youtube.com/vi/123idfake321/maxresdefault.jpg"
|
34
38
|
end
|
35
|
-
|
36
|
-
it "Does return youtube url fallback" do
|
37
|
-
expect(subject.first[:url_fallback]).to eq "http://img.youtube.com/vi/123idfake321/0.jpg"
|
38
|
-
end
|
39
39
|
end
|
40
40
|
|
41
41
|
context "When has on youtube video with path 'v'" do
|
@@ -51,10 +51,6 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
|
|
51
51
|
it "Does return youtube url" do
|
52
52
|
expect(subject.first[:url]).to eq "http://img.youtube.com/vi/video-1/maxresdefault.jpg"
|
53
53
|
end
|
54
|
-
|
55
|
-
it "Does return youtube url fallback" do
|
56
|
-
expect(subject.first[:url_fallback]).to eq "http://img.youtube.com/vi/video-1/0.jpg"
|
57
|
-
end
|
58
54
|
end
|
59
55
|
|
60
56
|
context "When has on youtube video with domais no-cookies" do
|
@@ -70,9 +66,20 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
|
|
70
66
|
it "Does return youtube url" do
|
71
67
|
expect(subject.first[:url]).to eq "http://img.youtube.com/vi/video-6/maxresdefault.jpg"
|
72
68
|
end
|
73
|
-
|
74
|
-
|
75
|
-
|
69
|
+
end
|
70
|
+
|
71
|
+
context "When image max resolution not exists" do
|
72
|
+
|
73
|
+
let(:html) do
|
74
|
+
%Q(<iframe width="560" height="315" src="https://www.youtube-nocookie.com/v/video-fail-6" frameborder="0" allowfullscreen></iframe>)
|
75
|
+
end
|
76
|
+
|
77
|
+
before do
|
78
|
+
stub_request(:get, "http://img.youtube.com/vi/video-fail-6/maxresdefault.jpg").to_return(status: 404)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "Does return image fallback url" do
|
82
|
+
expect(subject.first[:url]).to eq "http://img.youtube.com/vi/video-fail-6/0.jpg"
|
76
83
|
end
|
77
84
|
end
|
78
85
|
|
@@ -106,17 +113,6 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
|
|
106
113
|
"http://img.youtube.com/vi/video-4/maxresdefault.jpg",
|
107
114
|
"http://img.youtube.com/vi/video-6/maxresdefault.jpg")
|
108
115
|
end
|
109
|
-
|
110
|
-
it "Does return youtube urls fallback" do
|
111
|
-
expect(subject.map{ |video| video[:url_fallback] }).to include(
|
112
|
-
"http://img.youtube.com/vi/video0/0.jpg",
|
113
|
-
"http://img.youtube.com/vi/video1/0.jpg",
|
114
|
-
"http://img.youtube.com/vi/video2/0.jpg",
|
115
|
-
"http://img.youtube.com/vi/video3/0.jpg",
|
116
|
-
"http://img.youtube.com/vi/video-4/0.jpg",
|
117
|
-
"http://img.youtube.com/vi/video-4/0.jpg",
|
118
|
-
"http://img.youtube.com/vi/video-6/0.jpg")
|
119
|
-
end
|
120
116
|
end
|
121
117
|
end
|
122
118
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -7,8 +7,12 @@ require "bundler/setup"
|
|
7
7
|
Bundler.setup
|
8
8
|
|
9
9
|
require "bulbasaur"
|
10
|
-
require "
|
10
|
+
require "webmock/rspec"
|
11
11
|
|
12
12
|
RSpec.configure do |config|
|
13
13
|
|
14
|
+
config.after(:suite) do
|
15
|
+
WebMock.disable_net_connect!(:allow => 'codeclimate.com')
|
16
|
+
end
|
17
|
+
|
14
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: preadly-bulbasaur
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Magno Costa
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: nokogiri
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|