python zblog API實現類似XMLRPC/發布文章

我發現python對Zblog的XML發布并不友好,雖然也有對應的模塊,但是遠遠沒有XPCRPC更直接方便,但是使用xmlRpc是直接給發布文章帶來了不小的便利,但是對系統也并不友好,但是zblog也開放了Api,但是干部子弟不樂意了,想自己琢磨。
對于wordpress系統,大家都熟悉一個模塊 wordpress_xmlrpc 利用此模塊可以輕松將文章發布到wordpress系統中,也可以輕松上傳附件。總體總結以下好處。

  • 使用無門檻,方便
  • 自動創建分類
  • 自動創建標簽
  • 上傳附件
  • 無需驗證碼

使用方法簡單如下:

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods import posts
wp = Client('https://domain.com/xmlrpc.php', 'username', 'password')
def post_new_article(title, content):post = WordPressPost()post.title = titlepost.content = contentpost.post_status = 'draft'  # 文章狀態,不寫默認是草稿,private表示私密的,draft表示草稿,publish表示發布post.terms_names = {'category': ['分類目錄'],'post_tag': ['標簽1', '標簽2'],}post.id = wp.call(posts.NewPost(post))return post.id

是不是很方便,簡單,以上category和post_tag如果不存在則自動創建

下面來看下zblog,zblog可以搜一下看,并沒有類似于wprdpress這塊模塊,但是對于XmlRpc也有對應的方法,但是那種方法并不方便,而且要手動創建分類和標簽,一般作者會在zblog的xmprc中實現對newPost方法的支持,然后在寫一個方法,這個方法確實可以,也能實現以上的功能,對于很多模塊需求還是受限,但對于科班出生的野生代碼崽就顯得尤為無助,此外系統對于檢測也有排斥,總會提示這個文件不是最新文件,而且更新后會將這個文件給還原。
俗話說沒有輪子就自己造輪子,我就用了zblog的api來實現類似的功能,地址如下 https://docs.zblogcn.com/php/#/books/api-05-design

對于擁有強迫癥的我來說,格式必須要一樣的,而且要兼容

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods import posts
from zblogApi_xmlrpc import Client,ZblogPressPost
wp = Client('www.domain.com', 'username', 'password')
def post_new_article(title, content):post = ZblogPressPost()post.title = titlepost.content = contentpost.post_status = 'draft'  # 文章狀態,不寫默認是草稿,private表示私密的,draft表示草稿,publish表示發布post.terms_names = {'category': ['分類目錄'],'post_tag': ['標簽1', '標簽2'],}post.id = wp.call(posts.NewPost(post))return post.id

使用以上方法就可以發布成功了

首先添加對post的支持

class ZblogPressPost:def __init__(self):# self.id = 0self.title = ''self.content = ''self.post_status = 'draft'  # 默認狀態為草稿self.meta_koileedesc=''self.meta_koileekey=''self.meta_tesetu = ''self.meta_recommend=''self.terms_names = {'post_tag': [],'category': []}@propertydef post_status(self):return self._post_status@post_status.setterdef post_status(self, value):valid_statuses = ['private', 'draft', 'publish']if value in valid_statuses:self._post_status = valueelse:raise ValueError(f"Invalid post status: {value}. Valid options are {valid_statuses}")def __repr__(self):return str(self.to_dict())def to_dict(self):return {'title': self.title,'content': self.content,'post_status': self._post_status,'terms_names': self.terms_names,"meta_koileedesc":self.meta_koileedesc,"meta_koileekey":self.meta_koileekey,"meta_tesetu" :self.meta_tesetu,"meta_recommend":self.meta_recommend}

其次對zblog的封裝


class Client:BASE_URL = '/zb_system/api.php'LOGIN_ENDPOINT = 'mod=member&act=login'CATEGORY_ENDPOINT = 'mod=category&act={action}'TAG_ENDPOINT = 'mod=tag&act={action}'POST_ENDPOINT = 'mod=post&act=post'UPLOAD_ENDPOINT = "mod=upload&act={action}"

