#reddit #image #command-line-tool #cli

应用 reddsaver

从 Reddit 下载保存的媒体内容的 CLI 工具

8 个版本

0.4.0 2021年9月5日
0.3.3 2021年6月24日
0.3.2 2021年3月19日
0.3.1 2021年2月20日
0.2.3 2021年1月9日

#2659 in 命令行工具

28 个每月下载

MIT/Apache

65KB
1K SLoC

Reddsaver build Crates.io

  • 从 Reddit 下载保存/点赞的媒体内容的命令行工具
  • 支持
    • Reddit:PNG/JPG 图像、GIF、图片画廊、视频
    • Giphy:GIF
    • Imgur:直接图像和 GIFV
    • Gfycat/Redgifs:GIF
  • 来自 Imgur/Gfycat/Redgifs 的 GIF/GIFV 下载为 mp4
  • 不支持从 Imgur 帖子链接下载图像

安装

先决条件

要下载由 Reddit 托管的视频,您需要安装 ffmpeg。请遵循此 链接 以获取安装说明。

您可以从此处下载发布版二进制文件 这里

其他方法

使用 MacPorts

如果您是 macOS 上的 macports 用户,可以使用 port 安装 reddsaver

sudo port selfudpate
sudo port install reddsaver

使用 Homebrew

如果您是 macOS 上的 homebrew 用户,可以使用 brew tap 安装

brew tap manojkarthick/reddsaver
brew install reddsaver

Arch Linux

如果您是 ArchLinux 用户,则可以使用 yayparu 等工具从 AUR 安装它

yay -S reddsaver

使用 cargo

如果您已安装 Rust,您也可以使用 cargo 安装

cargo install reddsaver

使用 nix

如果您是 nix 用户,您可以从 nixpkgs 安装 reddsaver

nix-env --install reddsaver

或,如果您使用 home-manager 管理您的安装,请将其添加到您的 home.packages

home.packages = [
    pkgs.reddsaver
]; 

从源码构建和运行

请确保您的机器上已安装 rustc v1.50.0 和 cargo。

git clone https://github.com/manojkarthick/reddsaver.git
cargo build --release
./target/release/reddsaver

Docker 支持

预构建的Docker镜像可在Docker Hub上找到。

mkdir -pv data/
docker run --rm \
    --volume="$PWD/data:/app/data" \
    --volume="$PWD/reddsaver.env:/app/reddsaver.env" \
    manojkarthick/reddsaver:latest -d /app/data -e /app/reddsaver.env

运行

  1. https://www.reddit.com/prefs/apps创建一个新的脚本应用程序
    • 点击页面底部的“创建应用”
    • 为您的应用程序输入一个名称,例如:-reddsaver
    • 选择“脚本”作为应用程序类型
    • 设置重定向URL为"https://127.0.0.1:8080"或任何其他URL
    • 点击“创建应用” - 现在您应该看到已经创建了应用程序
    • 在您的应用程序名称下,您应该看到一个随机字符串 - 那就是您的客户端ID
    • 字段“密钥”旁边的随机字符串是您的客户端密钥
  2. 复制返回的客户端ID和客户端密钥信息
  3. 创建一个包含以下键的.env文件,例如reddsaver.env
CLIENT_ID="<client_id>"
CLIENT_SECRET="<client_secret>"
USERNAME="<username>"
PASSWORD="<password>"

注意:如果您启用了双因素认证,请确保您设置PASSWORD=<password>:<2FA_TOTP_token>代替

  1. 运行应用程序!

# Create a directory to save your images to
mkdir -pv reddsaver/

# Check if you installation is working properly
reddsaver --help

# Check if the right configuration has been picked up
# NOTE: In case the `USERNAME` variable is being overriden by
# your system username, please use 
# On Linux/Mac - unset USERNAME
# On Windows - set USERNAME=
# before running to temporarily remove the system username
# from your environment
reddsaver -e reddsaver.env -d reddsaver --show-config  

# Run the app to download the saved media
reddsaver -e reddsaver.env -d reddsaver

# Also allows you to download upvoted media
reddsaver -e reddsaver.env -d reddsaver --upvoted

注意:在第一次运行应用程序之外运行时,如果您使用目录作为初始运行,应用程序将跳过已下载的镜像的下载。

在此处查看其运行情况

asciicast

描述和命令行参数

可选地覆盖保存目录和读取env文件值的设置

ReddSaver 0.4.0
Manoj Karthick Selva Kumar
Simple CLI tool to download saved media from Reddit

USAGE:
    reddsaver [FLAGS] [OPTIONS]

FLAGS:
    -r, --dry-run           Dry run and print the URLs of saved media to download
    -h, --help              Prints help information
    -H, --human-readable    Use human readable names for files
    -s, --show-config       Show the current config being used
    -U, --undo              Unsave or remote upvote for post after processing
    -u, --upvoted           Download media from upvoted posts
    -V, --version           Prints version information

OPTIONS:
    -d, --data-dir <DATA_DIR>           Directory to save the media to [default: data]
    -e, --from-env <ENV_FILE>           Set a custom .env style file with secrets [default: .env]
    -S, --subreddits <SUBREDDITS>...    Download media from these subreddits only

一些需要注意的点

  • 默认情况下,reddsaver使用URL的MD5哈希值生成图像文件名。您可以使用--human-readable标志生成可读的名称。
  • 您可以使用--show-config标志检查ReddSaver使用的配置。

其他信息

为Raspberry Pi Zero W构建

为了为树莓派交叉编译,此项目使用rust-cross。请确保您在开发机器上安装了Docker。

  1. 构建rust-cross的Docker镜像:docker build -t rust-rpi-zerow:v1-openssl -f Dockerfile.raspberrypizerow .
  2. 请确保此处使用的镜像名称与您的Cross.toml配置中的镜像名称匹配
  3. 运行cross build --target arm-unknown-linux-gnueabi --release来构建项目
  4. 您可以在target/arm-unknown-linux-gnueabi/release/下找到编译后的二进制文件

依赖关系

~13–27MB
~426K SLoC