Skip to content

Zotero #11635

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 7 commits into from
Closed

Zotero #11635

wants to merge 7 commits into from

Conversation

zxhd863943427
Copy link
Contributor

@zxhd863943427 zxhd863943427 commented Jun 3, 2024

  • Please commit to the dev branch
  • For contributing new features, please supplement and improve the corresponding user guide documents
  • For bug fixes, please describe the problem and solution via code comments
  • For text improvements (such as typos and wording adjustments), please submit directly

该pr进行了一次较大的重构,将思源的阅读器替换成zotero,目前效果如下:

Zotero-1.mp4

Sorry, something went wrong.

Unverified

This user has not yet uploaded their public signing key.
@frostime
Copy link
Contributor

frostime commented Jun 3, 2024

我唯一有一个疑问是:重构后的版本兼容此前在思源里面添加的 PDF 标注吗?

@zxhd863943427
Copy link
Contributor Author

新版产生的数据不会被旧版所读取,但旧版的数据可以被新版读取,做了一个专门的兼容操作,然后转化成为新版的数据。当然,这个转化不是完全无损的,在z otero的标注里面没有覆盖背景色的矩形标注和不覆盖背景色的高亮。

@zxhd863943427
Copy link
Contributor Author

@Vanessa219 话说 v 姐可能接受这个pr吗,目前这个还算个 demo,不接受的话感觉就没有必要继续写了……

@frostime
Copy link
Contributor

frostime commented Jun 3, 2024

@Vanessa219 话说 v 姐可能接受这个pr吗,目前这个还算个 demo,不接受的话感觉就没有必要继续写了……

兹磁,zotero reader 的阅读批注体验比 PDF.js 好多了,而且封装做的也好,后续维护更加方便。
就我所知,目前应该还没有笔记软件内置他们的阅读器,基本都是蜡屐的PDF.js。实装的话可以作为一个亮点。

@Vanessa219
Copy link
Member

数据为什么不一致了,感觉交互也不一致了 😱

在z otero的标注里面没有覆盖背景色的矩形标注和不覆盖背景色的高亮 这个是在说有些功能实现不了么?

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 4, 2024

强烈支持!要是真能用zotero阅读器,就太棒了
如果阅读器能再加上一个管理批注的功能,能像zotero一样显示pdf里的所有批注、单独显示某一个颜色批注就无敌了,感觉都可以直接用思源读文献、读书了,现在pdf阅读器并没有直接在pdf里做笔记的功能,还是很欠缺的
Clip_2024-06-04_11-23-07

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 4, 2024

此外,zotero 7现在不是也支持网页快照和epub阅读吗,如果思源也能支持的话,那就更棒了

@zxhd863943427
Copy link
Contributor Author

数据为什么不一致了,感觉交互也不一致了

因为zotero里面有高亮、矩形标注、笔记、手绘划线类型,每种类型中的信息跟思源自带的相比是超出的,强行转化回去费力不讨好,不如单向转换。

在zotero的标注里面没有覆盖背景色的矩形标注和不覆盖背景色的高亮

对,它们没有这种标注样式,所以转换过来再转换过去也不是无损的。如果v姐觉得前向兼容很重要,也可以做,但是就是上面说的,它们的标注只有一小部分重合,转化比较费力不讨好,最多实现低版本可以看到对于位置有标注,要是低版本有什么我不了解的操作还会损坏新版本的标注。

@zxhd863943427
Copy link
Contributor Author

zxhd863943427 commented Jun 4, 2024

管理批注

现在已经有的

zotero 7现在不是也支持网页快照l和epub阅读吗,如果思源也能支持的话,那就更棒了

使用的zotero阅读器也有这个功能了,只是需要小小改一下思源的代码,将epub和html使用zotero阅读器打开。

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 4, 2024

@zxhd863943427 那就非常期待了!感谢大佬!!!!
加油💪⛽️

@zxhd863943427
Copy link
Contributor Author

图片

目前的侧边面板和筛选

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 4, 2024

在zotero的标注里面没有覆盖背景色的矩形标注和不覆盖背景色的高亮

