yt 0.25.13 → 0.32.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.
Files changed (96) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +305 -1
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +86 -5
  5. data/YOUTUBE_IT.md +3 -3
  6. data/lib/yt.rb +5 -2
  7. data/lib/yt/actions/list.rb +3 -3
  8. data/lib/yt/associations/has_authentication.rb +33 -1
  9. data/lib/yt/associations/has_reports.rb +13 -18
  10. data/lib/yt/collections/assets.rb +2 -2
  11. data/lib/yt/collections/authentications.rb +9 -2
  12. data/lib/yt/collections/base.rb +3 -3
  13. data/lib/yt/collections/bulk_report_jobs.rb +28 -0
  14. data/lib/yt/collections/bulk_reports.rb +24 -0
  15. data/lib/yt/collections/claims.rb +22 -1
  16. data/lib/yt/collections/comment_threads.rb +41 -0
  17. data/lib/yt/collections/content_owners.rb +1 -1
  18. data/lib/yt/collections/group_infos.rb +27 -0
  19. data/lib/yt/collections/group_items.rb +45 -0
  20. data/lib/yt/collections/reports.rb +75 -13
  21. data/lib/yt/collections/revocations.rb +30 -0
  22. data/lib/yt/collections/video_groups.rb +29 -0
  23. data/lib/yt/collections/videos.rb +34 -9
  24. data/lib/yt/constants/geography.rb +326 -0
  25. data/lib/yt/errors/forbidden.rb +1 -3
  26. data/lib/yt/errors/no_items.rb +1 -3
  27. data/lib/yt/errors/request_error.rb +10 -7
  28. data/lib/yt/errors/server_error.rb +1 -3
  29. data/lib/yt/errors/unauthorized.rb +3 -3
  30. data/lib/yt/models/account.rb +12 -0
  31. data/lib/yt/models/advertising_options_set.rb +4 -4
  32. data/lib/yt/models/bulk_report.rb +23 -0
  33. data/lib/yt/models/bulk_report_job.rb +23 -0
  34. data/lib/yt/models/channel.rb +21 -12
  35. data/lib/yt/models/claim.rb +13 -2
  36. data/lib/yt/models/comment.rb +37 -0
  37. data/lib/yt/models/comment_thread.rb +50 -0
  38. data/lib/yt/models/content_detail.rb +6 -0
  39. data/lib/yt/models/content_owner.rb +31 -1
  40. data/lib/yt/models/group_info.rb +16 -0
  41. data/lib/yt/models/group_item.rb +15 -0
  42. data/lib/yt/models/resource.rb +3 -10
  43. data/lib/yt/models/revocation.rb +12 -0
  44. data/lib/yt/models/right_owner.rb +0 -2
  45. data/lib/yt/models/snippet.rb +24 -3
  46. data/lib/yt/models/video.rb +42 -11
  47. data/lib/yt/models/video_group.rb +186 -0
  48. data/lib/yt/request.rb +5 -3
  49. data/lib/yt/version.rb +2 -2
  50. data/spec/collections/comment_threads_spec.rb +46 -0
  51. data/spec/collections/playlist_items_spec.rb +1 -1
  52. data/spec/collections/reports_spec.rb +2 -2
  53. data/spec/constants/geography_spec.rb +16 -0
  54. data/spec/models/annotation_spec.rb +1 -1
  55. data/spec/models/claim_spec.rb +15 -3
  56. data/spec/models/comment_spec.rb +40 -0
  57. data/spec/models/comment_thread_spec.rb +93 -0
  58. data/spec/models/content_detail_spec.rb +7 -0
  59. data/spec/models/reference_spec.rb +2 -2
  60. data/spec/models/request_spec.rb +21 -0
  61. data/spec/models/resource_spec.rb +0 -15
  62. data/spec/models/video_spec.rb +1 -1
  63. data/spec/requests/as_account/account_spec.rb +16 -4
  64. data/spec/requests/as_account/authentications_spec.rb +1 -13
  65. data/spec/requests/as_account/channel_spec.rb +15 -45
  66. data/spec/requests/as_account/playlist_item_spec.rb +3 -3
  67. data/spec/requests/as_account/playlist_spec.rb +5 -32
  68. data/spec/requests/as_account/video_spec.rb +2022 -21
  69. data/spec/requests/as_content_owner/account_spec.rb +4 -0
  70. data/spec/requests/as_content_owner/bulk_report_job_spec.rb +19 -0
  71. data/spec/requests/as_content_owner/channel_spec.rb +59 -270
  72. data/spec/requests/as_content_owner/content_owner_spec.rb +89 -1
  73. data/spec/requests/as_content_owner/playlist_spec.rb +0 -15
  74. data/spec/requests/as_content_owner/video_group_spec.rb +112 -0
  75. data/spec/requests/as_content_owner/video_spec.rb +72 -146
  76. data/spec/requests/as_server_app/channel_spec.rb +1 -21
  77. data/spec/requests/as_server_app/comment_spec.rb +22 -0
  78. data/spec/requests/as_server_app/comment_thread_spec.rb +27 -0
  79. data/spec/requests/as_server_app/comment_threads_spec.rb +41 -0
  80. data/spec/requests/as_server_app/playlist_item_spec.rb +2 -2
  81. data/spec/requests/as_server_app/playlist_spec.rb +1 -22
  82. data/spec/requests/as_server_app/video_spec.rb +21 -19
  83. data/spec/requests/as_server_app/videos_spec.rb +5 -5
  84. data/spec/requests/unauthenticated/video_spec.rb +1 -9
  85. data/spec/spec_helper.rb +1 -1
  86. data/yt.gemspec +2 -1
  87. metadata +51 -17
  88. data/lib/yt/collections/ids.rb +0 -27
  89. data/lib/yt/config.rb +0 -54
  90. data/lib/yt/models/configuration.rb +0 -70
  91. data/lib/yt/models/description.rb +0 -58
  92. data/lib/yt/models/url.rb +0 -91
  93. data/spec/models/configuration_spec.rb +0 -44
  94. data/spec/models/description_spec.rb +0 -94
  95. data/spec/models/url_spec.rb +0 -84
  96. data/spec/requests/as_account/resource_spec.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f5d61a13c2ac1e501b0b8bf83b439f47afef4aee
