yt-annotations 1.4.1 → 1.4.2
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/.travis.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/README.md +8 -5
- data/lib/yt/annotations/end_screen.rb +10 -2
- data/lib/yt/annotations/for.rb +6 -1
- data/lib/yt/annotations/version.rb +4 -1
- data/yt-annotations.gemspec +10 -7
- metadata +31 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e90f02ea969bbc11df732a40a5e2f943b24507f1
|
4
|
+
data.tar.gz: 05bbc8a4ba7fb944e4e77cd211406cdd4fa07b3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a20ea07b37fb8e6a6545dc49233084907f368fbb01265b1f95bedb86e046fa438f370cda210f8e0e22c663e757731d269e52232804c9bd0fc601eeeda7b13c6
|
7
|
+
data.tar.gz: 2d3675386a5c15030081f27b4f4d27dfddce214166a10f397e74cf17f3b54f5637625dd04ab0a722182c9e0628102c37cbfd13d4e59c9f84f3cdd9835dd40199
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,10 @@ For more information about changelogs, check
|
|
7
7
|
[Vandamme](http://tech-angels.github.io/vandamme).
|
8
8
|
|
9
9
|
|
10
|
+
## 1.4.2 - 2017.05.24
|
11
|
+
|
12
|
+
* [BUGFIX] Do not raise errors from endscreens with different title format
|
13
|
+
|
10
14
|
## 1.4.1 - 2017.03.31
|
11
15
|
|
12
16
|
* [BUGFIX] Change `EndScreen` according to its endpoint change on YouTube
|
data/README.md
CHANGED
@@ -37,14 +37,17 @@ Yt::Annotations requires **Ruby 2.2.2 or higher**.
|
|
37
37
|
|
38
38
|
To include in your project, add `gem 'yt-annotations', ~> '1.0'` to the `Gemfile` file of your Ruby project.
|
39
39
|
|
40
|
+
|
40
41
|
How to contribute
|
41
42
|
=================
|
42
43
|
|
43
|
-
|
44
|
-
|
44
|
+
Contribute to the code by forking the project, adding the missing code,
|
45
|
+
writing the appropriate tests and submitting a pull request.
|
45
46
|
|
46
|
-
|
47
|
+
In order for a PR to be approved, all the tests need to pass and all the public
|
48
|
+
methods need to be documented and listed in the guides. Remember:
|
47
49
|
|
48
|
-
|
50
|
+
- to run all tests locally: `bundle exec rspec`
|
51
|
+
- to generate the docs locally: `bundle exec yard`
|
52
|
+
- to list undocumented methods: `bundle exec yard stats --list-undoc`
|
49
53
|
|
50
|
-
Happy hacking!
|
@@ -4,10 +4,10 @@ module Yt
|
|
4
4
|
module Annotations
|
5
5
|
# An end screen annotation shows in the last 5 to seconds of the video.
|
6
6
|
class EndScreen < Base
|
7
|
-
# @param [Hash]
|
7
|
+
# @param [Hash] json the Hash representation of the XML data returned by
|
8
8
|
# YouTube for each end screen of a video.
|
9
9
|
def initialize(json = {})
|
10
|
-
@text = json
|
10
|
+
@text = text_in json
|
11
11
|
@starts_at = json['startMs'].to_i / 1000.0
|
12
12
|
@ends_at = ends_at_in json
|
13
13
|
@link = to_link json
|
@@ -15,6 +15,14 @@ module Yt
|
|
15
15
|
|
16
16
|
private
|
17
17
|
|
18
|
+
def text_in(json)
|
19
|
+
if json['title']['runs'].nil?
|
20
|
+
json['title']['simpleText']
|
21
|
+
else
|
22
|
+
json['title']['runs'][0]['text']
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
18
26
|
def ends_at_in(json)
|
19
27
|
json['endMs'].to_i / 1000.0
|
20
28
|
end
|
data/lib/yt/annotations/for.rb
CHANGED
@@ -9,11 +9,16 @@ require 'yt/annotations/spotlight'
|
|
9
9
|
require 'yt/annotations/title'
|
10
10
|
require 'yt/annotations/pause'
|
11
11
|
|
12
|
+
# An object-oriented Ruby client for YouTube.
|
13
|
+
# @see http://www.rubydoc.info/gems/yt/
|
12
14
|
module Yt
|
13
15
|
module Annotations
|
16
|
+
# Provides a method to fetch annotations and cards for a YouTube video.
|
14
17
|
module For
|
18
|
+
# @param [String] video_id the unique ID of a YouTube video.
|
19
|
+
# @return [Array<Yt::Annotation>] the annotations/end cards of the video.
|
15
20
|
def for(video_id)
|
16
|
-
(annotations(video_id) + end_screens(video_id)).sort_by
|
21
|
+
(annotations(video_id) + end_screens(video_id)).sort_by(&:starts_at)
|
17
22
|
end
|
18
23
|
|
19
24
|
private
|
data/yt-annotations.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'yt/annotations/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'yt-annotations'
|
8
8
|
spec.version = Yt::Annotations::VERSION
|
9
|
-
spec.authors = ['
|
10
|
-
spec.email = ['
|
9
|
+
spec.authors = ['Claudio Baccigalupo', 'Kang-Kyu Lee']
|
10
|
+
spec.email = ['claudio@fullscreen.net', 'kang-kyu.lee@fullscreen.net']
|
11
11
|
|
12
12
|
spec.summary = %q{Fetch annotations and cards from YouTube videos.}
|
13
13
|
spec.description = %q{A Ruby library to retrieve every type of annotation from
|
@@ -17,16 +17,19 @@ Gem::Specification.new do |spec|
|
|
17
17
|
|
18
18
|
spec.required_ruby_version = '>= 2.2.2'
|
19
19
|
|
20
|
-
spec.files = `git ls-files -z`.split("\x0").reject
|
20
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
21
|
+
f.match(%r{^(test|spec|features)/})
|
22
|
+
end
|
21
23
|
spec.bindir = 'exe'
|
22
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
25
|
spec.require_paths = ['lib']
|
24
26
|
|
25
27
|
spec.add_dependency 'activesupport', '>= 4', '< 6'
|
26
28
|
|
27
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
28
|
-
spec.add_development_dependency '
|
29
|
-
spec.add_development_dependency '
|
30
|
-
spec.add_development_dependency 'coveralls', '~> 0.8.
|
29
|
+
spec.add_development_dependency 'bundler', '~> 1.14'
|
30
|
+
spec.add_development_dependency 'rspec', '~> 3.5'
|
31
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
32
|
+
spec.add_development_dependency 'coveralls', '~> 0.8.20'
|
31
33
|
spec.add_development_dependency 'pry-nav', '~> 0.2.4'
|
34
|
+
spec.add_development_dependency 'yard', '~> 0.9.8'
|
32
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yt-annotations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Claudio Baccigalupo
|
8
|
+
- Kang-Kyu Lee
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date: 2017-
|
12
|
+
date: 2017-05-24 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: activesupport
|
@@ -36,56 +37,56 @@ dependencies:
|
|
36
37
|
requirements:
|
37
38
|
- - "~>"
|
38
39
|
- !ruby/object:Gem::Version
|
39
|
-
version: '1.
|
40
|
+
version: '1.14'
|
40
41
|
type: :development
|
41
42
|
prerelease: false
|
42
43
|
version_requirements: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
45
|
- - "~>"
|
45
46
|
- !ruby/object:Gem::Version
|
46
|
-
version: '1.
|
47
|
+
version: '1.14'
|
47
48
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
+
name: rspec
|
49
50
|
requirement: !ruby/object:Gem::Requirement
|
50
51
|
requirements:
|
51
52
|
- - "~>"
|
52
53
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
54
|
+
version: '3.5'
|
54
55
|
type: :development
|
55
56
|
prerelease: false
|
56
57
|
version_requirements: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
59
|
- - "~>"
|
59
60
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
61
|
+
version: '3.5'
|
61
62
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
63
|
+
name: rake
|
63
64
|
requirement: !ruby/object:Gem::Requirement
|
64
65
|
requirements:
|
65
66
|
- - "~>"
|
66
67
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
68
|
+
version: '12.0'
|
68
69
|
type: :development
|
69
70
|
prerelease: false
|
70
71
|
version_requirements: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
72
73
|
- - "~>"
|
73
74
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
75
|
+
version: '12.0'
|
75
76
|
- !ruby/object:Gem::Dependency
|
76
77
|
name: coveralls
|
77
78
|
requirement: !ruby/object:Gem::Requirement
|
78
79
|
requirements:
|
79
80
|
- - "~>"
|
80
81
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.8.
|
82
|
+
version: 0.8.20
|
82
83
|
type: :development
|
83
84
|
prerelease: false
|
84
85
|
version_requirements: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
87
|
- - "~>"
|
87
88
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.8.
|
89
|
+
version: 0.8.20
|
89
90
|
- !ruby/object:Gem::Dependency
|
90
91
|
name: pry-nav
|
91
92
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,11 +101,26 @@ dependencies:
|
|
100
101
|
- - "~>"
|
101
102
|
- !ruby/object:Gem::Version
|
102
103
|
version: 0.2.4
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: yard
|
106
|
+
requirement: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.9.8
|
111
|
+
type: :development
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.9.8
|
103
118
|
description: |-
|
104
119
|
A Ruby library to retrieve every type of annotation from
|
105
120
|
any YouTube video, including branding, featured content and info cards.
|
106
121
|
email:
|
107
|
-
-
|
122
|
+
- claudio@fullscreen.net
|
123
|
+
- kang-kyu.lee@fullscreen.net
|
108
124
|
executables: []
|
109
125
|
extensions: []
|
110
126
|
extra_rdoc_files: []
|
@@ -154,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
170
|
version: '0'
|
155
171
|
requirements: []
|
156
172
|
rubyforge_project:
|
157
|
-
rubygems_version: 2.6.
|
173
|
+
rubygems_version: 2.6.12
|
158
174
|
signing_key:
|
159
175
|
specification_version: 4
|
160
176
|
summary: Fetch annotations and cards from YouTube videos.
|