通用下载器 / youtube-downloader
PHP驱动的youtube-dl替代品
3.0.2
2021-05-31 13:56 UTC
Requires
- php: ^5.6 || ^7.0
- ext-curl: *
- ext-json: *
- athlon1600/php-curl-file-downloader: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.7|6.2|^7.0
README
youtube-downloader
本项目受非常受欢迎的youtube-dl Python包的启发
https://github.com/rg3/youtube-dl
是的,互联网上存在多个基于PHP的youtube下载器,但其中大多数已经多年未更新,或者它们依赖于youtube-dl本身。
纯粹的PHP下载器,能够正常工作,并且保持更新,根本不存在。
此脚本不使用任何JavaScript解释器,不调用shell...仅仅使用纯粹的PHP,没有任何重依赖。
这就是全部了!
⚠️ 法律免责声明
本程序仅供个人使用。未经许可下载版权材料违反了YouTube的服务条款。使用此程序,您对任何版权侵权行为负全部责任。我们不对试图以任何违反YouTube服务条款的方式使用此程序的人负责。
演示应用
这可能不会在所有时候都工作,因为YouTube在收到过多的请求后会对服务器实施短暂的禁令。
在自己的应用上
部署到Heroku
如果您还没有,请先创建一个免费账户
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下载视频的更详细解释将很快写出来。现在,这里有这个
其他链接
- https://github.com/Athlon1600/php-curl-file-downloader
- https://github.com/TeamNewPipe/NewPipeExtractor/blob/d83787a5ca308c4ca4e86e63a8b63c5e7c4708d6/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java
- https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/youtube.py
待办事项列表
- 添加解决YouTube验证码和避免
HTTP 429 Too Many Requests错误的能力。 - 添加分别下载视频和音频流,并使用ffmpeg将它们合并的能力。就像
youtube-dl一样! - 可选命令可以找到所有视频格式。
不使用YouTube API获取关于视频的额外元数据。