B站来源的Typecho追番页插件

感谢原插件(WikimoeBangumi)的创作者 广树,我所做的仅仅是在其基础之上进行了些许改动而已。
不想看废话的,就请直接拉到最后。


最近更新

  • 1.0.0.201c, 2020.1.20更新

    1. 进一步撤销了no-referrer标记
    2. 现在番剧封面不直接从b站获取了,会保存到服务器供使用
      注意:因为现在需要下载封面到服务器,所以设置好插件后应先访问一次以构建封面缓存。时间可能较长,耐心等待。
  • 1.0.0.201b 20200116更新
    新增:番剧块背景可调(番剧封面/空白)
    更新请先禁用再启用
  • 1.0.0.201 20200115更新

    1. 修复了评论与番剧封面不兼容的问题
    2. 优化了载入速度。理论上每多45个番剧,载入速度能提升2倍
    3. 现在的番剧封面默认走https协议了

一、为什么想做这个

自打从WP转到Typecho,我就突然有了浏览独立博客的习惯。但博客内容并不是我浏览的重点所在,我更喜欢去看每位博客作者的 关于 页面。真的有意思。

除此之外,我很好奇每个博客的结构。比如都有哪些分类,页面都有什么元素之类的。这关注点有点儿奇怪,不是吗?

但不知是不是我的选择性记忆,我逐渐发现不少的博客都有一个追番页。你说它有什么用吗?我其实没感觉有啥用说实话…所以我也一直没怎么太注意过这种插件。直到我开始应用了看板作为我的进度及备忘工具之后,突然感觉追番页这种有条理的东西,放在那儿也挺有意思的啊。于是便简单搜了搜这类插件。自然,如果你检索过这种插件,那么仅有的两个结果你大概也就知道了:我使用的这个主题的大佬做的熊猫追番,以及WikimoeBangumi。这两个的来源都是 Bangumi 的API,而我从来都是在B站上头(不管是看还是追)的,单开一个账号我也想不起来去打理,又白消耗人家一丁点数据库空间。所以,我便尝试着把WikimoeBangumi改造,用B站的api来实现一个追番插件了。

二、现在成什么样了

每天两小时,连蒙带猜的搞了两天,已经改的差不多了。用抽风Crazy这个头油怪的账号试了一下(不,他并不认识我,之后你会明白为什么可以拿别人账号测试),83个追番加载的速度还算可以接受吧。刨去我的服务器从德国向B站请求数据->B站返回给德国->处理好后将网页发送到圣何塞->圣何塞转送给北京这种由于世界人民大团结而产生的延迟,我认为3秒加载还是可以接受的(这地方我觉得我以后会改一改。我觉得…)

主要更改了哪些呢?

  • api:这是当然的。现在会通过B站来请求追番数据了
  • 登录方式:大佬原本的插件是通过用户名密码,很友好的登陆的。但是B站的第三方登录需要API Key,否则需要破一道图片验证码…这太麻烦了,所以我改成了直接用cookie登录。自然,插件设置页变更成了填写UID和cookie。所以设置的时候有点儿麻烦,但恕我才疏学浅,实在想不到怎么能比较方便的实现登录了…
  • 块显示内容:原本插件会显示中文番剧名、外文番剧名、首播日期、进度。现在更改成了中文番剧名、最后更新的剧集名、首播日期、进度。
  • 进度条显示内容:原本是简洁的当前话数/总话数(类似10/135/未知),但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问题了。

效果 看这里

三、怎么用?

注意

你的博客根目录下不存在bangumi文件。注意是文件,文件夹是没问题的。因为封面会保存到这个文件夹内,所以如果存在同名文件夹没有关系(共用就好),但文件就不成了。

a、插件部署

clone或下载zip,解压放到你的Typecho文件夹/usr/plugins/,并更改文件夹名为BiliBangumi,启用即可。

b、番剧页

如果你也使用RAW主题,可以将插件页下的bangumi.php拷贝到你的Typecho文件夹/usr/themes/RAW/下,然后新建独立页面,自定义模板选择bangumi,发布即可。

