网易首页 > 网易号 > 正文 申请入驻

Eagle 的隐藏用法:批量导入并管理 Zotero 标注图片|一日一技

0
分享至

编注:我们会不定期挑选 Matrix 的优质文章,展示来自用户的最真实的体验和观点。 文章代表作者个人观点,少数派仅对标题和排版略作修改。

本文介绍一种通过 Eagle 来管理 Zotero 的图片,同时给图片添加 Zotero 的外部回链,这样你就可以通过图片去定位文献以及图片存在的位置,还可以借助 Python 脚本来辅助完成批量操作的过程。

演示效果

Eagle 软件介绍

Eagle 是一款图片素材管理软件,可帮助用户有效组织、管理和使用图片素材。它提供直观易用的界面,让用户能快速浏览和搜索图片素材库。此外,Eagle 还提供强大的标签和分类功能,让用户按需整理和归类图片素材,创建自己的图片素材库。

思路讲解

Zotero 标注的图片位置

Zotero 的标注图片一般在(你定义的)数据库文件夹的 cache->library 下面:

Zotero 标注图片的位置

Zotero 回链的组成

Zotero 的回链按PDF 文件夹、页码、注释号=图片名称(自动命名的)的格式组成,例如:

zotero://open-pdf/library/items/9P4STCK8?page=2&annotation=IDMC67ZS

需要注意的是,缺少注释号或者页码并不会打断跳转,只是缺少了精确定位。

其实对于标注的信息,还可以通过图片名进行精准定位:

格式:zotero://open-pdf/library/items/图片名?annotation=图片名
示例:zotero://open-pdf/library/items/ZZR39PI7?annotation=ZZR39PI7

这样就可以通过图片名称知道 Zotero 的外部回链了。

批量导入 Eagle

由于 Eagle 对图片的管理形式并不是文件夹的管理方式,素材存储在E:\PandaMemos.library\images路径下,命名并不规则 (这一点和 Zotero 的 PDF 管理一样),如何批量导入图片也是一个问题。

不过我发现在设置里面有一项自动导入的选项:

它会在该路径下生成一个文件夹为你的库名,比如我的库名为 PandaMemos,则在 D:\PandaNotes\Y-图形文件存储 路径下就会生成名为 PandaMemos 的文件夹,只要把图片放入该文件夹中,它就会自动移动图片到 Eagle 库中。

批量添加外部回链

Eagle 除了手动添加链接外,其它图片的标签、注释、外部链接等信息一般在图片文件夹中的metadata.json中管理。

其中的 "url":"zotero://open-pdf/library/items/L46PP6VC?annotation=L46PP6VC" 就是外部回链。以通过图片名称定位到文件夹,并在定位到图片路径后修改图片的基本信息,还可以添加外部链接。

Python 脚本的实现

综上所述,Zotero 图片的来源,以及导入 Eagle 和添加外部回链的流程就很清晰了,接下来就可以写对应的 Python 把 Zotero 的文献图片导入 Eagle,同时对重复的图片名选择不添加,之后等待 Eagle 导入全部的图片后,通过图片名定位到图片的文件夹路径,修改 metatable 文件,附上图链,完成任务。

检测重复图片后,复制图片到 Eagle 的快速导入文件夹

# -*- coding: utf-8 -*-
"""
Created on Fri Sep 1 07:21:40 2023
@author: 熊猫别熬夜
"""
import os
import shutil
import time
import json
# 源文件夹路径
source_folder = r"D:\Zotero\cache\library"
# 目标文件夹路径
destination_folder = "D:/PandaNotes/Y-图形文件存储/PandaMemos"
# 目标文件夹路径2
eagle_folder = "E:\PandaMemos.library\images"

# 遍历source_folder文件夹,获取所有png图片的路径和文件名
zotero_pic_paths = []
zotero_pic_filenames = []
for root, dirs, files in os.walk(source_folder):
for filename in files:
if filename.endswith(".png"):
file_path = os.path.join(root, filename)
zotero_pic_paths.append(file_path)
zotero_pic_filenames.append(filename)

# 遍历eagle_folder文件夹及其子文件夹,获取所有png图片的文件名
eagle_pic_filenames = []
eagle_pic_paths= []
for root, dirs, files in os.walk(eagle_folder):
for filename in files:
if filename.endswith(".png"):
file_path = os.path.join(root, filename)
eagle_pic_paths.append(file_path)
eagle_pic_filenames.append(filename)

# 计数器变量
duplicate_count = 0
copy_count = 0

