知网等数据库文献快速直接导入EndNote的方法

这个方法的前提是了解 EndNote 的一个机制:使用 EndNote 打开 txt 或 pdf 文件时,EndNote 会自动解析并尝试将文件导入到 EndNote 中,而用 EndNote 打开文件的步骤在 Windows 中可以用 CMD 命令简化

D:
cd D:\Program Files (x86)\EndNote X9
EndNote.exe D:\ChromeDownload\CNKI-20221118000000000.txt

这段命令实现的效果就是切换到 EndNote 的安装目录,再调用 EndNote.exe 打开导出的 EndNote 格式的 txt 文件

而输入 CMD 命令这一步骤还可用程序简化,比如在 Python 中可以用下面的命令实现 CMD 同样的效果,注意在 Python 中想一次运行多行命令,需要用 && 连接

import oscmd = "D: && cd D:\Program Files (x86)\EndNote X9 && EndNote.exe D:\ChromeDownload\CNKI-20221118000000000.txt"
os.system(cmd)

既然这个步骤可以用程序实现,那就可以直接用 Python 监控浏览器的下载目录,一旦发现有新的 "CNKI-xxx.txt" 格式的文件,就调用 EndNote 打开该文件,同样可以监控剪贴板,如果剪贴板新增内容符合 EndNote 格式,那么就将剪贴板内容存储到浏览器的下载目录

同样的道理,可以监控 Elsevier 导出的 ris 文件,全部代码如下:

import os
import time
import pyperclipdef get_file(path):file_list = []# 遍历D:\ChromeDownload目录下所有txt文件的文件名for file in os.listdir(path):# 如果文件以"CNKI-"开头,以".txt"结尾,或者以".ris"结尾if (file.startswith('CNKI-') and file.endswith('.txt')) or file.endswith('.ris'):# 将文件名和文件创建时间添加到file_list列表中file_list.append(file)return file_list# 从settings.txt中读取第一行字符串,以":"分割,获取分割后的第2个字符串
download_path = open('settings.txt', 'r', encoding='utf-8').readlines()[0].split(':')[1].strip()
# 从settings.txt中读取第二行字符串,以":"分割,获取分割后的第2个字符串
end_note_path = open('settings.txt', 'r', encoding='utf-8').readlines()[1].split(':')[1].strip()
# 将end_note_path以':'分割,获取分割后的第1个字符串
end_note_disk = end_note_path.split(':')[0]
print("下载路径:", download_path)
print("EndNote路径:", end_note_path)
print("EndNote磁盘:", end_note_disk)
print("正在监控 " + download_path + " 文件夹及剪贴板")
file_array = get_file(download_path)
clip_text = pyperclip.paste()
# 每秒运行一次get_file()函数,对比文件名和文件创建时间是否有变化
while True:tem_file_list = get_file(download_path)clip_text_tem = pyperclip.paste()if file_array != tem_file_list:print('文件有变化')# 获取不一样的文件new_file = set(tem_file_list) ^ set(file_array)print(new_file)# 更新file_arrayfile_array = tem_file_listcmd = end_note_disk + ": && cd " + end_note_path + " && EndNote.exe " + download_path + new_file.pop()os.system(cmd)if clip_text != clip_text_tem:print('剪贴板有变化')# 如果clip_text_tem以"%0 Journal Article"开头if clip_text_tem.startswith('%0 Journal Article'):# 将clip_text_tem写入文件"D:\ChromeDownload\CNKI-"+时间戳+".txt"with open(download_path + "\CNKI-" + str(int(time.time())) + '.txt', 'w', encoding='utf-8') as f:f.write(clip_text_tem)# 更新clip_textclip_text = clip_text_temtime.sleep(0.5)

这样就可以实现,在浏览器下载 EndNote 文件、ris 文件或者剪贴板复制 EndNote 格式的文件后,自动导入到 EndNote

程序下载地址:知网、Elsevier文献自动导入到EndNote工具-桌面系统文档类资源-CSDN下载可以实现知网下载txt文件/复制txt内容,或Elsevier下载ris文件后,自动导入更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq_41961851/87094615

但这样操作还是差了一步,即将 PDF 文件也添加到 EndNote 中,这个功能要想实现有点复杂,这里暂且记录一下实现的方法