如果是其他主题,那么可以参考WikimoeBangumi的部署方法。只不过语句要改成<?php BiliBangumi_Plugin::output(); ?>

c、插件设置

目前一共两个设置项:UID、cookie。

UID很好说,直接把你的BilibiliUID填入即可。此时会有两种情况:

  • 如果你的追番信息是公开的(即别人可以从你的主页看到你追的番):这时候你的追番页应该就可以显示出追番信息了——除了进度相关是失效的。这就是为什么我可以用头油怪的账号做实验。
  • 如果你的追番信息是隐藏的,或者说你想要显示出追番进度,那么就需要“登录”——也就是填入cookie。

d、所以如何获取cookie?

  1. 在Bilibili登录你的账号(电脑网页端,推荐使用Chrome)
  2. 点击头像,进入个人主页(此时网址应该是space.bilibili.com/uid号。如果uid号后面还有一堆字符,删掉即可)
  3. 按下万能的F12,切换到Network标签
  4. 清空一下Network里边的内容,然后F5刷新
  5. 不出意外,此时在Network列表内,应该有一项是以UID为名称的条目。点击它
  6. 弹出一个预览窗格,切换到Headers标签页
  7. Request Headers栏目下,会有一个cookie项目。把这个的值复制下来,粘贴到插件设置页,保存
  8. enjoy

e、疑难解答


Q: 封面逻辑变化

A:因为使用no-referrer总会间歇性的失效导致封面无法获取,所以从版本201c开始,封面获取逻辑改为从服务器自身获取:

  • 第一次进入到追番列表的番剧,自动去b站下载封面到typecho文件夹/bangumi/
  • 之后每次访问,封面就会从上述的文件夹获取封面文件了

因为需要下载,所以在初次启用插件时,最好在设置好后自己先访问一次以完成封面下载工作。受限于服务器传输速度和追番数量,第一次访问加载的时间可能会很长,耐心等待封面下载完成即可。

想清除封面文件,只需清理typecho根目录/bangumi即可

Q:迷の版本号

A:是一个拼接出的结果:原插件版本号.日期后两位+月份。这里边我只会更新我自己的版本号部分,原插件版本号会一直保留原样,作为基于哪个版本的参照。这是我的习惯,就像我喜欢留点儿缺陷,后期刷版本号的一种执念

四、更多信息

下载地址:https://gitee.com/stsiao/typecho_bangumi_bili


任何问题,留在这里吧。码云的issue我可能很难想起来去看…

创建时间:2019年12月13日
最后修订:2020年01月21日
另请参阅:
typecho博客
上一篇
打赏
下一篇

添加新评论

已有 28 条评论

 猫猫 3 个月前 • |

有什么办法让他获取的图片资源是https的吗

 等我稍后补充昵称 3 个月前 • |
@猫猫

Action.php 里边,找这句话 $img_grid = $value->cover; 后边使用字符串替换,把http换成https就行了。可以参考wikimoebangumi相同位置的语句

 kizx 3 个月前 • |

想起我曾经也到处找这个追番插件,补充两个我找到的
1. https://blog.sspirits.top/archives/typecho-anime-list-plugin 这个用短代码更简单,我目前就用的这个
2. https://qwq.best/dev/84.html 这个是B站番剧的

 等我稍后补充昵称 3 个月前 • |
@kizx

嗯 好多调bangumi的接口的追番插件。第二个我没尝试,不过看介绍说的,只支持handsome主题,而且貌似没有登陆动作,所以像我这种不公开追番信息的账户应该不可用

 猫猫 3 个月前 • |

解决了,但是https403 ,不想添加无来路,算了,还是不搞了吧

 等我稍后补充昵称 3 个月前 • |
@猫猫

等迭代吧 我好像想到怎么搞这个了。刷版本号是我的执念

 猫猫 3 个月前 • |
@等我稍后补充昵称

