#1 - 2017-11-10 21:44
windrises (一个纠结的面瘫伪宅)
起因是在上个帖子里,@工口卿  提到了多标签搜索的需求。我想了想,这确实是个痛点,同时还可以拿来练手学好多知识,于是我就接着做了这个东西。
这是  访问地址    @鈴宮華緋 在#7-2给了一个油猴脚本,使用更方便。
这是截图


使用方法不用多说,有几个需要说明的是:
1、bgm本身的标签搜索功能的源标签数据是没有经过筛选的,也就是说这个条目只要被即使一个人打上某个标签,那么就会在搜索结果里出现。这样的问题就是搜索结果会不准确,比如搜索'京阿尼'的结果里其实有不少动画并不是京阿尼制作的。  我的这个标签数据都是取的条目页里出现的标签,也就是被很多人都认可的标签,所以相对来说准确度就会高很多。
2、标签墙页和搜索结果页的右下角的'热门标签'里的标签括号后面的数字指的是在当前搜索条件下有多少条目被打上了这个标签,或者简单来说就是你点击这个标签后会出来多少结果。
3、以动画搜索页为例,右侧的'类别'和'时间'是除了用户打上的标签之外的搜索选项,这两个选项的信息都来自维基人的辛苦付出。但是由于编辑条目信息的时候没有严格规定信息格式,这样带来的问题有很多。比如日期的格式就会有很多种表达方式,这给我爬数据和处理数据带来了很大困扰,同时也导致了少量条目在检索时可能有问题。如果你发现了这样的问题,请反馈给我。下次更新数据库时我也会想办法尽量减少这样问题的出现。
4、对于搜索结果的排序方式我又增加了一个按评价数排序。四个排序方式在点击第二次的时候可以实现逆序。对于日期等不祥,或者由于格式等问题而没有被正确处理的条目都放在了排序的最后。

前后大概花了将近两星期的每天的空闲时间来做这件事,花了很大功夫,也学到了不少东西。
网页风格还是沿袭bangumi的,我也考虑过自己重新写下前端,但是还是觉得太难了(bgm43)
也感谢@发光的球 在上个帖子里提醒我试试异步刷新。js的那套东西我一直都比较怕,这次硬着头皮学了学,然后索性把所有的跳转都用ajax处理了。
主要的框架还是Django,服务器就是某云的学生主机,配置很渣。我也没有做什么速度优化,有些标签的条目非常多,在检索这些标签时,可能要多等一会(不过你可以盯着左上角看春菜娘卖萌(bgm110))。我也有考虑过做缓存,但是暂时没有成功。

网站的代码  在这。代码是写得非常丑的了,但是真的花了我不少心血。如果你觉得功能做的还不错,解决了你的大需求,那么我就厚脸皮求个star吧(bgm64)

数据库更新我觉得没必要太频繁,因为新的条目的标签信息不全,老的条目标签也不会有大变动,而且重新爬数据和更新数据库也比较麻烦。我初步打算每个月更新一两次。另外我在爬条目数据的时候,也会记录条目的评分信息,所以如果这个活持续的时间长的话,也算是同时做了一个bgm所有条目的评分记录,以后也可以拿来做做分析。如果有人对我爬的条目数据感兴趣,我会尝试在Github上专门找地方公开我每次爬的数据。如果有需求的话,我也可以尝试做成api。

