通用下载器/youtube-downloader

PHP驱动的youtube-dl替代品

3.0.2 2021-05-31 13:56 UTC

README

youtube-downloader

本项目受非常受欢迎的youtube-dl Python包的启发
https://github.com/rg3/youtube-dl

是的,互联网上存在多个基于PHP的youtube下载器,但其中大多数已经多年未更新,或者它们依赖于youtube-dl本身。

纯粹的PHP下载器,能够正常工作,并且保持更新,根本不存在。

此脚本不使用任何JavaScript解释器,不调用shell...仅仅使用纯粹的PHP,没有任何重依赖。

这就是全部了!

⚠️ 法律免责声明

本程序仅供个人使用。未经许可下载版权材料违反了YouTube的服务条款。使用此程序,您对任何版权侵权行为负全部责任。我们不对试图以任何违反YouTube服务条款的方式使用此程序的人负责。

演示应用

这可能不会在所有时候都工作,因为YouTube在收到过多的请求后会对服务器实施短暂的禁令。

在自己的应用上

部署到Heroku

Deploy

如果您还没有,请先创建一个免费账户
https://signup.heroku.com/

安装

推荐通过Composer安装

composer require athlon1600/youtube-downloader "^3.0"

本地运行

php -S localhost:8000 -t vendor/athlon1600/youtube-downloader/public

旧版本

关于安装和使用版本2的说明可以在这里找到
https://github.com/Athlon1600/youtube-downloader/tree/2.x

用法

use YouTube\YouTubeDownloader;
use YouTube\Exception\YouTubeException;

$youtube = new YouTubeDownloader();

try {
    $downloadOptions = $youtube->getDownloadLinks("https://www.youtube.com/watch?v=aqz-KE-bpKQ");

    if ($downloadOptions->getAllFormats()) {
        echo $downloadOptions->getFirstCombinedFormat()->url;
    } else {
        echo 'No links found';
    }

} catch (YouTubeException $e) {
    echo 'Something went wrong: ' . $e->getMessage();
}

getDownloadLinks方法返回一个DownloadOptions类型对象,其中包含一个流链接数组 - 一些是音频,一些是音频和视频合并为一个。

对于典型使用,您可能感兴趣的是处理合并流,在这种情况下,有getCombinedFormats方法。

其他功能

  • 从您的服务器直接流式传输YouTube视频
$youtube = new \YouTube\YouTubeStreamer();
$youtube->stream('https://r4---sn-n4v7knll.googlevideo.com/videoplayback?...');

它是如何工作的

关于如何从YouTube下载视频的更详细解释将很快写出来。现在,这里有这个

Athlon1600#25(评论)

其他链接

待办事项列表

  • 添加解决YouTube验证码和避免HTTP 429 Too Many Requests错误的能力。
  • 添加分别下载视频和音频流,并使用ffmpeg将它们合并的能力。就像youtube-dl一样!
  • 可选命令可以找到所有视频格式。
  • 不使用YouTube API获取关于视频的额外元数据。