l0o0 / translators_CN

Zotero translator中文网页抓取翻译器🎉This is Zotero translators for Chinese Sites(beta), not the official Zotero repo
GNU Affero General Public License v3.0
3.98k stars 521 forks source link

Update WePu.js #350

Open jiaojiaodubai opened 1 month ago

jiaojiaodubai commented 1 month ago

@doubanchan @yfdyh000

jiaojiaodubai commented 1 month ago

@yfdyh000 新版已经上传,新旧两版都需要继续完善附件下载的代码。

doubanchan commented 1 month ago

@jiaojiaodubai 这篇Weipu V3期刊文章,似乎抓的是DOI标识符对应的CNKI的信息。是不是优先匹配 #347 的DOI了。

jiaojiaodubai commented 1 month ago

似乎抓的是DOI标识符对应的CNKI的信息。是不是优先匹配 #347 的DOI了。

实际上,CNKI.js 的 DOI 支持早已在 0e11406d17070e11eced17add7afc24c7eacac4e 完成,但是后来见到一些中文 DOI 的样本不指向知网,因此我想做一个专门提供中文 DOI 检索的转换器用于判断中转页面并分发到合适的转换器。

有 DOI 时优先使用 DOI 抓取,这是通行的做法,因为 DOI 往往可以链接到原始的发布位置,从而由出版商页面的转换器获取更详细的一手信息。

doubanchan commented 1 month ago

CNKI DOI页面,可能需要和 #347 一块完善。另外,这种DOI解析要是能提交到官方合并到官方仓库就好了,官方仓库对于中文DOI解析支持得不好。

jiaojiaodubai commented 1 month ago

CNKI DOI页面,可能需要和 #347 一块完善。

是的,有些 DOI 还指向万方或万方医学,因此现在把中文 DOI 抓取写到 CNKI.js 是不够的,应该独立出来,#343 正是为解决这一问题而提出的。

另外,这种DOI解析要是能提交到官方合并到官方仓库就好了,官方仓库对于中文DOI解析支持得不好。

最适合提交到 DOI Content Negotiation.js,但这里存在一点阻碍。

能搜索 DOI 的前提是写出 DOI 目标地址的 translator。如你所知,web translator 使用元数据中的 target 属性检测 URL,以此判断有哪些 translator 可以使用,而挂载 VPN 会影响 URL 进而有可能使 target 的正则表达式匹配失败,为此我们为 CNKI.js 使用了较为宽松的正则表达式,但官方仓库似乎不欢迎这样的写法,他们希望 target 写得更具体(见 #PR 3294),在大多数用户掌握设置 Connector 代理之前,提交到官方仓库的 CNKI.js 和当前仓库的版本将始终存 target 的差异。

不过目前,在大多数中文用户都安装茉莉花且更新了本仓库转换器的前提下,他们可以正常使用魔法棒来搜索知网的某些 DOI。

doubanchan commented 1 month ago

发现在 #59 中提出个这个问题。

jiaojiaodubai commented 1 month ago

知网的应该没有问题,但是万方网页的数据是通过 protobuff 异步加载的,而 protobuff 需要依赖第三方库进行解析……直到现在仍是一个难点,我们将来可能需要将最少必需的有关代码迁移到它的 translator 中。

jiaojiaodubai commented 4 weeks ago

在本地运行

npm run lint -- "WeiPu.js"

没有发现问题,可能存在延迟。

doubanchan commented 1 week ago

@jiaojiaodubai (1)重庆维普新版页面正式上线,默认是www.cqvip.com,wwwv3.cqvip.com重定向到前者。 需要修改 "target": "^https://(www|wwwv3)\\.cqvip\\.com", (2)另外这个js或者应该教WeiPu2024.js? (3)搜索页面的multiple可能也要重新适配。 const rows = doc.querySelectorAll('.sl > a.title, .searchTitle a[class^="title"], .el-table__row > td:nth-child(2) a');,添加.searchTitle a[class^="title"]