本质上还是为了利用闲余时间学点技术,如果同时解决了有的人的需求的话就太好了。我还是个菜鸡,尤其对web开发什么都不懂,如果你发现了什么bug,或者有什么提议和技术指点,请统统提出来!(bgm24)
----------------------------------
18.2.18 增加缓存机制,提高检索速度
#2 - 2017-11-10 21:52
(学会欣赏不完美)
辛苦了,点赞~
#2-1 - 2017-11-10 21:54
#2-2 - 2017-11-10 21:56
君寻
windrises(windrises) 说:
响应速度好评,换tag几乎不需要时间,这个怎么优化的?
#2-3 - 2017-11-10 21:59
windrises
君寻 说: 响应速度好评,换tag几乎不需要时间,这个怎么优化的?
上次做的那个信息对比的是每次都要现去bgm网站爬数据,这次是全都爬下来存数据库里了。都没有做什么优化,每次都得从数据库重新搜一遍...
速度还可以可能是本身结果就不多吧
#2-4 - 2017-11-10 22:05
君寻
windrises(windrises) 说: 上次做的那个信息对比的是每次都要现去bgm网站爬数据,这次是全都爬下来存数据库里了。都没有做什么优化,每次都得从数据库重新搜一遍...
速度还可以可能是本身结果就不多吧
可以写个简单的JS把这次和上次的功能加入到bgm里,在相应的页面加个button跳到你的网站,毕竟每次使用要打开新的页面有点麻烦,加了收藏夹也可能忘记
#2-5 - 2017-11-10 22:07
windrises
君寻 说: 可以写个简单的JS把这次和上次的功能加入到bgm里,在相应的页面加个button跳到你的网站,毕竟每次使用要打开新的页面有点麻烦,加了收藏夹也可能忘记
是的,我有时间写写
#3 - 2017-11-10 21:57
(あの女の子は過酷な戦場に舞う、まるで精霊のようだっ ...)
Nice!(bgm50)
顺便@light_44
#3-1 - 2017-11-10 22:01
windrises
好像艾特不了,不知道为什么
#3-2 - 2017-11-10 22:07
工口卿
windrises 说: 好像艾特不了,不知道为什么
嗯...刚发现。
无论是用户名还是昵称都不行,不清楚什么情况。
#3-3 - 2017-11-10 22:09
工口卿
windrises 说: 好像艾特不了,不知道为什么
话说你这tool筛选几个tag之后出现在界面右侧的"当前热门标签"真心点睛之笔,在当前结果下又给搜索者提供了进一步细化搜索结果的空间,自己最初都没考虑到这么深,这就有点厉害了(bgm38)
#3-4 - 2017-11-10 22:11
windrises
工口卿 说: 话说你这tool筛选几个tag之后出现在界面右侧的"当前热门标签"真心点睛之笔,在当前结果下又给了搜索者进一步细化搜索结果的空间,自己最初都没考虑到这么深,厉害了
站在用户的角度思考需求!
我也是bgm重度用户
#3-5 - 2017-11-10 22:12
君寻
@54176
真的没法@,什么情况?
#3-6 - 2017-11-10 22:15
工口卿
windrises 说: 站在用户的角度思考需求!
我也是bgm重度用户
也许这就是dalao吧.jpg
总之说句辛苦了,这样一来让很多bgmer困扰多年的问题又少了一个,めでたし めでたし(bgm50)
#3-7 - 2017-11-10 22:24
windrises
工口卿 说: 也许这就是dalao吧.jpg
总之说句辛苦了,这样一来让很多bgmer困扰多年的问题又少了一个,めでたし めでたし
(bgm65)
#3-8 - 2017-11-12 17:17
#4 - 2017-11-10 22:20
很棒的功能啊,楼主辛苦了~
#4-1 - 2017-11-10 22:24
windrises
为人民服务
#5 - 2017-11-10 22:22
(DD集まれ! (๑•̀ㅂ•́)و✧)
好评b
#5-1 - 2017-11-10 22:25
#5-2 - 2017-11-11 20:59
LautlosP
windrises 说:
bgm用户只要拿到bgm数据库或者api就无所不能!
#6 - 2017-11-10 22:23
楼主厉害了!
不知道bgm什么时候能有公开api,这样就不用费劲爬数据了(bgm39)
#6-1 - 2017-11-10 22:26
windrises
是啊,爬数据不管是对bgm服务器还是对自己电脑都不友好(bgm39)
#7 - 2017-11-10 22:30
(成为世界第一)
炒鸡棒!了结了我在班固米的夙愿之一 (bgm24)
没有 api 的日子全靠爬虫解决 (bgm38)
#7-1 - 2017-11-10 22:36
#7-2 - 2017-11-10 22:52
鈴宮華緋 [团长大人]
windrises 说:
写了个添加按钮的油猴脚本 (bgm24)
请点这里
#7-3 - 2017-11-10 22:55
windrises
鈴宮華緋 说: 写了个添加按钮的油猴脚本
请点这里
不错,我已经安装上了
#7-4 - 2017-11-12 16:33
鈴宮華緋 说: 写了个添加按钮的油猴脚本
请点这里
好评
#8 - 2017-11-10 22:39
(xxsuneV)
DDOS?
#8-1 - 2017-11-10 22:47
windrises
你是说我的网站会受到攻击吗,这种事情我还没准备过
#9 - 2017-11-10 23:00
(黑藻并非藻类!)
2015年后的神作...
#9-1 - 2017-11-10 23:16
windrises
233 神作还需要时间的沉淀
#10 - 2017-11-11 10:00
(学会欣赏不完美)
/bgmtools 为什么呵呵哒,不友好(bgm38)
#11 - 2017-11-11 10:55
(温柔可爱的小男孩最棒了)
# SECURITY WARNING: don't run with debug turned on in production!
我记得上次好像没开的(bgm38)
我觉得lz完全可以把项目好好整理一下重新放github上,像是什么myapp啊,pyc之类的都改下或者去掉,也方便给star,而且lz这种既自己学到了练到了手,又给大家带来了有用的东西实在很棒。
数据库的设置建议用本地配置文件存储,不过现在只用SQLite也没什么事,但上线的东西还是建议换个高级点的数据库。
LZ如果想加api的话,建议试试Django rest framework,很方便。也可以重构一下用rest framework做后端,react做前端,能够前后端分离,也是现在很流行值得学习的方案,而且都硬着头皮学js了,不如在深入一下react。
我忘了上次说异步是干什么了,但现在可以试试用页面上的一个按钮,从后台异步启动爬虫任务,看看celery怎么用,这样看到有数据不一致用户可以直接更新数据。
#11-1 - 2017-11-11 11:03
发光的球
我看了下model,为什么类型都单独建了一个,不可以直接用subject然后设个type吗,感觉可以方便很多
#11-2 - 2017-11-11 12:44
windrises
发光的球 说: 我看了下model,为什么类型都单独建了一个,不可以直接用subject然后设个type吗,感觉可以方便很多
记笔记记笔记
#11-3 - 2017-11-11 14:07
发光的球
windrises 说: 记笔记记笔记
我是觉得model这种东西最好好好考虑一些,变了的话会很麻烦,所以一开始考虑地全面些,现在要做什么之后可能要做什么,可能会怎样影响现有的model,然后设计好。个人见解。
#12 - 2017-11-11 11:16
(骑砍2今天发售了吗)
好评
#12-1 - 2017-11-11 11:18
Le Horla
试着用“里番”+“童年” hmmmm(bgm38)
#12-2 - 2017-11-11 12:46
windrises
大鲨鱼 说: 试着用“里番”+“童年” hmmmm
emmm搜里番确实不错
#12-3 - 2017-11-11 14:22
Le Horla
windrises 说: emmm搜里番确实不错
许多表番也会有人添加“里番”的标签,用了多标签就能准确筛选(奇怪的)里番了,赞美楼主(bgm38)
#13 - 2017-11-11 11:19
(Alea iacta est.)
Cool,辛苦了
#13-1 - 2017-11-11 12:45
#14 - 2017-11-11 11:45
(Dreamer of dreams)
你班就我一个不是大佬系列
#14-1 - 2017-11-11 11:47
君寻
撞头像了(bgm38)
#14-2 - 2017-11-11 12:45
windrises
君寻 说: 撞头像了
233
#14-3 - 2017-11-11 20:02
若卡
君寻 说: 撞头像了
看头像认人每次都以为小寒人格分裂 (bgm38)
#14-4 - 2017-11-12 15:17
心臟停止
若卡 说: 看头像认人每次都以为小寒人格分裂
+1
#14-5 - 2017-11-13 00:54
骈儿
若卡 说: 看头像认人每次都以为小寒人格分裂
+1
#15 - 2017-11-11 12:46
(大人の階段登る~君はまだシンデレラさ~ ... ...)
Nice!
#16 - 2017-11-11 14:27

