App-MHFS
view release on metacpan or search on metacpan
lib/MHFS/Plugin/Youtube.pm view on Meta::CPAN
return undef if(! $qs->{'id'});
my $media;
if(defined $qs->{'media'} && (defined $self->{'fmts'}{$qs->{'media'}})) {
$media = $qs->{'media'};
}
else {
$media = 'video';
}
return $qs->{'id'} . '_' . $media;
}
sub new {
my ($class, $settings, $server) = @_;
my $self = {'settings' => $settings};
bless $self, $class;
$self->{'routes'} = [
['/youtube', sub {
my ($request) = @_;
$self->onYoutube($request);
}],
['/yt', sub {
my ($request) = @_;
$self->onYoutube($request);
}],
['/ytmusic', sub {
my ($request) = @_;
$request->{'qs'}{'media'} //= 'music';
$self->onYoutube($request);
}],
['/ytaudio', sub {
my ($request) = @_;
$request->{'qs'}{'media'} //= 'music';
$self->onYoutube($request);
}],
['/ytplayer', sub {
my ($request) = @_;
my $html = $self->searchbox($request);
$html .= $self->ytplayer($request);
$request->SendHTML($html);
}],
['/ytembedplayer', sub {
my ($request) = @_;
$request->SendHTML($self->ytplayer($request));
}],
];
$self->{'fmts'} = {'music' => 'bestaudio', 'video' => 'best'};
$self->{'minsize'} = '1048576';
say __PACKAGE__.': adding video format yt';
$server->{'loaded_plugins'}{'MHFS::Plugin::GetVideo'}{'VIDEOFORMATS'}{yt} = {'lock' => 1, 'ext' => 'yt', 'plugin' => $self};
my $pstart = __PACKAGE__.": ";
# check for youtube-dl and install if not specified
my $youtubedl = $settings->{'Youtube'}{'youtube-dl'};
my $installed;
if(!$youtubedl) {
my $mhfsytdl = $settings->{'GENERIC_TMPDIR'}.'/youtube-dl';
if(! -e $mhfsytdl) {
say $pstart."Attempting to download youtube-dl";
if(system('curl', '-L', 'https://yt-dl.org/downloads/latest/youtube-dl', '-o', $mhfsytdl) != 0) {
say $pstart . "Failed to download youtube-dl. plugin load failed";
return undef;
}
if(system('chmod', 'a+rx', $mhfsytdl) != 0) {
say $pstart . "Failed to set youtube-dl permissions. plugin load failed";
return undef;
}
$installed = 1;
say $pstart."youtube-dl successfully installed!";
}
$youtubedl = $mhfsytdl;
}
elsif( ! -e $youtubedl) {
say $pstart . "youtube-dl not found. plugin load failed";
return undef;
}
$self->{'youtube-dl'} = $youtubedl;
# update if we didn't just install
if(! $installed) {
say $pstart . "Attempting to update youtube-dl";
if(fork() == 0)
{
system "$youtubedl", "-U";
exit 0;
}
}
return $self;
}
1;
( run in 1.364 second using v1.01-cache-2.11-cpan-39bf76dae61 )