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.tpcf.cn/web/89039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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既可以用来进行基于过程的程序设计,又可以用来进行面向对象的程序设计。基于过程的程序设计又称为过程化的程序设计,它的特点是:程序必须告诉计算机应当具体怎么做,也就是要给出计算机全部操作的具体过程&…