- [breaking change] channel.subscribe returns nil (not raise an error) when trying to subscribe to your own channel
- Add all the status fields to Video (upload status, failure reason, rejection reason, scheduled time, license, embeddable, public stats viewable)
- Add content_owner.claims to list the claims administered by a content owner.
- Allow content_owner.claims to be chained with .where, such as in account.videos.where(q: 'query')
- Add account.content_owners to list content owners associated with an account
- [breaking change] Rename DetailsSet to ContentDetail
- Add statistics_set to Video (views, likes, dislikes, favorites, comments)
- Add statistics_set to Channel (views, comments, videos, subscribers)
- More snippet methods for Video (channel_id, channel_title, category_id, live_broadcast_content)
- More snippet methods for Playlist (channel_id, channel_title)
- More snippet methods for PlaylistItem (channel_id, channel_title, playlist_id, video_id)
- More status methods for PlaylistItem (privacy_status, public?, private?, unlisted?)
- Add video.update to update title, description, tags and categoryId of a video
- Sort channel.videos by most recent first
- Extract Reports (earnings, views) into module with macro
has_report
- New channel reports: comments, likes, dislikes, shares and impressions
- Allow both normal and partnered channels to retrieve reports about views, comments, likes, dislikes, shares
- Make reports available also on Video (not just Channel)
- New account.upload_video to upload a video (either local or remote).
- Make channel.videos access more than 500 videos per channel
- Add viewer percentage (age group, gender) to Channel and Video reports
- [breaking change] Rename Channel#earning to Channel#earnings_on
- [breaking change] Account#videos shows all videos owned by account (public and private)
- Add the .status association to every type of resource (Channel, Video, Playlist)
- Allow account.videos to be chained with .where, such as in account.videos.where(q: 'query')
- Retry request once when YouTube times out
- Handle annotations with "never" as the timestamp, without text, singleton positions, of private videos
- New methods for Video: hd?, stereoscopic?, captioned?, licensed?
- More complete custom exception Yt::Error, with code, body and curl
- Replace
:ignore_not_found
and:ignore_duplicates
with:ignore_errors
- Allow resources to be initialized with a url, such as Yt::Resource.new url: 'youtube.com/fullscreen'
- Add
has_one :id
to resources, to retrieve the ID of resources initialized by URL - Raise an error if some
has_one
associations are not found (id, snippet, details set, user info) - Don't check for the right :scope if Account is initialized with credentials
- Move models in Yt::Models but still auto-include them in the main namespace
- New Authentication model to separate
access_token
andrefresh_token
from Account - New types of Errors that render more verbose errors and the failing request in cURL syntax
- Separate Error class for 500 error, so they can be easily found in app logs
- New Earning collection to retrieve estimated earning for YouTube-partnered channels
- Rename error classes so they match the corresponding Net::HTTP errors (e.g. Unauthorized)
- Separate Error class for 403 Error
- Retry once YouTube earning queries that return error 400 "Invalid query. Query did not conform to the expectations"
- Update RSpec to 3.0 (only required in development/testing)
- New ContentOwner subclass of Account with access to partnered channels
- Automatically refresh the access token when it expires or becomes invalid
- Retry once YouTube earning queries that return error 503
- Wait 3 seconds and retry every request that returns 500, 503 or 400 with "Invalid query"
- New Views collection to retrieve view count for YouTube-partnered channels
- Complete rewrite, using ActiveSupport and separating models and collections
- New methods to handle annotations, details sets
- Supports also ActiveSupport 3 and Ruby 1.9.3 (not just AS4 + Ruby 2)
- Fix parsing annotation and timestamps longer than 1 hour
- Fix delegating tags from resources to snippets
- Two options to add videos to a playlist: fail or not if a video is missing or its account terminated
- Allow to configure Yt credentials through environment variables
- When updating a playlist, only changes the specified attributes
- New and improved methods to handle subscriptions, playlists, playlist items
find_or_create_playlist_by
does not yield a block anymoreaccount.subscribe_to!
raises error in case of duplicate subscription, butaccount.subscribe_to
does not
account.subscribe_to!
does not raise error in case of duplicate subscription- Accountable objects can be initialized with the OAuth access token if there's no need to get a fresh one with a refresh token
- Replaced
account.perform!
withaccount.like!
,account.subscribe_to!
- Added
account.add_to!
to add a video to an account’s playlist - Added
account.find_or_create_playlist_by
to find or create an account’s playlist
- Added support for Ruby 2.0.0
- Support for authenticated resources: Youtube accounts and Google accounts
- Support for public Youtube resources: channels and videos
- Available actions for authenticated Youtube accounts: like a video, subscribe to a channel