哔哩哔哩用户相簿api读取
起因是B站有个官方账号【壁纸喵】,她不定期会在动态里发布B站的壁纸。而B站默认动态里面的图片都会在相簿里。【PS:B站画友项目好像凉了,画友里面画师的图好像也存到相册里了】
通过F12我们可以发现这个api地址
https://api.bilibili.com/x/dynamic/feed/draw/doc_list?uid=6823116&page_num=0&page_size=30&biz=all&jsonp=jsonp
其中uid就是用户id,而page_num就是页面,页面默认是从0开始的,0就是第一页。
由此我们就可以书写自己的api了,首先新建个bizhi.php文件用于写php代码,另外新建立个bizhi文件夹用于缓存,代码如下:
<?php
header("Access-Control-Allow-Origin: *");
define('CACHE', true);
define('CACHE_TIME', 3600*3);//缓存时间间隔为3小时
header('Content-type:text/json');
if(isset($_GET['uid'])&&isset($_GET['page'])){
header('Content-type:text/json');
$geturl = 'https://api.bilibili.com/x/dynamic/feed/draw/doc_list?uid=' . $_GET['uid'] . '&page_num='. $_GET['page'] .'&page_size=30&biz=all&jsonp=jsonp';
$file_path = __DIR__ . '/bizhi/uid-' . $_GET['uid'] . 'page-'. $_GET['page'] .'.json';
}
if (file_exists($file_path)) {
if ($_SERVER['REQUEST_TIME'] - filectime($file_path) < CACHE_TIME) {
echo file_get_contents($file_path);
exit;
}
}
$json_strings=MCurl($geturl);
if (CACHE) {file_put_contents($file_path, $json_strings);}
echo $json_strings;
function MCurl($url){
$headers[] = "User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)";
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$tmpInfo = curl_exec($curl);
//关闭URL请求
curl_close($curl);
return $tmpInfo;
}
?>
然后我们访问bizhi.php?uid=你想要获取的用户的id&page=页码,就可以获取到用户的相簿数据了,数据默认会缓存三个小时(代码中有注释,如有需要可自行修改),避免多次请求B站api导致被封ip的情况。
最后得到数据我们就可以为其书写界面了,不过需要给网页加个<meta name="referrer" content="never">
来避免图片防盗链的问题,下面是我弄的效果。
总结一下,其实大用没什么大用,毕竟谁的动态也不是纯发壁纸图片的,不过可以考虑自己弄个b站小号,动态只发壁纸,这样就可以打造个人相册了。
【本文由作者zeze投稿至cmy.cn,转载请注明出处,侵权必追究】