Wiz筆記二次開發

目前wiz筆記的docker版本停留在1.0.31版本,想要使用最新的功能就不能使用docker自建的服務端了,于是打算在現有基礎上根據webAPI的內容對其進行二次開發
目前解析出來的接口都是我急需使用的,大家可以參考,我會在未來慢慢開發完善的

import requests,re
from bs4 import BeautifulSoup
class wiz:def __init__(self,username,password,domain):self.username = usernameself.password = passwordself.token = ""self.kbGuid = ''self.headers = {}self.data = []self.domain = domainself.update_url()  # 初始化 URLdef update_url(self):self.url={"getWizToken":f"{self.domain}/as/user/login","getFolder":f"{self.domain}/ks/category/all/{self.kbGuid}","logOut":f"{self.domain}/as/user/logout","getMessageList":f"{self.domain}/ks/note/list/category/{self.kbGuid}","getMessage":f"{self.domain}/ks/note/download/{self.kbGuid}/",}def getWizToken(self):params = {'clientType': 'web','clientVersion': '4.0','lang': 'zh-cn',}json_data = {'userId': self.username,'password': self.password,'autoLogin': True,'domain': 'clouded.top','deviceId': None,}response = requests.post(self.url['getWizToken'],params=params,json=json_data,).json()if response['returnCode'] == 200:#登陸成功self.token = response["result"]["token"]self.kbGuid = response["result"]["kbGuid"]self.update_url()self.headers["X-Wiz-Token"] = self.tokenelif response['returnCode'] == 31002:#用戶名密碼錯誤print(response["returnMessage"])def getFolder(self):response = requests.get(self.url['getFolder'],headers=self.headers).json()for item in response['result']:# print(item)self.getMessageList(item)def logOut(self):params = {'domain': 'clouded.top','clientType': 'web','clientVersion': '4.0','lang': 'zh-cn',}requests.get(self.url['logOut'], params=params,headers=self.headers)def getMessageList(self,path):params = {'lang': 'zh-cn','category': path,'start': '0','count': '100','orderBy': 'modified','ascending': 'desc','withAbstract': 'true','withFavor': 'false','withShare': 'true','clientType': 'web','clientVersion': '4.0',}response = requests.get(self.url['getMessageList'],params=params,headers=self.headers).json()res=response['result']for r in res:title=r['title']uid=r['docGuid']self.getMessage(uid,path)def getMessage(self,uid,path):params = {'downloadInfo': '1','downloadData': '1','withFavor': 'false','withShare': 'true','clientType': 'web','clientVersion': '4.0','lang': 'zh-cn',}response = requests.get(f'{self.url['getMessage']}{uid}',params=params,headers=self.headers).json()wordCount,imageCount = self.wordCount(response['html'])audioCount = 0print(f"getOK-{path}{response['info']['title']}")if response['resources']:for i in response['resources'] :if 'wiz' not in i['name'] and 'audio.png' in i['name']:imageCount -= 1#音頻資源的圖標會錯誤的解析為圖片audioCount += int(i['size']/1024/4.5)#音頻長度累加 單位:s  粗略估計self.data.append({"path":f"{path}","title":response['info']['title'],"owner":response['info']['owner'],"wordCount":wordCount,"imageCount":imageCount,"audioCount":audioCount,"accessed":response['info']['accessed'],"created":response['info']['created']})def wordCount(self,html):soup = BeautifulSoup(html,'html.parser')for elem in soup(['style', 'script', 'head', 'title', 'meta']):elem.decompose()char_count = len(re.sub(r'\s', '', soup.get_text()))image_count = len(soup.find_all('img'))return char_count,image_countdef showData(self):# for one in self.data:#     print(one)# print(self.data)return self.data#main=wiz(username="admin@wiz.cn",password="123456",domain="http://120.349.12.333:9192")
main.getWizToken()
main.getFolder()
data=main.showData()main.logOut()

大家可以自行運行代碼,更改賬號密碼以及服務器鏈接就可以查看自己服務器上的文章信息,目前還在開發中…
目前基于這個寫了一個文章總覽頁面,類似Github的代碼熱力圖
在這里插入圖片描述
有興趣的話可以在下一章放出源代碼

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

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

相關文章

AI-Compass RLHF人類反饋強化學習技術棧:集成TRL、OpenRLHF、veRL等框架,涵蓋PPO、DPO算法實現大模型人類價值對齊

AI-Compass RLHF人類反饋強化學習技術棧:集成TRL、OpenRLHF、veRL等框架,涵蓋PPO、DPO算法實現大模型人類價值對齊 AI-Compass 致力于構建最全面、最實用、最前沿的AI技術學習和實踐生態,通過六大核心模塊的系統化組織,為不同層次…

阿里云 Kubernetes 的 kubectl 配置

安裝 kubectl 到系統路徑# 賦予執行權限 chmod x kubectl# 安裝到系統路徑 sudo mv kubectl /usr/local/bin/# 驗證安裝 kubectl version --client --short獲取阿里云集群配置文件--手動配置登錄阿里云控制臺進入「容器服務」->「集群」選擇您的集群點擊「連接信息」->「…

C++-linux系統編程 8.進程(二)exec函數族詳解

exec函數族詳解 在Unix/Linux系統中,fork()與exec()函數族是進程控制的黃金組合:fork()創建新進程,exec()則讓新進程執行不同的程序。這種組合是實現shell命令執行、服務器進程動態加載任務等核心功能的基礎。本文將詳細解析exec函數族的原理…

PTL亮燈揀選系統提升倉庫運營效率的方案

隨著電商、零售、制造等行業的快速發展,倉庫的作業效率成為企業競爭力的關鍵因素之一。傳統的揀選方式多依賴人工尋找與確認,不僅耗費時間,還容易出錯,嚴重制約倉庫整體運營效率。為了應對日益增長的訂單需求與提高揀選準確率&…

