#1 - 2020-7-25 10:33
chitanda@Lv2 (Make Bangumi Great Again!)
添加人物需要wiki权限,所以没权限的目前用不到。至于添加书籍等可以去[脚本] [2020/05/04] [v0.3.1] bangumi 创建条目助手

安装地址

功能:
1.自动从日文wiki/萌白上抓取角色/声优信息,如果没头像的话,会自动谷歌搜索一张图当做头像。角色会自动关联条目和声优。
2.可以直接全文替换一个条目。如果不小心重复了的话,能替换掉(再也不会有待回收条目了)

需要注意的点:
1.最好梯子环境下使用,萌白姑且不提,日文wiki因为基本上都要从谷歌抓图,所以从日文wiki抓信息的时候是必须要梯子的
2.只适用于单页面的角色,也就是角色/人物本身有单独页面的,因为这个脚本本质上抓的就是人物页面的简介以及边上的表格部分(表格会变成BGM的info,如果页面本身没有则留空)
3.虽然很多作品的条目格式和角色一样,但是加不了作品(因为bgm这边参数不一样)。由于前面有dalao写了抓作品的,所以我就不重复劳动了。

红框部分:


所以这种页面可以,这种就不行。wiki百科一个道理。


小演示:(图大,流量慎点)
萌白加条目(图8.5M):
http://upload.ouliu.net/i/20200725103651zodyp.gif

日文wiki(图4.5M):
https://p.sda1.dev/0/72b7fb32e176922eab2fdc07c54ce1b6/2222.gif

使用方法的话其实界面里写的比较细节了。不过这边还是说下好了:
首先点选页面右边的“生成条目信息”按钮,然后在出来的界面里做配置。目前这个界面只会出现在页面最上面,所以如果没看到的话记得滚动条往回拉。(会自动读取上次配置,所以如果是系列作品角色的话,设置一次即可)
最上面三项是给虚拟角色用的,分别表示要关联的主条目、有CV需要关联的条目、关联角色的类型(主角、配角、客串)
如果添加的是现实人物,那这三项无视,有数值也不影响。

虚拟角色的话第四项选虚拟角色就行,现实人物照着钩就是了
第五项略过,字面意思。
第六个选项是编辑模式,也就是替换重复条目用的,直接讲需要替换的重复条目的id贴进去即可
最下面两个选项,“查重”那个是查询bgm上是有已有条目(不过由于萌白很多条目没日文名字,所以效果比较看脸),查重的时候,选择取消就不会添加条目。
“调试模式”的话一般用户用不到,直接关了就行。这个主要是方便开发者找bug的,开了调试模式的话,不会提交条目到bgm,只是会把相关信息输出到console里

全部设置完之后点'创建条目"然后慢慢等一会儿即可。之后会有弹窗提示结果
另外由于萌白条目很多信息都比较杂乱,所以强烈建议加完后人工过一遍做修正(我本来想给萌白做个全自动纠错,结果发现pattern太多了,全写下去要命,而且有些也不太好实现)
欢迎各位试用以及提bug。要是有人愿意做修正就更好了(
主要功能其实上周就写好了,不过写萌白和wiki的通用脚本拖到了现在


UPDATE:
V0.2 2020/08/12
1.之前formhash(bgm wiki身份鉴权)存在本地后就不再更新了,但是实际上这个值会变,现在改成每天更新一次的方式。
2. 某些图片获取到了链接但是无法正常读取,出现这种情况的时候会直接返回空图片(原先未处理的时候转成blob会将页面内容转进去触发CF的检测墙导致无法添加条目)
#2 - 2020-7-25 11:35
(Make Bangumi Great Again!)
其实主楼是为了方便不太会代码的班友。如果你会一点点js(会jquery选择器即可),那么其实完全可以自己写一个相应站点的脚本。
核心功能我已经剥离出来了(其实也不是很确定库文件是不是就这么搞,不过我这边能用应该说明没错吧)
bgm_wikihelpercorejs.js

DAL狂三外传的角色页面为例子(这几个我都加过了,你们看看例子就行,不用重复加了)。
想要自行扩展的话:(自行扩展是没有用户ui的,全部代码里改,改完加载页面就自动添加条目。所以如果不是很确定的话,可以先开debug模式,测试完了再加)。

先require我上面的库文件和jquery,然后把主函数上面的几个参数按照实际需求设置,然后主函数里对 charaName、charaAvatarUrl、charaInfo、CVName进行赋值。最后将剩下的信息按照infoTpl里的变量名进行赋值(如果有的话)

// ==UserScript==
// @name         DAL角色
// @namespace    chitanda
// @version      0.1
// @description  从日文wiki和萌百添加人物信息
// @author       chitanda
// @match        http://date-a-bullet.com/character/*.html
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @require      https://greasyfork.org/scripts/407699-bgm-wikihelper-core-js/code/bgm_wikihelpercorejs.js?version=830359
// @grant        GM_xmlhttpRequest[/b]
// @grant        GM_openInTab
// @run-at       document-end
// ==/UserScript==

(function() {
        //下面的设置项只有在非萌白或者wiki的页面下才会起效,萌白和wiki以ui上用户提交的数据为准
        //关联设置:
        //角色需要关联的条目类型,后面跟条目id。如果没有则留空。real表示三次元条目
        //如果同类型要关联多个的用,隔开。比如book:'111,2222,333'
        var subRelatedSetting = {
            'anime': '291171,310178',
            'book': '239174',
            'music': '',
            'game': '',
            'real': ''
        };
        //需要关联CV的条目。之所以和上面的分开设置是因为有时候比如主条目关联book但是没CV的情况。
        //所以这里还是自己设置好。规则和上面角色关联一样。
        var CVRelatedSetting = {
            'anime':'291171,310178',
            'book': '',
            'music': '',
            'game': '',
            'real': ''
        };


        //关联的角色类型(主角配角客串对应123,默认配角)。这个值一次只能设置一次。
         charaType = 2;

        /*    现实人物类型。chara表示添加的是虚拟角色。其他的依次是:'漫画家  绘师  作家
        声优  歌手/音乐家/乐队组合  演员  制作人员/制作公司'*/
         charaKindArr = ['chara', 'mangaka', 'illustrator', 'writer', 'seiyu', 'artist', 'actor', 'producer']

        //从上面数组里选一个。默认为虚拟角色
         charaKind = 'chara';

        //人物类型,虚拟角色对应角色、机体、舰船、组织机构;现实人物对应分别对应人物、公司、组合
         charaRole = 1;


        //是否检查条目已存在。默认检查,确定不存在的话不要检查。需要检查的改成1。新条目会有延迟,所以不要乱试
         checkDupe = 1;

        //是否开启调试模式。0关闭,1开启。默认开启。开启后只会在cosole.log里输出要提交的数据而不是真正提交。
         debugFlg = 1;


        //编辑模式。如果是要替换已有条目的话,直接输入对应的条目id。新加条目的话留空
         editSubId = '78467';



//主函数开始。
(async()=>{
        //角色日文名字
         charaName =$('.in-conteiner.chara .font-accent .h1').eq(0).text();
         //角色头像链接(必须是绝对链接,不能是相对链接)
         charaAvatarUrl=$('.in-conteiner.chara .image-guard img')[1].src;
         //角色简介信息
         charaInfo =$('.in-conteiner.chara .font-accent .my-5').eq(0).text() ;
         //声优名字
         CVName = $('.in-conteiner.chara .font-accent .h1').next().text().split('CV:')[1];

         /*上面几项是理论上必须要有的,自己想办法找到对应的赋值语句。但是如果真的缺几项的话,那就留空。
        */

//infoTpl参数赋值的代码块。没有的不用管。如果还有有其他条目模板里没有的,自己照格式加上并声明相关变量然后赋值
// 另外需要注意的是,infoTpl的模板里每一行前面都不能有空格,否则会影响bgm服务器端的表格解析导致没法正常添加info
/*
         romaji=$(xxx).text()
         age=$(xxx).text()

         */


                     infoTpl = `{{Infobox Crt
|简体中文名=
|别名={
[第二中文名|]
[英文名|]
[日文名|]
[纯假名|]
[罗马字|${null||romaji}]
[昵称|]
}
|性别= 女
|年龄=${null||age}
|生日= ${null||birthday}
|星座=${null||zodiacSign}
|血型= ${null||blood}
|身高= ${null||height}
|体重=${null||weight}
|BWH=${null||bwh}
|印象色=${null||color}
|引用来源=
|学校= ${null||school}
|学年= ${null||grade}
|趣味= ${null||hobby}
|特技= ${null||trick}
|好き=${null||like}
|嫌い=${null||hate}
|苦手なもの・こと= ${null||weak}
|利き腕=${null||weapon}
|画师=${null||artist}
|组合= ${null||unit}
}}`.replace(/undefined/g, '');


//大概是bgm身份证,服务器鉴权用的,反正必须要有。
formhash = await getFormhash();

console.log(`角色名字:${charaName}`)
console.log(`头像链接:${charaAvatarUrl}`);
console.log(`角色详情:${charaInfo}`)
console.log(`声优:${CVName}`)
console.log(infoTpl);

let charaId= await addSubject(charaKind,editSubId);
  

})()



})();
#3 - 2020-7-25 12:30
(DD雷达搜寻中...?)
好活
#4 - 2020-7-26 13:39
没有js基础,想问一下楼主可否把关联声优的功能单独分离出来。
就是输入1个已创建的角色id, 然后输入复数作品id和1个声优id 自动关联CV。

bgm自带的声优关联系统在角色关联超过20个同类型条目后,就变得几乎没法使用了。因为“选择参与的作品”的列表最多只显示20个作品。
例如
https://bgm.tv/character/464
https://bgm.tv/character/63836
#4-1 - 2020-7-26 17:23
chitanda@Lv2
可以是可以。不过已经知道角色的前提下,还需要自己输入作品id吗?我的想法是不如先直接全关联了然后如果是多cv的就动手把错误的删了…
删除毕竟比复制粘贴ID来的快
如果是你要的这个功能,我可以直接在ui里加个按钮只关联用
#4-2 - 2020-7-26 17:58
chitanda@Lv2
话说我刚刚试了下,其实关联同类型的作品如果很多的话,分两次关联也可以吧。马里奥我在现在的基础上试了下可以至少再加7个作品,没遇到"只显示20个作品"这个问题。。
其实主要是单作品关联我很难想到比现在好的关联方式,毕竟如果是20个条目的话一个个复制id过来其实很慢,远不如bgm现在内置的功能来的方便。
#4-3 - 2020-7-26 20:46
knh初
chitanda@Lv2 说: 话说我刚刚试了下,其实关联同类型的作品如果很多的话,分两次关联也可以吧。马里奥我在现在的基础上试了下可以至少再加7个作品,没遇到"只显示20个作品"这个问题。。
其实主要是单作品关联我很难想到比现在好...
我又试了试还是不行,你可以试一试关联路易吉洋楼3 ルイージマンション3 的声优。
“选择参与的作品”只显示了奥德赛到马64这20个作品。
就算我更改完Dr. Mario World的关联,那个“参与的作品”列表还是没有变化
#4-4 - 2020-7-26 20:50
knh初
chitanda@Lv2 说: 可以是可以。不过已经知道角色的前提下,还需要自己输入作品id吗?我的想法是不如先直接全关联了然后如果是多cv的就动手把错误的删了…
删除毕竟比复制粘贴ID来的快
如果是你要的这个功能,我可以直接在ui...
输入作品id主要是因为索尼克和洛克人这种各作品有很多不同声优的
#4-5 - 2020-7-26 21:15
chitanda@Lv2
knh初 说: 我又试了试还是不行,你可以试一试关联路易吉洋楼3 ルイージマンション3 的声优。
“选择参与的作品”只显示了奥德赛到马64这20个作品。
就算我更改完Dr. Mario World的关联,那个“参与的...
原来是这个意思。试了下这个其实更像是sai老板服务器端的一个bug,因为他作品那里就只返回20个结果(其实可以报一下错了)。像这种情况的话,我这边能做的大概就只能是利用id来关联了。
#4-6 - 2020-7-26 21:32
chitanda@Lv2
knh初 说: 我又试了试还是不行,你可以试一试关联路易吉洋楼3 ルイージマンション3 的声优。
“选择参与的作品”只显示了奥德赛到马64这20个作品。
就算我更改完Dr. Mario World的关联,那个“参与的...
我觉得与其我重写一个关联功能,在老板修复之前,不如我前端做个按钮能够返回全部作品列表的?那样对你们体验应该还好点。。
#4-7 - 2020-7-26 21:39
knh初
chitanda@Lv2 说: 我觉得与其我重写一个关联功能,在老板修复之前,不如我前端做个按钮能够返回全部作品列表的?那样对你们体验应该还好点。。
如果可以的话,非常感谢
#4-8 - 2020-7-26 21:41
chitanda@Lv2
knh初 说: 如果可以的话,非常感谢
隔壁发了个贴报错,老板要是明天没回复的话我到时候再写吧(bgm37)这个理论上他那边修复比我这快得多
#4-9 - 2020-7-26 21:48
knh初
chitanda@Lv2 说: 隔壁发了个贴报错,老板要是明天没回复的话我到时候再写吧这个理论上他那边修复比我这快得多
还是等1周吧,Sai老板现在好像1周才上线一次
#5 - 2020-7-26 13:59
(漫畫是塑造每個人夢想的東西)
(bgm38)nb
#6 - 2020-7-26 21:48
小提醒:萌百目前的版权协议是CC BY NC SA,而bgm目前是CC BY SA;简单来说版权协议并不兼容,侧边栏表格的人物信息应该是没问题的,但是如果直接抓取简介部分的大段内容的话可能会有争议。
#6-1 - 2020-7-27 00:09
chitanda@Lv2
我之前其实考虑过这个,但是看了下感觉差的不是太多,加上bgm不少条目也是明抄那边的,所以就没怎么在意了。。
#6-2 - 2020-7-27 00:55
非鱼YU
chitanda@Lv2 说: 我之前其实考虑过这个,但是看了下感觉差的不是太多,加上bgm不少条目也是明抄那边的,所以就没怎么在意了。。
_(:з」∠)_萌百现在的版权是比较尴尬的,因为现在很多类似的站都改成by sa协议,互相引用一直挺麻烦的,可能的话大段抓取的最好还是署名一下来源(
#6-3 - 2020-7-27 00:58
chitanda@Lv2
非鱼YU 说: _(:з」∠)_萌百现在的版权是较尴尬的,因为现在很多类似的站都改成by sa协议,互相引用一直挺麻烦的,可能的话大段抓取的最好还是署名一下来源(
来源我默认加的,不过因为中日文url转码后太长影响bgm这边页面美观,所以来源只写主站没写具体条目
#6-4 - 2020-7-27 01:01
非鱼YU
chitanda@Lv2 说: 来源我默认加的,不过因为中日文url转码后太长影响bgm这边页面美观,所以来源只写主站没写具体条目
署了主站就可以了(毕竟有个互相尊重的意思