怎么在CSDN中写微信公众号推文?

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在CSDN中写微信公众号推文?相关的知识,希望对你有一定的参考价值。

简 介: 本文给出了使用CSDN编写微信公众号的推文的过程。为了方便,编写了一些辅助程序以弥补CSDN中的补足,并对从CSDN到MDNICE进行文章格式的转换。通过长期使用,验证了这个过程非常有效。

关键词 推文CSDNMDNICE

 

§01   问


  大,想问一下您平时微信的推文是怎么编辑的。我自己的推文是先用markdown写的,再粘贴进秀米编辑,就很麻烦,想了解下您的解决方案。

▲ 图1.1 TSINGHUAZHUOQING公众号推文

 

§02 决方案


  的确,我在公众号中的推文都是利用Markdown编辑器书写的,具体的过程如下。

一、写公众号推文过程

  在TSINGHUAJOKING的推文编辑过程如下图所示。经过三个步骤:首先在CSDN进行编辑,然后在MDNICE上穿个马甲,最后粘贴到公众号形成推文。

CSDN
编辑
MDNICE
穿马甲
WECHAT
发表

二、为什么选择CSDN编辑?

  之所以选择CSDN进行编辑,主要看中它的MARKDOWN编辑器使用起来非常方便,功能也挺多的,此外:

  • 编辑过程中自然就存储在网络上,在任何联网计算机上就可以进行修改;
  • 它可以帮助存储图片,动图;粘贴起来十分方便;

▲ 图2.2.1 CSDN上的Markdown编辑器

  当然,它现在还有一些缺陷, 比如:

  • 无法直接播放微信平台中的视频,只能播放有限的视频源;
  • 对于GIF的支持还仅限于5M字节;
  • 缺少对于文本自动纠错的功能;

  它现在还有待进一步完善。

  当然,CSDN上的Markdown编辑器的功能缺陷,可以通过外挂Python小程序来进行弥补,比如通过:

  • cdf: 对标题、字体进行美化;
  • cdpt: 自动导入表格;
  • cdppcdpg:自动完成图片,动图的导入、排序、增加标题;
  • 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中写微信公众号推文?的主要内容,如果未能解决你的问题,请参考以下文章

微信公众号推文中如何自定义添加表格?

怎么把h5放到微信公众号上

微信公众平台怎么生成二维码

微信剧变

微信剧变

回调函数