要想实现这一功能,要了解 EndNote 导入 PDF 的机制:通过抓包可以看到,EndNote 会在 PDF 文件的元数据中读取 DOI 链接,然后将"https://www.crossref.org/openurl/?pid=thomr:thomr922&noredirect=true&id=" 与 DOI 链接拼接,再访问这个链接即可得到包括文献的标题、作者、期刊等信息的 XML 文件,再解析该 XML 文件即可得到文献的相关信息

有些文献的 PDF 直接导入 EndNote 不能获取文献信息的原因也就有两个,一是 PDF 文件的元数据中没有包括 DOI 链接,二是 crossref.org 这个网站没有收录该文献,这样也会返回一个 XML 文件,但文件中没有相关信息

不管是哪个原因,我们都可以用程序解决这一问题,第一种情况可以给 PDF 元数据添加 DOI 链接,第二种情况稍微有点复杂,可以通过拦截 crossref.org 返回的 XML 文件,替换成有文献信息的 XML 文件即可,Python 抓包工具可以用 mitmproxy

复杂的地方在于分析知网提供的 EndNote 文件格式和 crossref.org 返回的 XML 文件格式,还要同时监控 PDF 文件和 EndNote 文件

先写到这,有时间再继续,有兴趣的朋友可以试试看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/69849.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五种知识图式的绘制方法(思维导图、概念图、知识图谱、语义网络、认知图)

文章目录 一、思维导图的绘制二、概念图的绘制三、知识图谱的绘制四、语义网络的绘制五、认知图的绘制 一、思维导图的绘制 绘制思维导图的步骤为: 第一步:拿出一张纸或使用软件,从中心开始绘制,周围留出空白。 第二步&#xff1…

代码随想录算法训练营第二天 |-数组篇97720959

文章目录 数组977-有序数组的平方题目&难度示例写在前面算法——暴力快速排序&双指针法1.暴力快速排序2.双指针法 数组209-长度最小的子数组题目&难度示例算法——滑动窗口(双指针法)复杂度分析 数组59-螺旋矩阵Ⅱ题目示例值得注意的算法——…

Bito插件

文章目录 01 引言 02 Bito的安装与使用 2.1 安装Bito 2.2 注册并创建工作空间 2.3 使用方式 03 其它 3.1 插件支持的平台 3.2 文档 04 文末 01 引言 Bito IDEA插件地址:https://plugins.jetbrains.com/plugin/18289-bito–gpt-4–chatgpt-to-write-code-explain-cod…

牛逼 !谷歌推出 PaLM 2 反击 GPT-4!

出品 | OSC开源社区(ID:oschina2013) 谷歌在 2023 年度 I/O 大会上宣布推出了其下一代大型语言模型 PaLM 2,擅长高级推理任务,包括代码和数学、分类和问答、翻译和多语言能力以及自然语言生成。 谷歌声称 PaLM 2 是一种最先进的语…

如何优雅的使用各类LLM

近几个月,随着ChatGPT的风靡,大型语言预训练模型也如雨后春笋般地涌现,虽然效果差强人意,好在不受限制。配置稍好的电脑也能跑个7B、13B参数的大语言模型。 虽然模型众多,但是如果给每一个模型都单独去配置环境&#x…

chatgpt赋能Python-python_opencv去噪

消除图像噪声:使用Python OpenCV 如果您曾经使用过数字图像编辑软件,那么您一定遇到过一种烦人的问题:图像噪声。图像噪声是指图像中不希望出现的杂色或像素。这些噪声会降低图像的质量并干扰图像识别或分析任务。在这篇文章中,我…

“硅谷八叛逆” 的领头人 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 5 月 12 日,在 15 年前的今天,一场噩耗突如其来,给四川省汶川县、北川羌族自治县、青川县等地造成重创,生态环境…

生成式AI机器人将如何平衡“网络言论”与“社会责任感”之间的关系?

什么是生成式AI? 生成式AI即Generative AI,是继专业生产内容(PGC, Professional-generated Content)、用户生产内容(UGC, User-generated Content)之后的新型内容创作方式,可以在创意、表现力、…

马斯克:OpenAI变了,原是为制衡谷歌现在却被微软有效控制

