怎么在CSDN中写微信公众号推文?
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在CSDN中写微信公众号推文?相关的知识,希望对你有一定的参考价值。
简 介: 本文给出了使用CSDN编写微信公众号的推文的过程。为了方便,编写了一些辅助程序以弥补CSDN中的补足,并对从CSDN到MDNICE进行文章格式的转换。通过长期使用,验证了这个过程非常有效。
关键词
: 推文,CSDN,MDNICE
§01 提 问
卓大,想问一下您平时微信的推文是怎么编辑的。我自己的推文是先用markdown写的,再粘贴进秀米编辑,就很麻烦,想了解下您的解决方案。
▲ 图1.1 TSINGHUAZHUOQING公众号推文
§02 解决方案
的确,我在公众号中的推文都是利用Markdown编辑器书写的,具体的过程如下。
一、写公众号推文过程
在TSINGHUAJOKING的推文编辑过程如下图所示。经过三个步骤:首先在CSDN进行编辑,然后在MDNICE上穿个马甲,最后粘贴到公众号形成推文。
二、为什么选择CSDN编辑?
之所以选择CSDN进行编辑,主要看中它的MARKDOWN编辑器使用起来非常方便,功能也挺多的,此外:
- 编辑过程中自然就存储在网络上,在任何联网计算机上就可以进行修改;
- 它可以帮助存储图片,动图;粘贴起来十分方便;
▲ 图2.2.1 CSDN上的Markdown编辑器
当然,它现在还有一些缺陷, 比如:
- 无法直接播放微信平台中的视频,只能播放有限的视频源;
- 对于GIF的支持还仅限于5M字节;
- 缺少对于文本自动纠错的功能;
它现在还有待进一步完善。
当然,CSDN上的Markdown编辑器的功能缺陷,可以通过外挂Python小程序来进行弥补,比如通过:
- cdf: 对标题、字体进行美化;
- cdpt: 自动导入表格;
- cdpp、cdpg:自动完成图片,动图的导入、排序、增加标题;
- cdm: 一键生成摘要、思维导图目录、参考文献、图片表格引用等;
实际上,基于Markdown编辑器,你可以通过python小程序随心所欲增加自己想要的功能。
三、使用墨滴给文档穿马甲
墨滴网站 提供对Markdown编辑文章进行格式美化的功能。提供了非常丰富的格式模板共选择。
▲ 图2.3.1 墨滴网站上丰富的推文马甲
可以根据自己推文的风格,选择合适的模板进行套用。也可以在其中自定义属于自己风格的模板。
▲ 图2.3.2 更换推文马甲过程
将CSDN上的Markdown文本,拷贝到墨滴进行穿马甲的过程中,也存在一些格式不兼容的问题。比如在对图片格式和注释方面的显示,对于引用文本格式,标注格式等。这里也是通过一个小的Python程序进行自动过滤和修正,无需手工进行修改。
这个程序cd2md的程序在本文最后给出。
四、发布推文
墨滴网页提供微信推文和知乎发文的拷贝按钮,点按之后,在微信推文中直接粘贴便可以得到美化后的推文了。同样,在头条,知乎上也都可以进行粘贴。
▲ 图2.4.1 墨滴网页上提供微信推文、知乎发文拷贝按钮
如果想把文章拷贝到WORD中,发现直接通过墨滴所得到的文档并不美观。实际上直接从CSDN上的MARKDOWN预览栏全部选择-拷贝-粘贴到WORD中,可以得到格式比较美观的WORD文档。只是需要后期对所有的插图重新进行尺寸调整,居中处理。
※ 附 件 ※
本文给出了使用CSDN编写微信公众号的推文的过程。为了方便,编写了一些辅助程序以弥补CSDN中的补足,并对从CSDN到MDNICE进行文章格式的转换。通过长期使用,验证了这个过程非常有效。
■ cd2md
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# CD2MD.PY -- by Dr. ZhuoQing 2020-02-05
#
# Note:cd2md arg1 arg2..
# argn(n=1,2,3,4...)
# #1223 : Change the title #Number
# |23 : Select Table column
# * : Delete bold
# i,C : Auto indent
# c : delete Code
# & : nbsp keep
# \\\\ : Merge Picture count
# // : Link picture count
# - : Note at follow space line for linkage
# _ : Get rid of ---
# $ : Keep § of the title.
#
#
#============================================================
from head import *
import webbrowser
import requests
from bs4 import BeautifulSoup
#------------------------------------------------------------
csdn_title = '写文章-CSDN博客'
mdnice_title = '让排版变'
gitee_title = '· 编辑文件 ·'
typora_title = 'Typora'
#------------------------------------------------------------
rect = tspgetwindowrect(gitee_title)
giteeflag = abs(sum(rect))
rect = tspgetwindowrect(mdnice_title)
mdniceflag = abs(sum(rect))
#------------------------------------------------------------
rect = tspgetwindowrect(typora_title)
typoraflag = abs(sum(rect))
if typoraflag > 0:
giteeflag = 1
#------------------------------------------------------------
csdnurl = ''
csdnpaper = ''
if giteeflag > 0:
csdnurl = clipboard.paste()
if csdnurl.find('https:') < 0:
csdnurl = tspread()[-1]
if csdnurl.find('?articleId=') < 0:
if csdnurl.find('https:') < 0:
csdnurl = ''
else:
findid = csdnurl.find('Id=')
ss = csdnurl[findid+3:]
csdnurl = 'https://zhuoqing.blog.csdn.net/article/details/%s'%ss
if len(csdnurl) > 0:
if csdnurl.find('http') == 0:
xmltext = requests.get(csdnurl)
soup = BeautifulSoup(xmltext.text, 'lxml')
try:
csdnpaper = soup.head.title.string.split('_')[0]
except:
pass
#------------------------------------------------------------
keepnbspflag = 0
linknotestr = ''
linknoteflag = 0
linedeleteflag = 1
#------------------------------------------------------------
def char2color(argv1):
color = ''
if argv1.count('a') == 1: color = 'gray'
if argv1.count('a') == 2: color = '#b19e26'
if argv1.count('A') == 1: color = 'olive'
if argv1.count('A') == 2: color = '#2693ba'
if argv1.count('b') == 1: color = 'blue'
if argv1.count('b') == 2: color = 'darkslateblue'
if argv1.count('B') == 1: color = 'slateblue'
if argv1.count('d') == 1: color = 'seagreen'
if argv1.count('D') == 1: color = '#%06x'%int.from_bytes(tspgetcolor().to_bytes(3, 'little'), 'big')
if argv1.count('g') == 1: color = 'darkgreen'
if argv1.count('g') == 2: color = 'green'
if argv1.count('K') == 1: color = 'black'
if argv1.count('m') == 1: color = 'brown'
if argv1.count('M') == 1: color = '#944276'
if argv1.count('p') == 1: color = '#7a37ab'
if argv1.count('P') == 1: color = '#7f00ff'
if argv1.count('q') == 1: color = 'cyan'
if argv1.count('Q') == 1: color = 'darkcyan'
if argv1.count('q') == 2: color = '#b9a0a6'
if argv1.count('r') == 1: color = 'red'
if argv1.count('R') == 1: color = 'darkred'
if argv1.count('r') == 2: color = 'c000'
if argv1.count('t') == 1: color = 'teal'
if argv1.count('T') == 1: color = '#008090'
if argv1.count('v') == 2: color = 'silver'
if argv1.count('v') == 1: color = 'blueviolet'
if argv1.count('w') == 1: color = 'white'
if argv1.count('W') == 1: color = '#c02060'
if argv1.count('y') == 1: color = 'yellow'
if argv1.count('y') == 2: color = '#b01019'
if argv1.count('Y') == 1: color = '#e06030'
if argv1.count('z') == 1: color = 'purple'
if argv1.count('Z') == 1: color = '#600090'
return color
def char2face(argv1):
face = ''
if argv1.count('s') == 1: face= '宋体'
if argv1.count('k') == 1: face= '楷体'
if argv1.count('f') == 1: face= '仿宋'
if argv1.count('l') == 1: face= '隶属'
if argv1.count('h') == 1: face= '黑体'
if argv1.count('F') == 2: face=''
return face
#------------------------------------------------------------
changecolordict =
changesizedict =
changefacedict =
changetitledict =
tablesect = []
deletecode = 1
indentflag = 0
bolddeleteflag = 0
mergepicflag = 0
linkpicflag = 0
deletechapterflag = 1
if giteeflag > 0:
deletecode = 0
#------------------------------------------------------------
if len(sys.argv) > 1:
for v in sys.argv[1:]:
if v.count('&') > 0:
keepnbspflag = 1
v = v.replace('&', '')
if v.count('\\\\') > 0:
mergepicflag = v.count('\\\\')
v = v.replace('\\\\', '')
if v.count('/') > 0:
linkpicflag = v.count('/')
v = v.replace('/', '')
if v.count('-') > 0:
linknoteflag = v.count('-')*2
v = v.replace('-', '')
if v.count('_') > 0:
linedeleteflag = 0
v = v.replace('_', '')
if v.count('$') > 0:
v = v.replace('$', '')
deletechapterflag = 0
#----------------------------------------------------
if len(v) > 1:
if v[0] >= '1' and v[0] <= '9' and v[1] >= '0' and v[1] <= '9':
changesizedict.update([(v[0], v[1])])
elif v[0] == '#' and len(v) >=3:
if v[1] >= '0' and v[1] <= '9' and v[2] >= '0' and v[2] <= '9':
changetitledict.update([(v[1], v[2])])
if len(v) >= 5:
if v[3] >= '0' and v[3] <= '9' and v[4] >= '0' and v[4] <= '9':<以上是关于怎么在CSDN中写微信公众号推文?的主要内容,如果未能解决你的问题,请参考以下文章