Bulk image downloader for reddit.

rrip

Program to bulk-download image from reddit subreddits.

Features

  • Set max size of file, max total size, minimum score etc..

  • Filter by post title or link using regular expression.

  • If the image / GIF is already downloaded in same folder, skip it.

  • Log final download URLs to a file using a custom format string.

  • Download images from Reddit preview links instead of source. (Experimental)

  • Scrape images from links that don't end with media extensions. (Experimental)

(Note: I have not tested all combinations of features, you might encounter some bugs!)

Build

Assuming you have Go toolchain installed

go install github.com/mahesh-hegde/rrip@latest

or

git clone --depth=1 https://github.com/mahesh-hegde/rrip.git
cd rrip
go build && go install

or

Download from Release section and unpack the binary executable somewhere in your PATH

Note about windows

I wrote this on Linux. May not work well on Windows. A best-effort default option is enabled to sanitize filenames so that they can be saved on Windows / Android. But don't blame me if you face some quirks of Windows OS.

Usage

Usage: rrip <options> <r/subreddit>
  -after string
        Get posts after the given ID
  -allow-special-chars
        Allow all characters in filenames except / and \, And windows-special filenames like NUL
  -d    DryRun i.e just print urls and names (devel)
  -download-preview
        download reddit preview image instead of posted URL
  -entries-limit int
        Number of entries to fetch in one API request (devel) (default 100)
  -flair-contains string
        Download if flair contains substring matching given regex
  -flair-not-contains string
        Download if flair does not contain substring matching given regex
  -folder string
        Target folder name
  -help
        Show this help message
  -link-contains string
        Download if posted link contains substring matching given regex
  -link-not-contains string
        Download if posted link does not contain substring matching given regex
  -log-links string
        Log media links to given file
  -log-links-format string
        Format of links logged. allowed placeholders: {{final_url}}, {{posted_url}}, {{id}}, {{author}}, {{title}}, {{score}} (default "{{final_url}}")
  -max-files int
        Max number of files to download (+ve), -1 for no limit (default -1)
  -max-size int
        Max size of media file in KB, -1 for no limit (default -1)
  -max-storage int
        Data usage limit in MB, -1 for no limit (default -1)
  -min-score int
        Minimum score of the post to download
  -og-type string
        Look Up for a media link in page's og:property if link itself is not image/video (experimental). supported values: video, image, any
  -preview-res int
        Width of preview to download, eg: 640, 960, 1080 (default -1)
  -search string
        Search for given term
  -sort string
        Sort: best|hot|new|rising|top-<all|year|month|week|day>
  -title-contains string
        Download if title contains substring matching given regex
  -title-not-contains string
        Download if title does not contain substring matching given regex
  -useragent string
        UserAgent string (default "rrip / Go CLI Tool")
  -v    Enable verbose output (devel)

tl;dr

## Download only <200KB files from r/Wallpaper
rrip -max-size=200 r/Wallpaper

## Download all time top from r/WildLifePhotography, without exceeding 20MB storage or 50 files
rrip -max-storage=20 -max-files=50 -sort=top-all r/WildlifePhotography

## Search "Neon" on r/AMOLEDBackgrounds and download top 20, sorted by top voted in past one year
rrip -search="Neon" -max-files=20 -sort=top-year r/AMOLEDBackgrounds

## Download memes from r/LogicGateMemes, download reddit previews (640p)
## instead of original image, for space savings.
## Also log all image links to file called meme.txt along with title

## Note that -preview-res cannot be arbitrary
## Ones that generally work are 1080, 960, 640, 360, 216, 108
## If no suitable preview is found, image won't be downloaded

## use -prefer-preview instead of -download-preview 
## to download original URL if no preview could be found

rrip -download-preview -preview-res=640 -log-links=meme.txt -log-links-format="{{final_url}} {{title}}" r/LogicGateMemes

## Log all image links from r/ImaginaryLandscape
## without downloading files, using -d (dry run) option.
## (Reddit shows last 600 or so.., not really "all")
rrip -d -log-links=imaginary_landscapes.txt -log-links-format="{{score}} {{final_url}} {{quoted_title}} {{author}}" r/ImaginaryLandscapes

