diff options
Diffstat (limited to 'lib/WWW/StrawViewer/Channels.pm')
-rw-r--r-- | lib/WWW/StrawViewer/Channels.pm | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/lib/WWW/StrawViewer/Channels.pm b/lib/WWW/StrawViewer/Channels.pm deleted file mode 100644 index b2c2c99..0000000 --- a/lib/WWW/StrawViewer/Channels.pm +++ /dev/null @@ -1,200 +0,0 @@ -package WWW::StrawViewer::Channels; - -use utf8; -use 5.014; -use warnings; - -=head1 NAME - -WWW::StrawViewer::Channels - Channels interface. - -=head1 SYNOPSIS - - use WWW::StrawViewer; - my $obj = WWW::StrawViewer->new(%opts); - my $videos = $obj->channels_from_categoryID($category_id); - -=head1 SUBROUTINES/METHODS - -=cut - -sub _make_channels_url { - my ($self, %opts) = @_; - return $self->_make_feed_url('channels', %opts); -} - -sub videos_from_channel_id { - my ($self, $channel_id) = @_; - return $self->_get_results($self->_make_feed_url("channels/$channel_id/videos")); -} - -sub videos_from_username { - my ($self, $channel_id) = @_; - return $self->_get_results($self->_make_feed_url("channels/$channel_id/videos")); -} - -=head2 channels_from_categoryID($category_id) - -Return the YouTube channels associated with the specified category. - -=head2 channels_info($channel_id) - -Return information for the comma-separated list of the YouTube channel ID(s). - -=head1 Channel details - -For all functions, C<$channels->{results}{items}> contains: - -=cut - -{ - no strict 'refs'; - - foreach my $method ( - { - key => 'categoryId', - name => 'channels_from_guide_category', - }, - { - key => 'id', - name => 'channels_info', - }, - { - key => 'forUsername', - name => 'channels_from_username', - }, - ) { - *{__PACKAGE__ . '::' . $method->{name}} = sub { - my ($self, $channel_id) = @_; - return $self->_get_results($self->_make_channels_url($method->{key} => $channel_id)); - }; - } - - foreach my $part (qw(id contentDetails statistics topicDetails)) { - *{__PACKAGE__ . '::' . 'channels_' . $part} = sub { - my ($self, $id) = @_; - return $self->_get_results($self->_make_channels_url(id => $id, part => $part)); - }; - } -} - -=head2 my_channel() - -Returns info about the channel of the current authenticated user. - -=cut - -sub my_channel { - my ($self) = @_; - $self->get_access_token() // return; - return $self->_get_results($self->_make_channels_url(part => 'snippet', mine => 'true')); -} - -=head2 my_channel_id() - -Returns the channel ID of the current authenticated user. - -=cut - -sub my_channel_id { - my ($self) = @_; - - state $cache = {}; - - if (exists $cache->{id}) { - return $cache->{id}; - } - - $cache->{id} = undef; - my $channel = $self->my_channel() // return; - $cache->{id} = $channel->{results}{items}[0]{id} // return; -} - -=head2 channels_my_subscribers() - -Retrieve a list of channels that subscribed to the authenticated user's channel. - -=cut - -sub channels_my_subscribers { - my ($self) = @_; - $self->get_access_token() // return; - return $self->_get_results($self->_make_channels_url(mySubscribers => 'true')); -} - -=head2 channel_id_from_username($username) - -Return the channel ID for an username. - -=cut - -sub channel_id_from_username { - my ($self, $username) = @_; - - state $username_lookup = {}; - - if (exists $username_lookup->{$username}) { - return $username_lookup->{$username}; - } - - $username_lookup->{$username} = undef; - my $channel = $self->channels_from_username($username) // return; - $username_lookup->{$username} = $channel->{results}{items}[0]{id} // return; -} - -=head2 channel_title_from_id($channel_id) - -Return the channel title for a given channel ID. - -=cut - -sub channel_title_from_id { - my ($self, $channel_id) = @_; - - if ($channel_id eq 'mine') { - $channel_id = $self->my_channel_id(); - } - - my $info = $self->channels_info($channel_id // return) // return; - - ( ref($info) eq 'HASH' - and ref($info->{results}) eq 'HASH' - and ref($info->{results}{items}) eq 'ARRAY' - and ref($info->{results}{items}[0]) eq 'HASH') - ? $info->{results}{items}[0]{snippet}{title} - : (); -} - -=head2 channels_contentDetails($channelID) - -=head2 channels_statistics($channelID); - -=head2 channels_topicDetails($channelID) - -=cut - -=head1 AUTHOR - -Trizen, C<< <echo dHJpemVuQHByb3Rvbm1haWwuY29tCg== | base64 -d> >> - - -=head1 SUPPORT - -You can find documentation for this module with the perldoc command. - - perldoc WWW::StrawViewer::Channels - - -=head1 LICENSE AND COPYRIGHT - -Copyright 2013-2015 Trizen. - -This program is free software; you can redistribute it and/or modify it -under the terms of either: the GNU General Public License as published -by the Free Software Foundation; or the Artistic License. - -See L<http://dev.perl.org/licenses/> for more information. - -=cut - -1; # End of WWW::StrawViewer::Channels |