zd小达's blog

一些无聊的破事儿|´・ω・)ノ

「硬核教程」为你喜欢的 Twitter / X 账户留下本地全量备份🐦

0. 引子

最近突发奇想想要把我推的 Twitter 账号留一份全量备份,但是搜寻互联网,要么是要借助付费工具,要么就是只能备份自己的账号。

于是乎,本人开发了一套使用开源工具,可以备份任意账号的工作流~

最终效果:

1.准备工作

一台正常的PC设备(安装了 Python 或者 uv
能使用终端执行代码的你
可以访问 X 的互联网
一点点耐心

首先克隆本仓库

git clone https://github.com/zdxiaoda/TwitterBackup.git

本教程默认使用 uv ,对于 pip 的操作大同小异。(如果你不知道 uv 是什么或者没有安装 uv ,可以参见官方文档进行安装)

进入仓库文件夹后运行同步指令安装依赖

uv sync

依赖安装完成后,准备工作结束。

2.下载数据

此处我们使用 gallery-dl 这个开源程序获取 X 的数据,包括媒体数据和推文数据。

确保你依然将工作目录设置在本仓库,因为 uv 已经安装了这个包,所以直接执行即可。

首先需要创建对于 X 下载的配置文件,由于程序默认不会保存推文和用户数据,所以需要先进行配置。

Windows 用户:%APPDATA%\gallery-dl\config.json

%APPDATA% 在哪?

按下 Win + R 键(Windows 徽标键 + R),打开“运行”窗口。

在弹出的窗口中输入 %APPDATA%,然后按下回车键。

文件资源管理器会自动打开 %APPDATA% 对应的文件夹。

Linux/Mac 用户:${HOME}/.config/gallery-dl/config.json

${HOME} 在哪?

打开终端。

在终端中输入 echo $HOME,然后回车。

终端会显示用户主目录路径。

根据你的系统创建配置文件后,复制如下内容。

{
  "extractor": {
    "twitter": {
      "text-tweets": true,
      "include": "timeline",
      "videos": true,
      "retweets": true,
      "quoted": true
    }
  },
  "downloader": {
    "http": {
      "rate": "1M"
    }
  },
  "output": {
    "mode": "terminal",
    "progress": true
  },
  "postprocessors": [
    {
      "name": "metadata",
      "mode": "json",
      "extension": "json",
      "directory": ["twitter-meta"],
      "indent": 4,
      "event": "post",
      "filename": "{tweet_id}.json"
    }
  ]
}

随后需要获取一个 X 账号的 Cookie,推荐使用扩展程序直接导出。

安装扩展后登录 X.com 打开扩展

选择 Netscape

随后在工作文件夹创建 cookie.txt ,粘贴剪切板中的 cookie🍪,就可以开始下载了。

比方说,下载指定用户的所有内容。

uv run gallery-dl https://x.com/用户名 --cookies 'cookie.txt路径' 
用户名可以从 Url 获取
程序会自动下载所有推文,当遇到速率限制时也会自动等待。

下载后的文件存储在 ./gallery-dl/twitter/用户名/ 文件夹

twitter-meta 保存的是推文的元数据(包括发送人信息、推文内容。。。

3.数据处理

通过此办法下载的内容如果数据量小还好,当推文数量庞大(这是能轻易做到的)时,数据的查找就变得极其困难。

随手抓取的一位用户

因此本仓库也准备了数据处理脚本,可以将 json 转存 sqlite3 数据库当中,方便之后的展示和数据分析。

第一步进入下载的数据文件夹,把所有的图片/视频剪切到一个名为 img 的子文件夹中。

数据结构如图

随后进入仓库,运行命令。

uv run twitter_data_processor.py 数据路径

程序会自动创建数据库并且下载此前没有下载的用户 banner 和 avatar 图片,也会将 img 文件夹的媒体关联到对应的推文中。而且在创建数据库完成后也支持增量备份,也就是说你可以将不同的用户的数据放置到同一个数据库。

最后你会得到形如图片中的目录结构

4.数据展示

还是本仓库,可以通过运行 main.py 脚本对数据库的内容进行展示。

uv run main.py 'twitter_data.db 路径'

随后访问 http://127.0.0.1:5000 即可图形化查看备份的推文。

包括纯文本推文:

媒体文件推文:

转发推文:

回复推文和 Youtube 视频:

以及涉及到的所有用户的主页信息:

并且这些内容已经全部存储到本地,再也不用担心删号跑路了~

感谢观看🙏

封面图片由Carola68 Die Welt ist bunt……Pixabay上发布


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注