Skip to content

Instantly share code, notes, and snippets.

@voloshink
Created May 26, 2020 03:14
Show Gist options
  • Select an option

  • Save voloshink/7f80a8f16cbece37fcbe39cf425272d5 to your computer and use it in GitHub Desktop.

Select an option

Save voloshink/7f80a8f16cbece37fcbe39cf425272d5 to your computer and use it in GitHub Desktop.
import datetime
import requests
import csv
import time
base_url = "https://api.pushshift.io/reddit/search/submission/?subreddit={subreddit}&sort=asc&sort_type=created_utc&after={after}&size=1000&before={before}"
now = datetime.datetime.now()
now_stamp = datetime.datetime.strftime(now, "%s")
# UTC 2018/01/01 0:0:0
starting_stamp = 1514764800
posts_file = open('posts.csv', mode="w+")
post_csv_writer = csv.writer(posts_file, delimiter=',',
quotechar='"', quoting=csv.QUOTE_MINIMAL)
post_csv_writer.writerow(
['flair', 'date', 'id', 'comments', 'over_18', 'score', 'upvote_ratio'])
def get_posts(before, after=None):
url = base_url.replace(
"{subreddit}", "livestreamfail").replace("{before}", before)
new_after = 0
if after:
url = url.replace("{after}", after)
new_after = int(after)
else:
url = url.replace("{after}", str(starting_stamp))
new_after = starting_stamp
r = requests.get(url)
json = r.json()['data']
for post in json:
if post['created_utc'] > new_after:
new_after = post['created_utc']
if "link_flair_text" in post:
write_list = []
write_list.append(post['link_flair_text'])
utc_date = datetime.datetime.fromtimestamp(post['created_utc'])
write_list.append(utc_date.isoformat())
write_list.append(post['id'])
write_list.append(post['num_comments'])
write_list.append(post['over_18'])
write_list.append(post['score'])
if 'upvote_ratio' in post:
write_list.append(post['upvote_ratio'])
else:
write_list.append(-1)
post_csv_writer.writerow(write_list)
print(datetime.datetime.fromtimestamp(new_after).isoformat())
if len(json) == 1000:
time.sleep(4)
get_posts(before, str(new_after))
get_posts(now_stamp)
posts_file.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment