Skip to content

A Python tool for backing up your submissions, comments, saved and upvoted posts on reddit to your computer.

Notifications You must be signed in to change notification settings

ritiek/reddit-save

This branch is 3 commits ahead of, 6 commits behind samirelanduk/reddit-save:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

529f3c3 · Jul 2, 2023

History

42 Commits
Jul 24, 2022
Jun 14, 2023
Jul 10, 2022
Jan 27, 2021
Jul 2, 2023
Jan 27, 2021
Jul 10, 2022
Feb 17, 2023
Jun 15, 2023
Jun 15, 2023

Repository files navigation

reddit-save

A Python utility for backing up your reddit upvoted/saved stuff.

Browsing through the stuff you've liked or saved on reddit is really enjoyable and, depending on the reason you saved something, can be a great way to recap stuff you once thought important. It is a personalised feed of posts and comments by the one person guaranteed to know what you like - past you.

However over time more and more of the older posts will be deleted or missing, and the historical record atrophies. Use this tool to back up those posts and comments to your computer where you can browse them offline, and where they are safe forever.

reddit-save will backup saved posts, saved comments, and upvoted posts. It can't do upvoted comments because the reddit API doesn't expose them. Crucially, when it is run again on the same location it will ignore any posts/comments previously archived - once something is saved, it's saved permanently.

Installation

$ git clone https://github.com/ritiek/reddit-save .
$ cd reddit-save
$ pip install -r requirements.txt

If you get permission errors, try using sudo or using a virtual environment.

You will need ffmpeg installed somewhere too.

Rename the file logindata.py.example to logindata.py. You will need to add four things to this file, your reddit username and password, and a reddit client ID and secret. The latter two are obtained using the instructions here. The file should look something like this:

REDDIT_USERNAME = "spez"
REDDIT_PASSWORD = "myredditpassword123"
REDDIT_CLIENT_ID = "sadsU7-zfX"
REDDIT_SECRET = "687DDJSS&999d-hdkjK8h"

Use

Create a folder that will contain your archive. Then run:

$ ./save.py saved folder_name
$ ./save.py upvoted folder_name
$ ./save.py my_posts folder_name

# This may have fetch posts that are privatized.
$ ./save.py posts_containing_my_comments folder_name
$ cat private_posts_containing_my_comments.txt
# Retry privatized posts in case they're made public now.
$ ./save.py private_posts_containing_my_comments folder_name

The first command will backup your saved posts/comments to a file called folder_name/saved.html. The second will backup your upvoted posts to a file called folder_name/upvoted.html.

Each post will have its top-level comments saved, as well as each of their immediate child comments (but no further).

Linked media files (images, videos etc.) will be saved locally where possible, though imgur is currently not well supported in all cases.

Use with Docker

Rather than installing dependencies locally, you can use docker to create a local image and use that instead. First build the image:

$ docker build -t redditsave .

Then run reddit-save within a container created from this image:

$ docker run \
-e REDDIT_USERNAME=spez \
-e REDDIT_PASSWORD="myredditpassword123" \
-e REDDIT_CLIENT_ID="sadsU7-zfX" \
-e REDDIT_SECRET="687DDJSS&999d-hdkjK8h" \
-v /Local/location/to/save/in:/opt/app/archive \
redditsave saved

About

A Python tool for backing up your submissions, comments, saved and upvoted posts on reddit to your computer.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 67.6%
  • CSS 12.8%
  • HTML 11.0%
  • JavaScript 5.5%
  • Dockerfile 3.1%