Liked-Saved Image Downloader
Use this awesome Python 2 or 3 script to download
- Imgur Albums
…which you’ve marked as Liked, Hearted, or Saved from
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
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
5. Enter your account details and download the images
- 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.
- Use the Web Server Interface to configure the script:
- Go to the Run Script page and click “Run Script”
- Wait until the script finishes (it will say “Finished” at the bottom of the page)
- 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!
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 and find
enable_authentication. Set it equal to
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.
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
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
- Fill in your username and password
Falseif you are sure you want to do this
- Run the script:
- Wait for a while
- Check your output directory (the default is
outputrelative to where you ran the script) for all your images!
If you want more images, set
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
settings.txt has several additional features. Read the comments to know how to use them.
Feel free to create Issues on this repo if you need help. I’m friendly so don’t be shy.
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.