athlon1600/youtube-downloader

基于PHP的youtube-dl替代品

v4.0.0 2023-11-12 21:57 UTC

README

Build Status GitHub commit activity (branch)

该项目灵感来源于一个非常流行的youtube-dl Python包
https://github.com/ytdl-org/youtube-dl

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

纯粹的基于PHP的youtube下载器,不仅工作,而且持续更新,根本不存在。

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

这就是全部了!

⚠️ 法律声明

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

安装

推荐通过 Composer 安装

composer require athlon1600/youtube-downloader "^4.0"

示例用法

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?...');
  • 传递您自己的cookies/user-agent

如果您尝试下载受年龄限制的视频,YouTube会要求您登录。使此功能正常工作的唯一方法是在您的网页浏览器中登录到您的YouTube帐户,将浏览器中新设置的cookies导出到一个文件中,然后将所有内容传递给youtube-downloader以使用。

$youtube = new YouTubeDownloader();
$youtube->getBrowser()->setCookieFile('./your_cookies.txt');
$youtube->getBrowser()->setUserAgent('Opera 7.6');

另请参阅
https://github.com/ytdl-org/youtube-dl/blob/master/README.md#how-do-i-pass-cookies-to-youtube-dl

  • 在您继续访问YouTube之前...

根据您的地区,您可能会被强制重定向到要求您同意Google的cookie策略的 页面。您可以通过在浏览器实例上使用 consentCookies 方法程序化地同意这些条款,并通过永久绕过警告。示例

$youtube = new YouTubeDownloader();
$youtube->getBrowser()->consentCookies();

它是如何工作的

有关如何从YouTube下载视频的更详细解释将很快发布。目前,有这个

#25 (评论)

其他链接

待办事项列表

  • 允许下载私人视频。
  • 找到一种绕过YouTube限制下载速度的系统的方法,现在大多数视频的下载速度限制在100 kb/s以下...
  • 添加解决YouTube Captcha和避免 HTTP 429 Too Many Requests 错误的能力。
  • 添加分别下载视频和音频流以及使用ffmpeg合并这两个流的能力。就像 youtube-dl 一样!
  • 可选命令,用于查找所有视频格式。
  • 使用YouTube API之外的方法获取视频的附加元数据。