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

#initialize, #kind, #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

This class inherits a constructor from Yt::Models::Resource

Instance Attribute Details

#annotationsYt::Collections::Annotations (readonly)

Returns the video’s annotations.

Returns:



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

has_many :annotations

#content_detailYt::Models::ContentDetail (readonly)

Returns the video’s content details.

Returns:



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

has_one :content_detail

#ratingYt::Models::Rating (readonly)

Returns the video’s rating.

Returns:



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

has_one :rating

#statistics_setYt::Models::StatisticsSet (readonly)

Returns the statistics for the video.

Returns:



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

has_one :statistics_set

Instance Method Details

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

Returns the comments for a range of a days.

Parameters:

  • options (Hash) (defaults to: {})

    the range of days to get the comments for.

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.

Returns:

  • (Hash<Date, Float>)

    the comments for a range of a days.



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

has_report :comments

#comments_on(date) ⇒ Float

Returns the comments for a single day.

Parameters:

  • date (#to_date)

    The single day to get the comments for.

Returns:

  • (Float)

    the comments for a single day.



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

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.

Returns:

  • (Boolean)

    whether the video does not exist anymore.

Raises:



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

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.

Returns:

  • (Boolean)

    whether the account does not like the video.

Raises:



129
130
131
132
# File 'lib/yt/models/video.rb', line 129

def dislike
  rating.update :dislike
  !liked?
end

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

Returns the dislikes for a range of a days.

Parameters:

  • options (Hash) (defaults to: {})

    the range of days to get the dislikes for.

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.

Returns:

  • (Hash<Date, Float>)

    the dislikes for a range of a days.



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

has_report :dislikes

#dislikes_on(date) ⇒ Float

Returns the dislikes for a single day.

Parameters:

  • date (#to_date)

    The single day to get the dislikes for.

Returns:

  • (Float)

    the dislikes for a single day.



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

has_report :dislikes

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

Returns the earnings for a range of a days.

Parameters:

  • options (Hash) (defaults to: {})

    the range of days to get the earnings for.

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.

Returns:

  • (Hash<Date, Float>)

    the earnings for a range of a days.



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

has_report :earnings

#earnings_on(date) ⇒ Float

Returns the earnings for a single day.

Parameters:

  • date (#to_date)

    The single day to get the earnings for.

Returns:

  • (Float)

    the earnings for a single day.



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

has_report :earnings

#exists?Boolean

Returns:

  • (Boolean)


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

def exists?
  !@id.nil?
end

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

Returns the impressions for a range of a days.

Parameters:

  • options (Hash) (defaults to: {})

    the range of days to get the impressions for.

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.

Returns:

  • (Hash<Date, Float>)

    the impressions for a range of a days.



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

has_report :impressions

#impressions_on(date) ⇒ Float

Returns the impressions for a single day.

Parameters:

  • date (#to_date)

    The single day to get the impressions for.

Returns:

  • (Float)

    the impressions for a single day.



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

has_report :impressions

#likeBoolean

Likes the video on behalf of the authenticated account.

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

Returns:

  • (Boolean)

    whether the account likes the video.

Raises:



117
118
119
120
# File 'lib/yt/models/video.rb', line 117

def like
  rating.update :like
  liked?
end

#liked?Boolean

Returns whether the authenticated account likes the video.

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

Returns:

  • (Boolean)

    whether the account likes the video.

Raises:



106
107
108
# File 'lib/yt/models/video.rb', line 106

def liked?
  rating.rating == :like
end

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

Returns the likes for a range of a days.

Parameters:

  • options (Hash) (defaults to: {})

    the range of days to get the likes for.

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.

Returns:

  • (Hash<Date, Float>)

    the likes for a range of a days.



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

has_report :likes

#likes_on(date) ⇒ Float

Returns the likes for a single day.

Parameters:

  • date (#to_date)

    The single day to get the likes for.

Returns:

  • (Float)

    the likes for a single day.



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

has_report :likes

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

Returns the shares for a range of a days.

Parameters:

  • options (Hash) (defaults to: {})

    the range of days to get the shares for.

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.

Returns:

  • (Hash<Date, Float>)

    the shares for a range of a days.



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

has_report :shares

#shares_on(date) ⇒ Float

Returns the shares for a single day.

Parameters:

  • date (#to_date)

    The single day to get the shares for.

Returns:

  • (Float)

    the shares for a single day.



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

has_report :shares

#unlikeBoolean

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

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

Returns:

  • (Boolean)

    whether the account does not like the video.

Raises:



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

def unlike
  rating.update :none
  !liked?
end

#update(options = {}) ⇒ Object

TODO:

Update the status, not just the snippet. This requires some caution, as the whole status object needs to be updated, not just privacyStatus, but also embeddable, license, publicStatsViewable, and publishAt



84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/yt/models/video.rb', line 84

def update(options = {})
  options[:title] ||= title
  options[:description] ||= description
  options[:tags] ||= tags
  options[:categoryId] ||= category_id
  snippet = options.slice :title, :description, :tags, :categoryId
  body = {id: @id, snippet: snippet}

  do_update(params: {part: 'snippet'}, body: body) do |data|
    @id = data['id']
    @snippet = Snippet.new data: data['snippet'] if data['snippet']
    true
  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

Parameters:

  • filters (Hash) (defaults to: {})

    The type of viewers to be accounted for.

Options Hash (filters):

  • :gender (Symbol)

    Either :male or :female.

Returns:

  • (Float)

    the percentage of viewer matching the filters.



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

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

Returns:

  • (Hash<Symbol,Hash<String,Float>>)

    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-’)



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

has_viewer_percentages

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

Returns the views for a range of a days.

Parameters:

  • options (Hash) (defaults to: {})

    the range of days to get the views for.

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.

Returns:

  • (Hash<Date, Float>)

    the views for a range of a days.



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

has_report :views

#views_on(date) ⇒ Float

Returns the views for a single day.

Parameters:

  • date (#to_date)

    The single day to get the views for.

Returns:

  • (Float)

    the views for a single day.



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

has_report :views