B站来源的Typecho追番页插件
感谢原插件(WikimoeBangumi)的创作者 广树,我所做的仅仅是在其基础之上进行了些许改动而已。
不想看废话的,就请直接拉到最后。
最近更新
1.0.0.2411, 2024.11.23更新
- 新增版本检测功能:新版本发布时,插件设置页将弹出通知
- 新增Cookie有效性检测功能:当填入的Cookie失效,插件设置页将弹出通知
1.0.0.246, 2024.6.16更新
- 修正了245版本中,番剧块背景变的杂乱的问题
1.0.0.245, 2024.5.13更新
- 考虑了好长时间如何能加快封面加载速度,今天意识到给封面路径加个限定参数便可以通过官方方法压缩图片质量以降低文件体积…现在速度大概是终于可以保证正常浏览了——即使事前没有手工访问构建缓存。
1.0.0.2210, 2022.10.23更新
- 合并请求,修复undefined问题
- 自定义翻页键样式输入框可以随意回车了
1.0.0.2010, 2020.10.25更新
- 进一步避免jQuery对主题的依赖
- 支持自定义每页数量
- 支持翻页按钮自定义
1.0.0.207, 2020.7.12更新
- 隔离jquery依赖
- 1.0.0.204, 2020.4.22更新
追番信息分页显示,每页30个 - 1.0.0.202, 2020.2.8更新
兼容伪静态站 1.0.0.201c, 2020.1.20更新
- 进一步撤销了no-referrer标记
- 现在番剧封面不直接从b站获取了,会保存到服务器供使用
注意:因为现在需要下载封面到服务器,所以设置好插件后应先访问一次以构建封面缓存。时间可能较长,耐心等待。
- 1.0.0.201b 20200116更新
新增:番剧块背景可调(番剧封面/空白)
更新请先禁用再启用 1.0.0.201 20200115更新
- 修复了评论与番剧封面不兼容的问题
- 优化了载入速度。理论上每多45个番剧,载入速度能提升2倍
- 现在的番剧封面默认走https协议了
一、为什么想做这个
自打从WP转到Typecho,我就突然有了浏览独立博客的习惯。但博客内容并不是我浏览的重点所在,我更喜欢去看每位博客作者的 关于 页面。真的有意思。
除此之外,我很好奇每个博客的结构。比如都有哪些分类,页面都有什么元素之类的。这关注点有点儿奇怪,不是吗?
但不知是不是我的选择性记忆,我逐渐发现不少的博客都有一个追番页。你说它有什么用吗?我其实没感觉有啥用说实话…所以我也一直没怎么太注意过这种插件。直到我开始应用了看板作为我的进度及备忘工具之后,突然感觉追番页这种有条理的东西,放在那儿也挺有意思的啊。于是便简单搜了搜这类插件。自然,如果你检索过这种插件,那么仅有的两个结果你大概也就知道了:我使用的这个主题的大佬做的熊猫追番,以及WikimoeBangumi。这两个的来源都是 Bangumi 的API,而我从来都是在B站上头(不管是看还是追)的,单开一个账号我也想不起来去打理,又白消耗人家一丁点数据库空间。所以,我便尝试着把WikimoeBangumi改造,用B站的api来实现一个追番插件了。
二、现在成什么样了
每天两小时,连蒙带猜的搞了两天,已经改的差不多了。用抽风Crazy
这个头油怪的账号试了一下(不,他并不认识我,之后你会明白为什么可以拿别人账号测试),83个追番加载的速度还算可以接受吧。刨去我的服务器从德国向B站请求数据->B站返回给德国->处理好后将网页发送到圣何塞->圣何塞转送给北京这种由于世界人民大团结而产生的延迟,我认为3秒加载还是可以接受的。
主要更改了哪些呢?
- api:这是当然的。现在会通过B站来请求追番数据了
- 登录方式:大佬原本的插件是通过用户名密码,很友好的登陆的。但是B站的第三方登录需要API Key,否则需要破一道图片验证码…这太麻烦了,所以我改成了直接用cookie登录。自然,插件设置页变更成了填写UID和cookie。所以设置的时候有点儿麻烦,但恕我才疏学浅,实在想不到怎么能比较方便的实现登录了…
- 块显示内容:原本插件会显示中文番剧名、外文番剧名、首播日期、进度。现在更改成了中文番剧名、最后更新的剧集名、首播日期、进度。
- 进度条显示内容:原本是简洁的
当前话数/总话数
(类似10/13
、5/未知
),但B站的剧集数并没那么规矩,而好在B站api直接提供了一个当前观看状态的值(类似于已看完第13话
、已看完PV1
、看到第2话 1:37
这种),顺便为了友好化未知
这种冷冰冰的词,所以更改成了观看状态(截掉了具体的观看位置)/共 num 话
(类似于已看完第13话/共 13 话
、已看完PV1/未完结
、看到第2话/共 12 话
) - css:稍微的调整了块高度,使其在RAW主题上可以更好地显示;亦调整了图片长宽,避免变形;换成了em单位,对于不同分辨率,显示应该更好一些了?还调整了进度条,现在当番剧未完结时,进度会显示成50%了。
- (201b新增)css: 块背景可选透明还是番剧封面
- 函数变更:整体到底是麻烦了还是简单了我也说不清,总之删掉了部分函数,更改了载入追番的逻辑(B站API默认不能直接获取到所有,但是它会返回一个追番总数。)分页获取,提供上下翻页按钮,更改了curl的方法(加入了伪装登录用的各种需要的头),自然也更改了各种变量对应的json字段,最后增加了一个函数,用于截掉详细进度信息。
- (201c新增)函数:增加了下载封面到服务器的方法。现在可以完全规避b站禁止跨域导致的封面403问题了。
- (2010新增)函数: 可以自定义每页展示的番剧数量以及翻页键按钮样式了。
- (207新增)依赖:独立了jQuery依赖,使得不再要求主题带有jQuery库,(2010新增)并且包含在插件中,不必再担心获取js速度的问题了。
- (2411新增)js:增加了插件版本检测功能。现在,每有新版本发布,在插件设置页面都将自动弹出通知引导下载。
- (2411新增)函数:增加了Cookie有效性验证方法。现在当填入的Cookie过期时,插件设置页面将自动提示便于及时修改。
效果 看这里
三、怎么用?
注意
你的博客根目录下不存在bangumi
文件。注意是文件,文件夹是没问题的。因为封面会保存到这个文件夹内,所以如果存在同名文件夹没有关系(共用就好),但文件就不成了。
a、插件部署
clone或下载zip,解压放到你的Typecho文件夹/usr/plugins/
,并更改文件夹名为BiliBangumi
,启用即可。
b、番剧页
参考WikimoeBangumi的部署方法。只不过语句要改成<?php BiliBangumi_Plugin::output(); ?>
c、插件设置
2010版本开始,设置内容从UID、cookie两项增加到了5项:UID、cookie、块背景、每页数量和自定义翻页键。
UID很好说,直接把你的BilibiliUID填入即可。此时会有两种情况:
- 如果你的追番信息是公开的(即别人可以从你的主页看到你追的番):这时候你的追番页应该就可以显示出追番信息了——除了进度相关是失效的。这就是为什么我可以用头油怪的账号做实验。
- 如果你的追番信息是隐藏的,或者说你想要显示出追番进度,那么就需要“登录”——也就是填入cookie。
至于块背景,你可以选择使用番剧封面还是默认背景色(默认是透明的);每页数量则定义了每一页中展示的番剧数量,默认是10。
自定义翻页键则属于比较高级的设置项。可通过编写css自定义翻页按钮的样式实现更细致的美化。这里只需使用css中属性: 变量;
的语法顺次写入即可。
d、所以如何获取cookie?
- 在Bilibili登录你的账号(电脑网页端,推荐使用Chrome)
- 点击头像,进入个人主页(此时网址应该是
space.bilibili.com/uid号
。如果uid号后面还有一堆字符,删掉即可) - 按下万能的
F12
,切换到Network
标签 - 清空一下Network里边的内容,然后
F5
刷新 - 不出意外,此时在Network列表内,应该有一项是以UID为名称的条目。点击它
- 弹出一个预览窗格,切换到
Headers
标签页 - 在
Request Headers
栏目下,会有一个cookie
项目。把这个的值复制下来,粘贴到插件设置页,保存 - enjoy
Cookie有寿命,无法保证长期有效。因此从1.0.0.2411版本开始,插件加入了Cookie有效性检测功能。当填入的Cookie失效,插件设置页面将弹出提示,便于及时更新设置项。
e、疑难解答
Q: 封面获取逻辑
A:因为使用no-referrer
总会间歇性的失效导致封面无法获取,所以从版本201c
开始,封面获取逻辑改为从服务器自身获取:
- 第一次进入到追番列表的番剧,自动去b站下载封面到
typecho文件夹/bangumi/
下 - 之后每次访问,封面就会从上述的文件夹获取封面文件了
因为需要下载,所以在初次启用插件时,最好在设置好后自己先访问一次以完成封面下载工作。受限于服务器传输速度和追番数量,第一次访问加载的时间可能会很长,耐心等待封面下载完成即可。
想清除封面文件,只需清理typecho根目录/bangumi
即可
Q:迷の版本号
A:是一个拼接出的结果:原插件版本号.更新日期年份后两位+月份
。这里边我只会更新我自己的版本号部分,原插件版本号会一直保留原样,作为基于哪个版本的参照。这是我的习惯,就像我喜欢留点儿缺陷,后期刷版本号的一种执念
四、更多信息
下载地址:https://gitee.com/stsiao/typecho_bangumi_bili
任何问题,留在这里吧。码云的issue我可能很难想起来去看…
1. https://blog.sspirits.top/archives/typecho-anime-list-plugin 这个用短代码更简单,我目前就用的这个
2. https://qwq.best/dev/84.html 这个是B站番剧的 —— kizx 于 发表。 回复TA
。看看你插件的文件夹名字对不对 —— 等我稍后补充昵称 [作者] 于 发表。
但是,我的图片应该是这个地址https://xiaowangwang.top/bangumi/28541.jpg
怎么办啊 —— xiaowangwang 于 发表。 回复TA
请问以下怎么设置权限呢,我把整个web文件夹都设置为可读写了 —— Diego 于 发表。 回复TA
https://nmsl.pet/bf.html
我的追番似乎有点多,太长了导致了一些bug
鼠标放上去地下的基本上全没了,移开才出现,如果可以的话请您看一下,或者教一下我怎么弄翻页的那种,谢谢 —— 绯酒 于 发表。 回复TA
新手建站对源码不是太理解~ —— Magma 于 发表。 回复TA
有点迷惑,不知道如何解决
页面地址:https://katcloud.cn/gumi.html
—— DandyChan 于 发表。 回复TA在文章里说明了:https://katcloud.cn/archives/19/
甚至还pull了个request
不过方法实在暴力,还是希望大佬能debug一下 —— DandyChan 于 发表。 回复TA
Undefined array key "pn" in
怎么解决 —— 苏晓晴 于 发表。 回复TA