zoukankan      html  css  js  c++  java
  • 一个发布文章到博客园的 Python 脚本

    原文地址

    我的个人独立博客是基于 Hexo 搭建的,因为小站,Google 搜索引擎收录文章比较慢,还搜不到

    为了解决这个问题,希望把文章也顺便发布到博客平台博客园上。但不想每次手动复制粘贴,打算利用脚本实现,希望除了发布,并且还能更新文章。原来打算找到博客园接口,模拟操作接口实现。搜索发现博客园提供了 MetaWeblog 接口,所以利用接口,开发了这个脚本。源码地址

    如何使用这个脚本

    博客园 -> 管理 -> 设置 -> 允许 MetaWeblog 博客客户端访问

    image-20200620185444059

    cnblogs-post.py 中配置:

    config = {
        'url': 'https://rpc.cnblogs.com/metaweblog/deppwang',               # 你的 MetaWeblog 访问地址
        'username': 'DeppWangXQ',                                           # 你的登录用户名,可能跟上面的不一致
        'password': '12345678'                                              # 你的登录密码
        'local_post_path': '/Users/yanjie/GitHub/HexoBlog/source/_posts/'   # 你的本地博文路径
    }
    

    在文章开头,添加文章信息块,至少需要包括 title 和 tags,格式如下:

    ---
    title: 一个可编辑与新增博客园文章的 Python 脚本
    english_title: a-python-script-to-edit-and-add-cnblogs-posts
    date: 2020-06-20 20:48:37
    tags: 博客园
    categories: Tools
    ---
    正文开始 ...
    

    脚本根据文章名称来判断是否已经发布,如果已经发布,更新,否则新增。默认只操作最近修改文章,但也可以指定文章数量(count)

    python3 cnblogs-post.py [count]   # macOS/Linux
    python cnblogs-post.py [count]    # Windows
    

    删除最近发布文章

    python3 cnblogs-post.py delete    # macOS/Linux
    python cnblogs-post.py delete     # Windows
    

    核心代码

    import xmlrpc.client
    import ssl
    
    ssl._create_default_https_context = ssl._create_unverified_context
    
    config = {
        'url': 'https://rpc.cnblogs.com/metaweblog/deppwang',
        'username': '', 
        'password': ''
    }
    
    class MetaWeblog:
        def __init__(self, url, username, password):
            self.url, self.username, self.password = url, username, password
            self.proxy = xmlrpc.client.ServerProxy(self.url)
    
        def getRecentPosts(self, count):
            return self.proxy.metaWeblog.getRecentPosts('', self.username, self.password, count)
    
    def main():
        metaWeblog = MetaWeblog(config['url'], config['username'], config['password'])
        posts = metaWeblog.getRecentPosts(100)
    

    一文多发

    脚本只实现发布、更新文章到博客园。如果想实现一文多发,可使用 OpenWrit,或自己开发相应脚本,方法为找到相应接口,使用模拟操作接口的方式实现

    我个人没有一文多发的需求,感兴趣的同学可以做做

    参考

    • https://extendswind.top/posts/technical/python3_publish_blog/
    • https://github.com/Whistle1988/auto_post_article
    • https://rpc.cnblogs.com/metaweblog/deppwang
    • http://samwirch.com/blog/recursively-find-the-last-modified-file-in-python
    • https://github.com/executablebooks/markdown-it-py
  • 相关阅读:
    嵌入式网络设备一次盲点补报的开发经验(二)
    嵌入式网络设备一次盲点补报的开发经验(一)
    调试lcd时候给linux单板移植tslib
    java 常用的解析工具
    快速上手 Echarts
    alibaba/fastjson 之 JSONPath
    CentOS 7.5 安装Docker 教程
    Java问题-java进程占用内存过高,排查原因
    zabbix问题-cannot create IPC key for path
    rsync服务-部署配置与维护
  • 原文地址:https://www.cnblogs.com/deppwang/p/13218531.html
Copyright © 2011-2022 走看看