另外给个建议
不要尝试使用jquery操作dom,会疯掉的。

试着用一下angular或者vue能让你的前端逻辑变得优美。

PS 我好像应该夸一下楼主:很不错!(bgm38)
#16-1 - 2017-11-11 18:26
#17 - 2017-11-11 17:06
(Awesome!)
鹅妹子嘤!
#17-1 - 2017-11-11 18:27
windrises
(bgm95)开心
#17-2 - 2017-11-12 00:38
Aoi
(bgm84)有没有被激励想做点什么
#18 - 2017-11-11 18:41
(中立邪恶)
(bgm39) style.css可以压缩下,将近200K占了一大半load时间
#18-1 - 2017-11-11 19:48
windrises
是的。样式都直接用的bgm的,而且很多样式我都用不上。但是考虑到以后可能会用的上,而且浏览器都有缓存,所以就没动它。
#18-2 - 2017-11-11 22:55
Vincent
windrises 说: 是的。样式都直接用的bgm的,而且很多样式我都用不上。但是考虑到以后可能会用的上,而且浏览器都有缓存,所以就没动它。
b39 其实我想说的是Minify一下,压成.min.css
#19 - 2017-11-11 19:18
(また図書館に)
整个bgm只有我不会写代码(bgm38)
#19-1 - 2017-11-11 19:20
muon
编程大佬是会互相吸引的(bgm38)
#20 - 2017-11-11 19:21
(世界の殼を破られば、我らは生まれずに死んでいく ... ...)
点赞!以后可以更开心地扫番了
全bgm只有我不会代码系列(bgm38)
#21 - 2017-11-11 19:38
(学会欣赏不完美)
感觉今天的响应速度变慢了,用的人多了的缘故吗?
动画以外的搜索好像都有点bug,比如书籍搜索“轻小说”按评价数排序,有的出来没有标题。
#21-1 - 2017-11-11 19:46
windrises
也可能是双十一的缘故,毕竟都是同一家的服务器...
我看了看,你是说的是那个fz和盗墓笔记吗。我当初在爬数据的时候,把条目最上面的那个名字当做条目的原标题,左侧信息框的'中文名'当做翻译名,展示结果的时候是把中文名大写,原名字小写的。那个fz和盗墓笔记里没有爬到中文名。
#21-2 - 2017-11-11 19:55
君寻
windrises(windrises) 说: 也可能是双十一的缘故,毕竟都是同一家的服务器...
我看了看,你是说的是那个fz和盗墓笔记吗。我当初在爬数据的时候,把条目最上面的那个名字当做条目的原标题,左侧信息框的'中文名'当做翻译名,展示结果的...
对,发现所有英文标题的条目都有这个问题
可以让没有标题的以副标题为标题
#22 - 2017-11-11 23:08
(喜欢胡言乱语)
老实说,以前从注意过标签,现在发现标签真的太好用了(bgm39)

