Skip to content

Instantly share code, notes, and snippets.

@NickHurst
Last active November 5, 2015 20:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NickHurst/5e0b8b96c506b8a68a0f to your computer and use it in GitHub Desktop.
Save NickHurst/5e0b8b96c506b8a68a0f to your computer and use it in GitHub Desktop.
import time
import praw
import sqlite3
from datetime import datetime
def archive_posts(u, sql, c):
submissions = u.get_submitted(sort='new', time='all', limit=None)
print('Archiving submissions...')
for subm in submissions:
timestamp = datetime.fromtimestamp(subm.created_utc).strftime('%Y-%m-%d %H:%M:%S')
c.execute('''INSERT INTO posts(title, subreddit, karma, num_comments,
gilds, link, linked_url, created)
VALUES(?,?,?,?,?,?,?,?)''',
[subm.title, str(subm.subreddit), subm.score, subm.num_comments,
subm.gilded, subm.permalink, subm.url, timestamp])
sql.commit()
def archive_comments(u, sql, c):
comments = u.get_comments(sort='new', time='all', limit=None)
print('Archiving comments...')
for cmt in comments:
timestamp = datetime.fromtimestamp(cmt.created_utc).strftime('%Y-%m-%d %H:%M:%S')
c.execute('''INSERT INTO comments(body, subreddit, karma, gilds, link, created)
VALUES(?,?,?,?,?,?)''',
[str(cmt), str(cmt.subreddit), cmt.score, cmt.gilded, cmt.permalink, timestamp])
sql.commit()
def main():
r = praw.Reddit(user_agent='Post_Archival v1.0 /u/cutety')
uname = input('Enter username: ')
u = r.get_redditor(uname)
sql = sqlite3.connect('{}_archive.db'.format(uname))
c = sql.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS posts
(id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
subreddit TEXT,
karma INTEGER,
num_comments INTEGER,
gilds INTEGER,
link TEXT,
linked_url TEXT,
created TEXT)''')
c.execute('''CREATE TABLE IF NOT EXISTS comments
(id INTEGER PRIMARY KEY AUTOINCREMENT,
body TEXT,
subreddit TEXT,
karma INTEGER,
gilds INTEGER,
link TEXT,
created TEXT)''')
sql.commit()
print('Database loaded...')
archive_posts(u, sql, c)
archive_comments(u, sql, c)
print('Done!')
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment