Class: Yt::Models::Channel

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

Overview

A channel resource contains information about a YouTube channel.

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 = {}) ⇒ Channel

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



96
97
98
99
100
101
102
103
104
# File 'lib/yt/models/channel.rb', line 96

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

Instance Attribute Details

#content_owner_detailYt::Models::ContentOwnerDetail (readonly)



77
# File 'lib/yt/models/channel.rb', line 77

has_one :content_owner_detail

#playlistsYt::Collections::Playlists (readonly)



14
# File 'lib/yt/models/channel.rb', line 14

has_many :playlists

#statistics_setYt::Models::StatisticsSet (readonly)



70
# File 'lib/yt/models/channel.rb', line 70

has_one :statistics_set

#subscribed_channelsYt::Collections::SubscribedChannels (readonly)

Returns the channels that the channel is subscribed to.

Raises:

  • (Yt::Errors::Forbidden)

    if the owner of the channel has explicitly select the option to keep all subscriptions private.



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

has_many :subscribed_channels

#subscriptionYt::Models::Subscription (readonly)

Returns the channel’s subscription by auth.

Raises:



92
# File 'lib/yt/models/channel.rb', line 92

has_one :subscription

#videosYt::Collections::Videos (readonly)



10
# File 'lib/yt/models/channel.rb', line 10

has_many :videos

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.



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

has_report :average_view_duration

#average_view_duration_on(date) ⇒ Float



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

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.



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

has_report :average_view_percentage

#average_view_percentage_on(date) ⇒ Float



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

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.



23
# File 'lib/yt/models/channel.rb', line 23

has_report :comments

#comments_on(date) ⇒ Float



23
# File 'lib/yt/models/channel.rb', line 23

has_report :comments

#delete_playlists(attrs = {}) ⇒ Object



174
175
176
# File 'lib/yt/models/channel.rb', line 174

def delete_playlists(attrs = {})
  playlists.delete_all attrs
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.



29
# File 'lib/yt/models/channel.rb', line 29

has_report :dislikes

#dislikes_on(date) ⇒ Float



29
# File 'lib/yt/models/channel.rb', line 29

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.



17
# File 'lib/yt/models/channel.rb', line 17

has_report :earnings

#earnings_on(date) ⇒ Float



17
# File 'lib/yt/models/channel.rb', line 17

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.



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

has_report :estimated_minutes_watched

#estimated_minutes_watched_on(date) ⇒ Float



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

has_report :estimated_minutes_watched

#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.



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

has_report :favorites_added

#favorites_added_on(date) ⇒ Float



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

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.



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

has_report :favorites_removed

#favorites_removed_on(date) ⇒ Float



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

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.



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

has_report :impressions

#impressions_on(date) ⇒ Float



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

has_report :impressions

#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.



26
# File 'lib/yt/models/channel.rb', line 26

has_report :likes

#likes_on(date) ⇒ Float



26
# File 'lib/yt/models/channel.rb', line 26

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.



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

has_report :monetized_playbacks

#monetized_playbacks_on(date) ⇒ Float



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

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.



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

has_report :shares

#shares_on(date) ⇒ Float



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

has_report :shares

#subscribeObject

Subscribes the authenticated account to the channel. Does not raise an error if the account was already subscribed.

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

Raises:



167
168
169
170
171
172
# File 'lib/yt/models/channel.rb', line 167

def subscribe
  subscriptions.insert(ignore_errors: true).tap do |subscription|
    throttle_subscriptions
    @subscription = subscription
  end
end

#subscribe!Object

Subscribes the authenticated account to the channel. Raises an error if the account was already subscribed.

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

Raises:



153
154
155
156
157
158
# File 'lib/yt/models/channel.rb', line 153

def subscribe!
  subscriptions.insert.tap do |subscription|
    throttle_subscriptions
    @subscription = subscription
  end
end

#subscribed?Boolean

Returns whether the authenticated account is subscribed to the channel.

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

Raises:



113
114
115
116
117
118
# File 'lib/yt/models/channel.rb', line 113

def subscribed?
  sleep [(@subscriptions_updated_at || Time.now) - Time.now, 0].max
  subscription.exists?
rescue Errors::NoItems
  false
end

#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.



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

has_report :subscribers_gained

#subscribers_gained_on(date) ⇒ Float



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

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.



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

has_report :subscribers_lost

#subscribers_lost_on(date) ⇒ Float



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

has_report :subscribers_lost

#unsubscribeObject

Unsubscribes the authenticated account from the channel. Does not raise an error if the account was not subscribed.

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

Raises:



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

def unsubscribe
  unsubscribe! if subscribed?
end

#unsubscribe!Object

Unsubscribes the authenticated account from the channel. Raises an error if the account was not subscribed.

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

Raises:



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

def unsubscribe!
  subscription.delete.tap{ throttle_subscriptions }
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.



62
# File 'lib/yt/models/channel.rb', line 62

has_report :viewer_percentage

#viewer_percentage_on(date) ⇒ Float



62
# File 'lib/yt/models/channel.rb', line 62

has_report :viewer_percentage

#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


66
# File 'lib/yt/models/channel.rb', line 66

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.



20
# File 'lib/yt/models/channel.rb', line 20

has_report :views

#views_on(date) ⇒ Float



20
# File 'lib/yt/models/channel.rb', line 20

has_report :views