Caveats

  • Can't handle crossposts etc.. when downloading preview image.
  • No support for downloading albums.
  • Terminal size detection works only on linux
  • Some options don't work together
  • Many other caveats I don't remember.
Owner
Mahesh Hegde
CSE undergrad at RVCE, Bangalore.
Mahesh Hegde
Similar Resources

A beatmap downloader for chimu.moe(bloodcat)

chimu_client How to build export GOROOT_FINAL=/tmp export GOOS=windows export GOARCH=amd64 go build -trimpath -ldflags "-s -w" -o chimu_client.exe #

Aug 1, 2022

Command-line file downloader tool

Command-line file downloader tool

Command-line file downloader tool

Nov 9, 2022

A CLI based Downloader utilising Golang's concurrency feature.

Downloader CLI based downloader utilising the concurrency feature of Golang. Takes the download URL of the file from the user. Splits the files into s

Nov 6, 2021

📩 Command line osu! beatmap downloader

Circleload 📩 Command line osu! beatmap downloader Circleload is a command line tool to easily download osu! beatmaps. Install go install github.com/T

Nov 29, 2022

Malshare-downloader

malshare-downloader malshare-downloader 简体中文|English 用法 下载 hash 文件 $ ./spider -start=start_unix_milli_timestamp [-end=end_unix_milli_timestamp] [-

Dec 12, 2021

VIP video downloader, such as: iqiyi, youku, qq, ...etc.

vip-video-downloader VIP Video Downloader, such as: iqiyi, youku, qq, ...etc. usage Download vip-video-downloader download URL [flags] Merge vip-video

Dec 22, 2022

A downloader written by Golang

Download file in Golang Featues: support HTTP and HTTPS you can set the number of parallel to download download batches of files concurrently resume i

Sep 24, 2022

Downloader written in golang to download the public data files from RUC Paraguay.

rucpy-downloader Downloader written in golang to download the public data files(RUC Paraguay) from set.gov.py. The downloader will download the public

Dec 6, 2021

Dj13SDDownloader - command line downloader sequence diagram

dj13SDDownloader command line downloader sequence diagram from https://sequence.davidje13.com/ Download Download Link curl https://github.com/xh-dev-g

Jan 2, 2022
M3u8-parallel-downloader - M3u8 parallel downloader with golang

m3u8-parallel-downloader Usage ./m3u8-parallel-downloader -input http://example.

Aug 12, 2022
gomerge is a tool to quickly bulk merge several pull requests from your terminal.
gomerge is a tool to quickly bulk merge several pull requests from your terminal.

Gomerge is a tool to quickly enable you to bulk merge Github pull requests from your terminal. The intention of this tool is to simplfy, and eventually automate the merging of github pull requests. This tool should be able to run on most systems.

Dec 28, 2022
🙌 Bulk-upload GitHub Issues
🙌 Bulk-upload GitHub Issues

?? Bulk-upload GitHub Issues

Jul 23, 2021
Go library for accessing the Reddit API.
Go library for accessing the Reddit API.

Overview Featured in issues 327 and 347 of Golang Weekly ?? go-reddit is a Go client library for accessing the Reddit API. You can view Reddit's offic

Jan 7, 2023
An easy to use go program to download videos from Reddit

Gedditsave Download videos from reddit from the command line. Use guide geddit -

Oct 17, 2022
An easy to use go program to download videos from Reddit.
An easy to use go program to download videos from Reddit.

Gettit Download videos from reddit from the command line. Use guide gettit -u post_url Example : gettit -u https://www.reddit.com/r/programminghorror/

Dec 30, 2022
A parallel downloader with resume capability
A parallel downloader with resume capability

Grozilla The Grozilla is a simple implementation that allows downloading of video,audio,package or zip files parallely and efficiently using light wei

May 5, 2022
Napster downloader written in Go.
Napster downloader written in Go.

Napster-Downloader Napster downloader written in Go. Windows binaries Setup Account not needed. Configure config file if needed. Option Info format Do

Nov 22, 2022
m3u8 downloader by Golang(M3U8 视频下载工具,支持M1, OpenWrt等)
m3u8 downloader by Golang(M3U8 视频下载工具,支持M1, OpenWrt等)

m3u8-downloader README | 简体中文 m3u8 downloader by Golang feature Support CDN download, break the speed limit Support custom key, the format of the key

Dec 27, 2022