# 检查zotero_pic_filenames中的文件名是否存在于eagle_pic_filenames中,如果不存在则复制图片到destination_folder
destination_files=[]
new_copy_files=[]
for i in range(len(zotero_pic_filenames)):
if zotero_pic_filenames[i] not in eagle_pic_filenames:
source_file = zotero_pic_paths[i]
destination_file = os.path.join(destination_folder, zotero_pic_filenames[i])
new_copy_files.append(zotero_pic_filenames[i])
# print(destination_file)
shutil.copyfile(source_file, destination_file)
copy_count += 1
else:
duplicate_count += 1

# 输出重复的图片数量和复制的图片数量
print(f"重复的图片数量:{duplicate_count}")
print(f"复制的图片数量:{copy_count}")

对 Zotero 和 Eagle 中具有相同名称的图片进行修改 meatdata 文件,添加 Zotero 外部回链

为避免有些图片没有命名上去,等你 Eagle 把图片全部导入后,就可以运行这一步了。

# -*- coding: utf-8 -*-
"""
Created on Fri Sep 1 06:09:38 2023
@author: 熊猫别熬夜
"""

import os
import time
import json

# 源文件夹路径
source_folder = r"D:\Zotero\cache\library"

# 目标文件夹路径
destination_folder = "E:\PandaMemos.library\images"

# 遍历目标文件夹及其子文件夹
i=0
for root, dirs, files in os.walk(destination_folder):
for filename in files:
# 检查文件扩展名是否为PNG
if filename.endswith(".png"):
# 构建目标文件的完整路径
destination_file = os.path.join(root, filename)

# 检查源文件夹中是否存在相同名称的图片
source_file = os.path.join(source_folder, filename)
if os.path.exists(source_file):
# 输出/metadata.json文件路径
metadata_file = os.path.join(root, "metadata.json")
print(metadata_file)
i=i+1
# 读取metadata.json文件
with open(metadata_file, "r",encoding="utf-8") as file:
data = json.load(file)
# 修改"folders"的值为"LLZPQ91WQ8KFR"
pic_name=filename.split(".")[0]

zotero_url=f"zotero://open-pdf/library/items/{pic_name}?annotation={pic_name}"
data["url"] = zotero_url
# data["folders"] = ["LLZPQ91WQ8KFR"]
# 写入修改后的数据到metadata.json文件
with open(metadata_file, "w",encoding="utf-8") as file:
json.dump(data, file)

print(f"✅总计修改了{i}个metadata")

小结

Eagle 提供了强大的标签和分类功能,让用户按需整理和归类图片素材,不过我推荐以文件夹为主,标签为辅的形式进行管理,如果检测到相同的图片,选择应用原来的图片就行了。

如果你想导入 Obsidian 进行管理的话,这里推荐 Obsidian 的另一种附件管理神器 Billfish,把 Eagle 导出的素材包导入 Billfish 中时,图片回链保存。

我一开始尝试用 Billfish 来批量添加回链的,不过图片的信息不好批量添加,因此转向了 Eagle,用 Eagle 的定期地发送素材包到 Billfish 里面也算是一种方法了。

https://sspai.com/post/82791?utm_source=wechat&utm_medium=social

作者:熊猫别熬夜

责编:sainho

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中俄等6国弃权,最后关头,美国凑齐9票通过决议,历史再次重演

中俄等6国弃权,最后关头,美国凑齐9票通过决议,历史再次重演

流史岁月
2026-06-01 18:00:09
蒋中正亲笔书写的任命状冲上热议!书法的好坏,永远意见不一?

蒋中正亲笔书写的任命状冲上热议!书法的好坏,永远意见不一?

书画相约
2026-06-01 07:23:51
1100万清洗!前巴萨10号离队:巅峰身价8000万 梅西接班人

1100万清洗!前巴萨10号离队:巅峰身价8000万 梅西接班人

叶青足球世界
2026-06-01 20:06:16
上海政法学院再通报女厕发现摄像头:决定开除涉事学生学籍

上海政法学院再通报女厕发现摄像头:决定开除涉事学生学籍

界面新闻
2026-06-01 15:05:36
距世界杯仅11天,名记:欧冠决赛加重萨利巴伤势,球员或伤缺数周

距世界杯仅11天,名记:欧冠决赛加重萨利巴伤势,球员或伤缺数周

懂球帝
2026-06-01 18:48:25
“一车安全带全是P上去的”冲上热搜,《这就是我的西游2》节目组被质疑嘉宾使用的安全带为后期P图添加;同类问题并非首次发生

“一车安全带全是P上去的”冲上热搜,《这就是我的西游2》节目组被质疑嘉宾使用的安全带为后期P图添加;同类问题并非首次发生