顺便问一下「✘」这标签是啥意思?(bgm38)
#22-1 - 2017-11-11 23:47
Panzerance
我觉得你要问加的人【前提是你要能找到那是谁
#22-2 - 2017-11-12 00:45
Blackadder
Panzerance 说: 我觉得你要问加的人【前提是你要能找到那是谁
我记得「✔」和「✘」都是夏法大佬在用,实际意思大概很糟糕(bgm38)
#22-3 - 2017-11-13 00:34
叉烧蛋orz
Blackadder 说: 我记得「✔」和「✘」都是夏法大佬在用,实际意思大概很糟糕
(bgm38)我又学到了
#23 - 2017-11-12 09:02
(蛋定能生出个鸟来!)
功能补完靠Mod系列
#24 - 2017-11-12 12:54
(大変に気分がいい)
厉害了
#25 - 2017-11-12 15:32
(静坐常思己过,闲谈勿论人非.)
(bgm39) 辛苦了。
#26 - 2017-11-12 17:18
(当一个乐观的笨蛋就可以了)
Bgm今天有辣!  GJ

我一直想要的是自己收藏页面里的多标签搜索,这个功能更厉害了!
#26-1 - 2017-11-13 00:43
叉烧蛋orz
但是似乎有bug
#26-2 - 2017-11-13 14:03
windrises
没有信仰 说: 但是似乎有bug
有bug就指出来呀(bgm61)
我看了下log,如果是昨晚的500错误的话,我已经修正了
#26-3 - 2017-11-14 00:04
叉烧蛋orz
windrises 说: 有bug就指出来呀
我看了下log,如果是昨晚的500错误的话,我已经修正了
好难形容啊(语死早)……

总之现在很ok(bgm39)
#27 - 2017-11-13 09:57
(讓一切都自動化!)
首先點讚

