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

2024-02-01 09:52

本文主要是介绍自动保存知乎上点赞的内容至本地,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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⭐️一下,项目随时更新

这篇关于自动保存知乎上点赞的内容至本地的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666886

相关文章

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件