68 lines
3.0 KiB
PHP
68 lines
3.0 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Sakura\API;
|
||
|
|
||
|
class Bilibili
|
||
|
{
|
||
|
private $uid;
|
||
|
private $cookies;
|
||
|
|
||
|
public function __construct() {
|
||
|
$this->uid = akina_option('bilibili_id');
|
||
|
$this->cookies = akina_option('bilibili_cookie');
|
||
|
}
|
||
|
|
||
|
public function get_the_bgm_items($page = 1) {
|
||
|
$uid = $this->uid;
|
||
|
$cookies = $this->cookies;
|
||
|
$url = 'https://api.bilibili.com/x/space/bangumi/follow/list?type=1&pn=' . $page . '&ps=15&follow_status=0&vmid=' . $uid;
|
||
|
$args = array(
|
||
|
'headers' => array(
|
||
|
'Cookie' => $cookies,
|
||
|
'Host' => 'api.bilibili.com',
|
||
|
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97'
|
||
|
)
|
||
|
);
|
||
|
$response = wp_remote_get($url, $args);
|
||
|
$bgmdata = json_decode($response["body"])->data;
|
||
|
return json_encode($bgmdata);
|
||
|
}
|
||
|
|
||
|
public function get_bgm_items($page = 1) {
|
||
|
$bgm = json_decode($this->get_the_bgm_items($page), true);
|
||
|
$totalpage = $bgm["total"] / 15;
|
||
|
if ($totalpage - $page < 0) {
|
||
|
$next = '<span>共追番' . $bgm["total"] . '部,继续加油吧!٩(ˊᗜˋ*)و</span>';
|
||
|
} else {
|
||
|
$next = '<a class="bangumi-next" href="' . rest_url('sakura/v1/bangumi/bilibili') . '?page=' . ++$page . '"><i class="fa fa-bolt" aria-hidden="true"></i> NEXT </a>';
|
||
|
}
|
||
|
$lists = $bgm["list"];
|
||
|
$html = "";
|
||
|
foreach ((array)$lists as $list) {
|
||
|
if (preg_match('/看完/m', $list["progress"], $matches_finish)) {
|
||
|
$percent = 100;
|
||
|
} else {
|
||
|
preg_match('/第(\d+)./m', $list['progress'], $matches_progress);
|
||
|
preg_match('/第(\d+)./m', $list["new_ep"]['index_show'], $matches_new);
|
||
|
$progress = is_numeric($matches_progress[1]) ? $matches_progress[1] : 0;
|
||
|
$total = is_numeric($matches_new[1]) ? $matches_new[1] : $list['total_count'];
|
||
|
$percent = $progress / $total * 100;
|
||
|
}
|
||
|
$html .= '<div class="column">
|
||
|
<a class="bangumi-item" href="https://bangumi.bilibili.com/anime/' . $list['season_id'] . '/" target="_blank" rel="nofollow">
|
||
|
<img class="bangumi-image" src="' . str_replace('http://', 'https://', $list['cover']) . '"/>
|
||
|
<div class="bangumi-info">
|
||
|
<h3 class="bangumi-title" title="' . $list['title'] . '">' . $list['title'] . '</h2>
|
||
|
<div class="bangumi-summary"> ' . $list['evaluate'] . ' </div>
|
||
|
<div class="bangumi-status">
|
||
|
<div class="bangumi-status-bar" style="width: ' . $percent . '%"></div>
|
||
|
<p>' . $list['new_ep']['index_show'] . '</p>
|
||
|
</div>
|
||
|
</div>
|
||
|
</a>
|
||
|
</div>';
|
||
|
}
|
||
|
$html .= '</div><br><div id="bangumi-pagination">' . $next . '</div>';
|
||
|
return $html;
|
||
|
}
|
||
|
}
|