yt 0.25.5 → 0.25.6
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/CHANGELOG.md +4 -0
- data/lib/yt/models/channel.rb +6 -0
- data/lib/yt/models/video.rb +6 -0
- data/lib/yt/version.rb +1 -1
- data/spec/requests/as_account/channel_spec.rb +4 -0
- data/spec/requests/as_account/video_spec.rb +4 -0
- data/spec/requests/as_content_owner/channel_spec.rb +113 -0
- data/spec/requests/as_content_owner/video_spec.rb +46 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4906f2b9b0a43d68f1c2bc2e60bb629da1c976b8
|
|
4
|
+
data.tar.gz: 35ebf6686a6821d9a71cc73d721b814c1e094261
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e59bb56d0fce3c1bf71b156af6a35d4373cf03c05ddc22c94ad1705cd39098d2f1379a0eb48859bf98af2d959a81ed4e20e77b01dd5d3faa29159653a1653bf3
|
|
7
|
+
data.tar.gz: 9ef78181e2dc8ecfec9742288e119cddf3ad75e164df0dc6a90b0f2d1fc1c31ab59a8f49d36ccb7b406e744254be33e925eb6b478f5af6f482edb602f51f9cc7
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,10 @@ For more information about changelogs, check
|
|
|
6
6
|
[Keep a Changelog](http://keepachangelog.com) and
|
|
7
7
|
[Vandamme](http://tech-angels.github.io/vandamme).
|
|
8
8
|
|
|
9
|
+
## 0.25.6 - 2015-09-03
|
|
10
|
+
|
|
11
|
+
* [FEATURE] New channel/video reports: `videos_added_to_playlists`, `videos_removed_from_playlists`.
|
|
12
|
+
|
|
9
13
|
## 0.25.5 - 2015-08-12
|
|
10
14
|
|
|
11
15
|
* [BUGIX] Correctly parse the YouTube response when requesting a refresh token with the wrong credentials.
|
data/lib/yt/models/channel.rb
CHANGED
|
@@ -147,6 +147,12 @@ module Yt
|
|
|
147
147
|
# @macro report_by_day_and_country
|
|
148
148
|
has_report :favorites_removed, Integer
|
|
149
149
|
|
|
150
|
+
# @macro report_by_day_and_country
|
|
151
|
+
has_report :videos_added_to_playlists, Integer
|
|
152
|
+
|
|
153
|
+
# @macro report_by_day_and_country
|
|
154
|
+
has_report :videos_removed_from_playlists, Integer
|
|
155
|
+
|
|
150
156
|
# @macro report_by_day_and_state
|
|
151
157
|
has_report :average_view_duration, Integer
|
|
152
158
|
|
data/lib/yt/models/video.rb
CHANGED
|
@@ -420,6 +420,12 @@ module Yt
|
|
|
420
420
|
# @macro report_by_day_and_country
|
|
421
421
|
has_report :favorites_removed, Integer
|
|
422
422
|
|
|
423
|
+
# @macro report_by_day_and_country
|
|
424
|
+
has_report :videos_added_to_playlists, Integer
|
|
425
|
+
|
|
426
|
+
# @macro report_by_day_and_country
|
|
427
|
+
has_report :videos_removed_from_playlists, Integer
|
|
428
|
+
|
|
423
429
|
# @macro report_by_day_and_state
|
|
424
430
|
has_report :average_view_duration, Integer
|
|
425
431
|
|
data/lib/yt/version.rb
CHANGED
|
@@ -204,6 +204,8 @@ describe Yt::Channel, :device_app do
|
|
|
204
204
|
expect{channel.subscribers_lost}.not_to raise_error
|
|
205
205
|
expect{channel.favorites_added}.not_to raise_error
|
|
206
206
|
expect{channel.favorites_removed}.not_to raise_error
|
|
207
|
+
expect{channel.videos_added_to_playlists}.not_to raise_error
|
|
208
|
+
expect{channel.videos_removed_from_playlists}.not_to raise_error
|
|
207
209
|
expect{channel.estimated_minutes_watched}.not_to raise_error
|
|
208
210
|
expect{channel.average_view_duration}.not_to raise_error
|
|
209
211
|
expect{channel.average_view_percentage}.not_to raise_error
|
|
@@ -225,6 +227,8 @@ describe Yt::Channel, :device_app do
|
|
|
225
227
|
expect{channel.subscribers_lost_on 3.days.ago}.not_to raise_error
|
|
226
228
|
expect{channel.favorites_added_on 3.days.ago}.not_to raise_error
|
|
227
229
|
expect{channel.favorites_removed_on 3.days.ago}.not_to raise_error
|
|
230
|
+
expect{channel.videos_added_to_playlists_on 3.days.ago}.not_to raise_error
|
|
231
|
+
expect{channel.videos_removed_from_playlists_on 3.days.ago}.not_to raise_error
|
|
228
232
|
expect{channel.estimated_minutes_watched_on 3.days.ago}.not_to raise_error
|
|
229
233
|
expect{channel.average_view_duration_on 3.days.ago}.not_to raise_error
|
|
230
234
|
expect{channel.average_view_percentage_on 3.days.ago}.not_to raise_error
|
|
@@ -292,6 +292,8 @@ describe Yt::Video, :device_app do
|
|
|
292
292
|
expect{video.subscribers_lost}.not_to raise_error
|
|
293
293
|
expect{video.favorites_added}.not_to raise_error
|
|
294
294
|
expect{video.favorites_removed}.not_to raise_error
|
|
295
|
+
expect{video.videos_added_to_playlists}.not_to raise_error
|
|
296
|
+
expect{video.videos_removed_from_playlists}.not_to raise_error
|
|
295
297
|
expect{video.estimated_minutes_watched}.not_to raise_error
|
|
296
298
|
expect{video.average_view_duration}.not_to raise_error
|
|
297
299
|
expect{video.average_view_percentage}.not_to raise_error
|
|
@@ -314,6 +316,8 @@ describe Yt::Video, :device_app do
|
|
|
314
316
|
expect{video.subscribers_lost_on 3.days.ago}.not_to raise_error
|
|
315
317
|
expect{video.favorites_added_on 3.days.ago}.not_to raise_error
|
|
316
318
|
expect{video.favorites_removed_on 3.days.ago}.not_to raise_error
|
|
319
|
+
expect{video.videos_added_to_playlists_on 3.days.ago}.not_to raise_error
|
|
320
|
+
expect{video.videos_removed_from_playlists_on 3.days.ago}.not_to raise_error
|
|
317
321
|
expect{video.estimated_minutes_watched_on 3.days.ago}.not_to raise_error
|
|
318
322
|
expect{video.average_view_duration_on 3.days.ago}.not_to raise_error
|
|
319
323
|
expect{video.average_view_percentage_on 3.days.ago}.not_to raise_error
|
|
@@ -15,6 +15,7 @@ describe Yt::Channel, :partner do
|
|
|
15
15
|
estimated_minutes_watched: Integer, comments: Integer, likes: Integer,
|
|
16
16
|
dislikes: Integer, shares: Integer, subscribers_gained: Integer,
|
|
17
17
|
subscribers_lost: Integer, favorites_added: Integer,
|
|
18
|
+
videos_added_to_playlists: Integer, videos_removed_from_playlists: Integer,
|
|
18
19
|
favorites_removed: Integer, average_view_duration: Integer,
|
|
19
20
|
average_view_percentage: Float, annotation_clicks: Integer,
|
|
20
21
|
annotation_click_through_rate: Float,
|
|
@@ -58,6 +59,7 @@ describe Yt::Channel, :partner do
|
|
|
58
59
|
|
|
59
60
|
[:views, :uniques, :comments, :likes, :dislikes, :shares,
|
|
60
61
|
:subscribers_gained, :subscribers_lost, :favorites_added,
|
|
62
|
+
:videos_added_to_playlists, :videos_removed_from_playlists,
|
|
61
63
|
:favorites_removed, :estimated_minutes_watched, :average_view_duration,
|
|
62
64
|
:average_view_percentage, :impressions, :monetized_playbacks,
|
|
63
65
|
:annotation_clicks, :annotation_click_through_rate, :playback_based_cpm,
|
|
@@ -117,6 +119,7 @@ describe Yt::Channel, :partner do
|
|
|
117
119
|
estimated_minutes_watched: Integer, average_view_duration: Integer,
|
|
118
120
|
annotation_clicks: Integer, annotation_click_through_rate: Float,
|
|
119
121
|
favorites_added: Integer, favorites_removed: Integer,
|
|
122
|
+
videos_added_to_playlists: Integer, videos_removed_from_playlists: Integer,
|
|
120
123
|
average_view_percentage: Float, impressions: Integer,
|
|
121
124
|
shares: Integer, playback_based_cpm: Float,
|
|
122
125
|
monetized_playbacks: Integer, annotation_close_rate: Float,
|
|
@@ -983,6 +986,116 @@ describe Yt::Channel, :partner do
|
|
|
983
986
|
end
|
|
984
987
|
end
|
|
985
988
|
|
|
989
|
+
describe 'videos added to playlists can be retrieved for a single country' do
|
|
990
|
+
let(:country_code) { 'US' }
|
|
991
|
+
let(:videos_added_to_playlists) { channel.videos_added_to_playlists since: date, by: by, in: location }
|
|
992
|
+
let(:date) { ENV['YT_TEST_PARTNER_VIDEO_DATE'] }
|
|
993
|
+
|
|
994
|
+
context 'and grouped by day' do
|
|
995
|
+
let(:by) { :day }
|
|
996
|
+
|
|
997
|
+
context 'with the :in option set to the country code' do
|
|
998
|
+
let(:location) { country_code }
|
|
999
|
+
it { expect(videos_added_to_playlists.keys.min).to eq date.to_date }
|
|
1000
|
+
end
|
|
1001
|
+
|
|
1002
|
+
context 'with the :in option set to {country: country code}' do
|
|
1003
|
+
let(:location) { {country: country_code} }
|
|
1004
|
+
it { expect(videos_added_to_playlists.keys.min).to eq date.to_date }
|
|
1005
|
+
end
|
|
1006
|
+
end
|
|
1007
|
+
|
|
1008
|
+
context 'and grouped by country' do
|
|
1009
|
+
let(:by) { :country }
|
|
1010
|
+
|
|
1011
|
+
context 'with the :in option set to the country code' do
|
|
1012
|
+
let(:location) { country_code }
|
|
1013
|
+
it { expect(videos_added_to_playlists.keys).to eq [country_code] }
|
|
1014
|
+
end
|
|
1015
|
+
|
|
1016
|
+
context 'with the :in option set to {country: country code}' do
|
|
1017
|
+
let(:location) { {country: country_code} }
|
|
1018
|
+
it { expect(videos_added_to_playlists.keys).to eq [country_code] }
|
|
1019
|
+
end
|
|
1020
|
+
end
|
|
1021
|
+
end
|
|
1022
|
+
|
|
1023
|
+
describe 'added favorites can be grouped by day' do
|
|
1024
|
+
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
|
1025
|
+
let(:keys) { range.values }
|
|
1026
|
+
|
|
1027
|
+
specify 'with the :by option set to :day' do
|
|
1028
|
+
videos_added_to_playlists = channel.videos_added_to_playlists range.merge by: :day
|
|
1029
|
+
expect(videos_added_to_playlists.keys).to eq range.values
|
|
1030
|
+
end
|
|
1031
|
+
end
|
|
1032
|
+
|
|
1033
|
+
describe 'added favorites can be grouped by country' do
|
|
1034
|
+
let(:range) { {since: 4.days.ago, until: 3.days.ago} }
|
|
1035
|
+
|
|
1036
|
+
specify 'with the :by option set to :country' do
|
|
1037
|
+
videos_added_to_playlists = channel.videos_added_to_playlists range.merge by: :country
|
|
1038
|
+
expect(videos_added_to_playlists.keys).to all(be_a String)
|
|
1039
|
+
expect(videos_added_to_playlists.keys.map(&:length).uniq).to eq [2]
|
|
1040
|
+
expect(videos_added_to_playlists.values).to all(be_an Integer)
|
|
1041
|
+
end
|
|
1042
|
+
end
|
|
1043
|
+
|
|
1044
|
+
describe 'videos removed from playlists can be retrieved for a single country' do
|
|
1045
|
+
let(:country_code) { 'US' }
|
|
1046
|
+
let(:videos_removed_from_playlists) { channel.videos_removed_from_playlists since: date, by: by, in: location }
|
|
1047
|
+
let(:date) { ENV['YT_TEST_PARTNER_VIDEO_DATE'] }
|
|
1048
|
+
|
|
1049
|
+
context 'and grouped by day' do
|
|
1050
|
+
let(:by) { :day }
|
|
1051
|
+
|
|
1052
|
+
context 'with the :in option set to the country code' do
|
|
1053
|
+
let(:location) { country_code }
|
|
1054
|
+
it { expect(videos_removed_from_playlists.keys.min).to eq date.to_date }
|
|
1055
|
+
end
|
|
1056
|
+
|
|
1057
|
+
context 'with the :in option set to {country: country code}' do
|
|
1058
|
+
let(:location) { {country: country_code} }
|
|
1059
|
+
it { expect(videos_removed_from_playlists.keys.min).to eq date.to_date }
|
|
1060
|
+
end
|
|
1061
|
+
end
|
|
1062
|
+
|
|
1063
|
+
context 'and grouped by country' do
|
|
1064
|
+
let(:by) { :country }
|
|
1065
|
+
|
|
1066
|
+
context 'with the :in option set to the country code' do
|
|
1067
|
+
let(:location) { country_code }
|
|
1068
|
+
it { expect(videos_removed_from_playlists.keys).to eq [country_code] }
|
|
1069
|
+
end
|
|
1070
|
+
|
|
1071
|
+
context 'with the :in option set to {country: country code}' do
|
|
1072
|
+
let(:location) { {country: country_code} }
|
|
1073
|
+
it { expect(videos_removed_from_playlists.keys).to eq [country_code] }
|
|
1074
|
+
end
|
|
1075
|
+
end
|
|
1076
|
+
end
|
|
1077
|
+
|
|
1078
|
+
describe 'removed favorites can be grouped by day' do
|
|
1079
|
+
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
|
1080
|
+
let(:keys) { range.values }
|
|
1081
|
+
|
|
1082
|
+
specify 'with the :by option set to :day' do
|
|
1083
|
+
videos_removed_from_playlists = channel.videos_removed_from_playlists range.merge by: :day
|
|
1084
|
+
expect(videos_removed_from_playlists.keys).to eq range.values
|
|
1085
|
+
end
|
|
1086
|
+
end
|
|
1087
|
+
|
|
1088
|
+
describe 'removed favorites can be grouped by country' do
|
|
1089
|
+
let(:range) { {since: ENV['YT_TEST_PARTNER_VIDEO_DATE'], until: Date.parse(ENV['YT_TEST_PARTNER_VIDEO_DATE']) + 5} }
|
|
1090
|
+
|
|
1091
|
+
specify 'with the :by option set to :country' do
|
|
1092
|
+
videos_removed_from_playlists = channel.videos_removed_from_playlists range.merge by: :country
|
|
1093
|
+
expect(videos_removed_from_playlists.keys).to all(be_a String)
|
|
1094
|
+
expect(videos_removed_from_playlists.keys.map(&:length).uniq).to eq [2]
|
|
1095
|
+
expect(videos_removed_from_playlists.values).to all(be_an Integer)
|
|
1096
|
+
end
|
|
1097
|
+
end
|
|
1098
|
+
|
|
986
1099
|
describe 'estimated minutes watched can be retrieved for a single country' do
|
|
987
1100
|
let(:country_code) { 'US' }
|
|
988
1101
|
let(:estimated_minutes_watched) { channel.estimated_minutes_watched since: date, by: by, in: location }
|
|
@@ -15,6 +15,7 @@ describe Yt::Video, :partner do
|
|
|
15
15
|
|
|
16
16
|
[:views, :uniques, :comments, :likes, :dislikes, :shares,
|
|
17
17
|
:subscribers_gained, :subscribers_lost, :favorites_added,
|
|
18
|
+
:videos_added_to_playlists, :videos_removed_from_playlists,
|
|
18
19
|
:favorites_removed, :estimated_minutes_watched, :average_view_duration,
|
|
19
20
|
:average_view_percentage, :impressions, :monetized_playbacks,
|
|
20
21
|
:annotation_clicks, :annotation_click_through_rate, :playback_based_cpm,
|
|
@@ -111,6 +112,7 @@ describe Yt::Video, :partner do
|
|
|
111
112
|
{views: Integer, comments: Integer, likes: Integer, dislikes: Integer,
|
|
112
113
|
shares: Integer, subscribers_gained: Integer, subscribers_lost: Integer,
|
|
113
114
|
favorites_added: Integer,
|
|
115
|
+
videos_added_to_playlists: Integer, videos_removed_from_playlists: Integer,
|
|
114
116
|
estimated_minutes_watched: Integer, average_view_duration: Integer,
|
|
115
117
|
average_view_percentage: Float, impressions: Integer,
|
|
116
118
|
monetized_playbacks: Integer, annotation_clicks: Integer,
|
|
@@ -162,6 +164,7 @@ describe Yt::Video, :partner do
|
|
|
162
164
|
|
|
163
165
|
[:views, :comments, :likes, :dislikes, :shares,
|
|
164
166
|
:subscribers_gained, :subscribers_lost, :favorites_added,
|
|
167
|
+
:videos_added_to_playlists, :videos_removed_from_playlists,
|
|
165
168
|
:estimated_minutes_watched, :average_view_duration,
|
|
166
169
|
:average_view_percentage, :impressions, :monetized_playbacks,
|
|
167
170
|
:annotation_clicks, :annotation_click_through_rate,
|
|
@@ -211,6 +214,7 @@ describe Yt::Video, :partner do
|
|
|
211
214
|
estimated_minutes_watched: Integer, comments: Integer, likes: Integer,
|
|
212
215
|
dislikes: Integer, shares: Integer, subscribers_gained: Integer,
|
|
213
216
|
subscribers_lost: Integer, favorites_added: Integer,
|
|
217
|
+
videos_added_to_playlists: Integer, videos_removed_from_playlists: Integer,
|
|
214
218
|
favorites_removed: Integer, average_view_duration: Integer,
|
|
215
219
|
average_view_percentage: Float, annotation_clicks: Integer,
|
|
216
220
|
annotation_click_through_rate: Float,
|
|
@@ -575,6 +579,48 @@ describe Yt::Video, :partner do
|
|
|
575
579
|
end
|
|
576
580
|
end
|
|
577
581
|
|
|
582
|
+
describe 'added to playlists can be grouped by day' do
|
|
583
|
+
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
|
584
|
+
let(:keys) { range.values }
|
|
585
|
+
|
|
586
|
+
specify 'with the :by option set to :day' do
|
|
587
|
+
videos_added_to_playlists = video.videos_added_to_playlists range.merge by: :day
|
|
588
|
+
expect(videos_added_to_playlists.keys).to eq range.values
|
|
589
|
+
end
|
|
590
|
+
end
|
|
591
|
+
|
|
592
|
+
describe 'added to playlists can be grouped by country' do
|
|
593
|
+
let(:range) { {since: ENV['YT_TEST_PARTNER_VIDEO_DATE']} }
|
|
594
|
+
|
|
595
|
+
specify 'with the :by option set to :country' do
|
|
596
|
+
videos_added_to_playlists = video.videos_added_to_playlists range.merge by: :country
|
|
597
|
+
expect(videos_added_to_playlists.keys).to all(be_a String)
|
|
598
|
+
expect(videos_added_to_playlists.keys.map(&:length).uniq).to eq [2]
|
|
599
|
+
expect(videos_added_to_playlists.values).to all(be_an Integer)
|
|
600
|
+
end
|
|
601
|
+
end
|
|
602
|
+
|
|
603
|
+
describe 'removed from playlists can be grouped by day' do
|
|
604
|
+
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
|
605
|
+
let(:keys) { range.values }
|
|
606
|
+
|
|
607
|
+
specify 'with the :by option set to :day' do
|
|
608
|
+
videos_removed_from_playlists = video.videos_removed_from_playlists range.merge by: :day
|
|
609
|
+
expect(videos_removed_from_playlists.keys).to eq range.values
|
|
610
|
+
end
|
|
611
|
+
end
|
|
612
|
+
|
|
613
|
+
describe 'removed from playlists can be grouped by country' do
|
|
614
|
+
let(:range) { {since: ENV['YT_TEST_PARTNER_VIDEO_DATE']} }
|
|
615
|
+
|
|
616
|
+
specify 'with the :by option set to :country' do
|
|
617
|
+
videos_removed_from_playlists = video.videos_removed_from_playlists range.merge by: :country
|
|
618
|
+
expect(videos_removed_from_playlists.keys).to all(be_a String)
|
|
619
|
+
expect(videos_removed_from_playlists.keys.map(&:length).uniq).to eq [2]
|
|
620
|
+
expect(videos_removed_from_playlists.values).to all(be_an Integer)
|
|
621
|
+
end
|
|
622
|
+
end
|
|
623
|
+
|
|
578
624
|
describe 'added favorites can be grouped by day' do
|
|
579
625
|
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
|
580
626
|
let(:keys) { range.values }
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yt
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.25.
|
|
4
|
+
version: 0.25.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Claudio Baccigalupo
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-09-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -312,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
312
312
|
version: '0'
|
|
313
313
|
requirements: []
|
|
314
314
|
rubyforge_project:
|
|
315
|
-
rubygems_version: 2.4.5
|
|
315
|
+
rubygems_version: 2.4.5.1
|
|
316
316
|
signing_key:
|
|
317
317
|
specification_version: 4
|
|
318
318
|
summary: Yt makes it easy to interact with Youtube V3 API by providing a modular,
|