replyPolitely('L\'url n\'est pas conforme'); } if (!in_array($type, ['', 'audio', 'video'], true)) { $bot->replyPolitely('Je n\'ai pas compris ce que je devais faire'); } $youtubedl = self::getYoutubeDl($bot); if (in_array($type, ['', 'audio'], true)) { $type = 'l\'audio'; exec(sprintf('%s --extract-audio --audio-format mp3 -o %s%s %s &> /dev/null &', $youtubedl, static::getDownloadFolder($bot), '%(upload_date)s-%(uploader)s-%(title)s.%(ext)s', $url)); } else { $type = 'la vidéo'; exec(sprintf('%s -f bestvideo+bestaudio/best -o %s%s %s &> /dev/null &', $youtubedl, static::getDownloadFolder($bot), '%(upload_date)s-%(uploader)s-%(title)s.%(ext)s', $url)); } $bot->replyPolitely(sprintf('Je %s %s', $action, $type)); } public static function getDescription(): string { return 'Youtubedl wrapper'; } private static function getYoutubeDl(Bot $bot): string { $youtubedl_bin = $bot->getConfig()['youtube-dl']['bin']; if (empty($youtubedl_bin)) { exec('which youtube-dl', $output); $youtubedl_bin = current($output); } return $youtubedl_bin; } private static function getDownloadFolder(Bot $bot): string { return $bot->getConfig()['youtube-dl']['folder'] ?? __DIR__.'/../../'; } }