自动保存知乎上点赞的内容至本地

背景:知乎上常有非常精彩的回答/文章,必须要点赞+收藏,日后回想起该回答/文章时翻看自己的动态和收藏夹却怎么也找不到,即使之前保存了链接网络不好也打不开了(。所以我一般碰到好的回答/文章都会想办法保存它的离线版本,但人是懒的,有没有什么办法可以自动保存我点赞/公开收藏过的内容呢。经过苦苦搜寻,终于我找到了这么一个开源的工具:

https://github.com/amchii/ZhiArchive,监测知乎用户的个人动态并保存内容以防丢失​

Docker快速部署好之后,每当我点赞某个内容的时候,它都会帮我拍一个动态和该内容的长截图,妈妈再也不用担心我丢三落四了。

以下是它的介绍:

ZhiArchive

监测知乎用户的个人动态并保存内容以防丢失。

某用户的动态结果保存目录如下:
activities为个人动态页快照,archives为动态对应的回答/文章快照

.  
├── activities  
│   ├── 2024  
│   │   └── 01  
│   │       └── 17  
│   │           ├── 回答-为什么只有饿死的狮子而没有饿死的老虎?说明了什么问题?.png  
│   │           ...  
│   │           └── 赞同-如何看待211高校华中某业大学动物Y养系黄某若教授十几年如一日的学术造假行为?.png  
│   └── 20240117181850.json  
└── archives  
    └── 2024  
        └── 01  
            └── 17  
                ├── 回答-为什么只有饿死的狮子而没有饿死的老虎?说明了什么问题?  
                │   ├── info.json  
                │   └── 回答-为什么只有饿死的狮子而没有饿死的老虎?说明了什么问题?.png  
                ...  
                └── 赞同-如何看待211高校华中某业大学动物Y养系黄某若教授十几年如一日的学术造假行为?  
                    ├── info.json  
                    └── 赞同-如何看待211高校华中某业大学动物Y养系黄某若教授十几年如一日的学术造假行为?.png  
  
16 directories, 25 files  

其中:
动态文件activities/2024/01/17/赞同-如何看待211高校华中某业大学动物Y养系黄某若教授十几年如一日的学术造假行为?.png如图:
在这里插入图片描述

目标文件archives/2024/01/17/赞同-如何看待211高校华中某业大学动物Y养系黄某若教授十几年如一日的学术造假行为?/赞同-如何看待211高校华中某业大学动物Y养系黄某若教授十几年如一日的学术造假行为?.png如图:
在这里插入图片描述

archives/2024/01/17/赞同-如何看待211高校华中某业大学动物Y养系黄某若教授十几年如一日的学术造假行为?/info.json内容为:

{  
  "title": "如何看待211高校华中某业大学动物Y养系黄某若教授十几年如一日的学术造假行为?",  
  "url": "https://zhuanlan.zhihu.com/p/678136207",  
  "author": "zhang-li-28-1",  
  "shot_at": "2024-01-17T18:19:13.783"  
}  

它是如何工作的

ZhiArchive使用Playwright,它由4个部分组成,分别是monitor,archiver,login worker和api:

  • monitor:用于监测用户个人主页的动态并将新的动态:打快照,把动态的目标(回答、文章)链接通过redis丢给archiver
  • archiver:打开目标链接并保存屏幕快照至本地。
  • login worker:用于登录知乎获取monitorarchiver所必需的认证信息。
  • api:提供接口来操作控制monitorarchiverlogin worker

使用

注意查看日志跟踪运行状态
archiver: archiver.log
monitor: monitor.log
login_worker: login_worker.log

Docker

下载本项目:
# 下载本项目  
git clone https://github.com/amchii/ZhiArchive.git  
# 进入项目目录  
cd ZhiArhive  
构建镜像:
docker build -t zhi-archive:latest -f BaseDockerfile .  
配置环境变量:

所有可配置项见config.py,支持通过环境变量或.env.apienv文件配置

.env文件

secret_key=  # 请生成一个随机字符串  
people=<someone>  # 知乎用户,在个人主页地址中:https://www.zhihu.com/people/<someone>  
monitor_fetch_until=10  # 天数,Monitor初次运行时默认抓取到10天前的动态  

.apienv文件

# API认证账号,配置用户名和密码  
username=  
password=  
启动
docker compose up -d  

API端口为9090,以127.0.0.1为例,
打开http://127.0.0.1:9090/docs可查看接口文档,下面👇🏻所提到的接口可在这个接口文档进行调用,调用之前请先打开http://127.0.0.1:9090/auth/login登录获取本项目的接口认证信息(Cookies)

登录知乎获取Cookie

打开http://127.0.0.1:9090/zhi/login获取知乎登录二维码:
在这里插入图片描述

扫码完成登录后将重定向到"http://127.0.0.1:9090/zhi/login/state/f19c99849de8dccc8e9b" 并显示获取的cookies,路径最后的’f19c99849de8dccc8e9b’将是你的state文件地址,文件存储路径为<项目目录>/states/f19c99849de8dccc8e9b.state.json,可通过接口GET/PUT /zhi/core/state_path 查看和设置正在运行的MonitorArchiver的state文件。
(后续考虑登录完成即设置state)

运行Monitor和Archiver

Monitor和Archiver默认是暂停状态,设置好知乎的Cookie后,可以通过接口:
/zhi/core/{name}/pause查看和更改运行状态,name可以是’monitor’或’archiver’
运行后查看日志输出和结果目录。

TODO

  • 所有元素selector可配置
  • 通过接口完全控制Monitor, Archiver
  • 支持监测多个用户
  • 异常告警
  • 提供前端界面

欢迎交流,Star⭐️一下,项目随时更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/361806.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTTP(Java web方向补充篇)

HTTP&#xff08;Java web方向补充篇&#xff09; HTTP简介 概念&#xff1a;Hyper Text Transfer Protocol,超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则 HTTP协议特点&#xff1a; 基于TCP协议&#xff1a;面向连接&#xff0c;安全基于请求-响应模…

【Redis】实现购物秒杀及分布式锁

Redis实现购物秒杀及分布式锁 全局唯一ID Redis自增ID策略 ID构造是:时间戳 + 计数器 每天一个key,方便统计订单量 业务实现 获取指定时间的秒数 LocalDateTime timeBegin = LocalDateTime.of(2024, 1, 1, 0, 0, 0); long second = timeBegin.toEpochSecond(ZoneOffset…

AI赋能编程 | 自动化工具助力高效办公

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言泡泡AI工具卡片思维导图Markdown编辑器 其他工具文件免费处理工具结语 合集…

汽车行业要不要引入IPD?

摘要&#xff1a; 本文中&#xff0c;我们站在汽车行业的视角&#xff0c;着重从背景、理念、流程和架构这4个比较宏观的层面&#xff0c;对IPD的增量进行了对照阐释。 五年前&#xff0c;我并没有关心过IPD&#xff0c;行业和公司都有自己成功且完善的体系&#xff0c;为什么…

【3DGS】从新视角合成到3D Gaussian Splatting

文章目录 引言&#xff1a;什么是新视角合成任务定义一般步骤NeRF的做法NeRF的三维重建NeRF的渲染 3DGS的三维重建从一组图片估计点云高斯点云模型球谐函数参数优化损失函数和协方差矩阵的优化高斯点的数量控制(Adaptive Density Control)新的问题 3DGS的渲染&#xff1a;快速可…

MySQL数据库基础第一篇(SQL通用语法与分类)

文章目录 一、SQL通用语法二、SQL分类三、DDL语句四、DML语句1.案例代码2.读出结果 五、DQL语句1.DQL-基本查询2.DQL-条件查询3.DQL-聚合函数4.DQL-分组查询5.DQL-排序查询6.DQL-分页查询1.案例代码2.读出结果 在当今数据库驱动的世界里&#xff0c;SQL&#xff08;结构化查询语…

Spring Boot 中操作 Bean 的生命周期

1.InitializingBean和DisposableBean InitializingBean接口提供了afterPropertiesSet方法&#xff0c;用于在bean的属性设置好之后调用&#xff1b; DisposableBean接口提供了destroy方法&#xff0c;用于在bean销毁之后调用&#xff1b; public class TestComponent implem…

2024.1.31日总结

服创大赛的有一个选题是【A16】新苗同学 - 大学新生智能迎新平台&#xff0c;这个对前端的要求挺高的&#xff0c;需要设计游戏化页面&#xff0c;刚刚搜索了一下&#xff0c;感觉难度很大&#xff0c;又要有创意&#xff0c;而且动画效果也要不错&#xff0c;整体页面才会美观…

Nous Hermes 2:超越Mixtral 8x7B的MOE模型新高度

引言 随着人工智能技术的迅猛发展&#xff0c;开源大模型在近几年成为了AI领域的热点。最近&#xff0c;Nous Research公司发布了其基于Mixtral 8x7B开发的新型大模型——Nous Hermes 2&#xff0c;这一模型在多项基准测试中超越了Mixtral 8x7B Instruct&#xff0c;标志着MOE…

docker-学习-2

docker学习第二天 docker学习第二天1.docker和虚拟机的区别2.docker的底层隔离机制2.1 Namespaces(命名空间)2.1.1 什么是命名空间 2.2 Cgroups2.3 Union file systems2.4 Container format2.5 docker在底层如何做隔离的&#xff0c;如何进行资源限制的&#xff1f; 3. docker命…

【数据分享】1929-2023年全球站点的逐日最高气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

rabbitmq基础-java-2、work模型

1、简介 工作队列模式&#xff08;Work Queue Mode&#xff09;&#xff1a;在这个模型中&#xff0c;生产者同样将消息发送到队列&#xff0c;但多个消费者可以从队列中获取消息并发处理。这意味着不同的消费者可以独立地处理各自的任务&#xff0c;从而提高效率。 2、消息发送…

大华智能物联综合管理平台 任意文件读取漏洞复现(QVD-2023-45063)

0x01 产品简介 大华ICC智能物联综合管理平台对技术组件进行模块化和松耦合&#xff0c;将解决方案分层分级&#xff0c;提高面向智慧物联的数据接入与生态合作能力。 0x02 漏洞概述 大华ICC智能物联综合管理平台 readpic接口处存在任意文件读取漏洞&#xff0c;未经身份验证…

JSON巨匠:FastJSON的序列化解析

Fastjson 简介 Fastjson 是一个 Java 库&#xff0c;可以将 Java 对象转换为 JSON 格式&#xff0c;当然它也可以将 JSON 字符串转换为 Java 对象。 Fastjson 可以操作任何 Java 对象&#xff0c;即使是一些预先存在的没有源码的对象。 Fastjson 源码地址&#xff1a;https://…

Advanced CNN

文章目录 回顾Google NetInception1*1卷积Inception模块的实现网络构建完整代码 ResNet残差模块 Resedual Block残差网络的简单应用残差实现的代码 练习 回顾 这是一个简单的线性的卷积神经网络 然而有很多更为复杂的卷积神经网络。 Google Net Google Net 也叫Inception V…

轻量式RPC调用日志链路设计方案

导语: 调用链跟踪系统,又称为tracing&#xff0c;是微服务设计架构中&#xff0c;从系统层面对整体的monitoring和profiling的一种技术手 背景说明 由于我们的项目是微服务方向&#xff0c;中后台服务调用链路过深&#xff0c;追踪路径过长&#xff0c;其中某个服务报错或者异…

探索设计模式的魅力:精准解读桥接模式-用桥接模式构建可扩展的软件系统

设计模式专栏&#xff1a;http://t.csdnimg.cn/nolNS 目录 一、了解桥接模式&#xff1a;探索抽象和实现的分离 1.1 开-闭原则 1.2 组合/聚合复用原则 1.3 定义 1.4 用意 1.5 基本思想 1.6 组成部分 1.7 桥梁模式的示意性系统的结构图 二、桥接模式的优势&#xff1a…

torchvision.models._utils.IntermediateLayerGetter()使用

torchvision.models._utils.IntermediateLayerGetter&#xff08;&#xff09;使用 源码如下&#xff1a; from collections import OrderedDictimport torch from torch import nnclass IntermediateLayerGetter(nn.ModuleDict):"""Module wrapper that ret…

【Tomcat与网络6】 Tomcat是如何扩展Java线程池的?

目录 1.Java 的线程池 2.Tomcat 的线程池 学习Tomcat的时候&#xff0c;有很多绚丽的技术值得我们学习&#xff0c;但是个人认为Tomcat的线程池扩展是最值得研究的一个部分&#xff0c;线程池的应用太广了&#xff0c;也重要了&#xff0c;Java原生线程池的特征我相信很多人都…

matlab中的图窗属性和坐标轴的属性

图窗的Position和Outerposition Position 指定窗口的尺寸和窗口在屏幕中的位置。 Outerposition 指定窗口外轮廓的大小和位置。 两者都是用一个4维向量来定义&#xff0c;格式为[左 底 宽 高]。 可通过set函数修改Position和Outerposition&#xff0c;如下&#xff1a;在屏幕左…