如果能特别添加这两种样式是很好的,但是其实也没有太大问题吧,一般使用其实也是用没有背景的矩形标注和有背景的高亮

@luo-chuan
Copy link

需不需要用户电脑上装zotero?
如果不需要安装zotero的话,我就支持。
然后这个zotero reader是否是开源的?如果不是开源的话,后期想加新功能基本就不可能了。

@luo-chuan
Copy link

这个zotero reader能否做出暗黑模式?

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 4, 2024

需不需要用户电脑上装zotero? 如果不需要安装zotero的话,我就支持。 然后这个zotero reader是否是开源的?如果不是开源的话,后期想加新功能基本就不可能了。

是开源的:https://github.com/zotero/reader

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 4, 2024

总结下改成zotero阅读器的好处

  • 更丰富的标注样式,有手写笔、备注等标注样式
  • 有更好的pdf标注管理和批注功能,可以查看所有标注,还能根据某个颜色筛选标注(现在的pdf只能简单标注,没有管理标注的功能),还可以给标注添加注释评论
  • 支持阅读html和epub:zotero7可是支持网页快照和epub阅读的,意味着之后思源也可以直接在软件内阅读和标注html和epub文件。

@zxhd863943427
Copy link
Contributor Author

zxhd863943427 commented Jun 4, 2024

需不需要用户电脑上装zotero?

不需要

zotero reader是否是开源的?

开源的,但是我们其他人感觉最多修一下小bug,加功能只能依赖上游。

zotero reader能否做出暗黑模式?

可以,但不是很想,不想动zotero的界面,这个在移植pdfjs web时已经证明维护成本太大了,这样只能依赖初始化步骤决定是否为暗黑模式,比较难做到夜间主题使用日间模式阅读pdf。

@TCOTC
Copy link
Contributor

TCOTC commented Jun 4, 2024

支持改为 zotero reader ,目前的 pdfjs 太难用了。

另外建议在确认没有任何升级过程中的兼容问题前先单独发版测试,否则用户更新后导致旧数据损坏就麻烦了。

比如构建安装包后放到内测仓库:https://github.com/siyuan-note/insider

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 4, 2024

这个zotero reader能否做出暗黑模式?

这个用css来搞吧,zotero也有人搞主题样式插件的:https://github.com/muisedestiny/zotero-style#readme
Clip_2024-06-04_16-36-28
Clip_2024-06-04_16-36-43

@zxhd863943427
Copy link
Contributor Author

@Achuan-2 虽然这个插件看起来不错,但它似乎已经闭源了,发布日期是今年4月,代码更新却是6个月前。我尝试搜索了一下pdf样式修改的方案,没有找到,这部分可能也在闭源的内容里面了。

@Jiangshuon
Copy link
Contributor

支持手机端吗?如果手机上也能看epub,就太棒了,目前通过插件导入epub进思源阅读的方式还是有局限性,通过微信读书、纸间书摘的方式也不够方便——批注的导入不是增量的

@zxhd863943427
Copy link
Contributor Author

不支持手机端,目前没有这个计划。

@frostime
Copy link
Contributor

frostime commented Jun 5, 2024

这是原来的效果:

图片

自动转换的效果:

图片

调整一下的效果:

图片

数据自动转换的保留是很高的,最差情况也只是多了一个syz和一堆未引用的图片,我觉得不算什么风险……

「自动转换」和「调整一下」的关联是什么?明显后者的标注效果比前者好很多。

@zxhd863943427
Copy link
Contributor Author

default.mp4

就是这样

@zxhd863943427
Copy link
Contributor Author

@Vanessa219 @88250 关于这种重大变更要不要问问社区吧?我个人对于pdf阅读器在转换中可能有的风险有足够的接受能力,但 V 姐、D 大看起来更慎重一点……这个是一个风险与收益的问题,我觉得社区的意见可能可以提供一下参考。

@TCOTC
Copy link
Contributor

TCOTC commented Jun 5, 2024

看上去效果很好

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 5, 2024

目前思源笔记的pdf阅读体验,并不好,连快速浏览所有批注的功能都没有,如果要对某段文字进行评论,可以复制标注粘贴到思源,但这太麻烦了,不如直接支持标注的评论来的方便。复制标注到思源更大的意义是在于引用各个资料里的重点内容来整理信息,输出笔记。

所以现阶段读文献的话,我是倾向于用zotero来读的,读完整理的笔记再放到思源里。

如果思源能集成zotero reader,具备标注评论和标注管理,我可能就会考虑用思源的数据库来管理文献,直接在思源笔记里完成阅读文献、批注文献、总结文献内容的workflow。差别就是改进之后,有了标注管理和标注评论,我可以在第一遍阅读的时候关注内容,用黄色标注重点,用紫色标注问题,然后第二遍阅读,再进行整理,Zotero的标注是可以筛选的,我可以只查看紫色的标注,了解阅读过程中有哪些问题。再在思源编辑器内进行整理。

加上思源本身就很强大的笔记编辑能力,对于很多用户来说,那么思源在很大程度上就可以代替pdf阅读软件和epub阅读软件,当成一个既能读书读文献又同时记笔记管理笔记的软件来用了,要知道比如bookxnote这样阅读软件,也只能管理批注导出批注,本身是没有管理笔记功能的,Zotero虽然有笔记功能,但是并不方便管理,编写笔记体验也不如思源,思源如果能集成Zotero reader,这完全就是一个卖点,是可以吸引很多学生入坑思源的,到时候可以大力宣传一波的。Zotero本身就很火,我身边同年龄的研究生,不说一半,也有1/3在用或者知道zotero,也能给思源带来流量加成。

之后若是选中文本,能加上翻译和ai解释这个功能,就更好了(可以用其他软件全局实现这个功能,但是思源自身有这个功能的话会方便普通用户的使用)。

@Achuan-2
Copy link
Member

Achuan-2 commented Jun 5, 2024

@zxhd863943427 zotero 7的pdf阅读器是支持打字机和下划线的,我想问问zotero-reader支持吗,下划线感觉不是很必要,但是打字机还是挺有用的。我看你的截图里并没有这两个功能。

@zxhd863943427
Copy link
Contributor Author

zxhd863943427 commented Jun 5, 2024

这两个都明确针对 web 端关闭的,在不修改源码的情况下无法开启。当然也可以把模式改为 dev 来启动,但是我觉得在官方明确关闭的情况下还是不要自行开启比较好。

@woniuxiac
Copy link

两周过去啦,D大和V大现在对这个 feature 的态度是咋样的

@88250
Copy link
Member

88250 commented Jun 17, 2024

两周过去啦,D大和V大现在对这个 feature 的态度是咋样的

  • 改动太大,如果合并的话,会对已有使用者造成较大影响
  • 这个是版本计划外的改动,从重要和紧急上看优先级不高,目前主要优先级是数据库和闪卡开发

建议还是以插件形式进行开发,需要插件系统相关的支持可以提出。

@zxhd863943427
Copy link
Contributor Author

那pdfjs的升级工作做得怎么样了?obsidian在更新里看上去已经修复了。

@zxhd863943427
Copy link
Contributor Author

我的初衷还是升级pdfjs,只是因为这个升级太难做才改为集成 zotero 的。这个高危 cve 已经过去快一个月了,要加快修复的进度了。

@zxhd863943427
Copy link
Contributor Author

如果要实现成插件,那需要实现asset打开资源的以下几个要点:

  1. 实现资源链接的参数,也就是说要能解析这种形式的链接:
siyuan://assets/assets/【2022】Collapse by Conditioning-20240601184559-rdr60s4.pdf?annoId=1234&page=21

第一个assets为类型,assets/【2022】Collapse by Conditioning-20240601184559-rdr60s4.pdf为寻址,?annoId=1234&page=21为参数。

  1. 实现插件注册资源打开方式的api,大概如下所示:
siyuan.registerAssetsUrl(<fileExt>,<callBack>)

function callback(
    filePath:string,
    args:{
        [key:string]:string
    })

其中,args为资源链接中的参数。

@zxhd863943427
Copy link
Contributor Author

仔细想想,siyuan://assets/是外部的链接,思源内部的链接也就是直接assets/【2022】Collapse by Conditioning-20240601184559-rdr60s4.pdf?annoId=1234&page=21应该也要能使用相同的方法解析。

@88250
Copy link
Member

88250 commented Jun 17, 2024

目前还没有开始着手 pdfjs 升级,估计下个月吧。

关于 assets 访问的问题,我没理解为什么需要用 siyuan:// 来访问,用 http 是否可以?

@hep-cogth
Copy link

我觉得社区的意见可能可以提供一下参考。

@zxhd863943427 @Zuoqiu-Yingyi 看能不能先把 demo merge 到社区版发行?
这样社区可以更深度参与,实际使用过后再反馈意见,我想比仅仅看 demo 效果要好一些。
如果社区和官方暂时不一致的话,或许这个功能可以考虑暂时仅仅在社区版维护?

@zxhd863943427
Copy link
Contributor Author

siyuan://assets是为了从外部打开思源的assets内容,假如用http,在端口不对和思源没打开的时候无法使用吧。

目的和siyuan://block是一样的。

@zxhd863943427
Copy link
Contributor Author

@abd-liac 关于merge到社区版,这个内容真的是相当简陋的demo,我只是把优势体现了出来,它实际上还有很多待完善的地方,用起来体验并不好。假如没有确定要以什么形式实现它,我不会打算正式开始完善它。

@zxhd863943427
Copy link
Contributor Author

话说回来,我想到一个内置的好处是,内置agpl项目是只有另外一个agpl项目才能实现的。假如实现为插件,那其实可复制性太强了,没啥独特优势可言。

@88250
Copy link
Member

88250 commented Jun 18, 2024

siyuan://assets是为了从外部打开思源的assets内容,假如用http,在端口不对和思源没打开的时候无法使用吧。

目的和siyuan://block是一样的。

siyuan://blocks 也只能在默认工作空间上搜索,所以用 http assets 的话端口用 6806 也一样的。

@zxhd863943427
Copy link
Contributor Author

zxhd863943427 commented Jun 18, 2024

那使用http assets 能否实现以下要求:

  1. 在思源关闭的情况下打开
  2. 使用思源打开,并跳转到指定标注的位置

如果可以,那也可以。

@88250
Copy link
Member

88250 commented Jun 19, 2024

  1. 外部需要用资源文件请求拉起思源这个场景没有必要实现吧,前面讨论的是插件需要的接口支持,我不太理解为啥需要拉起思源这个场景
  2. 跳转标注位置这个应该是插件来实现吧

@TCOTC
Copy link
Contributor

TCOTC commented Jun 19, 2024

软件外部引用是比较常用的

@88250
Copy link
Member

88250 commented Jun 19, 2024

引用资源文件是常见,但是需要拉起就没有必要了吧。

@TCOTC
Copy link
Contributor

TCOTC commented Jun 19, 2024

这个就跟复制单个块的链接类似,最好能直接拉起

@zxhd863943427
Copy link
Contributor Author

zxhd863943427 commented Jun 19, 2024

外部需要用资源文件请求拉起思源这个场景没有必要实现吧,前面讨论的是插件需要的接口支持,我不太理解为啥需要拉起思源这个场景

事实上就是有,肯定是有在关闭思源的情况下需要直接通过思源打开对应资源文件的情况。很多pdf批注软件如zotero、bookxnote都带有这种跳转功能,这是一种广泛存在的需求。

跳转标注位置这个应该是插件来实现吧

那确实,但是 http 能否实现将参数传递给插件、并让插件能够完成跳转操作?

@88250
Copy link
Member

88250 commented Jun 19, 2024

拉起的场景先不考虑了。

http 传参可以考虑通过加 query str,具体的参数拦截传递可以考虑在 serveAssets 中实现:

image

@zxhd863943427
Copy link
Contributor Author

可以先不考虑拉起,但这是一个未来改进的方向,我先开个issue可以吗?

另外,http查询实现后应该直接复用siyuan.registerAssetsUrl的结果,不需要插件额外写什么样板代码。

@88250
Copy link
Member

88250 commented Jun 19, 2024 via email

@88250
Copy link
Member

88250 commented Jun 23, 2024

这个 PR 我们关闭了,谢谢。

@88250 88250 closed this Jun 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

10 participants