From e4be2be66490fe9b2c969ea53f6d973a24c44f6d Mon Sep 17 00:00:00 2001
From: jiaojiaodubai <63148861+jiaojiaodubai@users.noreply.github.com>
Date: Fri, 20 Sep 2024 13:11:05 +0800
Subject: [PATCH] close #383
---
Douban.js | 125 +++++++++++++++++++++++++++++-------------------------
1 file changed, 67 insertions(+), 58 deletions(-)
diff --git a/Douban.js b/Douban.js
index 7f0e7c3..9281b5f 100644
--- a/Douban.js
+++ b/Douban.js
@@ -9,7 +9,7 @@
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcsibv",
- "lastUpdated": "2024-04-17 13:01:09"
+ "lastUpdated": "2024-09-20 05:05:44"
}
/*
@@ -43,7 +43,7 @@ const typeMap = {
};
function detectWeb(doc, url) {
- let typeKey = Object.keys(typeMap).find(key => new RegExp(`${key}/\\d+/`).test(url));
+ const typeKey = Object.keys(typeMap).find(key => new RegExp(`${key}/\\d+/`).test(url));
if (typeKey) {
return typeMap[typeKey];
}
@@ -54,18 +54,18 @@ function detectWeb(doc, url) {
}
function getSearchResults(doc, checkOnly) {
- var items = {};
- var found = false;
+ const items = {};
+ let found = false;
// .title > a, h2 > a: read.douban.com/ebook
// td > .pl2: music.douban.com/top250
// .explore li > a:first-child: https://movie.douban.com/tv/
- var rows = Array.from(doc.querySelectorAll('.title > a, h2 > a, td > .pl2 > a, a.album-titl, .explore li > a:first-child'))
+ const rows = Array.from(doc.querySelectorAll('.title > a, h2 > a, td > .pl2 > a, a.album-titl, .explore li > a:first-child'))
.filter((row) => {
return [...Object.keys(typeMap), 'uri=/tv', 'uri=/movie'].some(key => new RegExp(`${key}/\\d+`).test(row.href));
});
- for (let row of rows) {
- let href = row.href;
- let title = ZU.trimInternal(row.textContent);
+ for (const row of rows) {
+ const href = row.href;
+ const title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
@@ -76,9 +76,9 @@ function getSearchResults(doc, checkOnly) {
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
- let items = await Zotero.selectItems(getSearchResults(doc, false));
+ const items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
- for (let url of Object.keys(items)) {
+ for (const url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
@@ -88,16 +88,16 @@ async function doWeb(doc, url) {
}
async function scrape(doc, url = doc.location.href) {
- var newItem = new Z.Item(detectWeb(doc, url));
- let extra = new Extra();
- var creators = [];
+ const newItem = new Z.Item(detectWeb(doc, url));
+ const extra = new Extra();
+ let creators = [];
const isRead = url.includes('read.douban.com/ebook');
// .article-meta for read
- var labels = isRead
+ const labels = isRead
? new Labels(doc, '.article-meta > p')
: new TextLabels(doc, '#info', /.+?:/);
Z.debug(isRead ? labels.data.map(arr => [arr[0], arr[1].innerText]) : labels.data);
- var title = ZU.trimInternal(text(doc, 'h1'));
+ let title = ZU.trimInternal(text(doc, 'h1'));
switch (newItem.itemType) {
case 'book': {
Z.debug('this is a book');
@@ -121,18 +121,17 @@ async function scrape(doc, url = doc.location.href) {
? labels.get('出版社').split(' / ')[0]
: labels.get('出版社');
// https://book.douban.com/subject/1451400/
- newItem.date = isRead
+ newItem.date = ZU.strToISO(isRead
? tryMatch(labels.get('出版社'), /[\d.-]+/)
- : labels.get('出版年').replace(/\./g, '-');
+ : labels.get('出版年'));
newItem.numPages = labels.get('页数');
newItem.ISBN = labels.get('ISBN');
- newItem.shortTitle = tryMatch(newItem.title, /[::] (.+)$/, 1);
- let authors = isRead
+ const authors = isRead
? Array.from(labels.get('作者', true).querySelectorAll('.author-item'))
.map(creator => processName(ZU.trimInternal(creator.textContent), 'author'))
: labels.get('作者').split(/\s?\/\s?/)
.map(creator => processName(creator, 'author'));
- let translators = isRead
+ const translators = isRead
? Array.from(labels.get('译者', true).querySelectorAll('.author-item'))
.map(translator => processName(ZU.trimInternal(translator.textContent), 'translator'))
: labels.get('译者').split(/\s?\/\s?/)
@@ -142,7 +141,7 @@ async function scrape(doc, url = doc.location.href) {
doc.querySelectorAll('.tags a > span:first-child').forEach((tag) => {
newItem.tags.push(tag.innerText);
});
- let contents = doc.querySelector('[id*="dir_"][id*="_full"], .table-of-contents');
+ const contents = doc.querySelector('[id*="dir_"][id*="_full"], .table-of-contents');
if (contents) {
newItem.notes.push(`
《${newItem.title}》 - 目录
` + contents.innerHTML.replace(/ · · · [\s\S]*$/, '').replace(/展开全部$/, ''));
}
@@ -158,7 +157,7 @@ async function scrape(doc, url = doc.location.href) {
title = title.replace(/ \(\d{4}\)$/, '');
// 很难用正则从title中匹配出中文标题
// https://movie.douban.com/subject/3183628/
- let zhTitle = doc.title.replace(/ \(豆瓣\)$/, '');
+ const zhTitle = doc.title.replace(/ \(豆瓣\)$/, '');
newItem.title = zhTitle;
if (new RegExp(`${zhTitle}.+`).test(title)) {
extra.set('original-title', title.replace(`${zhTitle} `, ''), true);
@@ -178,7 +177,7 @@ async function scrape(doc, url = doc.location.href) {
extra.set('alias', labels.get('又名'));
extra.set('IMDb', labels.get('IMDb'));
extra.set('style', labels.get('类型'));
- let creatorsMap = {
+ const creatorsMap = {
director: json.director,
scriptwriter: json.author,
contributor: json.actor
@@ -196,7 +195,7 @@ async function scrape(doc, url = doc.location.href) {
creators.push(processName(creator, creatorType));
}
}
- let image = json.image;
+ const image = json.image;
if (image) {
newItem.attachments.push({
title: newItem.title,
@@ -219,7 +218,7 @@ async function scrape(doc, url = doc.location.href) {
extra.set('ISRC', labels.get('ISRC'));
extra.set('barcode', labels.get('条形码'));
labels.get('表演者').split(' / ').forEach(performer => creators.push(processName(performer, 'performer')));
- let contents = doc.querySelector('.track-list');
+ const contents = doc.querySelector('.track-list');
if (contents) {
newItem.notes.push(`《${newItem.title}》 - 目录
` + contents.innerHTML.replace(/ · · · [\s\S]*$/, '').replace(/展开全部$/, ''));
}
@@ -295,30 +294,28 @@ class Labels {
constructor(doc, selector) {
this.data = [];
this.emptyElm = doc.createElement('div');
- Array.from(doc.querySelectorAll(selector))
+ const nodes = doc.querySelectorAll(selector);
+ for (const node of nodes) {
// avoid nesting
- .filter(element => !element.querySelector(selector))
// avoid empty
- .filter(element => !/^\s*$/.test(element.textContent))
- .forEach((element) => {
- const elmCopy = element.cloneNode(true);
- // avoid empty text
- while (/^\s*$/.test(elmCopy.firstChild.textContent)) {
- // Z.debug(elementCopy.firstChild.textContent);
- elmCopy.removeChild(elmCopy.firstChild);
- // Z.debug(elementCopy.firstChild.textContent);
- }
- if (elmCopy.childNodes.length > 1) {
- const key = elmCopy.removeChild(elmCopy.firstChild).textContent.replace(/\s/g, '');
- this.data.push([key, elmCopy]);
- }
- else {
- const text = ZU.trimInternal(elmCopy.textContent);
- const key = tryMatch(text, /^[[【]?.+?[】\]::]/).replace(/\s/g, '');
- elmCopy.textContent = tryMatch(text, /^[[【]?.+?[】\]::]\s*(.+)/, 1);
- this.data.push([key, elmCopy]);
- }
- });
+ if (node.querySelector(selector) || !/\S/.test(node.textContent)) continue;
+ const elmCopy = node.cloneNode(true);
+ // avoid empty text
+ while (![1, 3, 4].includes(elmCopy.firstChild.nodeType) || !/\S$/.test(elmCopy.firstChild.textContent)) {
+ elmCopy.removeChild(elmCopy.firstChild);
+ if (!elmCopy.firstChild) break;
+ }
+ if (elmCopy.childNodes.length > 1) {
+ const key = elmCopy.removeChild(elmCopy.firstChild).textContent.replace(/\s/g, '');
+ this.data.push([key, elmCopy]);
+ }
+ else {
+ const text = ZU.trimInternal(elmCopy.textContent);
+ const key = tryMatch(text, /^[[【]?.+?[】\]::]/).replace(/\s/g, '');
+ elmCopy.textContent = tryMatch(text, /^[[【]?.+?[】\]::]\s*(.+)/, 1);
+ this.data.push([key, elmCopy]);
+ }
+ }
}
get(label, element = false) {
@@ -391,7 +388,7 @@ function tryMatch(string, pattern, index = 0) {
}
function processName(fullName, defaultType) {
- var creatorType, country, original;
+ let creatorType, country, original;
// 当多个人名折叠时,最后一个人名可能带有“更多”。
fullName = fullName.replace(/更多\.\.\.$/, '');
Z.debug(fullName);
@@ -425,7 +422,7 @@ function processName(fullName, defaultType) {
}
}
}
- creatorType = creatorType || defaultType;
+ creatorType = defaultType || creatorType;
let creator = ZU.cleanAuthor(fullName, creatorType);
// https://book.douban.com/subject/26604008/
if (/[\u4e00-\u9fff]/.test(creator.lastName)) {
@@ -481,7 +478,6 @@ function toArabicNum(zhNum) {
return res;
}
-
/** BEGIN TEST CASES **/
var testCases = [
{
@@ -523,15 +519,16 @@ var testCases = [
"fieldMode": 1
}
],
- "date": "2015-7-1",
+ "date": "2015-07-01",
"ISBN": "9787111504825",
"abstractNote": "《计算机组成与设计:硬件/软件接口》是计算机组成与设计的经典畅销教材,第5版经过全面更新,关注后PC时代发生在计算机体系结构领域的革命性变革——从单核处理器到多核微处理器,从串行到并行。本书特别关注移动计算和云计算,通过平板电脑、云体系结构以及ARM(移动计算设备)和x86(云计算)体系结构来探索和揭示这场技术变革。 与前几版一样,本书采用MIPS处理器讲解计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及I/O等基本功能。",
- "extra": "original-title: Computer Organization and Design: The Hardware/Software Interface (5/e)\noriginal-author: David A.Patterson\noriginal-author: John L.Hennessy\nprice: 99.00元\nrating: 9.3\nratingPeople: 407人评价\ncomments: 114\ncreatorsExt: [{\"firstName\":\"\",\"lastName\":\"戴维·A. 帕特森\",\"creatorType\":\"author\",\"fieldMode\":1,\"country\":\"\",\"original\":\"David A.Patterson\"},{\"firstName\":\"\",\"lastName\":\"约翰·L. 亨尼斯\",\"creatorType\":\"author\",\"fieldMode\":1,\"country\":\"\",\"original\":\"John L.Hennessy\"},{\"firstName\":\"\",\"lastName\":\"王党辉\",\"creatorType\":\"translator\",\"fieldMode\":1,\"country\":\"\",\"original\":\"\"},{\"firstName\":\"\",\"lastName\":\"康继昌\",\"creatorType\":\"translator\",\"fieldMode\":1,\"country\":\"\",\"original\":\"\"},{\"firstName\":\"\",\"lastName\":\"安建峰\",\"creatorType\":\"translator\",\"fieldMode\":1,\"country\":\"\",\"original\":\"\"}]",
+ "extra": "original-title: Computer Organization and Design: The Hardware/Software Interface (5/e)\noriginal-author: David A.Patterson\noriginal-author: John L.Hennessy\nprice: 99.00元\nrating: 9.2\nratingPeople: 418人评价\ncomments: 119\ncreatorsExt: [{\"firstName\":\"\",\"lastName\":\"戴维·A. 帕特森\",\"creatorType\":\"author\",\"fieldMode\":1,\"country\":\"\",\"original\":\"David A.Patterson\"},{\"firstName\":\"\",\"lastName\":\"约翰·L. 亨尼斯\",\"creatorType\":\"author\",\"fieldMode\":1,\"country\":\"\",\"original\":\"John L.Hennessy\"},{\"firstName\":\"\",\"lastName\":\"王党辉\",\"creatorType\":\"translator\",\"fieldMode\":1,\"country\":\"\",\"original\":\"\"},{\"firstName\":\"\",\"lastName\":\"康继昌\",\"creatorType\":\"translator\",\"fieldMode\":1,\"country\":\"\",\"original\":\"\"},{\"firstName\":\"\",\"lastName\":\"安建峰\",\"creatorType\":\"translator\",\"fieldMode\":1,\"country\":\"\",\"original\":\"\"}]",
"language": "zh-CN",
"libraryCatalog": "Douban",
"numPages": "536",
"publisher": "机械工业出版社",
"series": "计算机科学丛书",
+ "shortTitle": "计算机组成与设计",
"url": "https://book.douban.com/subject/26604008/",
"attachments": [],
"tags": [],
@@ -663,7 +660,7 @@ var testCases = [
},
{
"firstName": "",
- "lastName": "威廉姆·赛德勒",
+ "lastName": "威廉·桑德勒",
"creatorType": "contributor",
"fieldMode": 1
},
@@ -796,7 +793,7 @@ var testCases = [
],
"date": "1994-09-10",
"abstractNote": "一场谋杀案使银行家安迪(蒂姆•罗宾斯 Tim Robbins 饰)蒙冤入狱,谋杀妻子及其情人的指控将囚禁他终生。在肖申克监狱的首次现身就让监狱“大哥”瑞德(摩根•弗里曼 Morgan Freeman 饰)对他另眼相看。瑞德帮助他搞到一把石锤和一幅女明星海报,两人渐成患难 之交。很快,安迪在监狱里大显其才,担当监狱图书管理员,并利用自己的金融知识帮助监狱官避税,引起了典狱长的注意,被招致麾下帮助典狱长洗黑钱。偶然一次,他得知一名新入狱的小偷能够作证帮他洗脱谋杀罪。燃起一丝希望的安迪找到了典狱长,希望他能帮自己翻案。阴险伪善的狱长假装答应安迪,背后却派人杀死小偷,让他唯一能合法出狱的希望泯灭。沮丧的安迪并没有绝望,在一个电闪雷鸣的风雨夜,一场暗藏几十年的越狱计划让他自我救赎,重获自由!老朋友瑞德在他的鼓舞和帮助下,也勇敢地奔向自由。 本片获得1995年奥斯卡10项提名,以及金球奖、土星奖等多项提名。",
- "extra": "original-title: The Shawshank Redemption\noriginal-author: Frank Darabont\noriginal-author: Frank Darabont\noriginal-author: Stephen King\noriginal-author: Tim Robbins\noriginal-author: Morgan Freeman\noriginal-author: Bob Gunton\noriginal-author: William Sadler\noriginal-author: Clancy Brown\noriginal-author: Gil Bellows\noriginal-author: Mark Rolston\noriginal-author: James Whitmore\noriginal-author: Jeffrey DeMunn\noriginal-author: Larry Brandenburg\noriginal-author: Neil Giuntoli\noriginal-author: Brian Libby\noriginal-author: David Proval\noriginal-author: Joseph Ragno\noriginal-author: Jude Ciccolella\noriginal-author: Paul McCrane\noriginal-author: Renee Blaine\noriginal-author: Alfonso Freeman\noriginal-author: V.J. Foster\noriginal-author: Frank Medrano\noriginal-author: Mack Miles\noriginal-author: Neil Summers\noriginal-author: Ned Bellamy\noriginal-author: Brian Delate\noriginal-author: Don McManus\nplace: 美国\nalias: 月黑高飞(港) / 刺激1995(台) / 地狱诺言 / 铁窗岁月 / 消香克的救赎\nIMDb: tt0111161\nstyle: 剧情 / 犯罪\nrating: 9.7\nratingPeople: 3012219人评价\ncomments: 587961\ncreatorsExt: [{\"firstName\":\"\",\"lastName\":\"弗兰克·德拉邦特\",\"creatorType\":\"director\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Frank Darabont\"},{\"firstName\":\"\",\"lastName\":\"弗兰克·德拉邦特\",\"creatorType\":\"scriptwriter\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Frank Darabont\"},{\"firstName\":\"\",\"lastName\":\"斯蒂芬·金\",\"creatorType\":\"scriptwriter\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Stephen King\"},{\"firstName\":\"\",\"lastName\":\"蒂姆·罗宾斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Tim Robbins\"},{\"firstName\":\"\",\"lastName\":\"摩根·弗里曼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Morgan Freeman\"},{\"firstName\":\"\",\"lastName\":\"鲍勃·冈顿\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Bob Gunton\"},{\"firstName\":\"\",\"lastName\":\"威廉姆·赛德勒\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"William Sadler\"},{\"firstName\":\"\",\"lastName\":\"克兰西·布朗\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Clancy Brown\"},{\"firstName\":\"\",\"lastName\":\"吉尔·贝罗斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Gil Bellows\"},{\"firstName\":\"\",\"lastName\":\"马克·罗斯顿\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Mark Rolston\"},{\"firstName\":\"\",\"lastName\":\"詹姆斯·惠特摩\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"James Whitmore\"},{\"firstName\":\"\",\"lastName\":\"杰弗里·德曼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Jeffrey DeMunn\"},{\"firstName\":\"\",\"lastName\":\"拉里·布兰登伯格\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Larry Brandenburg\"},{\"firstName\":\"\",\"lastName\":\"尼尔·吉恩托利\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Neil Giuntoli\"},{\"firstName\":\"\",\"lastName\":\"布赖恩·利比\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Brian Libby\"},{\"firstName\":\"\",\"lastName\":\"大卫·普罗瓦尔\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"David Proval\"},{\"firstName\":\"\",\"lastName\":\"约瑟夫·劳格诺\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Joseph Ragno\"},{\"firstName\":\"\",\"lastName\":\"祖德·塞克利拉\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Jude Ciccolella\"},{\"firstName\":\"\",\"lastName\":\"保罗·麦克兰尼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Paul McCrane\"},{\"firstName\":\"\",\"lastName\":\"芮妮·布莱恩\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Renee Blaine\"},{\"firstName\":\"\",\"lastName\":\"阿方索·弗里曼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Alfonso Freeman\"},{\"firstName\":\"\",\"lastName\":\"V·J·福斯特\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"V.J. Foster\"},{\"firstName\":\"\",\"lastName\":\"弗兰克·梅德拉诺\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Frank Medrano\"},{\"firstName\":\"\",\"lastName\":\"马克·迈尔斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Mack Miles\"},{\"firstName\":\"\",\"lastName\":\"尼尔·萨默斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Neil Summers\"},{\"firstName\":\"\",\"lastName\":\"耐德·巴拉米\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Ned Bellamy\"},{\"firstName\":\"\",\"lastName\":\"布赖恩·戴拉特\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Brian Delate\"},{\"firstName\":\"\",\"lastName\":\"唐·麦克马纳斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Don McManus\"}]",
+ "extra": "original-title: The Shawshank Redemption\noriginal-author: Frank Darabont\noriginal-author: Frank Darabont\noriginal-author: Stephen King\noriginal-author: Tim Robbins\noriginal-author: Morgan Freeman\noriginal-author: Bob Gunton\noriginal-author: William Sadler\noriginal-author: Clancy Brown\noriginal-author: Gil Bellows\noriginal-author: Mark Rolston\noriginal-author: James Whitmore\noriginal-author: Jeffrey DeMunn\noriginal-author: Larry Brandenburg\noriginal-author: Neil Giuntoli\noriginal-author: Brian Libby\noriginal-author: David Proval\noriginal-author: Joseph Ragno\noriginal-author: Jude Ciccolella\noriginal-author: Paul McCrane\noriginal-author: Renee Blaine\noriginal-author: Alfonso Freeman\noriginal-author: V.J. Foster\noriginal-author: Frank Medrano\noriginal-author: Mack Miles\noriginal-author: Neil Summers\noriginal-author: Ned Bellamy\noriginal-author: Brian Delate\noriginal-author: Don McManus\nplace: 美国\nalias: 月黑高飞(港) / 刺激1995(台) / 地狱诺言 / 铁窗岁月 / 消香克的救赎\nIMDb: tt0111161\nstyle: 剧情 / 犯罪\nrating: 9.7\nratingPeople: 3064804人评价\ncomments: 598175\ncreatorsExt: [{\"firstName\":\"\",\"lastName\":\"弗兰克·德拉邦特\",\"creatorType\":\"director\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Frank Darabont\"},{\"firstName\":\"\",\"lastName\":\"弗兰克·德拉邦特\",\"creatorType\":\"scriptwriter\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Frank Darabont\"},{\"firstName\":\"\",\"lastName\":\"斯蒂芬·金\",\"creatorType\":\"scriptwriter\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Stephen King\"},{\"firstName\":\"\",\"lastName\":\"蒂姆·罗宾斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Tim Robbins\"},{\"firstName\":\"\",\"lastName\":\"摩根·弗里曼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Morgan Freeman\"},{\"firstName\":\"\",\"lastName\":\"鲍勃·冈顿\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Bob Gunton\"},{\"firstName\":\"\",\"lastName\":\"威廉·桑德勒\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"William Sadler\"},{\"firstName\":\"\",\"lastName\":\"克兰西·布朗\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Clancy Brown\"},{\"firstName\":\"\",\"lastName\":\"吉尔·贝罗斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Gil Bellows\"},{\"firstName\":\"\",\"lastName\":\"马克·罗斯顿\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Mark Rolston\"},{\"firstName\":\"\",\"lastName\":\"詹姆斯·惠特摩\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"James Whitmore\"},{\"firstName\":\"\",\"lastName\":\"杰弗里·德曼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Jeffrey DeMunn\"},{\"firstName\":\"\",\"lastName\":\"拉里·布兰登伯格\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Larry Brandenburg\"},{\"firstName\":\"\",\"lastName\":\"尼尔·吉恩托利\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Neil Giuntoli\"},{\"firstName\":\"\",\"lastName\":\"布赖恩·利比\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Brian Libby\"},{\"firstName\":\"\",\"lastName\":\"大卫·普罗瓦尔\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"David Proval\"},{\"firstName\":\"\",\"lastName\":\"约瑟夫·劳格诺\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Joseph Ragno\"},{\"firstName\":\"\",\"lastName\":\"祖德·塞克利拉\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Jude Ciccolella\"},{\"firstName\":\"\",\"lastName\":\"保罗·麦克兰尼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Paul McCrane\"},{\"firstName\":\"\",\"lastName\":\"芮妮·布莱恩\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Renee Blaine\"},{\"firstName\":\"\",\"lastName\":\"阿方索·弗里曼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Alfonso Freeman\"},{\"firstName\":\"\",\"lastName\":\"V·J·福斯特\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"V.J. Foster\"},{\"firstName\":\"\",\"lastName\":\"弗兰克·梅德拉诺\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Frank Medrano\"},{\"firstName\":\"\",\"lastName\":\"马克·迈尔斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Mack Miles\"},{\"firstName\":\"\",\"lastName\":\"尼尔·萨默斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Neil Summers\"},{\"firstName\":\"\",\"lastName\":\"耐德·巴拉米\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Ned Bellamy\"},{\"firstName\":\"\",\"lastName\":\"布赖恩·戴拉特\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Brian Delate\"},{\"firstName\":\"\",\"lastName\":\"唐·麦克马纳斯\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Don McManus\"}]",
"language": "zh-CN",
"libraryCatalog": "Douban",
"runningTime": "142 min",
@@ -882,6 +879,18 @@ var testCases = [
"creatorType": "contributor",
"fieldMode": 1
},
+ {
+ "firstName": "",
+ "lastName": "伊芙·爱德华兹",
+ "creatorType": "contributor",
+ "fieldMode": 1
+ },
+ {
+ "firstName": "",
+ "lastName": "莎凡娜·魏尔奇",
+ "creatorType": "contributor",
+ "fieldMode": 1
+ },
{
"firstName": "",
"lastName": "胡安尼·费利兹",
@@ -895,14 +904,14 @@ var testCases = [
},
{
"firstName": "",
- "lastName": "莎凡娜·魏尔奇",
+ "lastName": "索耶·弗雷泽",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "2022-10-03",
"abstractNote": "ABC续订弗莱迪·海默主演《良医》第6季。",
- "extra": "original-title: The Good Doctor Season 6\noriginal-author: David Shore\noriginal-author: Freddie Highmore\noriginal-author: Fiona Gubelmann\noriginal-author: Will Yun Lee\noriginal-author: Christina Chang\noriginal-author: Bria Henderson\noriginal-author: Noah Galvin\noriginal-author: Hill Harper\noriginal-author: Richard Schiff\noriginal-author: Brandon Larracuente\noriginal-author: Juani Feliz\noriginal-author: Savannah Welch\nplace: 美国\nalias: 好医生 / 仁医 / 良医心 / 良医墨非\nIMDb: tt19267596\nstyle: 剧情\nrating: 8.7\nratingPeople: 2843人评价\ncomments: 687\ncreatorsExt: [{\"firstName\":\"\",\"lastName\":\"大卫·肖\",\"creatorType\":\"scriptwriter\",\"fieldMode\":1,\"country\":\"\",\"original\":\"David Shore\"},{\"firstName\":\"\",\"lastName\":\"弗莱迪·海默\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Freddie Highmore\"},{\"firstName\":\"\",\"lastName\":\"菲奥娜·嘉伯曼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Fiona Gubelmann\"},{\"firstName\":\"\",\"lastName\":\"李威尹\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Will Yun Lee\"},{\"firstName\":\"\",\"lastName\":\"克里斯蒂娜·张\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Christina Chang\"},{\"firstName\":\"\",\"lastName\":\"布里亚·亨德森\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Bria Henderson\"},{\"firstName\":\"\",\"lastName\":\"诺亚·盖尔文\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Noah Galvin\"},{\"firstName\":\"\",\"lastName\":\"希尔·哈勃\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Hill Harper\"},{\"firstName\":\"\",\"lastName\":\"理查德·希夫\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Richard Schiff\"},{\"firstName\":\"\",\"lastName\":\"布兰登·拉瑞昆特\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Brandon Larracuente\"},{\"firstName\":\"\",\"lastName\":\"胡安尼·费利兹\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Juani Feliz\"},{\"firstName\":\"Jennifer\",\"lastName\":\"Tong\",\"creatorType\":\"contributor\",\"country\":\"\",\"original\":\"\"},{\"firstName\":\"\",\"lastName\":\"莎凡娜·魏尔奇\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Savannah Welch\"}]",
+ "extra": "original-title: The Good Doctor Season 6\noriginal-author: David Shore\noriginal-author: Freddie Highmore\noriginal-author: Fiona Gubelmann\noriginal-author: Will Yun Lee\noriginal-author: Christina Chang\noriginal-author: Bria Henderson\noriginal-author: Noah Galvin\noriginal-author: Hill Harper\noriginal-author: Richard Schiff\noriginal-author: Brandon Larracuente\noriginal-author: Eve Edwards\noriginal-author: Savannah Welch\noriginal-author: Juani Feliz\noriginal-author: Sawyer Fraser\nplace: 美国\nalias: 好医生 / 仁医 / 良医心 / 良医墨非\nIMDb: tt19267596\nstyle: 剧情\nrating: 8.7\nratingPeople: 3458人评价\ncomments: 804\ncreatorsExt: [{\"firstName\":\"\",\"lastName\":\"大卫·肖\",\"creatorType\":\"scriptwriter\",\"fieldMode\":1,\"country\":\"\",\"original\":\"David Shore\"},{\"firstName\":\"\",\"lastName\":\"弗莱迪·海默\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Freddie Highmore\"},{\"firstName\":\"\",\"lastName\":\"菲奥娜·嘉伯曼\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Fiona Gubelmann\"},{\"firstName\":\"\",\"lastName\":\"李威尹\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Will Yun Lee\"},{\"firstName\":\"\",\"lastName\":\"克里斯蒂娜·张\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Christina Chang\"},{\"firstName\":\"\",\"lastName\":\"布里亚·亨德森\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Bria Henderson\"},{\"firstName\":\"\",\"lastName\":\"诺亚·盖尔文\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Noah Galvin\"},{\"firstName\":\"\",\"lastName\":\"希尔·哈勃\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Hill Harper\"},{\"firstName\":\"\",\"lastName\":\"理查德·希夫\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Richard Schiff\"},{\"firstName\":\"\",\"lastName\":\"布兰登·拉瑞昆特\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Brandon Larracuente\"},{\"firstName\":\"\",\"lastName\":\"伊芙·爱德华兹\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Eve Edwards\"},{\"firstName\":\"\",\"lastName\":\"莎凡娜·魏尔奇\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Savannah Welch\"},{\"firstName\":\"\",\"lastName\":\"胡安尼·费利兹\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Juani Feliz\"},{\"firstName\":\"Jennifer\",\"lastName\":\"Tong\",\"creatorType\":\"contributor\",\"country\":\"\",\"original\":\"\"},{\"firstName\":\"\",\"lastName\":\"索耶·弗雷泽\",\"creatorType\":\"contributor\",\"fieldMode\":1,\"country\":\"\",\"original\":\"Sawyer Fraser\"}]",
"language": "zh-CN",
"libraryCatalog": "Douban",
"url": "https://movie.douban.com/subject/35840681/",
@@ -941,7 +950,7 @@ var testCases = [
],
"date": "2014-02-27",
"audioRecordingFormat": "CD",
- "extra": "genre: Album\nstyle: 流行\nalias: Kepler\nbarcode: 0602488970204\nrating: 8.7\nratingPeople: 34029人评价\ncomments: 11488",
+ "extra": "genre: Album\nstyle: 流行\nalias: Kepler\nbarcode: 0602488970204\nrating: 8.7\nratingPeople: 34505人评价\ncomments: 11629",
"label": "环球唱片",
"language": "zh-CN",
"libraryCatalog": "Douban",
@@ -949,7 +958,7 @@ var testCases = [
"attachments": [],
"tags": [],
"notes": [
- "《克卜勒》 - 目录
\n \n
\n 01. 克卜勒
02. 渴
03. 无限大
04. 尚好的青春
05. 天使的指纹
06. 银泰
07. 围绕
08. 错觉
09. 比较幸褔
10. 雨还是不停地落下\n
\n
\n "
+ "《克卜勒》 - 目录
\n \n \n - 克卜勒
\n - 渴
\n - 无限大
\n - 尚好的青春
\n - 天使的指纹
\n - 银泰
\n - 围绕
\n - 错觉
\n - 比较幸褔
\n - 雨还是不停地落下
\n
\n "
],
"seeAlso": []
}