Class: Yt::Models::Video

Inherits:
Resource show all
Defined in:
lib/yt/models/video.rb

Overview

Provides methods to interact with YouTube videos.

Instance Attribute Summary collapse

Attributes inherited from Resource

#auth

Instance Method Summary collapse

Methods inherited from Resource

#kind, #update, #username

Methods included from Associations::HasReports

#has_report

Methods included from Associations::HasViewerPercentages

#has_viewer_percentages

Methods included from Associations::HasOne

#has_one

Methods included from Associations::HasMany

#has_many

Methods included from Associations::HasAuthentication

#has_authentication

Constructor Details

#initialize(options = {}) ⇒ Video

Override Resource’s new to set statistics and content details as well if the response includes them



108
109
110
111
112
113
114
115
116
# File 'lib/yt/models/video.rb', line 108

def initialize(options = {})
  super options
  if options[:statistics]
    @statistics_set = StatisticsSet.new data: options[:statistics]
  end
  if options[:content_details]
    @content_detail = ContentDetail.new data: options[:content_details]
  end
end

Instance Attribute Details

#annotationsYt::Collections::Annotations (readonly)



41
# File 'lib/yt/models/video.rb', line 41

has_many :annotations

#content_detailYt::Models::ContentDetail (readonly)



22
# File 'lib/yt/models/video.rb', line 22

has_one :content_detail

#live_streaming_detailYt::Models::LiveStreamingDetail (readonly)



35
# File 'lib/yt/models/video.rb', line 35

has_one :live_streaming_detail

#ratingYt::Models::Rating (readonly)



31
# File 'lib/yt/models/video.rb', line 31

has_one :rating

#resumable_sessionsYt::Collections::ResumableSessions (readonly)



104
# File 'lib/yt/models/video.rb', line 104

has_many :resumable_sessions

#statistics_setYt::Models::StatisticsSet (readonly)



97
# File 'lib/yt/models/video.rb', line 97

has_one :statistics_set

Instance Method Details

#average_view_duration(options = {}) ⇒ Hash<Date, Float>

Returns the average_view_duration for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



81
# File 'lib/yt/models/video.rb', line 81

has_report :average_view_duration

#average_view_duration_on(date) ⇒ Float



81
# File 'lib/yt/models/video.rb', line 81

has_report :average_view_duration

#average_view_percentage(options = {}) ⇒ Hash<Date, Float>

Returns the average_view_percentage for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



84
# File 'lib/yt/models/video.rb', line 84

has_report :average_view_percentage

#average_view_percentage_on(date) ⇒ Float



84
# File 'lib/yt/models/video.rb', line 84

has_report :average_view_percentage

#comments(options = {}) ⇒ Hash<Date, Float>

Returns the comments for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



50
# File 'lib/yt/models/video.rb', line 50

has_report :comments

#comments_on(date) ⇒ Float



50
# File 'lib/yt/models/video.rb', line 50

has_report :comments

#delete(options = {}) ⇒ Boolean

Deletes the video.

This method requires auth to return an authenticated instance of Account with permissions to delete the video.

Raises:



140
141
142
143
# File 'lib/yt/models/video.rb', line 140

def delete(options = {})
  do_delete {@id = nil}
  !exists?
end

#dislikeBoolean

Dislikes the video on behalf of the authenticated account.

This method requires auth to return an authenticated instance of Account.

Raises:



179
180
181
182
# File 'lib/yt/models/video.rb', line 179

def dislike
  rating.set :dislike
  !liked?
end

#dislikes(options = {}) ⇒ Hash<Date, Float>

Returns the dislikes for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



56
# File 'lib/yt/models/video.rb', line 56

has_report :dislikes

#dislikes_on(date) ⇒ Float



56
# File 'lib/yt/models/video.rb', line 56

has_report :dislikes

#earnings(options = {}) ⇒ Hash<Date, Float>

Returns the earnings for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



44
# File 'lib/yt/models/video.rb', line 44

has_report :earnings

#earnings_on(date) ⇒ Float



44
# File 'lib/yt/models/video.rb', line 44

has_report :earnings

#estimated_minutes_watched(options = {}) ⇒ Hash<Date, Float>

Returns the estimated_minutes_watched for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



78
# File 'lib/yt/models/video.rb', line 78

has_report :estimated_minutes_watched

#estimated_minutes_watched_on(date) ⇒ Float



78
# File 'lib/yt/models/video.rb', line 78

has_report :estimated_minutes_watched

#exists?Boolean



145
146
147
# File 'lib/yt/models/video.rb', line 145

def exists?
  !@id.nil?
end

#favorites_added(options = {}) ⇒ Hash<Date, Float>

Returns the favorites_added for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



72
# File 'lib/yt/models/video.rb', line 72

has_report :favorites_added

#favorites_added_on(date) ⇒ Float



72
# File 'lib/yt/models/video.rb', line 72

has_report :favorites_added

#favorites_removed(options = {}) ⇒ Hash<Date, Float>

Returns the favorites_removed for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



75
# File 'lib/yt/models/video.rb', line 75

