yt 0.25.13 → 0.32.2

Sign up to get free protection for your applications and to get access to all the features.
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