videodrome 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +9 -10
- data/lib/videodrome/version.rb +1 -1
- data/spec/video_spec.rb +2 -2
- data/videodrome.gemspec +3 -2
- metadata +72 -107
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c1a33a64d1dd48e964b41273e3bcd377c89412a92b06752c66708bdcf5e99d93
|
4
|
+
data.tar.gz: 0afc1941cbf75c0b51bc1176f4f80417ad0d652447f9824038eb57663653165f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cedd305e52973eeaa5be7af63985ce893f079fffcb6a1abf9f5df62b0906d967a257383f2bb8d9d223cbe5094048e61afef478b03fc1e2983f37d529598e6ded
|
7
|
+
data.tar.gz: 62721f0f97f316fe0e13a4b72b9ce3cb193a26d475738906a85c0a0c317a893ce8adbdf4683c3a68ce8537c715ba523908b148250305386a6531b13f4e543762
|
data/README.md
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
Access metadata of **public videos** on Youtube using YouTube Data API v3. Please see the documentation for this API at https://developers.google.com/youtube/v3/.
|
4
4
|
|
5
|
-
Videodrome is designed to be minimal
|
5
|
+
Videodrome is designed to be minimal in its features and dependencies and to work with any Ruby versions > 2. Videodrome can only access public information since it **does not provides** any authentication method to access [private user data](https://developers.google.com/youtube/v3/guides/authentication).
|
6
6
|
|
7
|
-
If you want a fully
|
7
|
+
If you want a fully-featured YouTube API client, please check the excellent [yt](https://github.com/Fullscreen/yt) gem.
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
@@ -22,11 +22,11 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Setup
|
24
24
|
|
25
|
-
Although Videodrome does not require any user authentication, the new Youtube API requires to sign all calls with an API key, even if you are accessing only public data.
|
25
|
+
Although Videodrome does not require any user authentication, the new Youtube API requires to sign all calls with an API key, even if you are accessing only public data. To generate a server key, please follow the steps at [Obtaining authorization credentials](https://developers.google.com/youtube/registering_an_application).
|
26
26
|
|
27
|
-
Once you have the API key, the easiest to provide it to Videodrome is to set it up in your environment:
|
27
|
+
Once you have the API key, the easiest way to provide it to Videodrome is to set it up in your environment:
|
28
28
|
|
29
|
-
```
|
29
|
+
```sh
|
30
30
|
VIDEODROME_YOUTUBE_API_KEY="AIzaS…wGhuD"
|
31
31
|
```
|
32
32
|
|
@@ -34,7 +34,7 @@ VIDEODROME_YOUTUBE_API_KEY="AIzaS…wGhuD"
|
|
34
34
|
|
35
35
|
Once the API Key is available to Videodrome, retrieve the metadata of a video using its URL:
|
36
36
|
|
37
|
-
```
|
37
|
+
```ruby
|
38
38
|
video = Videodrome::Video.new("https://youtube.com/watch?v=NZ8RiLLt6yg")
|
39
39
|
video.title # "The Mercedes-Benz CLA (a car commercial)"
|
40
40
|
video.published_at # Thu Sep 05 21:01:57 UTC 2013
|
@@ -44,23 +44,22 @@ video.embed_html # <iframe type='text/html' src='http://www.youtube.com/embed/NZ
|
|
44
44
|
|
45
45
|
URL short versions are also supported:
|
46
46
|
|
47
|
-
```
|
47
|
+
```ruby
|
48
48
|
Videodrome::Video.new("https://youtu.be/NZ8RiLLt6yg")
|
49
49
|
```
|
50
50
|
|
51
51
|
Customize the API call by proving an option hash to the initialization. For details on the parameters you can use please check [the Videos:list documentation](https://developers.google.com/youtube/v3/docs/videos/list#part).
|
52
52
|
|
53
|
-
```
|
53
|
+
```ruby
|
54
54
|
Videodrome::Video.new("https://youtu.be/NZ8RiLLt6yg", :part => "snippet,player,contentDetails,status,fileDetails")
|
55
55
|
```
|
56
56
|
|
57
57
|
This customization can be used too to explictly provide the API key to sign the calls:
|
58
58
|
|
59
|
-
```
|
59
|
+
```ruby
|
60
60
|
Videodrome::Video.new("https://youtu.be/NZ8RiLLt6yg", :key => "AIzaS…wGhuD")
|
61
61
|
```
|
62
62
|
|
63
|
-
|
64
63
|
## To-do
|
65
64
|
|
66
65
|
Provide mocks to prevent real requests to the Youtube API when running the specs.
|
data/lib/videodrome/version.rb
CHANGED
data/spec/video_spec.rb
CHANGED
@@ -17,7 +17,7 @@ describe Videodrome::Video do
|
|
17
17
|
"standard" => { "url" => "https://i.ytimg.com/vi/NZ8RiLLt6yg/sddefault.jpg", "width" => 640, "height" => 480 }
|
18
18
|
},
|
19
19
|
:embeddable => true,
|
20
|
-
:embed_html =>
|
20
|
+
:embed_html => '<iframe width="480" height="270" src="//www.youtube.com/embed/NZ8RiLLt6yg" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'
|
21
21
|
}
|
22
22
|
end
|
23
23
|
describe "#published_at" do
|
@@ -42,7 +42,7 @@ describe Videodrome::Video do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
context "given a video with no standard thumbnail" do
|
45
|
-
let(:url) { "https://youtube.com/watch?v=
|
45
|
+
let(:url) { "https://www.youtube.com/watch?v=xQUCxHj17tA" }
|
46
46
|
describe "#thumbnails" do
|
47
47
|
it("returns no standard thumbnail") { expect(video.thumbnail).to be nil }
|
48
48
|
it("returns others thumbnails") { expect(video.thumbnails.size).to be > 0 }
|
data/videodrome.gemspec
CHANGED
@@ -17,10 +17,11 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
+
spec.required_ruby_version = '>= 2.7'
|
21
|
+
|
20
22
|
spec.add_dependency "faraday"
|
21
|
-
spec.add_dependency "json"
|
22
23
|
|
23
|
-
spec.add_development_dependency "bundler", "~>
|
24
|
+
spec.add_development_dependency "bundler", "~> 2"
|
24
25
|
spec.add_development_dependency "rake"
|
25
26
|
spec.add_development_dependency "rspec"
|
26
27
|
end
|
metadata
CHANGED
@@ -1,105 +1,80 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: videodrome
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 2
|
10
|
-
version: 0.0.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
13
|
-
-
|
6
|
+
authors:
|
7
|
+
- Aitor García
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
prerelease: false
|
22
|
-
type: :runtime
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
32
|
-
version_requirements: *id001
|
11
|
+
date: 2022-05-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
33
14
|
name: faraday
|
34
|
-
|
35
|
-
|
36
|
-
type: :runtime
|
37
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
39
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
40
17
|
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
|
44
|
-
- 0
|
45
|
-
version: "0"
|
46
|
-
version_requirements: *id002
|
47
|
-
name: json
|
48
|
-
- !ruby/object:Gem::Dependency
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
49
21
|
prerelease: false
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
hash: 5
|
57
|
-
segments:
|
58
|
-
- 1
|
59
|
-
- 5
|
60
|
-
version: "1.5"
|
61
|
-
version_requirements: *id003
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
62
28
|
name: bundler
|
63
|
-
|
64
|
-
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2'
|
65
34
|
type: :development
|
66
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
|
-
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
hash: 3
|
72
|
-
segments:
|
73
|
-
- 0
|
74
|
-
version: "0"
|
75
|
-
version_requirements: *id004
|
76
|
-
name: rake
|
77
|
-
- !ruby/object:Gem::Dependency
|
78
35
|
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
79
48
|
type: :development
|
80
|
-
|
81
|
-
|
82
|
-
requirements:
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
83
52
|
- - ">="
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
|
86
|
-
|
87
|
-
- 0
|
88
|
-
version: "0"
|
89
|
-
version_requirements: *id005
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
90
56
|
name: rspec
|
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'
|
91
69
|
description:
|
92
|
-
email:
|
70
|
+
email:
|
93
71
|
- aitor@linkingpaths.com
|
94
72
|
executables: []
|
95
|
-
|
96
73
|
extensions: []
|
97
|
-
|
98
74
|
extra_rdoc_files: []
|
99
|
-
|
100
|
-
|
101
|
-
- .
|
102
|
-
- .rspec
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
103
78
|
- Gemfile
|
104
79
|
- LICENSE
|
105
80
|
- README.md
|
@@ -117,39 +92,29 @@ files:
|
|
117
92
|
- tasks/rspec.rake
|
118
93
|
- videodrome.gemspec
|
119
94
|
homepage: http://github.com/linkingpaths/videodrome
|
120
|
-
licenses:
|
95
|
+
licenses:
|
121
96
|
- MIT
|
97
|
+
metadata: {}
|
122
98
|
post_install_message:
|
123
99
|
rdoc_options: []
|
124
|
-
|
125
|
-
require_paths:
|
100
|
+
require_paths:
|
126
101
|
- lib
|
127
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
-
|
129
|
-
requirements:
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
130
104
|
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
version: "0"
|
136
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '2.7'
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
139
109
|
- - ">="
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
|
142
|
-
segments:
|
143
|
-
- 0
|
144
|
-
version: "0"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
145
112
|
requirements: []
|
146
|
-
|
147
|
-
rubyforge_project:
|
148
|
-
rubygems_version: 1.8.24
|
113
|
+
rubygems_version: 3.1.6
|
149
114
|
signing_key:
|
150
|
-
specification_version:
|
115
|
+
specification_version: 4
|
151
116
|
summary: Access metadata of public videos on Youtube.
|
152
|
-
test_files:
|
117
|
+
test_files:
|
153
118
|
- spec/spec_helper.rb
|
154
119
|
- spec/url_spec.rb
|
155
120
|
- spec/video_spec.rb
|