使用youtube-dl从Youtube下载每个搜索结果中的第一个视频?

时间:2016-03-24 03:50:54

标签: video cmd youtube youtube-dl jdownloader

我有一个包含400首歌曲标题的列表,并将它们超链接到搜索结果页面。 Example picture

我同时获得了youtube-dl和J Downloader,但是我不知道在youtube-dl中需要哪些参数来从视频搜索网址列表中下载高质量的mp3 ?我只想让它从每次搜索中下载第一个视频为mp3。

2 个答案:

答案 0 :(得分:0)

我写了一个Ruby脚本(youtube-dl上的包装器),我用它来下载 音频 - 您可以看到它here

提取音频的代码是:

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的经验, 来自here 看来你可以使用命令行工具。

例如,

CSS_SELECTOR="#selector_of_the_first_video"
curl -s $URL | nokogiri -e 'puts $_.at_css("$CSS_SELECTOR").text'

答案 1 :(得分:0)

您的问题并未解释您要对列表的其余部分进行的确切操作。无论如何,我会告诉你如何获得第一个链接的MP3。

  1. 首先,用逗号(,)
  2. 分隔您的网址
  3. 现在用PHP

    获取整个文件
    $file = 'path_to_file';
    $data = file_get_contents($file);
    
  4. 将列表转换为数组

    $songs_list = explode(",", $data);
    
  5. 设置计数并循环遍历数组

    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
             }
       }
    ?>