zotero-format-metadata icon indicating copy to clipboard operation
zotero-format-metadata copied to clipboard

[Feature Request] 网页条目通过 URL 重新获取字段

Open northword opened this issue 1 year ago • 9 comments

Describe the feature

related #19

当错误添加网页条目,条目 URL 包含学术出版商,通过 URL 强制更新条目:

  • 请求 URL,根据 HTML 检索 DOI,根据 DOI 强制更新字段 -> 需要再次修改根据 DOI 更新字段函数
  • 根据 URL 调用 translator -> 是否可行?

Additional context

No response

northword avatar Aug 11 '23 14:08 northword

使用 CrossRef API 检索: https://api.crossref.org/swagger-ui/index.html#/ 相关文档:使用 Crossref REST API 的提示:https://www.crossref.org/documentation/retrieve-metadata/rest-api/tips-for-using-the-crossref-rest-api/ ts 客户端 npm 包:https://www.npmjs.com/package/@jamesgopsill/crossref-client

e.g. 一个期刊文章条目被错误抓取为网页,元数据仅有标题和网址: 标题:Improved Activity and SO2 Resistance by Sm-Modulated Redox of MnCeSmTiOx Mesoporous Amorphous Oxides for Low-Temperature NH3-SCR of NO | ACS Catalysis 网址:https://pubs.acs.org/doi/10.1021/acscatal.0c02567

使用 CrossRef 网页检索:https://search.crossref.org/?from_ui=yes&q=Improved%20Activity%20and%20SO2%20Resistance%20by%20Sm-Modulated%20Redox%20of%20MnCeSmTiOx%20Mesoporous%20Amorphous%20Oxides%20for%20Low-Temperature%20NH3-SCR%20of%20NO%20|%20ACS%20Catalysis

使用 API:

http://api.crossref.org/works?query.bibliographic=%22Improved%20Activity%20and%20SO2%20Resistance%20by%20Sm-Modulated%20Redox%20of%20MnCeSmTiOx%20Mesoporous%20Amorphous%20Oxides%20for%20Low-Temperature%20NH3-SCR%20of%20NO%20|%20ACS%20Catalysis%22&rows=2

返回结果需要判断 item-type 以增加可信度。

使用此 API 尤其需要注意礼貌问题,严格控制调用频率,必要时加上邮箱。

注意仅限英文使用,调用 API 前先识别一次语言。其识别中文文献效果过差。

northword avatar Aug 13 '23 12:08 northword

Update: 通过标题获取的条目信息可能会返回多条,插件几乎无法判断相关性。对于导入错误的最优解仍是重新导入后合并。

northword avatar Sep 09 '23 06:09 northword

这样的网页条目往往就是匹配的翻译器在保存条目过程中失败才产生的,又丢回给翻译器感觉有点死循环。

出错有很多种可能,常见的是:

  1. 网页是动态加载的,用户在网页没有完全加载时就点击了Connector进行抓取,此时Connector还在等待网页加载,还未开始检索适用的翻译器。
  2. 由于对开发测试量的限制,许多翻译器无法完全支持某个网站上所有的条目类型(或页面),用户出于习惯而在不支持的条目(或页面)处进行了抓取。
  3. 用户在特殊网络环境(如VPN、校园网)下使用翻译器,翻译器内写死的request无法通过服务器的校验而返回无效值引发翻译器错误。
  4. 用户的频繁请求触发了网站的反爬虫功能,用户在批量抓取时,翻译器请求单条目页面过程中意外获取到验证码界面,无法进一步抓取引发翻译器错误。
  5. 网站更改了界面或接口,但用户没有及时更新翻译器。

……以上种种,通常不是翻译器的锅,而需要用户手动介入处理。

我觉得把这样的网页条目重命名为用户友好的形式可能更好(虽然Connector已经有提示,但不够显著),比如异常的条目:XXX,然后在摘要字段提示用户处理。

jiaojiaodubai avatar Dec 12 '23 05:12 jiaojiaodubai

你考虑得比较全面,我只考虑到了第一点,所以想通过设置延迟等待网页加载完成后,再 translate (通过代码实现,不前往浏览器,但是我不知道可行不)。

northword avatar Dec 12 '23 09:12 northword

“等待网页加载完成再进行抓取”这样的问题在翻译器中已经有解决方案,就是检测页面的DOM变化,变化的时候会再次触发检测。不过这个功能是后来新加入的,而且没有文档描述,可能一些翻译器并没有跟进。

jiaojiaodubai avatar Dec 12 '23 12:12 jiaojiaodubai

我早上有看到你重构的 cnki 支持了,其他的转换器也可以支持这个嘛?(就是这个方案是官方提供的接口还是自己实现的呢?)

如果是官方提供的话,这个 issue 其实就不是很有必要做了,只需要按你在评论里说的方案——对不符合的条目给出提醒即可。

northword avatar Dec 12 '23 12:12 northword

这是Connector官方对MutationObserver的一个封装,在Zotero.Utilities命名空间下,只是目前官网的脚本制作教程还停留在Z6甚至Z5以前时代……一些翻译器没有实现这个功能。

jiaojiaodubai avatar Dec 12 '23 12:12 jiaojiaodubai

(其实感觉知网的支持了大体就够用)我看到过很多都是中文文献存成了网页,把英文文献存成网页的很少见

目前官网的脚本制作教程还停留在Z6甚至Z5以前时代

要是 Z 能把文档开源了可能就好一些,我之前申请过一次文档编辑,然后就没消息了;也申请过一次 transifex 翻译组,也没通过 :(

northword avatar Dec 12 '23 12:12 northword

iiwenwen/zotero-update-metadata: 更新元数据使用条目中的URL来更新豆瓣信息,参考了Zotero update meatdata 分支中的代码。

iiwenwen avatar Apr 17 '24 01:04 iiwenwen