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

Übermorgen/Typecho追番插件-B站来源


最近更新

  • 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更新

    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问题了。
  • (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?

  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

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我可能很难想起来去看…

已有 68 条评论

  1. 有什么办法让他获取的图片资源是https的吗 —— 猫猫 猫猫 发表。 回复TA
    1. Action.php 里边,找这句话 $img_grid = $value->cover; 后边使用字符串替换,把http换成https就行了。可以参考wikimoebangumi相同位置的语句 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  2. 想起我曾经也到处找这个追番插件,补充两个我找到的
    1. https://blog.sspirits.top/archives/typecho-anime-list-plugin 这个用短代码更简单,我目前就用的这个
    2. https://qwq.best/dev/84.html 这个是B站番剧的 —— kizx kizx 发表。 回复TA
    1. 嗯 好多调bangumi的接口的追番插件。第二个我没尝试,不过看介绍说的,只支持handsome主题,而且貌似没有登陆动作,所以像我这种不公开追番信息的账户应该不可用 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  3. 解决了,但是https403 ,不想添加无来路,算了,还是不搞了吧 —— 猫猫 猫猫 发表。 回复TA
    1. 等迭代吧 我好像想到怎么搞这个了。刷版本号是我的执念 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
      1. 好的,感谢up主弄得这个插件,期待更新 —— 猫猫 猫猫 发表。 回复TA
        1. 有兴趣可以试试现在的 封面下载到服务器本地了。无来路、https啥的就完全不需要了 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
          1. 更新了,还是有点问题,chrome还是403,火狐浏览器正常,手机也显示不了,不知道什么原因,应该不是缓存 —— 猫猫 猫猫 发表。
          2. 你这是有啥缓存吧 还是解压之后没覆盖?我看图片链接还是i0.xxx的
            。看看你插件的文件夹名字对不对 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。
          3. 啊,解决了,估计是第一次删错了文件,把更新后的当成旧版的给删了 —— 猫猫 猫猫 发表。
  4. 大佬你好,我的网站在读取图片是会读取https://xiaowangwang.top/index.php/bangumi/28541.jpg这个地址
    但是,我的图片应该是这个地址https://xiaowangwang.top/bangumi/28541.jpg
    怎么办啊 —— xiaowangwang xiaowangwang 发表。 回复TA
    1. 这是没开伪静态吧?刚更新了一版应该可以了。试一下 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  5. 谢谢大佬,解决了 —— xiaowangwang xiaowangwang 发表。 回复TA
  6. 追番页面一直显示数据加载,服务器也没有bangumi文件夹生成,手动添加bangumi文件夹给与完全访问权限后,刷新页面提示403 forbidden nginx,请问这个如何解决呢? —— ChirmyRam ChirmyRam 发表。 回复TA
    1. 看手工建立的bangumi有没有图片文件生成,没有的话就是根目录权限的问题,或者是selinnux设置。先查根目录权限,不行再看这个https://blog.csdn.net/qq_28208381/article/details/96287680 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
    2. 我看过你的页面了,你可能得需要补一个jQuery。在<head>下面加一行<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
      1. 我用的主题的使用文档中说了主题自带了 jQuery,不需要也不可以再次引入 jQuery 依赖。 —— ChirmyRam ChirmyRam 发表。 回复TA
        1. 可是我看控制台,有找不到jQuery的报错 如果确定不是jQuery的问题,那就着重看文件夹权限吧 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
          1. 我也是同样的情况怎么办,自己创建了那个文件夹也没用 —— Ash Ash 发表。
          2. 但是我不会403 —— Ash Ash 发表。
          3. 解决了,权限问题。。。 —— Ash Ash 发表。
          4. 问题解决了,我在服务器里面编辑的追番页面叫bangumi.php,独立页面的自定义slug也取名叫做bangumi,只要这俩名字一样就报404,改了之后才正常。 —— ChirmyRam ChirmyRam 发表。
          5. 解决就好,这我可真是想不到 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。
  7. 大大,我把文件夹名改了,但有且只有这个插件会serveerror500,可以解决吗 —— Diego Diego 发表。 回复TA
    1. 着重还是看权限吧…因为需要向服务器写入,这地方权限不搞好容易出问题。而且我现在访问你的博客直接报503? —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
      1. 大大,现在应该可以访问了,昨天服务器抽了,apache莫名关闭
        请问以下怎么设置权限呢,我把整个web文件夹都设置为可读写了 —— Diego Diego 发表。 回复TA
        1. 500错误实在太笼统了…要是全部可读写的话应该就可以自动生成bangumi文件夹,所以你可以试试先删掉bangumi文件夹再访问追番页面,看网站根目录能不能出来这个文件夹;其次不知道你的服务器在哪里?我发现我现在访问是连接超时…所以这500错也有可能是服务器连不上b站搞的… —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  8. 这两天装的debian出了问题,xfce桌面,root能登陆,普通用户登录不了,密码正确,点击登陆密码框就自动清空,字符界面能登,并且正常使用,只是图形界面不正常,求解救(我实在不知道请教谁了,好像没多少人用linux,就来请教了) —— 某人 某人 发表。 回复TA
    1. 终极小白一个 —— 某人 某人 发表。 回复TA
  9. 您好
    https://nmsl.pet/bf.html
    我的追番似乎有点多,太长了导致了一些bug
    鼠标放上去地下的基本上全没了,移开才出现,如果可以的话请您看一下,或者教一下我怎么弄翻页的那种,谢谢 —— 绯酒 绯酒 发表。 回复TA
    1. 看着确实是加载太多的问题。我有时间试试看能不能改成翻页吧…因为页面这部分就直接用的WikimoeBangumi的逻辑 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
    2. 更新了一下,换成翻页了,可以试试。我没那么多追番不知道还会不会有问题 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  10. 不错,就是样式有点简洁了。还有第一次加载失败,但是刷新一下就好啦。 —— 王友元同学 王友元同学 发表。 回复TA
    1. 样式不是我写的 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
      1. 欸,兄弟你评论回复邮件给判垃圾邮件了,怪不得没消息。 —— 王友元同学 王友元同学 发表。 回复TA
        1. 啊我直接用的mailgun,大概腾讯已经把它拉黑了吧 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  11. arch不能玩很多游戏,可以推荐更多更快的平台吗? —— arch小白 arch小白 发表。 回复TA
    1. 对linux来说支持的程度都一样,像Arch分支这种激进的发行版可能支持情况会更好。所以推荐其他平台的话就是windows了 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  12. 感谢博主,插件很好用。 —— 行人和风 行人和风 发表。 回复TA
  13. 大佬,我感觉好像插件获取不了封面,估计是docker版typecho原因,封面路径能不能改到别的地方比如upload? —— noame noame 发表。 回复TA
    1. 你看一下action.php 把里边 /bangumi/ 改成自己的路径试试 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
      1. 好了!感谢大佬 —— noame noame 发表。 回复TA
  14. 插件好像出问题了,一直转圈,追番数据加载中... —— Cat Cat 发表。 回复TA
    1. 有更新过主题或者服务器吗?动画这部分我是直接引用的没动过。它有时候会找不到jquery然后就语法错误(即使引用了jquery),表现出来的结果就是一直转圈 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  15. 有什么方法能实现控制每页的数量,以及可能实现在文章中插入单个番剧的卡片嘛
    新手建站对源码不是太理解~ —— Magma Magma 发表。 回复TA
    1. 插入单个那还是自己写html吧 typecho的插件还没这么厉害的功能。每页数量我是写死的,在action.php有个挺明显的循环,里边判断的数字可以试着改改 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  16. 非常感谢 —— diudiu diudiu 发表。 回复TA
  17. 点开追番页后,主页的图和文章都加载不出来,重新刷新整个网页可以加载成功。用的void主题,貌似是 jQuery冲突,因为另一个插件有关闭 jQuery的选项,那个插件也是开启 jQuery首页就不显示,不是学计算机的,不懂代码,请教一下大佬怎么解决 —— 木白 木白 发表。 回复TA
    1. 可以把我加的jquery标签删掉。你可以搜搜Action.php,删掉带jquery.min.js的一整行。我有时间把这个开关搞上来 —— 飞蚊话 飞蚊话 [作者] 于 发表。 回复TA
  18. dalao, 我出现好几个一样的错误 `Undefined property: stdClass::$long_title in`
    有点迷惑,不知道如何解决

    页面地址:https://katcloud.cn/gumi.html —— DandyChan DandyChan 发表。 回复TA

    1. 现在再进来好像没问题? —— 飞蚊话 飞蚊话 [作者] 于 发表。 回复TA
      1. 自己加了两个判断进去暴力解决的。。。因为不怎么懂php
        在文章里说明了:https://katcloud.cn/archives/19/
        甚至还pull了个request
        不过方法实在暴力,还是希望大佬能debug一下 —— DandyChan DandyChan 发表。 回复TA
  19. PHP8下报错误
    Undefined array key "pn" in
    怎么解决 —— 苏晓晴 苏晓晴 发表。 回复TA
    1. 应该是语法有变了吧…试试把pn放在全局变量里边吧 我用的php7 没法测8下面正常与否 —— 飞蚊话 飞蚊话 [作者] 于 发表。 回复TA
      1. 已经解决了 多谢大佬 —— 苏晓晴 苏晓晴 发表。 回复TA
  20. cookie怎么填都填不对怎么办啊(完全复制过来) —— BeiCuei BeiCuei 发表。 回复TA

添加新评论