Arquivos
pipe-viewer/lib/WWW/PipeViewer/PlaylistItems.pm
T
2020-10-30 18:25:50 +02:00

147 linhas
3.3 KiB
Perl

package WWW::PipeViewer::PlaylistItems;
use utf8;
use 5.014;
use warnings;
=head1 NAME
WWW::PipeViewer::PlaylistItems - Manage playlist entries.
=head1 SYNOPSIS
use WWW::PipeViewer;
my $obj = WWW::PipeViewer->new(%opts);
my $videos = $obj->videos_from_playlistID($playlist_id);
=head1 SUBROUTINES/METHODS
=cut
sub _make_playlistItems_url {
my ($self, %opts) = @_;
return
$self->_make_feed_url(
'playlistItems',
pageToken => $self->page_token,
%opts
);
}
=head2 add_video_to_playlist($playlistID, $videoID; $position=1)
Add a video to given playlist ID, at position 1 (by default)
=cut
sub add_video_to_playlist {
my ($self, $playlist_id, $video_id, $position) = @_;
$self->get_access_token() // return;
$playlist_id // return;
$video_id // return;
$position //= 0;
my $hash = {
"snippet" => {
"playlistId" => $playlist_id,
"resourceId" => {
"videoId" => $video_id,
"kind" => "youtube#video"
},
"position" => $position,
}
};
my $url = $self->_make_playlistItems_url(pageToken => undef);
$self->post_as_json($url, $hash);
}
=head2 favorite_video($videoID)
Favorite a video. Returns true on success.
=cut
sub favorite_video {
my ($self, $video_id) = @_;
$video_id // return;
$self->get_access_token() // return;
my $playlist_id = $self->get_playlist_id('favorites', mine => 'true') // return;
$self->add_video_to_playlist($playlist_id, $video_id);
}
=head2 videos_from_playlist_id($playlist_id)
Get videos from a specific playlistID.
=cut
sub videos_from_playlist_id {
my ($self, $id) = @_;
$self->_get_results($self->_make_feed_url("playlists/$id"));
}
=head2 favorites($channel_id)
=head2 uploads($channel_id)
=head2 likes($channel_id)
Get the favorites, uploads and likes for a given channel ID.
=cut
=head2 favorites_from_username($username)
=head2 uploads_from_username($username)
=head2 likes_from_username($username)
Get the favorites, uploads and likes for a given YouTube username.
=cut
{
no strict 'refs';
foreach my $name (qw(favorites uploads likes)) {
*{__PACKAGE__ . '::' . $name . '_from_username'} = sub {
my ($self, $username) = @_;
$self->videos_from_username($username);
};
*{__PACKAGE__ . '::' . $name} = sub {
my ($self, $channel_id) = @_;
$self->videos_from_channel_id($channel_id);
};
}
}
=head1 AUTHOR
Trizen, C<< <echo dHJpemVuQHByb3Rvbm1haWwuY29tCg== | base64 -d> >>
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc WWW::PipeViewer::PlaylistItems
=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::PipeViewer::PlaylistItems