4
- data.tar.gz: 2bab9c7300548cfaea22154ba364eae4714eaf7c
2
+ SHA256:
3
+ metadata.gz: 42cfba8fbb240b3272678d965ba64987563a9a2a2a8ae839a22df6a764722ae3
4
+ data.tar.gz: e81d7bb9c2cd64ae4fdc9d68dae7a39ae7ff2b0f3ffea3dc27a52103f8a21ec7
5
5
  SHA512:
6
- metadata.gz: f24db663d4ddd8a36c054e4b7696fe656dd2ae555d72b5d856b9c0d520a00bf300dd43f54995d0f0ea7397004e352f2d64e52f13d3c12938d6eb06654da3d3eb
7
- data.tar.gz: c515f09879b3761e9adc1aeb88a6c99c9a2754cb346fecb200efbff9b6ecd2eea41fb4642e26abb73e509c095e544e919a1c137384219102264d8b1511f3e6e2
6
+ metadata.gz: a2cbb015d4d363ca40d9238bffabd618edc534f250097ab58548a2f2676334a419dfe8cac893b282063fe03373a1b71f055f90f972d2489ce6e69e81237727f7
7
+ data.tar.gz: e0bb039d9acfbfb4d2403ffbad549dba4fa359ab9467a6faeed1ff6fe6137adf5dd8c307dbb025f8e4e7a8dc4cb3204a9ef78aff1ca8cfb77fc44ea4197b9fd2
@@ -6,6 +6,310 @@ 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.32.2 - 2018-05-25
10
+
11
+ * Use YouTube Analytics API v2 instead of v1. See announcement of v1 deprecation
12
+ https://developers.google.com/youtube/analytics/revision_history#april-26-2018
13
+
14
+ ## 0.32.1 - 2017-08-14
15
+
16
+ * [FEATURE] Add `Yt::ContentOwner#bulk_report_jobs`
17
+ * [FEATURE] Add `Yt::BulkReportJob#bulk_reports`
18
+
19
+ ## 0.32.0 - 2017-07-05
20
+
21
+ **How to upgrade**
22
+
23
+ If your code is expecting data from `reports` methods to always include historical data (the data from the period before joining), now you have to set `historical: true` specifically. It will not include historical data by default.
24
+
25
+ * [IMPROVEMENT] Include historical data with `historical: true` option.
26
+
27
+ ## 0.31.2 - 2017-06-29
28
+
29
+ * [BUGFIX] Return lifetime data correctly even when the channel joined content owner after a while since it's created.
30
+
31
+ ## 0.31.1 - 2017-06-03
32
+
33
+ * [FEATURE] Add `by: :youtube_product` option for reports.
34
+ * [FEATURE] Add `Yt::Collections::Reports::YOUTUBE_PRODUCTS` to list all YouTube products (KIDS, GAMING, etc) supported by YouTube Analytics API.
35
+ * [FEATURE] Add more operating system dimensions to `Yt::Collections::Reports::OPERATING_SYSTEMS`.
36
+
37
+ ## 0.31.0 - 2017-06-02
38
+
39
+ **How to upgrade**
40
+
41
+ If your code calls `.uniques` it should be removed because this metric has been
42
+ no longer supported by YouTube API as of [October 31, 2016](https://developers.google.com/youtube/analytics/revision_history#september-27-2016).
43
+
44
+ * [REMOVAL] Remove `#uniques` method for channels, videos and video groups.
45
+
46
+ ## 0.30.1 - 2017-04-14
47
+
48
+ * [IMPROVEMENT] Retry 3 times if YouTube responds with 503 Backend Error
49
+
50
+ ## 0.30.0 - 2017-03-17
51
+
52
+ **How to upgrade**
53
+
54
+ If your code uses `Yt::Models::Configuration` then you must use
55
+ `Yt::Configuration` instead.
56
+
57
+ Both `Yt::Configuration` and `Yt::Config` have been moved in a separate
58
+ gem called `yt-support` that is required by default by the `yt` gem.
59
+
60
+ * [REMOVAL] Remove `Yt::Models::Configuration` (renamed as `Yt::Configuration`)
61
+
62
+ ## 0.29.1 - 2017-02-26
63
+
64
+ * [FEATURE] Add `Video#length` to show the duration as an ISO 8601 time.
65
+
66
+ ## 0.29.0 - 2017-02-17
67
+
68
+ **How to upgrade**
69
+
70
+ If your code uses `Yt::URL` then you must include the `yt-url` gem, since
71
+ `Yt::URL` has been extracted into a separate repository.
72
+ Please read the documentation of `Yt::URL` and notice that the `subscription`
73
+ pattern has been dropped, so URLs such as the following will not be recognized
74
+ anymore: `subscription_center?add_user=...`, `subscribe_widget?p=...`.
75
+
76
+ Note that this also removes the option of initializing a resource by URL.
77
+ You can achieve the same result with the `yt-url` gem, as detailed in its
78
+ documentation.
79
+
80
+ Finally note that this also remove the class `Yt::Description`. This class
81
+ was private API, so this change should not affect developers.
82
+
83
+ * [REMOVAL] Remove the option to initialize resources by URL.
84
+ * [REMOVAL] Remove `Yt::Resource.username`
85
+ * [REMOVAL] Remove `Yt::URL` (extracted into separate gem)
86
+ * [REMOVAL] Remove `Yt::Description` (now simply a String).
87
+
88
+ ## 0.28.5 - 2017-01-18
89
+
90
+ * [BUGFIX] Don't crash when Yt::VideoGroup is initialized with a group of playlists.
91
+
92
+ ## 0.28.4 - 2017-01-18
93
+
94
+ * [BUGFIX] Don't crash when Yt::VideoGroup is initialized with a group of playlists.
95
+
96
+ ## 0.28.3 - 2017-01-09
97
+
98
+ * [FEATURE] Add `VideoGroup#channels` method to load all channels under a group.
99
+
100
+ ## 0.28.2 - 2017-01-09
101
+
102
+ * [FEATURE] Add `channel_url` to video.
103
+
104
+ ## 0.28.1 - 2016-10-24
105
+
106
+ * [FEATURE] New `card impressions` report for video groups.
107
+ * [FEATURE] New `card clicks` report for video groups.
108
+ * [FEATURE] New `card click rate` report for video groups.
109
+ * [FEATURE] New `card teaser impressions` report for video groups.
110
+ * [FEATURE] New `card teaser clicks` report for video groups.
111
+ * [FEATURE] New `card teaser click rate` report for video groups.
112
+
113
+ ## 0.28.0 - 2016-10-18
114
+
115
+ **How to upgrade**
116
+
117
+ If your code calls `.earnings` and `.impressions`
118
+ then you must replace that code with `.estimated_revenue` and
119
+ `.ad_impressions` since those metrics will no longer be supported by
120
+ YouTube API as of [November 4, 2016](https://developers.google.com/youtube/analytics/revision_history#august-10-2016).
121
+
122
+ * [REMOVAL] Remove `#earnings` method for channels, playlists, videos and video groups
123
+ * [REMOVAL] Remove `#impressions` method for channels, videos and video groups
124
+ * [FEATURE] Add `#estimated_revenue` method for channels, videos and video groups
125
+ * [FEATURE] Add `#ad_impressions` method for channels, videos and video groups
126
+
127
+ ## 0.27.0 - 2016-10-07
128
+
129
+ **How to upgrade**
130
+
131
+ If your code calls any of the following `..._on` method to fetch metrics on
132
+ a specific day, you need to replace it with the equivalent method that does
133
+ not end with `_on`. For instance replace `views_on(3.days.ago)` with the
134
+ equivalent `views(since: 3.days.ago, until: 3.days.ago)`.
135
+
136
+ * [REMOVAL] Remove `#views_on` method for channels, playlists, videos and video groups
137
+ * [REMOVAL] Remove `#uniques_on` method for channels, playlists, videos and video groups
138
+ * [REMOVAL] Remove `#estimated_minutes_watched_on` method for channels, playlists, videos and video groups
139
+ * [REMOVAL] Remove `#viewer_percentage_on` method for channels, playlists, videos and video groups
140
+ * [REMOVAL] Remove `#comments_on` method for channels, playlists, videos and video groups
141
+ * [REMOVAL] Remove `#likes_on` method for channels, playlists, videos and video groups
142
+ * [REMOVAL] Remove `#dislikes_on` method for channels, playlists, videos and video groups
143
+ * [REMOVAL] Remove `#shares_on` method for channels, playlists, videos and video groups
144
+ * [REMOVAL] Remove `#subscribers_gained_on` method for channels, playlists, videos and video groups
145
+ * [REMOVAL] Remove `#subscribers_lost_on` method for channels, playlists, videos and video groups
146
+ * [REMOVAL] Remove `#videos_added_to_playlists_on` method for channels, playlists, videos and video groups
147
+ * [REMOVAL] Remove `#videos_removed_from_playlists_on` method for channels, playlists, videos and video groups
148
+ * [REMOVAL] Remove `#average_view_duration_on` method for channels, playlists, videos and video groups
149
+ * [REMOVAL] Remove `#average_view_percentage_on` method for channels, playlists, videos and video groups
150
+ * [REMOVAL] Remove `#annotation_clicks_on` method for channels, playlists, videos and video groups
151
+ * [REMOVAL] Remove `#annotation_click_through_rate_on` method for channels, playlists, videos and video groups
152
+ * [REMOVAL] Remove `#annotation_close_rate_on` method for channels, playlists, videos and video groups
153
+ * [REMOVAL] Remove `#card_impressions_on` method for channels, playlists, videos and video groups
154
+ * [REMOVAL] Remove `#card_clicks_on` method for channels, playlists, videos and video groups
155
+ * [REMOVAL] Remove `#card_click_rate_on` method for channels, playlists, videos and video groups
156
+ * [REMOVAL] Remove `#card_teaser_impressions_on` method for channels, playlists, videos and video groups
157
+ * [REMOVAL] Remove `#card_teaser_clicks_on` method for channels, playlists, videos and video groups
158
+ * [REMOVAL] Remove `#card_teaser_click_rate_on` method for channels, playlists, videos and video groups
159
+ * [REMOVAL] Remove `#earnings_on` method for channels, playlists, videos and video groups
160
+ * [REMOVAL] Remove `#impressions_on` method for channels, playlists, videos and video groups
161
+ * [REMOVAL] Remove `#monetized_playbacks_on` method for channels, playlists, videos and video groups
162
+ * [REMOVAL] Remove `#playback_based_cpm_on` method for channels, playlists, videos and video groups
163
+
164
+ ## 0.26.3 - 2016-10-07
165
+
166
+ * [FEATURE] Add `by: :subscribed_status` option for reports, to return views (from a `content_owner.video`) by subscribed status.
167
+ * [FEATURE] Add `Yt::Collections::Reports::SUBSCRIBED_STATUSES` to list all subscribed statuses supported by YouTube Analytics API.
168
+
169
+ ## 0.26.2 - 2016-10-05
170
+
171
+ * [ENHANCEMENT] Add newly available traffic sources: "Campaign card" and "End screen"
172
+
173
+ ## 0.26.1 - 2016-10-05
174
+
175
+ * [FEATURE] New `card impressions` report for videos and channels.
176
+ * [FEATURE] New `card clicks` report for videos and channels.
177
+ * [FEATURE] New `card click rate` report for videos and channels.
178
+ * [FEATURE] New `card teaser impressions` report for videos and channels.
179
+ * [FEATURE] New `card teaser clicks` report for videos and channels.
180
+ * [FEATURE] New `card teaser click rate` report for videos and channels.
181
+
182
+ ## 0.26.0 - 2016-10-05
183
+
184
+ **How to upgrade**
185
+
186
+ If your code calls `.favorites_added` and `.favorites_removed` on channels and
187
+ videos then you must remove that code since those metrics are not anymore
188
+ supported by YouTube API.
189
+
190
+ * [REMOVAL] Remove deprecated `favorites_added` metric for channels, videos, and video groups.
191
+ * [REMOVAL] Remove deprecated `favorites_removed` metric for channels, videos, and video groups
192
+
193
+ ## 0.25.40 - 2016-09-19
194
+
195
+ * [IMPROVEMENT] Add `Yt::Claim#data` to access the policy of a claim
196
+
197
+ ## 0.25.39 - 2016-06-15
198
+
199
+ * [FEATURE] Add `by: :operating_system` option for reports, to return views (from a `content_owner.video`) by operating system.
200
+ * [FEATURE] Add `Yt::Collections::Reports::DEVICE_TYPES` to list all device types supported by YouTube Analytics API.
201
+ * [FEATURE] Add `Yt::Collections::Reports::OPERATING_SYSTEMS` to list all operating systems supported by YouTube Analytics API.
202
+
203
+ ## 0.25.38 - 2016-06-13
204
+
205
+ * [IMPROVEMENT] Don’t combine forContentOwner and publishedBefore parameters in Search#list since YouTube does not support this anymore.
206
+
207
+ ## 0.25.37 - 2016-05-16
208
+
209
+ * [FEATURE] Add `VideoGroup#videos` to load all videos under a group of channels, as well as a group of videos.
210
+
211
+ ## 0.25.36 - 2016-05-10
212
+
213
+ * [BUGFIX] Raise RequestError when authentication code is "invalid" or "already redeemed"
214
+ * [FEATURE] Make two methods `#explanation` and `#response_body` public for `Yt::Errors::RequestError`
215
+
216
+ ## 0.25.35 - 2016-04-27
217
+
218
+ * [BUGFIX] Don’t try to eager load more than 50 assets at the time from claims
219
+
220
+ ## 0.25.34 - 2016-04-20
221
+
222
+ * [FEATURE] Add `ad_breaks` and `tp_ad_server_video_id` attribute to AdvertisingOptionsSet
223
+
224
+ ## 0.25.33 - 2016-04-15
225
+
226
+ * [FEATURE] Eager-loading claims from videos will also eager-load assets.
227
+ * [FEATURE] New method - `Claim#source` will return the source of the claim.
228
+
229
+ ## 0.25.32 - 2016-04-12
230
+
231
+ * [BUGFIX] Fix where videos did not eager load claims or categories in subsequent requests.
232
+
233
+ ## 0.25.31 - 2016-04-11
234
+
235
+ * [BUGFIX] Don’t try to instantiate video.claim if a video does not have a claim.
236
+
237
+ ## 0.25.30 - 2016-04-07
238
+
239
+ * [FEATURE] Add ability for videos to eager load claims. For example, `$content_owner.videos.includes(:claim).first.claim.id`.
240
+
241
+ ## 0.25.29 - 2016-04-07
242
+
243
+ * [BUGFIX] Previously, Yt was throttling queries for `quotaExceeded` responses from YouTube. However, matching `quotaExceeded` was too specific and would not have caught other limit exceeding responses from YouTube. This change will allow Yt to throttle other responses that contains `Exceeded` or `exceeded`.
244
+
245
+ ## 0.25.28 - 2016-04-05
246
+
247
+ * [BUGFIX] If no asset ID is set, calling ContentOwner#assets will now use the path, /youtube/partner/v1/assetSearch, instead of '/youtube/partner/v1/assets'
248
+
249
+ ## 0.25.27 - 2016-03-28
250
+
251
+ * [FEATURE] Add `comment_threads` association to Yt::Video.
252
+ * [FEATURE] Add `top_level_comment` and delegate its attributes (`text_display`, `author_display_name`, `like_count`, `updated_at`) to Yt::CommentThread.
253
+
254
+ ## 0.25.26 - 2016-03-24
255
+
256
+ * [FEATURE] Add Yt::Comment resource.
257
+
258
+ ## 0.25.25 - 2016-03-24
259
+
260
+ * [FEATURE] Add Yt::CommentThread resource.
261
+
262
+ ## 0.25.24 - 2016-03-02
263
+
264
+ * [BUGFIX] When `videos.where(..)` returns more than one page, don’t retain the items for the next request.
265
+
266
+ ## 0.25.23 - 2016-02-23
267
+
268
+ * [IMPROVEMENT] Retry 3 times after a server error, to bypass temporary glitches by YouTube.
269
+ * [IMPROVEMENT] Don’t combine forMine and publishedBefore parameters in Search#list since YouTube does not support this anymore.
270
+
271
+ ## 0.25.22 - 2016-02-04
272
+
273
+ * [IMPROVEMENT] Deal with channels with more than 500 videos in a better way
274
+
275
+ ## 0.25.21 - 2016-02-04
276
+
277
+ * [BUGFIX] Add required 'require' to have `.with_indifferent_access` in geography
278
+
279
+ ## 0.25.20 - 2016-01-24
280
+
281
+ * [FEATURE] Add (undocumented) playback location dimensions SEARCH and BROWSE
282
+
283
+ ## 0.25.19 - 2016-01-15
284
+
285
+ * [FEATURE] Add `:group_items` to Yt::VideoGroup (list items of a group)
286
+ * [FEATURE] Add `:includes(:video)` to `Yt::VideoGroup#group_items` (eagerly loads all the videos)
287
+
288
+ ## 0.25.18 - 2016-01-08
289
+
290
+ * [FEATURE] Add Yt::COUNTRIES and Yt::US_STATES
291
+ * [FEATURE] Add YouTube Analytics Video Groups
292
+ * [FEATURE] Add `:video_groups` to Yt::Account (list video-groups created by an account)
293
+ * [FEATURE] Add `:video_groups` to Yt::ContentOwner (list video-groups on behalf of a content owner)
294
+ * [FEATURE] Add reports by video-group
295
+
296
+ ## 0.25.17 - 2016-01-05
297
+
298
+ * [FEATURE] Add `:videos` to Yt::ContentOwner to list videos in network with a content owner
299
+
300
+ ## 0.25.16 - 2015-12-19
301
+
302
+ * [FEATURE] Add `access_token_was_refreshed` to Yt::Account
303
+
304
+ ## 0.25.15 - 2015-12-17
305
+
306
+ * [FEATURE] Add `revoke_access` to Yt::Account
307
+
308
+ ## 0.25.14 - 2015-12-16
309
+
310
+ * [ENHANCEMENT] Add `:display_name` to each content owner returned by account.content_owners
311
+ * [BUGFIX] Don’t raise error when raising MissingAuth without any scope
312
+
9
313
  ## 0.25.13 - 2015-12-04
10
314
 
11
315
  * [BUGFIX] Fix previous fix to Video#update with publishAt (typo)
@@ -458,7 +762,7 @@ error by using the `unsubscribe` method:
458
762
 
459
763
  ## 0.11.5 - 2014-08-27
460
764
 
461
- * [BUGFIX] Make videos.where(id: 'MESycYJytkU').first.id return 'MESycYJytkU'
765
+ * [BUGFIX] Make videos.where(id: 'jNQXAC9IVRw').first.id return 'jNQXAC9IVRw'
462
766
 
463
767
  ## 0.11.4 - 2014-08-27
464
768
 
@@ -1,4 +1,4 @@
1
- Copyright 2014 Fullscreen, Inc.
1
+ Copyright (c) 2014–present Fullscreen, Inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -23,11 +23,14 @@ channel.videos.count #=> 12
23
23
  ```
24
24
 
25
25
  ```ruby
26
- video = Yt::Video.new id: 'MESycYJytkU'
26
+ video = Yt::Video.new id: 'jNQXAC9IVRw'
27
27
  video.title #=> "Fullscreen Creator Platform"
28
28
  video.comment_count #=> 308
29
29
  video.hd? #=> true
30
30
  video.annotations.count #=> 1
31
+ video.comment_threads #=> #<Yt::Collections::CommentThreads ...>
32
+ # Use #take to limit the number of pages need to fetch from server
33
+ video.comment_threads.take(99).map(&:author_display_name) #=> ["Paul", "Tommy", ...]
31
34
  ```
32
35
 
33
36
  The **full documentation** is available at [rubydoc.info](http://www.rubydoc.info/gems/yt/frames).
@@ -41,7 +44,7 @@ To install on your system, run
41
44
 
42
45
  To use inside a bundled Ruby project, add this line to the Gemfile:
43
46
 
44
- gem 'yt', '~> 0.25.5'
47
+ gem 'yt', '~> 0.28.0'
45
48
 
46
49
  Since the gem follows [Semantic Versioning](http://semver.org),
47
50
  indicating the full version in your Gemfile (~> *major*.*minor*.*patch*)
@@ -68,6 +71,7 @@ Use [Yt::ContentOwner](http://www.rubydoc.info/gems/yt/Yt/Models/ContentOwner) t
68
71
  * list and delete the references administered by the content owner
69
72
  * list the policies and policy rules administered by the content owner
70
73
  * create assets
74
+ * list assets
71
75
 
72
76
  ```ruby
73
77
  # Content owners can be initialized with access token, refresh token or an authorization code
@@ -79,7 +83,7 @@ content_owner.partnered_channels.where(part: 'statistics').map &:subscriber_coun
79
83
 
80
84
  content_owner.claims.where(q: 'Fullscreen').count #=> 24
81
85
  content_owner.claims.first #=> #<Yt::Models::Claim @id=...>
82
- content_owner.claims.first.video_id #=> 'MESycYJytkU'
86
+ content_owner.claims.first.video_id #=> 'jNQXAC9IVRw'
83
87
  content_owner.claims.first.status #=> "active"
84
88
 
85
89
  reference = content_owner.references.where(asset_id: "ABCDEFG").first #=> #<Yt::Models::Reference @id=...>
@@ -92,6 +96,13 @@ content_owner.policies.first.rules.first.action #=> "monetize"
92
96
  content_owner.policies.first.rules.first.included_territories #=> ["US", "CA"]
93
97
 
94
98
  content_owner.create_asset type: 'web' #=> #<Yt::Models::Asset @id=...>
99
+
100
+ content_owner.assets.first #=> #<Yt::Models::AssetSnippet:0x007ff2bc543b00 @id=...>
101
+ content_owner.assets.first.id #=> "A4532885163805730"
102
+ content_owner.assets.first.title #=> "Money Train"
103
+ content_owner.assets.first.type #=> "web"
104
+ content_owner.assets.first.custom_id #=> "MoKNJFOIRroc"
105
+
95
106
  ```
96
107
 
97
108
  *All the above methods require authentication (see below).*
@@ -116,6 +127,76 @@ Yt::PlaylistItem
116
127
 
117
128
  Check [fullscreen.github.io/yt](http://fullscreen.github.io/yt/playlist_items.html) for the list of methods available for `Yt::PlaylistItem`.
118
129
 
130
+ Yt::CommentThread
131
+ ----------------
132
+
133
+ Use [Yt::CommentThread](http://www.rubydoc.info/gems/yt/Yt/Models/CommentThread) to:
134
+
135
+ * Show details of a comment_thread.
136
+
137
+ ```ruby
138
+ Yt::CommentThread.new id: 'z13vsnnbwtv4sbnug232erczcmi3wzaug'
139
+
140
+ comment_thread.video_id #=> "1234"
141
+ comment_thread.total_reply_count #=> 1
142
+ comment_thread.can_reply? #=> true
143
+ comment_thread.public? #=> true
144
+
145
+ comment_thread.top_level_comment #=> #<Yt::Models::Comment ...>
146
+ comment_thread.text_display #=> "funny video!"
147
+ comment_thread.like_count #=> 9
148
+ comment_thread.updated_at #=> 2016-03-22 12:56:56 UTC
149
+ comment_thread.author_display_name #=> "Joe"
150
+ ```
151
+
152
+ Yt::Comment
153
+ ----------------
154
+
155
+ Use [Yt::Comment](http://www.rubydoc.info/gems/yt/Yt/Models/Comment) to:
156
+
157
+ * Get details of a comment.
158
+
159
+ ```ruby
160
+ Yt::Comment.new id: 'z13vsnnbwtv4sbnug232erczcmi3wzaug'
161
+
162
+ comment.text_display #=> "awesome"
163
+ comment.author_display_name #=> "Jack"
164
+ comment.like_count #=> 1
165
+ comment.updated_at #=> 2016-03-22 12:56:56 UTC
166
+ comment.parent_id #=> "abc1234" (return nil if the comment is not a reply)
167
+ ```
168
+
169
+ Yt::BulkReportJob
170
+ ----------------
171
+
172
+ Use [Yt::BulkReportJob](http://www.rubydoc.info/gems/yt/Yt/Models/BulkReportJob) to:
173
+
174
+ * Get details of a bulk report job.
175
+
176
+ ```ruby
177
+ content_owner = Yt::ContentOwner.new owner_name: 'CMSname', access_token: 'ya29.1.ABCDEFGHIJ'
178
+ bulk_report_job = content_owner.bulk_report_jobs.first
179
+
180
+ bulk_report_job.report_type_id #=> "content_owner_demographics_a1"
181
+ ```
182
+
183
+ Yt::BulkReport
184
+ ----------------
185
+
186
+ Use [Yt::BulkReport](http://www.rubydoc.info/gems/yt/Yt/Models/BulkReport) to:
187
+
188
+ * Get details of a bulk report.
189
+
190
+ ```ruby
191
+ content_owner = Yt::ContentOwner.new owner_name: 'CMSname', access_token: 'ya29.1.ABCDEFGHIJ'
192
+ bulk_report_job = content_owner.bulk_report_jobs.first
193
+ bulk_report = bulk_report_job.bulk_reports.first
194
+
195
+ bulk_report.start_time #=> 2017-08-11 07:00:00 UTC
196
+ bulk_report.end_time #=> 2017-08-12 07:00:00 UTC
197
+ bulk_report.download_url #=> "https://youtubereporting.googleapis.com/v1/..."
198
+ ```
199
+
119
200
  Yt::Collections::Videos
120
201
  -----------------------
121
202
 
@@ -128,7 +209,7 @@ videos = Yt::Collections::Videos.new
128
209
  videos.where(order: 'viewCount').first.title #=> "PSY - GANGNAM STYLE"
129
210
  videos.where(q: 'Fullscreen CreatorPlatform', safe_search: 'none').size #=> 324
130
211
  videos.where(chart: 'mostPopular', video_category_id: 44).first.title #=> "SINISTER - Trailer"
131
- videos.where(id: 'MESycYJytkU,invalid').map(&:title) #=> ["Fullscreen Creator Platform"]
212
+ videos.where(id: 'jNQXAC9IVRw,invalid').map(&:title) #=> ["Fullscreen Creator Platform"]
132
213
  ```
133
214
 
134
215
  *The methods above do not require authentication.*
@@ -243,7 +324,7 @@ Use [Yt::AdvertisingOptionsSet](http://www.rubydoc.info/gems/yt/Yt/Models/Advert
243
324
 
244
325
  ```ruby
245
326
  content_owner = Yt::ContentOwner.new owner_name: 'CMSname', access_token: 'ya29.1.ABCDEFGHIJ'
246
- ad_options = Yt::AdvertisingOptionsSet.new video_id: 'MESycYJytkU', auth: $content_owner
327
+ ad_options = Yt::AdvertisingOptionsSet.new video_id: 'jNQXAC9IVRw', auth: $content_owner
247
328
  ad_options.update ad_formats: %w(standard_instream long) #=> true
248
329
  ```
249
330