大风新闻
2026-06-01 15:53:04
26年来以色列向黎巴嫩最深推进,插旗战略城堡“南方之眼”!法国怒批:不可接受

26年来以色列向黎巴嫩最深推进,插旗战略城堡“南方之眼”!法国怒批:不可接受

红星新闻
2026-06-01 16:40:13
五年减少3900万!儿童节,越来越冷清了

五年减少3900万!儿童节,越来越冷清了

西部城市
2026-06-01 11:30:39
姚明恩师离世!名帅阿德尔曼去世享年79岁:曾率火箭打出22连胜

姚明恩师离世!名帅阿德尔曼去世享年79岁:曾率火箭打出22连胜

罗说NBA
2026-06-02 06:54:26
广东11岁男童深山走失13天被找回!细节披露:警民搜救时发现无花果有人为采摘食用痕迹,生还希望大,“我们都憋着一股劲,一定要找到他”

广东11岁男童深山走失13天被找回!细节披露:警民搜救时发现无花果有人为采摘食用痕迹,生还希望大,“我们都憋着一股劲,一定要找到他”

番禺台
2026-06-02 00:08:22
武汉商学院原党委书记刘志辉被查

武汉商学院原党委书记刘志辉被查

新京报
2026-06-01 21:24:41
马斯克亲口承认,要不是自己儿子做了变性手术,现在美国总统也不会是特朗普

马斯克亲口承认,要不是自己儿子做了变性手术,现在美国总统也不会是特朗普

不掉线电波
2026-06-01 20:02:08
稻城亚丁“省道”,车票收入超1亿元

稻城亚丁“省道”,车票收入超1亿元

中国新闻周刊
2026-06-01 20:10:11
中国男篮19人大名单!赵睿贺希宁周琦曾凡博落选!近期赛程出炉

中国男篮19人大名单!赵睿贺希宁周琦曾凡博落选!近期赛程出炉

老吴说体育
2026-06-01 23:22:58
女员工嘲讽顾客“穷逛”后续:本人火到香港已社死,商场也被坑惨

女员工嘲讽顾客“穷逛”后续:本人火到香港已社死,商场也被坑惨

哄动一时啊
2026-06-01 19:30:38
紫牛头条 | 密码是“比等待多一天”:14年后她终于打开亡兄的QQ,相册里藏着“最最最爱的妹妹”

紫牛头条 | 密码是“比等待多一天”:14年后她终于打开亡兄的QQ,相册里藏着“最最最爱的妹妹”

扬子晚报
2026-06-01 21:25:16
特朗普安抚市场:黎以所有交火行动将立即停止 与伊朗的谈判正“快速推进”

特朗普安抚市场:黎以所有交火行动将立即停止 与伊朗的谈判正“快速推进”

财联社
2026-06-02 03:37:15
卖掉开8年的燃油车,花35万买了一辆理想L8,开了6个月,终于明白

卖掉开8年的燃油车,花35万买了一辆理想L8,开了6个月,终于明白

沙雕小琳琳
2026-06-01 06:06:09
日本彻底慌了!6 月 1 日中国一记重拳落下

日本彻底慌了!6 月 1 日中国一记重拳落下

果妈聊娱乐
2026-06-01 20:33:59
“崩老头”全链调查:1500元可购全套工具,视频、语音均能伪造身份

“崩老头”全链调查:1500元可购全套工具,视频、语音均能伪造身份

大象新闻
2026-06-01 16:54:53
2026-06-02 07:07:00
少数派sspai incentive-icons
少数派sspai
高品质数字消费指南
5173文章数 28432关注度
往期回顾 全部

科技要闻

黄仁勋演讲实录|40年来PC首次重设计!

头条要闻

伊朗计划彻底封锁霍尔木兹海峡 特朗普回应

头条要闻

伊朗计划彻底封锁霍尔木兹海峡 特朗普回应

体育要闻

杰威:如果我没受伤,我们能击败马刺

娱乐要闻

奚梦瑶婚礼现场图!一双儿女当花童

财经要闻

宇树过会,杭州赢麻了

汽车要闻

奇瑞集团5月销量24.8万辆 同比增长20.5% 出口18.2万辆再创新高

态度原创

家居
亲子
游戏
健康
军事航空

家居要闻

自信舒展 高背座椅

亲子要闻

《欢乐彝族娃》少儿节目#少儿舞蹈 #群舞 #少儿节目 #集体

LPL最圈粉战队诞生!曾是LPL豪门落寞多年,如今上万人打出满分

干细胞临床研究向患者收费?别踩坑

军事要闻

韩国最大军工企业爆炸 已造成5人死亡

无障碍浏览 进入关怀版