B站来源的Typecho追番页插件

本文最后修改于 180 天前,部分内容可能已经过时!

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


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


最近更新

  • 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默认不能直接获取到所有,但是它会返回一个追番总数。所以目前暂时用了一个简单粗暴的解决方案:分多次获取,然后全部显示)(204取消了这个粗暴的逻辑)分页获取,提供上下翻页按钮,更改了curl的方法(加入了伪装登录用的各种需要的头),自然也更改了各种变量对应的json字段,最后增加了一个函数,用于截掉详细进度信息。
  • (201c新增)函数:增加了下载封面到服务器的方法。现在可以完全规避b站禁止跨域导致的封面403问题了。

效果 看这里

三、怎么用?

注意

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

a、插件部署

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

b、番剧页

参考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年04月23日
另请参阅:
typecho博客
上一篇
打赏
下一篇

添加新评论

已有 47 条评论

 猫猫 10 个月前 • |

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

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

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

 kizx 10 个月前 • |

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

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

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

 猫猫 10 个月前 • |

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

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

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

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

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

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

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

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

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

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

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

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

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

 xiaowangwang 8 个月前 • |

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

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

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

 xiaowangwang 8 个月前 • |

谢谢大佬,解决了

 ChirmyRam 6 个月前 • |

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

 等我稍后补充昵称 6 个月前 • |
@ChirmyRam

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

 等我稍后补充昵称 6 个月前 • |
@ChirmyRam

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

 ChirmyRam 6 个月前 • |
@等我稍后补充昵称

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

 等我稍后补充昵称 6 个月前 • |
@ChirmyRam

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

 Ash 6 个月前 • |
@等我稍后补充昵称

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

 Ash 6 个月前 • |
@等我稍后补充昵称

但是我不会403

 Ash 6 个月前 • |
@等我稍后补充昵称

解决了,权限问题。。。

 ChirmyRam 6 个月前 • |
@等我稍后补充昵称

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

 等我稍后补充昵称 6 个月前 • |
@ChirmyRam

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

 Diego 6 个月前 • |

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

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

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

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

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

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

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

 某人 6 个月前 • |

这两天装的debian出了问题,xfce桌面,root能登陆,普通用户登录不了,密码正确,点击登陆密码框就自动清空,字符界面能登,并且正常使用,只是图形界面不正常,求解救(我实在不知道请教谁了,好像没多少人用linux,就来请教了)

 某人 6 个月前 • |
@某人

终极小白一个

 绯酒 6 个月前 • |

您好
https://nmsl.pet/bf.html
我的追番似乎有点多,太长了导致了一些bug
鼠标放上去地下的基本上全没了,移开才出现,如果可以的话请您看一下,或者教一下我怎么弄翻页的那种,谢谢

 等我稍后补充昵称 6 个月前 • |
@绯酒

看着确实是加载太多的问题。我有时间试试看能不能改成翻页吧…因为页面这部分就直接用的WikimoeBangumi的逻辑

 等我稍后补充昵称 6 个月前 • |
@绯酒

更新了一下,换成翻页了,可以试试。我没那么多追番不知道还会不会有问题

 王友元同学 5 个月前 • |

不错,就是样式有点简洁了。还有第一次加载失败,但是刷新一下就好啦。

 等我稍后补充昵称 5 个月前 • |
@王友元同学

样式不是我写的

 王友元同学 4 个月前 • |
@等我稍后补充昵称

欸,兄弟你评论回复邮件给判垃圾邮件了,怪不得没消息。

 等我稍后补充昵称 4 个月前 • |
@王友元同学

啊我直接用的mailgun,大概腾讯已经把它拉黑了吧

 arch小白 5 个月前 • |

arch不能玩很多游戏,可以推荐更多更快的平台吗?

 等我稍后补充昵称 4 个月前 • |
@arch小白

对linux来说支持的程度都一样,像Arch分支这种激进的发行版可能支持情况会更好。所以推荐其他平台的话就是windows了

 行人和风 5 个月前 • |

感谢博主,插件很好用。

 noame 3 个月前 • |

大佬,我感觉好像插件获取不了封面,估计是docker版typecho原因,封面路径能不能改到别的地方比如upload?

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

你看一下action.php 把里边 /bangumi/ 改成自己的路径试试

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

好了!感谢大佬

 Cat 3 个月前 • |

插件好像出问题了,一直转圈,追番数据加载中...

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

有更新过主题或者服务器吗?动画这部分我是直接引用的没动过。它有时候会找不到jquery然后就语法错误(即使引用了jquery),表现出来的结果就是一直转圈

 Magma 2 个月前 • |

有什么方法能实现控制每页的数量,以及可能实现在文章中插入单个番剧的卡片嘛
新手建站对源码不是太理解~

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

插入单个那还是自己写html吧 typecho的插件还没这么厉害的功能。每页数量我是写死的,在action.php有个挺明显的循环,里边判断的数字可以试着改改