has_report :favorites_removed

#favorites_removed_on(date) ⇒ Float



75
# File 'lib/yt/models/video.rb', line 75

has_report :favorites_removed

#impressions(options = {}) ⇒ Hash<Date, Float>

Returns the impressions for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



87
# File 'lib/yt/models/video.rb', line 87

has_report :impressions

#impressions_on(date) ⇒ Float



87
# File 'lib/yt/models/video.rb', line 87

has_report :impressions

#likeBoolean

Likes the video on behalf of the authenticated account.

This method requires auth to return an authenticated instance of Account.

Raises:



167
168
169
170
# File 'lib/yt/models/video.rb', line 167

def like
  rating.set :like
  liked?
end

#liked?Boolean

Returns whether the authenticated account likes the video.

This method requires auth to return an authenticated instance of Account.

Raises:



156
157
158
# File 'lib/yt/models/video.rb', line 156

def liked?
  rating.rating == :like
end

#likes(options = {}) ⇒ Hash<Date, Float>

Returns the likes for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



53
# File 'lib/yt/models/video.rb', line 53

has_report :likes

#likes_on(date) ⇒ Float



53
# File 'lib/yt/models/video.rb', line 53

has_report :likes

#monetized_playbacks(options = {}) ⇒ Hash<Date, Float>

Returns the monetized_playbacks for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



90
# File 'lib/yt/models/video.rb', line 90

has_report :monetized_playbacks

#monetized_playbacks_on(date) ⇒ Float



90
# File 'lib/yt/models/video.rb', line 90

has_report :monetized_playbacks

#shares(options = {}) ⇒ Hash<Date, Float>

Returns the shares for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



59
# File 'lib/yt/models/video.rb', line 59

has_report :shares

#shares_on(date) ⇒ Float



59
# File 'lib/yt/models/video.rb', line 59

has_report :shares

#subscribers_gained(options = {}) ⇒ Hash<Date, Float>

Returns the subscribers_gained for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



64
# File 'lib/yt/models/video.rb', line 64

has_report :subscribers_gained

#subscribers_gained_on(date) ⇒ Float



64
# File 'lib/yt/models/video.rb', line 64

has_report :subscribers_gained

#subscribers_lost(options = {}) ⇒ Hash<Date, Float>

Returns the subscribers_lost for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



69
# File 'lib/yt/models/video.rb', line 69

has_report :subscribers_lost

#subscribers_lost_on(date) ⇒ Float



69
# File 'lib/yt/models/video.rb', line 69

has_report :subscribers_lost

#tagsArray<Yt::Models::Tag>

Returns the list of keyword tags associated with the video. Since YouTube API only returns tags on Videos#list, the memoized (e.g., by calling account.videos or channel.videos), so that the full snippet (with tags) is loaded, rather than the partial one.



126
127
128
129
130
131
# File 'lib/yt/models/video.rb', line 126

def tags
  unless snippet.tags.any? || snippet.includes_tags || @auth.nil?
    @snippet = nil
  end
  snippet.tags
end

#unlikeBoolean

Resets the rating of the video on behalf of the authenticated account.

This method requires auth to return an authenticated instance of Account.

Raises:



191
192
193
194
# File 'lib/yt/models/video.rb', line 191

def unlike
  rating.set :none
  !liked?
end

#upload_thumbnail(path_or_url) ⇒ Object

Uploads a thumbnail



201
202
203
204
205
206
207
208
# File 'lib/yt/models/video.rb', line 201

def upload_thumbnail(path_or_url)
  file = open path_or_url, 'rb'
  session = resumable_sessions.insert file.size

  session.update(body: file) do |data|
    snippet.instance_variable_set :@thumbnails, data['items'].first
  end
end

#viewer_percentage(filters = {}) ⇒ Float

Returns the percentage of viewer matching the filters.

Examples:

Return the % of male viewers of a video

channel.viewer_percentage(gender: :male) #=> 52.02

Options Hash (filters):

  • :gender (Symbol)

    Either :male or :female.



93
# File 'lib/yt/models/video.rb', line 93

has_viewer_percentages

#viewer_percentagesHash<Symbol,Hash<String,Float>>

Returns the viewer percentages. The first-level hash identifies the genres (:female, :male). The second-level hash identifies the age ranges (‘18-24’, ‘25-34’, ‘35-44’, ‘45-54’, ‘55-64’, ‘65-’).

Examples:

Return the % of male viewers of a channel older than 64

channel.viewer_percentages[:male]['65-'] #=> 12.02


93
# File 'lib/yt/models/video.rb', line 93

has_viewer_percentages

#views(options = {}) ⇒ Hash<Date, Float>

Returns the views for a range of a days.

Options Hash (options):

  • :since (#to_date)

    The first day of the range. Also aliased as :from.

  • :until (#to_date)

    The last day of the range. Also aliased as :to.



47
# File 'lib/yt/models/video.rb', line 47

has_report :views

#views_on(date) ⇒ Float



47
# File 'lib/yt/models/video.rb', line 47

has_report :views