25次发布

0.9.3 2023年12月13日
0.9.2 2023年10月7日
0.9.1 2023年7月1日
0.7.1 2023年3月26日
0.1.0-alpha.12022年4月14日

#105 in Web编程

Download history 8/week @ 2024-05-27

每月106次下载

MIT 许可证

48KB
1K SLoC

shreddit

Crates.io

shreddit 是一个删除Reddit评论和帖子的工具。

停用Reddit账户不会删除评论或投稿 - 它只会将您的账户与它们解除关联。

Shreddit在删除之前将您的评论覆盖为随机文本,以确保原始内容(可能)不会保留。

如果您不想让您的帖子历史记录永远跟随您,您可以使用shreddit在cron作业中。

如果您正在停用您的账户,您可以先运行shreddit以确保您的帖子被删除。

关于

由于原始Shreddit项目于2017年被放弃,我决定用Rust重新编写它。

这带来了几个好处

  • 您不需要安装Python或其他任何东西。
  • 您不需要有shreddit.ymlpraw.ini配置文件,所有配置都可以通过CLI命令进行,环境变量作为默认后备。

安装

手动

GitHub发布页面下载二进制文件。

Cargo

cargo安装 shreddit

如何使用

创建Reddit应用程序凭据

  1. 转到Reddit -> 偏好设置 -> 应用程序(选项卡)并点击创建另一个应用程序...
  2. 给应用程序起一个名字,比如'shreddit'。名字不重要。
  3. 选择script
  4. 将重定向URL设置为https://127.0.0.1:8080
  5. 点击创建应用程序

这将提供客户端ID和客户端密钥。Shreddit使用的CLIENT_ID值显示在您创建的应用程序名称下。在点击编辑后显示CLIENT_SECRET

重要:如果您正在使用TOTP,您需要通过PASSWORD设置将其传递,例如PASSWORD:TOTP。目前这样做有些不便,因为您需要在令牌过期之前完成,所以我们将来可以添加一个CLI提示以使其更容易。同时,您可以使用--password CLI参数,输入--password your-password:然后在后面粘贴TOTP并按回车。

Overwrite and delete your Reddit account history.

Usage: shreddit [OPTIONS] --username <USERNAME> --password <PASSWORD> --client-id <CLIENT_ID> --client-secret <CLIENT_SECRET>

Options:
  -u, --username <USERNAME>
          Your Reddit username [env: SHREDDIT_USERNAME=]
  -p, --password <PASSWORD>
          Your Reddit password [env: SHREDDIT_PASSWORD=]
      --client-id <CLIENT_ID>
          To create client credentials, you need to navigate to `https://www.reddit.com/prefs/apps/`, click `create another app...` and fill out the form. Select the `script` type, and set `redirect uri` as `https://127.0.0.1:8080` [env: SHREDDIT_CLIENT_ID=]
      --client-secret <CLIENT_SECRET>
          The client secret from when you created client credentials [env: SHREDDIT_CLIENT_SECRET=]
      --dry-run
          If set, shreddit will not modify or delete anything. It will simply log what it would do if not in dry run mode. This allows you to preview the plan of action before executing [env: SHREDDIT_DRY_RUN=]
      --thing-types <THING_TYPES>
          What "things" you want to delete [env: SHREDDIT_THING_TYPES=] [default: posts comments] [possible values: posts, comments, friends, saved-posts, saved-comments]
      --before <BEFORE>
          [env: SHREDDIT_BEFORE=] [default: "2023-06-25 14:42:43.828192320 UTC"]
      --max-score <MAX_SCORE>
          [env: SHREDDIT_MAX_SCORE=]
  -r, --replacement-comment <REPLACEMENT_COMMENT>
          Allows a user to specify a custom string as their comment replacement text [env: SHREDDIT_REPLACEMENT_COMMENT=] [default: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."]
      --user-agent <USER_AGENT>
          The User-Agent for Reddit API requests [env: SHREDDIT_USER_AGENT=] [default: ShredditRustClient]
      --gdpr-export-dir <GDPR_EXPORT_DIR>
          The path of the directory of the unzipped GDPR export data. If set, `shreddit` will use the GDPR export folder instead of Reddit's APIs for discovering your data [env: SHREDDIT_GDPR_EXPORT_DIR=]
      --edit-only
          If specified, comments will only be edited, not deleted. - Requires gdpr_export [env: SHREDDIT_EDIT_ONLY=]
  -h, --help
          Print help
  -V, --version
          Print version

您可以选择通过CLI参数传递配置设置

shreddit --username YouRedditUsername --password YourSuperSecretPassword123  --client-id k1jh2342k3j --client-secret 2345JHLJ_34kjhkj3h453453

或者通过设置环境变量(例如SHREDDIT_CLIENT_SECRET)并简单地运行shreddit

启动时,shreddit将在当前目录中查找shreddit.env文件,并设置其中声明的任何变量。然而,这完全是可选的。

干运行

您可以使用--dry-runSHREDDIT_DRY_RUN=true来查看它会在不实际执行任何操作的情况下做什么。

使用GDPR导出删除所有数据

  1. 通过以下步骤请求您所有数据的存档。
  2. 下载存档并解压。
  3. 使用shreddit运行并设置--gdpr-export-dir标志为提取到的目录路径。

其他功能

这些是Python Shreddit具有的其他功能

我会逐渐添加这些功能。欢迎PR!

  • 干运行 - 预览给定配置会发生什么。
  • 保留给定日期时间之后发表的评论。
  • 最高分数 - 保留分数高于此的评论。
  • 评论排序
  • 清除投票 - 删除前移除您的投票。
  • 项目 - 配置要删除的项目类型(提交、评论等)
  • 子版块白名单 - 给定子版块中的任何内容都不会被删除。
  • 白名单ID - 通过列出它们的ID来保留特定的帖子。
  • 保留显赫 - 不删除显赫的评论。
  • 保留金标 - 不删除金标的评论。

欢迎其他功能想法。

依赖项

~12–26MB
~381K SLoC