其次,2017 年都快過去了,別用 jQuery 了,ES 2017 和 Babel 合在一起能滿足你絕大多數需求……雖然我用 TypeScript(逃
#27-1 - 2017-11-13 14:04
windrises
多谢,我mark一下新技术
#27-2 - 2017-11-15 11:53
Franklin Yu
windrises 说: 多谢,我mark一下新技术
使用 ES 2017 的好處就是,若干年後可以直接把 Babel 撤了……
#27-3 - 2017-11-15 12:05
McFog
Franklin Yu 说: 使用 ES 2017 的好處就是,若干年後可以直接把 Babel 撤了……
你想太多了,等到2022年,ES2017也许浏览器基本原生支持了,但你得用Babel来编译ES2023的新特性 (bgm38)
#27-4 - 2017-11-15 12:27
Franklin Yu
McFog 说: 你想太多了,等到2022年,ES2017也许浏览器基本原生支持了,但你得用Babel来编译ES2023的新特性
我不認為 LZ 在 2022 年還會維護 (bgm38)
#28 - 2017-11-16 22:19
一個關於標籤結果改進的建議,不知你是不是有興趣:
詳見:
標籤結果質量太糟糕
#28-1 - 2017-11-17 13:29
windrises
可以做一做,不过这个要修改数据库,下次更新数据库的时候我会想办法加上去~
#28-2 - 2017-11-18 08:30
Willian
windrises 说: 可以做一做,不过这个要修改数据库,下次更新数据库的时候我会想办法加上去~
現在的數據庫是定時更新的嗎?週期大概是多少呢?
#28-3 - 2017-11-18 13:51
windrises
Willian 说: 現在的數據庫是定時更新的嗎?週期大概是多少呢?
初步打算一个月更新一两次。(估计过段时间用的人越来越少,更新的频率也会逐渐降低吧...
最近有点事情要做,下次可能要再等一两个星期吧。
#28-4 - 2017-11-19 19:25
Willian
windrises 说: 初步打算一个月更新一两次。(估计过段时间用的人越来越少,更新的频率也会逐渐降低吧...
最近有点事情要做,下次可能要再等一两个星期吧。
可以再提供一點統計數據嗎:
一共多少作品? 一共多少Tag?
有收集評論頁面內容嗎?
#28-5 - 2017-11-22 01:35
windrises
Willian 说: 可以再提供一點統計數據嗎:
一共多少作品? 一共多少Tag?
有收集評論頁面內容嗎?
动画的话,有1万3千个条目,去重后有3万个标签
评论内容没有收集
#29 - 2017-11-18 23:31
为啥我搜百合标签clannad跑了出来,但是打开看clannad又没有标签
#29-1 - 2017-11-19 00:32
windrises
我试了一下,没看到cl啊
你要不要再试一下bgm38
#29-2 - 2017-11-19 07:28
whwq2012
windrises 说: 我试了一下,没看到cl啊
你要不要再试一下bgm38
好吧,还真没了,复现不了了
#30 - 2017-12-10 21:27
(学会欣赏不完美)
建议支持逻辑表达式
- & /
比如搜索“恋爱 -后宫”
#30-1 - 2017-12-10 21:35
windrises
好点子!你的点子好多(bgm38)
#31 - 2018-10-11 18:10
(才能上的差距……还真是令人嫉妒)
好像多标签搜索结果条目名称如果只有英文和数字并且namechs和namejp一样的话,条目名称会没有超链接?比如AIR/CLANNAD ~AFTER STORY~/Kanon/11eyes这样子的。
#31-1 - 2018-10-11 18:56
windrises
感谢提醒 已修改
#31-2 - 2018-10-11 19:11
后圣域传说
windrises 说: 感谢提醒 已修改
啊,速度好快,感谢修改!其实按照Bangumi的话,这种只有原名没有中文名的条目在列表里显示的时候只会显示原名不会在后面重复再显示一遍的(因为没有中文名可以显示嘛),可以参考动画排行榜里的CLANNAD ~AFTER STORY~。不过现在这样子也挺好的,至少一致了!
#31-3 - 2018-10-11 23:37
君寻
windrises 说: 感谢提醒 已修改
噗,时隔一年的更新,这个bug好像我去年说过了(bgm38)
楼上的我的建议要不考虑一下?
#31-4 - 2018-10-12 00:10
windrises
君寻 说: 噗,时隔一年的更新,这个bug好像我去年说过了
楼上的我的建议要不考虑一下?
可能寒假?(bgm38)
到时候看能不能再做点什么出来(bgm38)
#31-5 - 2018-10-12 00:15
Trim21
windrises 说: 可能寒假?
到时候看能不能再做点什么出来
在鹿上了.jpg
#31-6 - 2018-10-12 00:19
windrises
Trim21 说: 在鹿上了.jpg
(bgm38)