LVS三種模式實戰

IPVS基本上是一種高效的Layer-4交換機,它提供負載平衡的功能。當一個TCP連接的初始SYN報文到達時,IPVS就選擇一臺服務器,將報文轉發給它。此后通過查看報文的IP和TCP報文頭地址,保證此連接的后繼報文被轉發到相同的服務器。這樣&a…

HCIA第二次綜合實驗:OSPF

HCIA第二次綜合實驗:OSPF一、實驗拓撲二、實驗需求 1、R1-R3為區域0,R3-R4為區域1;其中R3在環回地址在區域1; 2、R1、R2各有一個環回口; 3、R1-R3中,R3為DR設備,沒有BDR; 4、R4環回地…

深入解析環境變量:從基礎概念到系統級應用

目錄 一、基本概念及其核心作用 1、基本概念 2、核心作用 二、常見環境變量 三、查看環境變量方法 四、測試PATH 1、對比執行:./project和直接執行project的區別 2、思考:為何某些命令可直接執行而無需路徑,但我們的二進制程序卻需要…

Spring Boot:DTO 字段 cPlanId 無法反序列化的奇葩問題

本文記錄一次在 Spring Boot 項目中,DTO 字段明明有值,反序列化后卻是 null 的問題。最終發現并不是常見的 JSON 工具庫 Bug,而是隱藏在 setter 命名大小寫規則中的坑。💻 背景介紹技術棧如下:Spring Boot:…

文本生成視頻的主要開源模型

AI文本到視頻生成技術發展迅速,這些模型的“快速”通常指相對于傳統視頻制作的效率(生成時間從幾秒到幾分鐘,取決于硬件),但實際速度取決于您的計算資源(如GPU)。這些模型大多依賴于深度學習框架…

vscode里面怎么配置ssh步驟

01.ubuntu里面下載幾個插件還需要下載插件net-tools02.vscode里面下載插件會生成下面類似電視機的插件(room6)

【人工智能99問】激活函數有哪些,如何選擇使用哪個激活函數?(5/99)

文章目錄激活函數一、激活函數的分類1. 按“是否線性”分類2. 按“是否飽和”分類(針對非線性激活函數)3. 按“適用層”分類二、常見激活函數及特點(一)非線性激活函數(主要用于隱藏層)1. 飽和激活函數&…

代數——第4章——線性算子(算符)(Michael Artin)

第 4 章 線性算子(Linear Operators) That confusions of thought and errors of reasoning still darken the beginnings of Algebra, is the earnest and just complaint of sober and thoughtful men. (思維混亂和推理錯誤 仍然使代數的開端變得模糊不清, …

Neo4j Python 驅動庫完整教程(帶輸入輸出示例)

Neo4j Python 驅動庫完整教程(帶輸入輸出示例) 1. 基礎連接示例 輸入代碼 from neo4j import GraphDatabase# 連接配置 URI "bolt://localhost:7687" USER "neo4j" PASSWORD "password123" # 替換為你的實際密碼def t…

Axios 和 Promise 區別對比

Axios 和 Promise 是前端開發中兩個不同的概念,盡管 Axios 基于 Promise 實現,但它們的核心定位和功能有顯著區別。以下是對比分析: 1. 核心定位與功能Promise 定義:Promise 是 JavaScript 的異步編程方案,用于處理異步…

Git分支管理與工作流詳解

前言 分支管理是Git最強大的功能之一,它允許開發者在不影響主代碼庫的情況下創建獨立的工作空間。本文將詳細介紹Git分支的操作和常見工作流策略,幫助團隊更高效地協作開發。 1. Git分支的基本概念 1.1 什么是分支 在Git中,分支本質上是指…

【flutter】flutter網易云信令 + im + 聲網rtm從0實現通話視頻文字聊天的踩坑

接了一個國外的項目,項目采用網易云im 網易云信令聲網rtm遇到的一些問題這個項目只對接口,給的工期是兩周,延了工期,問題還是比較多的 需要全局監聽rtm信息,收到監聽內容,引起視頻通話網易云給的文檔太爛,所有的類型推策只能文檔一點點推聲網的rtm配置網易云的信令,坑太多,比如…

hive/spark sql中unix_timestamp 函數的坑以及時間戳相關的轉換

我用的是hive版本是3.1.3,spark版本是3.3.1,它們的unix_timestamp 函數在同樣的語句下轉換出來的時間戳是完全不同的,如下試驗所示1.unix_timestamp 函數的坑上圖試驗中我同樣的計算 2025-07-11 10:00:00 時間點對應的時間戳,但是…

MyBatis專欄介紹

專欄導讀 在當今的軟件開發領域,持久層框架的選擇對于提高開發效率和數據處理能力至關重要。MyBatis作為一個半自動化的ORM框架,因其靈活、高效的特點,在眾多開發者中廣受好評。本專欄《MyBatis實戰》旨在通過深入淺出的方式,幫助…

HarmonyOS從入門到精通:自定義組件開發指南(七):自定義事件與回調

HarmonyOS從入門到精通:自定義組件開發指南(七):自定義事件與回調 在HarmonyOS應用開發中,組件化架構是構建復雜界面的基礎,而組件間的高效通信則是實現業務邏輯的核心。自定義事件與回調機制作為組件交互的…

C++編程學習(第七天)

基于過程的程序設計C既可以用來進行基于過程的程序設計,又可以用來進行面向對象的程序設計。基于過程的程序設計又稱為過程化的程序設計,它的特點是:程序必須告訴計算機應當具體怎么做,也就是要給出計算機全部操作的具體過程&…