我有一个包含 400 首歌曲名称的列表,并将它们超链接到搜索结果页面。示例图片
我有 youtube-dl 和 J Downloader,但不知道 youtube-dl 中需要哪些参数才能从视频的搜索 URL 列表中下载高质量的 mp3?我只希望它将每次搜索中的第一个视频下载为 mp3。
我有一个包含 400 首歌曲名称的列表,并将它们超链接到搜索结果页面。示例图片
我有 youtube-dl 和 J Downloader,但不知道 youtube-dl 中需要哪些参数才能从视频的搜索 URL 列表中下载高质量的 mp3?我只希望它将每次搜索中的第一个视频下载为 mp3。
我写了一个 Ruby 脚本(youtube-dl 上的包装器),我用它来下载音频 - 你可以在这里看到
提取音频的代码是:
DESTINATION_PATH="/home/max/Downloads"
URL="https://www.youtube.com/watch?v=cASW7BFWf6U"
cd $DESTINATION_PATH && youtube-dl --extract-audio --prefer-ffmpeg --audio-format mp3 --yes-playlist --audio-quality 3 $URL`
有了这个,您可以使用您选择的 HTML 解析库从 youtube 的搜索结果中获取第一个视频。我个人有使用 Nokogiri 的经验,从这里 看来您可以使用命令行工具。
例如,
CSS_SELECTOR="#selector_of_the_first_video"
curl -s $URL | nokogiri -e 'puts $_.at_css("$CSS_SELECTOR").text'
您的问题并没有解释您要对列表的其余部分做什么。无论如何,我将向您展示如何获取第一个链接的 MP3。
现在在 PHP 中获取整个文件
$file = 'path_to_file';
$data = file_get_contents($file);
将列表变成数组
$songs_list = explode(",", $data);
设置计数并循环遍历数组
foreach ($songs_list as $key => $song) {
if ($count == 1) {
$commad = 'youtube-dl --extract-audio --audio-format mp3 youtube_video_url_here';
shell_exec($commad); // now audio of first video will be downloaded as MP3
} else {
// do the rest of your work on list
}
}
下面是完整的脚本
<?php
$file = 'path_to_file';
$data = file_get_contents($file);
$songs_list = explode(",", $data);
$count = 1;
foreach ($songs_list as $key => $song) {
if ($count == 1) {
$commad = 'youtube-dl --extract-audio --audio-format mp3 youtube_video_url_here';
shell_exec($commad); // now audio of first video will be downloaded as MP3
} else {
// do the rest of your work on list
}
}
?>