有道云笔记Markdown图片链接解决办法
引言
在Markdown文档的编辑中,图片需要一个资源地址,你可以使用网络链接也可以使用本地路径,但是本地路径在你更换电脑,或者云端浏览的时候就会失去作用,无法查看图片。针对这个问题,很多人的解决办法是使用一个图床,比如付费的七牛,免费的微博图床、极简图床等,就是将你的图片上传到这些网站,它们会生成一个此图片的URL,然后你就可以在Markdown中使用此URL来使用图片。由于我平时使用有道云笔记进行记载笔记,所以我采用了如下方法:在有道云笔记中单独建立一个资源文件,然后将所引用的图片粘贴进去,点击上方共享按钮,获得共享URL,在浏览器中打开这个链接,按F12,在源码中找到图片对应的链接。不过这个查找过程有点麻烦,还需要优点编程基础,所以我写了一个脚本,来自动做这件事。
1. 获取分享链接中的图片URL
分享连接如下:http://note.youdao.com/noteshare?id=3f12b7cb6d8928ed43b30d4495aacc4c&sub=A6D2DC88F50E4A6B8D0FD78BA5A9BFBC,从这个链接无法直接获取图片内容,因为这个内容是由JS代码请求的,需要转换成JS所请求的网址格式:http://note.youdao.com/noteshare?id=3f12b7cb6d8928ed43b30d4495aacc4c&sub=A6D2DC88F50E4A6B8D0FD78BA5A9BFBC。(下方脚本需要requests库,可以使用pip install requests 命令安装)
import re
def converUrl(url):
reg = r'id=(.*?)&'
s = re.search(reg, url)
if s is not None:
url = "http://note.youdao.com/yws/public/note/%s?editorType=0&cstk=orBX-yw0" % s.group()[3:-1]
return url
else:
return None
得到url,使用requests获取url指向的网页内容,从中提取图片url。
import json
import re
import requests
def getHtml(url):
r =requests.get(url=url)
#print(r.status_code)
#print(r.text)
return r.text;
def getImageUrls(url):
html =getHtml(url)
try:
js = json.loads(html)
ss = js["content"]
except Exception:
return None
reg = r'src="(.*?)"'
pattern = re.compile(reg)
ret = re.findall(pattern, ss)
return ret
测试上述代码
if __name__=="__main__":
url ="http://note.youdao.com/noteshare?id=3f12b7cb6d8928ed43b30d4495aacc4c&sub=A6D2DC88F50E4A6B8D0FD78BA5A9BFBC"
url = converUrl(url)
print(url)
print(getImageUrls(url))
2. 构建一个UI界面,方便操作
界面如下:
youdao_url 输入分享链接,点击save,就会保存此链接,下次打开无需重复输入。点击ok,会在image_url中显示分享链接中的最后一个图片的URl,复制粘贴即可。代码如下:(需要keyboard库、pyperclip库,使用pip install keyboard、pip install pyperclip 分别安装)
from tkinter import *
from Main import * #引用上述代码
import keyboard
import pyperclip
from config import *
class MainWindow:
def button_ok_listener(self,event):
url =self.text_name.get('1.0',END)
url = converUrl(url)
list =getImageUrls(url)
if list is not None:
self.text_sex.delete('1.0',END)
self.text_sex.insert(INSERT,list[-1:])
pyperclip.copy("".join(list[-1:]))
def button_save_listener(self,event):
url =self.text_name.get('1.0',END)
dict ={"LastUrl":url}
updateConfig(dict)
def Listener(self):
url = self.text_name.get('1.0', END)
url = converUrl(url)
list = getImageUrls(url)
if list is not None:
self.text_sex.delete('1.0', END)
self.text_sex.insert(INSERT, list[-1:])
pyperclip.copy("".join(list[-1:]))
def __init__(self):
self.frame = Tk()
self.label_name = Label(self.frame, text="youdao_url:")
self.label_sex = Label(self.frame, text="image_url:")
self.text_name = Text(self.frame, height="1", width=30)
if getRecURL() is not None:
self.text_name.insert("1.0", getRecURL())
self.text_sex = Text(self.frame, height="1", width=30)
self.label_name.grid(row=0, column=0)
self.label_sex.grid(row=1, column=0)
self.button_save = Button(self.frame,text ="save" ,width=10)
self.button_ok = Button(self.frame, text="ok", width=10)
self.text_name.grid(row=0, column=1)
self.text_sex.grid(row=1, column=1)
self.button_save.grid(row=0,column=2,padx=10)
self.button_ok.grid(row=1, column=2,padx=10)
self.button_ok.bind("<ButtonRelease-1>",self.button_ok_listener)
self.button_save.bind("<ButtonRelease-1>",self.button_save_listener)
keyboard.add_hotkey('ctrl+shift+a', self.Listener)
self.frame.mainloop()
frame = MainWindow()
同时我们加入了全局快捷方式:ctrl+shift+a,无需手动点击ok,只需按住ctrl+shift+a,此脚本会自动获取分享连接中的最后一张图片,并自动粘贴到剪贴板,此时你就可以直接ctrl+v即可粘贴使用。
3. 打包成exe
将python脚本打包的软件有好多,这里使用了pyinstaller这个软件。需要使用 pip install pyinstalle命令安装。
import subprocess,os
def exe(pyfile,dest="",creator=r"E:\software\Python36\Scripts\pyinstaller.exe",ico=r"C:\Users\XX\Desktop\ico.ico",noconsole=False):
insert=""
if dest:insert+='--distpath="{}"'.format(dest)
else: insert+='--distpath="./"'.format(os.path.split(pyfile)[0])
if ico: insert+=' --icon="{}" '.format(ico)
if noconsole: insert+=' --noconsole '
print(insert)
runstring='"{creator}" "{pyfile}" {insert} -F'.format(**locals())
subprocess.check_output(runstring)
exe(pyfile='F:\\Python\\YDCGallery\\UI.py',dest='C:\\Users\\XX\\Desktop\\UI',noconsole=True)
注意将上述路径分别换成自己使用的路径,即可生成一个可执行程序.exe。
4. 软件使用方法
- 打开有道云笔记,新建一个笔记,作为资源文件,点击上方分享按钮,获取分享链接。
- 打开本软件,在image_url文本框中输入上述链接,点击save,下次软件启动就会填充此url,无需手动添加。
- 将你需要的图片粘贴到之前新建的有道云笔记中,按ctrl+s,(或者点击左上方的保存并同步),然后点击本软件ok,image_url中就会显示这个图片的url,同时也会复制到粘贴板中,你直接ctrl+v就可以粘贴此url。
- 本软件支持全局快捷方式,ctrl+shift+a,也就是说你可以将图片粘贴到有道云笔记中的资源文件后,ctrl+s保存,然后ctrl+shift+a即可获取此url。(前提完成第一、二步骤:)
注意
本软件原理是将图片传到有道云笔记中,利用它的分享功能,获取图片url。也就是你将图片复制到有道云笔记中,按ctrl+s后需要等待有道云笔记会自动保存此图片到服务器,然后ctrl+shift+a才能获取到正确的url。一般来说ctrl+s后基本就可以马上获取url,速度很快。
此方法不保证以后永久有效。