雷递网 乐天 2月18日 流行聊天机器人ChatGPT的爆火,让OpenAI爆火。 OpenAI是由特斯拉CEO马斯克、阿尔特曼等六人在2015年联合创办,最初为非营利性机构。 不过,2018年马斯克宣布退出,2019年,OpenAI宣布重组为一家“有限…

Alist挂载百度网盘

Alist挂载百度网盘 话不多说,直接上图 挂载路径:在主页显示的名称 刷新令牌: 登录网页版后点击此链接获取 Toolshttps://tool.nn.ci/baidu/callback?code40dd85591f3f459c89cd8a7c20d3121f 下载接口:选择【非官方】 其他项…

chatgpt赋能python:Python如何扩容百度网盘?

Python如何扩容百度网盘? 随着网络的普及,人们越来越倾向于将数据存储在云端。而百度网盘作为国内最流行的云存储平台之一,其流量和存储资源限制也成为用户的痛点。因此,本文将介绍如何使用Python扩容百度网盘,以解决…

mac笔记本无法访问百度网盘以及pan.baidu.com的域名

今天很久之前就不能访问百度网盘以及pan.baidu.com的域名,尝试了以下几种方法都无法解决 1、打苹果的客服,各种操作 2、重新升级最新的mac系统 3、重新卸载安装百度网盘 4、删除Libarary中百度网盘有关的目录 最终自己通过删除/etc/hosts文件中的 …

【媒体广告】的现状与未来发展趋势!

媒体广告是一种重要的市场推广手段,随着技术的不断发展和市场环境的变化,媒体广告也在不断地演变和发展。本文将从以下几个方面探讨媒体广告的发展趋势。 一、数字化、数据化和智能化趋势 随着互联网和移动互联网技术的发展,数字化、数据化…

如何评估互联网广告效果

广告传播影响受众的认知、心理、行为和态度,由此带来的直接和间接广告效益,对广告效果的评估的也有着多方面要素和维度。 和程序化广告相关的8个效果维度: 1.ROI Return On Investment(投资回报率),简称…

社交媒体上的广告对客户体验的影响有多大?

社交媒体已成为一种广告机器。品牌涌入这些平台将产品展示在消费者面前,并创建了大量影响者计划来推动用户进行购买。在当今的数字时代,社交媒体广告在建立客户忠诚度方面的效果如何,消费者对此有什么看法? 以下是我们的社交媒体…

智慧农业共享农场菜园,家禽果树认养小程序APP源码开发的UI设计样式

一个共享农场系统的UI设计样式是怎么样的?哪些功能是必须有的?那么咱们就来分析下,共享农场的盈利点在哪里。 1.预售农产品 如何预售农产品?就是将农场空闲土地上的农作物,未挂果的果树,年幼家禽作为成熟…

关于随机地图生成

一直很想做一个模拟现实世界的游戏,最近开始动手了!既然是一个世界那么地图自然是第一个要解决的问题,网上有很多生成地图的教程,但找不到一个完整的文章。经过几天的研究总结了一些问题。 第一步:散列函数 想在计算…

【超级干huo】用c语言制作游戏地图【可自定义】

目录 1.完整代码 2.运行成果 博主相信每个人都有想做游戏的冲动&#xff0c;那么本文将给出一个用c语言制作的可自定义大小的游戏地图&#xff08;包含player&#xff0c;撞墙设置&#xff09;。废话不多说&#xff0c;直接给出全代码&#xff01; 1.完整代码 #include<…

果园游戏农场种植游戏小程序APP

本游戏是一款休闲娱乐种植游戏&#xff0c;可集成在商城系统里面做积分引流&#xff0c;以供用户娱乐&#xff0c;也可以APP对接广告联盟&#xff0c;从而使运营者获得相应广告收益。 功能介绍 1.土地:农场土地共分为12块&#xff0c;新用户默认1块。每块土地4个级别,分别为普…

农场主人喂食问题

创建一个包 **extends:**是java中子类继承父类的一种方式&#xff0c;是子类对父类的一种扩展&#xff08;父亲没有实现的&#xff0c;儿子替他实现&#xff09; **使用方法&#xff1a;**class B extends A{}------------这样B类就可以使用A类中定义的public、protected的属性…