php 视频 源码下载,PHP下载哔哩哔哩视频

这是一个使用PHP编写的命令行脚本,用于从哔哩哔哩(B站)下载视频。用户输入BVID后,脚本获取视频信息,包括AID和视频页数,并根据用户提供的Cookie选择清晰度下载视频。下载过程中显示了视频的页面、部分、大小和可用的清晰度。下载的视频保存在指定目录下。
摘要由CSDN通过智能技术生成

请在命令行下使用(需要什么功能自己改):

echo "\e[38;5;83m请输入视频番号(12位BVID):\e[0m" . PHP_EOL . "BVID:";

$bvid = fread(STDIN, 12);

$base_info_url = 'https://api.bilibili.com/x/web-interface/view?bvid=' . $bvid;

$base_info_json = curl($base_info_url);

if (empty($base_info_json)) {

exit("\e[38;5;1m连接建立失败!\e[0m");

}

echo "请求API地址" /*. "\e[38;5;3m" . $base_info_url . "\e[0m"*/ . "成功!" . PHP_EOL;

$base_info_array = json_decode($base_info_json, true);

echo "提取AID为:" . "\e[38;5;5m" . $base_info_array['data']['aid'] . "\e[0m" . PHP_EOL;

echo "一共 " . "\e[38;5;9m" . count($base_info_array['data']['pages']) . "\e[0m 个视频。" . PHP_EOL;

echo '------------------' . PHP_EOL;

echo "提取下载内容" . PHP_EOL;

echo "使用Cookie,不使用直接回车(下载720P需要登录,下载1080P60+需要大会员):" . PHP_EOL;

echo "Cookie:";

$cookie = fread(STDIN, 2048);

if (empty($cookie)) {

echo "没有使用Cookie!" . PHP_EOL;

}

echo "选择画质(默认下载最清晰画质,暂不支持自定义):" . PHP_EOL;

echo '------------------' . PHP_EOL;

foreach ($base_info_array['data']['pages'] as $download) {

$download_link_url = 'https://api.bilibili.com/x/player/playurl?bvid=' . $bvid . '&cid=' . $download['cid'] . '&qn=80&otype=json';

$download_info_json = curl($download_link_url);

$download_info_array = json_decode($download_info_json, true);

echo "正在为你下载第 \e[38;5;87m" . $download['page'] . "\e[0m 节:\e[38;5;187m" . $download['part'] . "\e[0m,文件大小:\e[38;5;137m" . sprintf("%0.2f MiB", $download_info_array['data']['durl'][0]['size'] / 1024 / 1024) . "\e[0m" . PHP_EOL;

echo "该视频支持 " . array_to_words($download_info_array['data']['accept_description'], '、') . " " . count($download_info_array['data']['accept_description']) . " 种清晰度,已自动为你选择最清晰的画质。" . PHP_EOL;

$header = [

'Cookie: ' . $cookie,

'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',

];

$referer = 'https://www.bilibili.com/video/' . $download['cid'];

$video = curl($download_info_array['data']['durl'][0]['url'], $header, $referer);

$file = __DIR__ . '/' . $base_info_array['data']['title'] . '/' . $download['part'] . '.flv';

if (!is_dir(dirname($file))) {

mkdir(dirname($file));

}

file_put_contents($file, $video);

echo "第 " . $download['page'] . " 节下载成功,文件已经存入:\e[38;5;37m" . $file . "\e[0m" . PHP_EOL;

}

/**

* @param string $url

* @param array $header

* @param string|null $referer

* @return string

*/

function curl(string $url, array $header = [], string $referer = null): string

{

$curl = curl_init();

curl_setopt_array($curl, [

CURLOPT_URL => $url,

CURLOPT_RETURNTRANSFER => true,

CURLOPT_AUTOREFERER => true,

CURLOPT_SSL_VERIFYPEER => false,

CURLOPT_SSL_VERIFYHOST => 0,

CURLOPT_HEADER => false,

CURLOPT_HTTPHEADER => $header,

CURLOPT_REFERER => $referer,

//

]);

$result = curl_exec($curl);

curl_close($curl);

return $result;

}

function array_to_words(array $array, $delimit = ' ', $start = '', $end = ''): string

{

$string = '';

foreach ($array as $value) {

$string .= $value . $delimit;

}

$string = rtrim($string, $delimit);

return $string;

}

举例:

【凤凰传奇】歌曲MV合集(收藏)

61a3d4694a8fdee8e46bce87bf6d14bd.png

a85db947755b9cf63efd3cb419b7f506.png

572597a63533a8481785420c9bcc0292.png

f24e77107379368257feb22f4a1fb302.png

1c38c9cf0a2a9939f113b232e01113f4.gif

你好!ICAC,请配合我们调查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值