有道云笔记Markdown图片链接解决办法

有道云笔记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,速度很快。
此方法不保证以后永久有效。
exe下载链接 http://download.csdn.net/detail/u013119744/9893187

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值