好的,感谢up主弄得这个插件,期待更新

 等我稍后补充昵称 2 个月前 • |
@猫猫

有兴趣可以试试现在的 封面下载到服务器本地了。无来路、https啥的就完全不需要了

 猫猫 2 个月前 • |
@等我稍后补充昵称

更新了,还是有点问题,chrome还是403,火狐浏览器正常,手机也显示不了,不知道什么原因,应该不是缓存

 等我稍后补充昵称 2 个月前 • |
@猫猫

你这是有啥缓存吧 还是解压之后没覆盖?我看图片链接还是i0.xxx的
。看看你插件的文件夹名字对不对

 猫猫 2 个月前 • |
@等我稍后补充昵称

啊,解决了,估计是第一次删错了文件,把更新后的当成旧版的给删了

 xiaowangwang 1 个月前 • |

大佬你好,我的网站在读取图片是会读取https://xiaowangwang.top/index.php/bangumi/28541.jpg这个地址
但是,我的图片应该是这个地址https://xiaowangwang.top/bangumi/28541.jpg
怎么办啊

 等我稍后补充昵称 1 个月前 • |
@xiaowangwang

这是没开伪静态吧?刚更新了一版应该可以了。试一下

 xiaowangwang 1 个月前 • |

谢谢大佬,解决了

 ChirmyRam 1 星期前 • |

追番页面一直显示数据加载,服务器也没有bangumi文件夹生成,手动添加bangumi文件夹给与完全访问权限后,刷新页面提示403 forbidden nginx,请问这个如何解决呢?

 等我稍后补充昵称 1 星期前 • |
@ChirmyRam

看手工建立的bangumi有没有图片文件生成,没有的话就是根目录权限的问题,或者是selinnux设置。先查根目录权限,不行再看这个https://blog.csdn.net/qq_28208381/article/details/96287680

 等我稍后补充昵称 1 星期前 • |
@ChirmyRam

我看过你的页面了,你可能得需要补一个jQuery。在<head>下面加一行<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>

 ChirmyRam 1 星期前 • |
@等我稍后补充昵称

我用的主题的使用文档中说了主题自带了 jQuery,不需要也不可以再次引入 jQuery 依赖。

 等我稍后补充昵称 1 星期前 • |
@ChirmyRam

可是我看控制台,有找不到jQuery的报错 如果确定不是jQuery的问题,那就着重看文件夹权限吧

 Ash 1 星期前 • |
@等我稍后补充昵称

我也是同样的情况怎么办,自己创建了那个文件夹也没用

 Ash 1 星期前 • |
@等我稍后补充昵称

但是我不会403

 Ash 1 星期前 • |
@等我稍后补充昵称

解决了,权限问题。。。

 ChirmyRam 2 天前 • |
@等我稍后补充昵称

问题解决了,我在服务器里面编辑的追番页面叫bangumi.php,独立页面的自定义slug也取名叫做bangumi,只要这俩名字一样就报404,改了之后才正常。

 等我稍后补充昵称 2 天前 • |
@ChirmyRam

解决就好,这我可真是想不到

 Diego 6 天前 • |

大大,我把文件夹名改了,但有且只有这个插件会serveerror500,可以解决吗

 等我稍后补充昵称 6 天前 • |
@Diego

着重还是看权限吧…因为需要向服务器写入,这地方权限不搞好容易出问题。而且我现在访问你的博客直接报503?

 Diego 5 天前 • |
@等我稍后补充昵称

大大,现在应该可以访问了,昨天服务器抽了,apache莫名关闭
请问以下怎么设置权限呢,我把整个web文件夹都设置为可读写了

 等我稍后补充昵称 4 天前 • |
@Diego

500错误实在太笼统了…要是全部可读写的话应该就可以自动生成bangumi文件夹,所以你可以试试先删掉bangumi文件夹再访问追番页面,看网站根目录能不能出来这个文件夹;其次不知道你的服务器在哪里?我发现我现在访问是连接超时…所以这500错也有可能是服务器连不上b站搞的…