以下支持

  • 使用無門檻,方便
  • 分類不存在自動創建分類
  • 標簽不存在自動創建標簽
  • 上傳附件
  • 登入token,并設置token_expiration時間,到期則率
    為了防止濫用,代碼就不公開了,知道思路了,就可以自己動手操作了,是不是很簡單

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212729.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212729.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212729.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UE小:物品拼裝功能

藍圖B1的實現步驟: 獲取玩家控制器和視角:首先獲取玩家控制器,然后使用Deproject Screen to World節點將屏幕上的鼠標位置轉換為世界空間中的一條射線。 射線檢測:使用Line Trace by Channel或Line Trace for Objects節點發射射線…

深度學習測試流程

深度學習模型測試的功能旨在驗證模型在各種情況下的性能和魯棒性。以下是深度學習模型測試的主要功能: 性能評估: 測試模型在任務目標上的整體性能,例如分類準確性、回歸誤差等。評估指標的選擇取決于具體的任務類型。 泛化能力:…

《信息技術時代》期刊雜志論文發表投稿

《信息技術時代》期刊收稿方向:通信工程、大數據、計算機、辦公自動化、信息或計算機教育、電子技術、系統設計、移動信息、圖情信息研究、人工智能、智能技術、信息技術與網絡安全等。 刊名:信息技術時代 主管主辦單位:深圳灣科技發展有限…

C++筆記之int、size_t、uint8_t、unsigned char*區別

C筆記之int、size_t、uint8_t、unsigned char*區別 code review! 文章目錄 C筆記之int、size_t、uint8_t、unsigned char*區別1.ChatGPT第一次查詢解釋2.ChatGPT第二次查詢解釋3.分別的使用示例 1.ChatGPT第一次查詢解釋 size_t、uint8_t 和 int 是編程中使用的不同類型&…

《微信小程序開發從入門到實戰》學習四十七

4.4 云函數 4.4.5 云函數的定時觸發 如果云函數需要定時執行,可以使用云函數定時觸發器。配置了定時觸發器,云函數會在相應時間點被自動觸發。函數返回結果不會返回調用方 在需要添加觸發器的云函數下新建文件config.json。格式如下: &quo…

05-詳解調用服務時負載均衡的配置及其原理

負載均衡 負載均衡的原理(通用) LoadBalanced注解用來攔截它所標記的RestTemplate發起的http請求, 底層是利用了一個名為Ribbon的組件來實現負載均衡功能(Cloud高版本已經棄用) LoadBalancerInterceptor的intercept方法會對RestTemplate的請求進行攔截 public class LoadBal…

【Linux】使用Bash和GNU Parallel并行解壓縮文件

介紹 在本教程中,我們將學習如何使用Bash腳本和GNU Parallel實現高效并行解壓縮多個文件。這種方法在處理大量文件時可以顯著加快提取過程。 先決條件 確保系統上已安裝以下內容: BashGNU Parallel 你可以使用以下命令在不同Linux系統上安裝它們&am…

【數據庫】分支與循環函數存儲過程

目錄 函數 【1】 【2】 【3】? 【4】 存儲過程 思考&分析 函數 【1】 --(1)定義一個根據學生姓名查詢該生學習課程的函數stu_count。 --create function stu_count(sname char(8))--學生姓名 --returns char(12)--學習課程 --begin --…

layui分頁laypage結合Flask+Jinja2實現流程

Layui2.0普通用法<!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>Demo</title><!-- 請勿在項目正式環境中引用該 …

uniapp iOS離線打包——運行項目到模擬器報錯?

運行項目、打包時報錯問題 記錄個人在開發過程中遇到的相關問題&#xff0c;后續有時間會不定時更新 文章目錄 運行項目、打包時報錯問題運行到模擬器報錯解決方案 打包報錯解決方案 運行到模擬器報錯 解決方案 選中項目工程 —> Build Settings 滑動底部 —> User-Defi…

