Coder Social home page Coder Social logo

prawwallpaperdownloader's Introduction

PrawPapers (Praw Wallpaper Downloader)

Download a bunch of wallpapers from the hot sections of r/wallpapers

It doesn't even have to be wallpapers! PrawPapers will download images from any subreddit

Going into a little more detail the script will:

  1. Query Reddit for an amount of posts (25 by default)
  2. Sift through the reddit posts finding direct image links and imgur posts/albums
  3. Extract all image links from any imgur albums found and add them to the link pool
  4. Check whether any of the links has been downloaded before, sorting out those who has
  5. Download all the now sorted links
  6. Go through all downloaded images deleting images smaller than the minimum size, and those with a different aspect ratio

The configuration mode lets you tweak almost all settings to your desire, including but not limited to:

  • Default subreddit
  • Minimum image dimensions
  • Amound of posts to sift through
  • And more

Inspirations is drawn from Daily-Reddit-Wallpaper

Features

  • Sort by size
  • Sort by aspect ratio
  • Multi threaded download for fast downloading
  • Database functionality ensuring no redownloads and allows you to keep track of images downloaded
  • Scrape by section
  • Scrape by subreddit search
  • Imgur album support (up to 10 images pr. album, will hopefully be improved)
  • Customize behaviour to your liking through an easy to use configurator
  • Logging functionality

Install process

  1. Download and install python from https://www.python.org/ (If you're unsure download version 3.5 and chose default install)
  2. Clone or download/extract the repository
  3. Install requirements with
py -m pip install -r requirements.txt

(You might have to use python or python3 instead of py depending on your system/install) 4. Set up your client_secret.json file

Setting up your client_secret.json file

The new version of praw requires you to identify the script before you can use it, this is fortunately quite easy, just follow the steps below.

  1. Go to this page on reddit (you might have to log in)
  2. Scroll down to the bottom and click the "Create another app" button
  3. Tick off 'script' and fill out the remaining boxes
  4. You'll now be able to see your app in the list
  5. Open your client_secret.json file in your favourite text editor
  6. Replace YOUR-CLIENT-ID with the weird line of characters under the "personal use script" label, keep the quotations (See screenshot)
  7. Repeat step 6 for the YOUR-CLIENT-SECRET field, this time using the characters next to the "secret" label (See screenshot)

Client secret guide

Requirements

  • praw
  • requests
  • bs4
  • pillow

Usage

The script can be run by double clicking prawpapers.py or via the commandline with the latter being the best option since the script accepts a variety of optional arguments

Examples

Basic use: search through the first 25 posts of /r/wallpapers

py prawpapers

"Advanced" use: Search the first 100 posts of /r/MinimalWallpaper and save a log

py prawpapers -s MinimalWallpaper -l 100 --log

Optional arguments

  • -con or --config enter configuration mode
  • --subreddit <subreddit> or -s <subreddit> specify which subreddit to download images from, omit the /r/ (default is wallpapers)
  • --limit <number> or -l <number> specify how many posts to search as a whole number (default is 25)
  • --threads <number> or -t <number> specify how many download threads to spawn
  • --re or -r will try to re download every post previously downloaded
  • --nc or --noclean don't delete small images
  • --ns or --nosort skip sorting out previosuly downloaded images
  • --na or --noalbum skip imgur albums
  • --log save a log of posts skipped
  • --verbose or -v print skipped posts to console
  • --section or -se <section> Specify which section you want to scrape (hot, new, top, rising)
  • --ratiolock or -rlock <lock strength> Lock downloaded images to a certain aspect ratio, the value of the lock will determine the allowed margin of error, 0 for no lock, 1 for fully locked (only exactly matching aspect ratios), I recommend a value between 0.9 and 1 for decent results.
  • --search or -q <query> scrape all search results of chosen subreddit

prawwallpaperdownloader's People

Contributors

nikolajlauridsen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.