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
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -18,13 +18,67 @@ BEGIN {
$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
{
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;
my $id = shift;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter