Skip to content
Save content you enjoy!
Python JavaScript CSS HTML Shell
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images Merge branch 'master' of https://github.com/makuto/redditLikedSavedIm… Mar 4, 2019
templates Templatized login, add support for next redirect Sep 15, 2019
webInterface Added primitive infinite scroll to random image browser Jun 28, 2019
webInterfaceNoAuth Added Login/Authentication to web interface/server Mar 22, 2019
.gitignore Added missing PasswordManager; more authentication Mar 22, 2019
CreateDatabase.py LikedSavedDatabase now working, but not useful Nov 17, 2018
Generate_Certificates.sh Added Gfycat API support, changed certificates May 30, 2019
LICENSE.txt Initial commit Sep 13, 2015
LikedSavedDatabase.py Made json import use settings to find output directory Jun 27, 2019
LikedSavedDownloaderServer.py Templatized login, add support for next redirect Sep 15, 2019
PasswordManager.py Added missing PasswordManager; more authentication Mar 22, 2019
ReadMe.org Rename readme Aug 1, 2019
crcUtils.py At last added full Python 3 support; 2 still works as well Jul 3, 2018
imageSaver.py Integrated LikedSavedDatabase Jun 1, 2019
logger.py Web interface now fully functional! Jul 21, 2018
redditLikedSavedImageDownloader.sublime-project Python 3 support Oct 25, 2017
redditScraper.py LikedSavedDatabase now working, but not useful Nov 17, 2018
redditUserImageScraper.py Integrated LikedSavedDatabase Jun 1, 2019
settings.py Integrated LikedSavedDatabase Jun 1, 2019
settings.txt Added Gfycat API support, changed certificates May 30, 2019
submission.py Added AllSubmissions.json database importer Jun 27, 2019
tumblrScraper.py Web interface now fully functional! Jul 21, 2018
utilities.py Integrated LikedSavedDatabase Jun 1, 2019

ReadMe.org

Liked-Saved Image Downloader

Use this awesome Python 2 or 3 script to download

  • Images
  • Gifs
  • Imgur Albums
  • Comments

…which you’ve marked as Liked, Hearted, or Saved from

  • Reddit
  • Tumblr

…to disk!

Directions

1. Clone this repository

git clone https://github.com/makuto/redditLikedSavedImageDownloader

2. Install python dependencies

The following dependencies are required:

pip install praw pytumblr ImgurPython jsonpickle tornado git+https://github.com/ankeshanand/py-gfycat@master

You’ll want to use Python 3, which for your environment may require you to specify pip3 instead of just pip.

Login-Protected Server

If you want to require the user to login before they can interact with the server, you must install passlib:

pip install passlib bcrypt argon2_cffi

3. Generate SSL keys

cd redditLikedSavedImageDownloader/
./Generate_Certificates.sh

This step is only required if you want to use SSL, which ensures you have an encrypted connection to the server. You can disable this by opening LikedSavedDownloaderServer.py and setting useSSL = False.

4. Run the server

python3 LikedSavedDownloaderServer.py

5. Enter your account details and download the images

  1. Open localhost:8888 in any web browser

If your web browser complains about the certificate, you may have to click Advanced and add the certificate as trustworthy, because you’ve signed the certificate and trust yourself :). If you want to get rid of this, you’ll need to get a signing authority like LetsEncrypt to generate your certificate.

  1. Use the Web Server Interface to configure the script:

images/LikedSavedSettings.png

  1. Go to the Run Script page and click “Run Script”
  2. Wait until the script finishes (it will say “Finished” at the bottom of the page)
  3. Enjoy! Use Random Image Browser to jump to random images you’ve downloaded, or browse your output directory

Web Server Features

This repository includes a simple web server interface. Unlike the main script, the server is supported in Python 3 only.

The interface can be seen by visiting https://localhost:8888 in any web browser.

The web server is not secure in any way and should NOT be run on an insecure network!

images/LikedSavedBrowser.png

Login-Authenticated Server

The script includes an option to require login before running the script, changing settings, or browsing downloaded content.

I’m no expert, so use and trust at your own risk! This security is essentially a cheap padlock which keeps honest people honest and undetermined intruders out.

It requires some additional setup:

1. Enable it in LikedSavedDownloaderServer.py

Open LikedSavedDownloaderServer.py and find enable_authentication. Set it equal to True.

2. Create your account(s)

Rather than have a web-based registration process, you’ll create each account manually. This is because this service is only designed for private use.

You’ll use PasswordManager.py to generate a file passwords.txt with your hashed (and salted) passwords:

python3 PasswordManager.py "Your Password Here"

You can create multiple valid passwords, if desired.

If you want to reset all passwords, simply delete passwords.txt.

3. Restart your server

You should now see a Login page before being able to access any content.

Note that all login cookies will be invalidated each time you restart the server.

Running the script only

  1. Open settings.txt
  2. Fill in your username and password
  3. Set SHOULD_SOFT_RETRIEVE to False if you are sure you want to do this
  4. Run the script: python redditUserImageScraper.py
  5. Wait for a while
  6. Check your output directory (the default is output relative to where you ran the script) for all your images!

If you want more images, set Reddit_Total_Requests and/or Tumblr_Total_Requests to a higher value. The maximum is 1000. Unfortunately, reddit does not allow you to get more than 1000 submissions of a single type (1000 liked, 1000 saved).

Not actually getting images downloaded, but seeing the console say it downloaded images? Make sure SHOULD_SOFT_RETRIEVE=False in settings.txt

settings.txt has several additional features. Read the comments to know how to use them.

Issues

Feel free to create Issues on this repo if you need help. I’m friendly so don’t be shy.

When Updating

If there were changes to settings.txt pushed, your server will start reading settings from there instead of your LOCAL_settings_from_server.txt. This is because the server always reads the settings file with the newest timestamp.

You can fix this by running touch LOCAL_settings_from_server.txt or opening your desired settings file and saving it in a text editor.

You can’t perform that action at this time.