前言

软件下载地址

typora 是一款好用的 markdown 文档编辑器。

我之前研究过CSDN上传图片的接口,前几天发现了Typora 这个好用的软件,可以自定义图床,因为我很多文章图片资源用的都是CSDN,那么我就可以采用CSDN作为图床,直接就实现拖拽图片上传的CSDN。

需要的环境

python3

requests

requests-toolbelt

代码

import os
import sys os.chdir(os.path.dirname(os.path.realpath(sys.executable))) #这是打包版本的代码 import requests
import re
from threading import Thread
import time
import requests
import http.cookiejar as cookielib
import psutil
import os
from requests_toolbelt import MultipartEncoder requests.packages.urllib3.disable_warnings() def is_login():
session = requests.session()
try:
session.cookies = cookielib.LWPCookieJar(filename='.cookie/csdn.txt')
session.cookies.load() url = 'https://me.csdn.net/api/user/show'
response = session.post(url)
if response.json()['message'] == "成功":
return True
else:
return False
except Exception as e:
return False def login():
session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename='.cookie/csdn.txt')
response = session.get('https://open.weixin.qq.com/connect/qrconnect?appid=wx0ae11b6a28b4b9fc&scope=snsapi_login&redirect_uri=https%3A%2F%2Fpassport.csdn.net%2Fv1%2Fregister%2FpcAuthCallBack%3FpcAuthType%3Dweixin&state=csdn&login_type=jssdk&self_redirect=default&style=white&href=https://csdnimg.cn/release/passport/history/css/replace-wx-style.css',verify=False)
uuid = re.findall('<img class="qrcode lightBorder" src="(.*?)" />',response.text)[0]
img_url = 'https://open.weixin.qq.com' + uuid
imgData = session.get(img_url).content
with open("qrcode.jpg","wb") as f:
f.write(imgData)
os.popen("qrcode.jpg") uuid = uuid.split('/')[-1]
url = 'https://long.open.weixin.qq.com/connect/l/qrconnect?uuid='+uuid
while True:
response = session.get(url,verify=False)
code = re.findall("window.wx_code='(.*?)'",response.text)
if code != ['']:
for proc in psutil.process_iter(): # 遍历当前process
try:
if proc.name() == "dllhost.exe":
proc.kill() # 关闭该process
except Exception as e:
pass
break
time.sleep(1) url = 'https://passport.csdn.net/v1/register/pcAuthCallBack?pcAuthType=weixin&code=%s&state=csdn' % code[0]
session.get(url)
session.cookies.save() def updatePicture(picList):
for pic in picList:
session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename='.cookie/csdn.txt')
session.cookies.load()
fields = {
'file':(os.path.basename(pic),open(pic,'rb'),"image/jpeg"),
}
m = MultipartEncoder(fields, boundary='------WebKitFormBoundarynTBa3OWoSMrcVf0F')
headers = {
'content-Type': m.content_type,
}
url = 'https://blog-console-api.csdn.net/v1/upload/img?shuiyin=2'
res = session.post(url, headers=headers, data=m,verify=False)
print(res.json()["data"]["url"]) if __name__ == '__main__':
if not os.path.exists(".cookie"):
os.mkdir(".cookie")
if not os.path.exists(os.path.join(".cookie","csdn.txt")):
with open(os.path.join(".cookie","csdn.txt"),"w") as f:
f.write("") if not is_login():
login()
updatePicture(sys.argv[1:])

说明

os.chdir(os.path.dirname(os.path.realpath(sys.executable)))

这句是为了获取打包后的真实exe所在路径(因为否则会获取到临时路径,而cookie也会存到临时路径里导致每次都要登录),如果是单独脚本运行可以将其改为:

os.chdir(os.path.dirname(os.path.abspath(__file__)))

脚本运行配置

D:\Python36\python.exe D:\software\Typora\upload.py

exe运行配置

D:\software\Typora\upload.exe

其它

正常来说第一次登录是需要微信扫码登录的,登录成功会自动保存cookie, 并且关闭二维码显示,如果没有关闭说明你显示图片的进程不是"dllhost.exe",可以自己修改一下,我是win7的系统,命令行调用图片就是这个进程。

另外我发现一个typora 的问题,不知道是不是bug,每次会将启动位置作为当前环境变量,这也是我为什么写成绝对路径的原因,因为你不能保证markdown文件在哪个路径,解决办法就是写成绝对路径。

