Skip to content
Extraits de code Groupes Projets
Valider 8601bd9b rédigé par Alexandre Morignot's avatar Alexandre Morignot
Parcourir les fichiers

Playlist support for youtube

parent ce4f671b
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -18,13 +18,67 @@ BEGIN { ...@@ -18,13 +18,67 @@ BEGIN {
$conf = decode_json($json); $conf = decode_json($json);
} }
sub regex_playlist
{
return qr#(?:^|[^!])https?://www.youtube.com/playlist\?[a-zA-Z0-9_=&-]*list=([a-zA-Z0-9_-]+)#;
}
sub regex sub regex
{ {
return qr#(?:^|[^!])https?://(?:www.youtube.com/watch\?[a-zA-Z0-9_=&-]*v=|youtu.be/)([a-zA-Z0-9_-]+)#; return qr#(?:^|[^!])https?://(?:www.youtube.com/watch\?[a-zA-Z0-9_=&-]*v=|youtu.be/)([a-zA-Z0-9_-]+)#;
} }
sub get { sub get_playlist
{
shift;
my $id = shift;
my $ua = LWP::UserAgent->new(
timeout => 30,
env_proxy => 1,
);
my $response = $ua->get($endpoint
.'/playlists?id='.$id
.'&key='.$conf->{'youtube_api_key'}
.'&part=snippet,contentDetails');
die($response->status_line) unless ($response->is_success);
my $content = decode_json($response->decoded_content);
die "playlist not found" if (not scalar @{ $content->{items} });
my $playlist = $content->{'items'}->[0];
my %infos;
$infos{'title'} = $playlist->{'snippet'}->{'title'};
$infos{'duration'} = $playlist->{'contentDetails'}->{'itemCount'};
$infos{'author'} = $playlist->{'snippet'}->{'channelTitle'};
$infos{'site'} = 'youtube';
$infos{'url'} = 'https://www.youtube.com/playlist?list='.$id;
$response = $ua->get($endpoint
.'/playlistItems?playlistId='.$id
.'&key='.$conf->{'youtube_api_key'}
.'&part=snippet');
die($response->status_line) unless ($response->is_success);
$content = decode_json($response->decoded_content);
die "empty playlist" if (not scalar @{ $content->{items} });
my @urls;
foreach my $subcontent (@{ $content->{items} })
{
my $subid = $subcontent->{snippet}{resourceId}{videoId};
push @urls, 'https://www.youtube.com/watch?v='.$subid;
}
$infos{urls} = \@urls;
return %infos;
}
sub get
{
shift; shift;
my $id = shift; my $id = shift;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter