最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

在本地建立一個(gè) Bangumi 數(shù)據(jù)庫(kù)

2022-01-16 18:42 作者:Flinx_方凌旭  | 我要投稿

使用自己復(fù)刻的數(shù)據(jù)庫(kù)可以查詢得到如下問(wèn)題的答案

  • 所有名字中含有“昴”的角色

  • 所有名字中含有“昴”的角色及其出場(chǎng)作品

  • 所有名字中含有“昴”的角色及其聲優(yōu)

  • “沒(méi)有什么好怕的了”這一臺(tái)詞的出現(xiàn)過(guò)的劇集及時(shí)間

建立步驟

  1. clone以下 Github 項(xiàng)目到同一文件夾中

    • Bangumi 條目靜態(tài)數(shù)據(jù)快照:https://github.com/czy0729/Bangumi-Subject

    • Bangumi 人物靜態(tài)數(shù)據(jù)快照:https://github.com/czy0729/Bangumi-Mono(非必需)

    • Bangumi Data:https://github.com/bangumi-data/bangumi-data

    • 字幕共享計(jì)劃:https://github.com/foxofice/sub_share

    • 建立 Bangumi 數(shù)據(jù)庫(kù)所需代碼:https://github.com/Flinx-LY/Bangumi-Database

  2. 使用bangumi_db.sql在MySQL數(shù)據(jù)庫(kù)中建立數(shù)據(jù)表

  3. 依次運(yùn)行 Bangumi-Database 中的如下文件

    • spider_crt.js

    • spider_cv.js

    • spider_bcc.js

    • mysql_subject&ep.js

    • mysql_bgmdata.js

    • mysql_cn.js

    • mysql_bcc,crt,cv.js(需要更改indAction變量運(yùn)行三次)

    • mysql_assFile.py

    • mysql_assDia.py

  4. 刪除ass_dialogue數(shù)據(jù)表的索引(加快導(dǎo)入速度)

  5. 使用 Navicat 的導(dǎo)入功能導(dǎo)入assDia文件夾下csv文件至ass_dialogue數(shù)據(jù)表

  6. 重建ass_dialogue數(shù)據(jù)表的索引(約需20分鐘)

數(shù)據(jù)表行數(shù)統(tǒng)計(jì)

  • bangumi__type2:18757

  • bangumi_ep:217513

  • bgm_character:38692

  • bgm_person__cv:4428

  • bgm-crt-cv:82524

  • ass_file:59258

  • ass_dialogue:27770149

部分代碼介紹

Bangumi-Subject

ids.js

  • 爬取 2020 年的動(dòng)畫(huà)條目、所有類型的排行榜上的條目、bangumi-data 里面的所有條目的ID,保存于ids文件夾

spider.js

  • ids讀取作品ID列表

  • 遍歷作品ID列表,使用API獲取爬取對(duì)應(yīng)作品資料保存于data文件夾

spider-by-index.js

  • 指定開(kāi)始ID和結(jié)束ID,生成作品ID列表

  • 遍歷作品ID列表,使用API獲取爬取對(duì)應(yīng)作品資料保存于data文件夾

cn.js

  • 遍歷data中作品資料文件,讀取作品的中文名稱保存于cn文件夾

rate.js

  • 遍歷data中作品資料文件,讀取作品的評(píng)分保存于cn文件夾

Bangumi-Mono

spider.js

  • Bangumi-Subject/ids讀取作品ID列表

  • 遍歷作品ID列表,從Bangumi-Subject/data 讀取對(duì)應(yīng)作品資料文件中角色I(xiàn)D或人物ID列表

  • 遍歷角色I(xiàn)D或人物ID列表,爬取對(duì)應(yīng)角色資料保存于data文件夾或人物資料保存于person文件夾

cv.js

  • 遍歷data中角色資料文件,從中讀取聲優(yōu)ID列表

  • 遍歷聲優(yōu)ID列表,爬取對(duì)應(yīng)聲優(yōu)資料保存于person文件夾

Bangumi-Database

spider_crt.js

  • 遍歷Bangumi-Mono/data中角色資料文件,建立角色I(xiàn)D列表(已緩存,無(wú)需Bangumi-Mono/data

  • 遍歷角色I(xiàn)D列表,爬取對(duì)應(yīng)角色資料保存于crt文件夾

Bangumi-Mono/spider.js沒(méi)有考慮到一個(gè)角色可能有多個(gè)聲優(yōu)為其配音,故在其代碼基礎(chǔ)上加以修改。

例子:https://bgm.tv/character/44166

spider_cv.js

  • 遍歷crt中角色資料文件,從中讀取聲優(yōu)ID列表

  • 遍歷聲優(yōu)ID列表,爬取對(duì)應(yīng)聲優(yōu)資料保存于cv文件夾

spider_bcc.js

  • Bangumi-Subject/ids讀取作品ID列表

  • 遍歷作品ID列表,爬取對(duì)應(yīng)作品ID-角色I(xiàn)D-聲優(yōu)ID關(guān)系表保存于bcc文件夾

mysql_subject&ep.js

  • 遍歷Bangumi-Subject/data中作品資料文件

  • 讀取作品信息插入到bangumi__type2數(shù)據(jù)表

  • 讀取章節(jié)信息插入到bangumi_ep數(shù)據(jù)表

由于Bangumi-Subject/data中的部分json文件在保存時(shí)沒(méi)有對(duì)英文引號(hào)進(jìn)行處理,導(dǎo)致它們的json解析會(huì)失敗,故使用如下代碼在首次失敗后進(jìn)行正則替換再次解析。

mysql_bgmdata.js

  • 遍歷bangumi-data/data/items中每月作品資料文件

  • 讀取官網(wǎng)開(kāi)始日期更新bangumi__type2數(shù)據(jù)表

mysql_cn.js

  • 讀取Bangumi-Subject/cn/data.json中作品中文名稱對(duì)照表

  • 遍歷中文名稱對(duì)照表,讀取中文名稱更新bangumi__type2數(shù)據(jù)表

mysql_bcc,crt,cv.js

  • 遍歷bcccrtcv文件夾中文件

  • 讀取信息插入到bgm-crt-cvbgm_characterbgm_person__cv數(shù)據(jù)表

本文件需要運(yùn)行三次,請(qǐng)更改indAction變量分別完成以上三項(xiàng)工作

mysql_assFile.py

  • 遍歷sub_share/subs_list/animation中字幕文件

  • 使用正則表達(dá)式從文件路徑中獲取字幕與作品的關(guān)聯(lián)信息,插入到ass_file數(shù)據(jù)表

mysql_assDia.py

  • 遍歷sub_share/subs_list/animation中字幕文件

  • ass_file數(shù)據(jù)表中查詢ass文件ID

  • 將臺(tái)詞的文本內(nèi)容、時(shí)間連同ass文件ID保存至assDia文件夾下多個(gè)csv文件中,每個(gè)含100萬(wàn)行

  • 此后使用 Navicat 的導(dǎo)入功能導(dǎo)入csv文件至ass_dialogue數(shù)據(jù)表

簡(jiǎn)要說(shuō)明

Bangumi-Subject/data文件夾下有30萬(wàn)條json格式的Bangumi條目數(shù)據(jù)。

如果使用MongoDB數(shù)據(jù)庫(kù),則執(zhí)行如下這樣的node.js代碼即可直接導(dǎo)入json數(shù)據(jù)。

我使用了MySQL數(shù)據(jù)庫(kù),故需要設(shè)計(jì)表的結(jié)構(gòu)以處理數(shù)組對(duì)象、子Object對(duì)象和一對(duì)多、多對(duì)多關(guān)系。

其關(guān)鍵是bgm-crt-cv關(guān)系表,因?yàn)?span id="s0sssss00s" class="md-pair-s " style="">作品-角色角色-聲優(yōu)均為多對(duì)多關(guān)系。

作品-劇集是一對(duì)多關(guān)系,只需在bangumi_ep劇集數(shù)據(jù)表設(shè)置一個(gè)B_bangumi_id字段指向作品數(shù)據(jù)表ID即可,B_前綴指明這是一對(duì)多關(guān)系。

注:ass_file數(shù)據(jù)表的R_bangumi_id字段中的R_前綴表明這一字段的數(shù)據(jù)可以查詢獲得,為簡(jiǎn)化操作而保存于此。

[未完,待補(bǔ)充]

MySQL查詢示例

按名稱查詢作品

按名稱和開(kāi)始日期查詢作品

按作品ID和章節(jié)序號(hào)查詢章節(jié)

搜索名字中含有“彼方”的角色(兩種方法)

搜索名字中含有“昴”的角色

問(wèn)題來(lái)源:https://www.bilibili.com/bangumi/play/ss6306

由于主要使用動(dòng)畫(huà)作品相關(guān)資料建立數(shù)據(jù)庫(kù),故查詢結(jié)果不全

搜索名字中含有“昴”的角色及其出場(chǎng)作品

搜索名字中含有“昴”的角色及其聲優(yōu)

搜索“沒(méi)有什么好怕的了”這一臺(tái)詞的出現(xiàn)過(guò)的劇集及時(shí)間

注:部分作品字幕有多個(gè)版本,查詢結(jié)果有重復(fù)


在本地建立一個(gè) Bangumi 數(shù)據(jù)庫(kù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
延边| 宝清县| 虹口区| 加查县| 宁强县| 岐山县| 贵定县| 连平县| 湖南省| 临漳县| 墨脱县| 辉县市| 宁晋县| 钟山县| 卢湾区| 北海市| 牟定县| 龙门县| 兴隆县| 凤山市| 霍山县| 锦州市| 辽阳县| 毕节市| 澄迈县| 广南县| 北海市| 布尔津县| 吉木萨尔县| 邹平县| 淄博市| 休宁县| 迁西县| 潼南县| 云和县| 尉犁县| 鲁甸县| 化德县| 英山县| 庆安县| 侯马市|