typora使用CSDN图床的更多相关文章

  1. Typora + 七牛云图床快速配置,告别手动上传图片!

    大家好,我是zeroing,本文将介绍关于 Typora 软件如何配置七牛云图床,实现图片即插即用,可以先看一下最终效果! 可以看到图片借助 Typora 软件自动将本地存储转化为第三方图片网络链接 ...

  2. PicGo+Typora+Gitee设置图床

    PicGo图床 使用 Typora 编辑 MarkDown 非常方便,但是图片插入后只能保存在本地,十分讨厌 所以,可以使用图床技术,将图片先保存到网络端,再应用到 Typora 中 PicGo应用获 ...

  3. Typora+PicGo配置图床神器(图片链接URL)

    目录 1.下载Typora 2.下载PicGo 3.Typora 配置 1.下载Typora 有能力科学的小伙伴,可以从官网下载,地址为Typora 向下滚动,点击Downloda后,选择自己的操作系 ...

  4. Typora+PicGo+cos图床打造开发者文档神器

    一.Typora简介 markdown简单.高效的语法,被每一个开发者所喜爱.Typora又是一款简约.强悍的实时渲染markdown编辑器.本文将介绍Typora搭配PicGo与腾讯cos对象存储( ...

  5. Typora使用Gitee图床

    前言 现在比较流行的Markdown编辑器应该是Typora,但是Typora本身不支持本地上传图片的云端存储,所以当我们写博客的时候,需要上传图片,就得自己设置图床,今天给大家推荐一款免费的图床-G ...

  6. PicGo + Gitee +Typora实现markdown图床

    目录 1. PicGo安装 2.Gitee配置 3.配置PicGo 3.Typora的设置 网上有一些很详细的教程,我这里只记录要点,其余部分按以下教程步骤来就行. 1. PicGo安装 国内下载可能 ...

  7. PicGo+Typora配置gitee图床

    1 .下载Typora Typora官网地址:https://www.typora.io/#windows 本文使用的Typora版本为 0.11.2 根据自己的要求进行安装即可! 2.下载PicGo ...

  8. 使用Typora写博客,图片即时上传,无需第三方图床-EasyBlogImageForTypora

    背景 习惯使用markdown的人应该都知道Typora这个神器,它非常简洁高效.虽然博客园的在线markdown编辑器也不错,但毕竟是网页版,每次写东西需要登录系统-进后台-找到文章-编辑-保存草稿 ...

  9. 使用Typora+EasyBlogImageForTypora写博客,无图床快速上传图片

    如今,使用markdown攥写博客已成为主流,而Typora作为markdown的主流工具,广受大众好评,本文讲述从Typora的安装到快速将Typora写好的博文上传到博客园 Typora下载 Ty ...

  10. 解放双手,markdown文章神器,Typora+PicGo+七牛云图床实现自动上传图片

    本文主要分享使用Typora作为Markdown编辑器,PicGo为上传图片工具,使用七牛云做存储来解放双手实现图片的自动化上传与管理.提高写作效率,提升逼格.用过 Markdown 的朋友一定会深深 ...

随机推荐

  1. 手把手教你用Java获取IP归属地

    前几个月微信公众号上线了IP归属地的功能,后续知乎.抖音等平台纷纷添加了该功能.如果是国内的用户精确到省份,国外用户精确到国家.本文就使用Java实现获取IP归属地. ! 主要讲解几个步骤: Java ...

  2. WebDriver常见操作

    本文当个记录贴,记录WebDriver常用的一些函数(含自己封装的函数) 让WebDriver使用浏览器用户设置 1 option = webdriver.ChromeOptions() 2 opti ...

  3. opencv videocapture

    import time import cv2 import numpy as np from os import path import pickle ''' 关于camera id 此处需要稍微说几 ...

  4. Elasticsearch中text与keyword的区别

    text类型 1:支持分词,全文检索,支持模糊.精确查询,不支持聚合,排序操作; 2:test类型的最大支持的字符长度无限制,适合大字段存储: 使用场景: 存储全文搜索数据, 例如: 邮箱内容.地址. ...

  5. jenkins修改默认的workspace工作目录

    1.首先,找到Jenkins安装根目录,寻找config.xml文件,在config.xml文件内,查找 workspaceDir 关键字,将你的自定义 工作空间根目录 地址替换默认的地址 # cd ...

  6. [题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂

    题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项 ...

  7. SECS半导体设备通讯-4 GEM通信标准

    一 概述 GEM标准定义了通信链路上的半导体设备的行为. SECS-II标准定义了在主机和设备之间交换的消息和相关数据项.GEM标准则定义了在哪种情况下应该使用哪些SECS-II消息以及由此产生的结果 ...

  8. TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践

    TCP和UDP的区别 TCP是一个面向连接的.可靠的.基于字节流的传输层协议. 而UDP是一个面向无连接的传输层协议. 具体来分析,和 UDP 相比,TCP 有三大核心特性: 面向连接:所谓的连接,指 ...

  9. JuiceFS 元数据引擎选型指南

    文件系统是我们常见的存储形式,内部主要由数据和元数据两部分组成.其中数据是文件的具体内容,通常会直接展现给用户:而元数据是描述数据的数据,用来记录文件属性.目录结构.数据存储位置等.一般来说,元数据有 ...

  10. 2022.3.12 提高A组总结&反思

    今天有点上头了 T1:开场秒,大水题,一眼莫队了,最后没打 T2:开场以为是费用流,后来发现费用流做不了,在做T3的时候突然发现可以状压,也没打 T3:这道题给我极大的亲切感,导致我一个上午硬钢这道题 ...