Java基礎課的中下基礎課04

目錄 二十三、集合相關 23.1 集合 &#xff08;1&#xff09;集合的分支 23.2 List有序可重復集合 &#xff08;1&#xff09;ArrayList類 &#xff08;2&#xff09;泛型 &#xff08;3&#xff09;ArrayList常用方法 &#xff08;4&#xff09;Vector類 &#xff08;…

gin博客項目開發日志1

gin項目博客系統偽第一代 項目概述 1.1 目標 實現一個功能完整、易用的博客系統&#xff0c;允許用戶發布、編輯和管理博客文章。 1.2 背景 看到網上有很多語言寫的博客系統&#xff0c;但go的卻很少&#xff0c;正好&#xff0c;現在我在學go&#xff0c;可以拿博客來練練…

組件之間傳值

目錄 1&#xff1a;組件中的關系 2&#xff1a;父向子傳值 3&#xff1a;子組件向父組件共享數據 4&#xff1a;兄弟組件數據共享 1&#xff1a;組件中的關系 在項目中使用到的組件關系最常用兩種是&#xff0c;父子關系&#xff0c;兄弟關系 例如A組件使用B組件或者C組件…

深入了解UDP協議:特點、應用場景及市面上常見軟件案例

目錄 引言 UDP的特點 UDP的應用場景 市面上使用UDP的軟件案例 結論 引言 在計算機網絡中&#xff0c;UDP&#xff08;User Datagram Protocol&#xff09;是一種面向無連接、無狀態的傳輸層協議。與TCP相比&#xff0c;UDP具有獨特的特點和適用場景。本文將深入探討UDP協…

解碼方法dp

1.狀態表示 2.狀態轉移方程 3.初始化 4.填表順序 從左往右 5.返回值 dp[n-1] 6.處理邊界問題以及初始化問題的技巧

Docker筆記:數據卷掛載的三種方式及物理機與容器內的環境變量的傳遞

容器數據掛載到物理機上的三種方式 1 &#xff09; 實名(指定路徑)掛載數據卷 docker run -v 物理機目錄:容器內目錄 鏡像id示例 docker run -it -d --name mynginx_p_v -p 82:80 -v /root/www:/usr/share/nginx/html nginx此時訪問 會報 403 forbidden因為 物理機上的 root/…

Electron[5] 渲染進程和主進程

1 進程 Electron里頭的進程分為渲染進程和主進程。簡單理解&#xff1a; main.js就是主進程每個頁面就是渲染進程一個Electron應用僅有一個主進程&#xff0c;可以有多個渲染進程 上面的這些概念很重要&#xff0c;不展開細講。 2 進程職責 主進程是用來實現應用的基礎功能…

【小沐學Python】Python實現TTS文本轉語音(speech、pyttsx3、百度AI)

文章目錄 1、簡介2、Windows語音2.1 簡介2.2 安裝2.3 代碼 3、pyttsx33.1 簡介3.2 安裝3.3 代碼 4、ggts4.1 簡介4.2 安裝4.3 代碼 5、SAPI6、SpeechLib7、百度AI8、百度飛槳結語 1、簡介 TTS(Text To Speech) 譯為從文本到語音&#xff0c;TTS是人工智能AI的一個模組&#xf…

K8S學習指南(6)-k8s核心概念label和label selector

文章目錄 前言Label是什么&#xff1f;示例 Label Selector是什么&#xff1f;示例 Label的使用場景Label Selector的類型Label和Label Selector的高級應用使用Label Selector選擇Service的后端Pod使用Label Selector進行滾動更新 總結 前言 Kubernetes是一個強大的容器編排平…

Python從入門到精通

一、Python基礎語法 1、字面量 掌握字面量的含義了解常見的字面量類型基于print語句完成各類字面量的輸出 什么是字面量&#xff1f; 字面量&#xff1a;在代碼中&#xff0c;被寫下來的的固定的值&#xff0c;稱之為字面量 常用的值類型 Python中常用的有6種值&#xff…