ControlC ControlC.com

Reddit API Tutorial Part 2: Getting all the submissions...

Views: 1,877Total Chars: 1,984
Created: 8/28/12 1:07:24AM ET
Self Destructs: Never
import json
import requests
from pprint import pprint as pp2

#import os
#print os.getcwd()

#----------------------------------------------------------------------
def login(username, password):
"""logs into reddit, saves cookie"""

print 'begin log in'
#username and password
UP = {'user': username, 'passwd': password, 'api_type': 'json',}
headers = {'user-agent': '/u/TankorSmash's API python bot', }
#POST with user/pwd
client = requests.session()

r = client.post('http://www.reddit.com/api/login', data=UP)

#print r.text
#print r.cookies

#gets and saves the modhash
j = json.loads(r.text)

client.modhash = j['json']['data']['modhash']
print '{USER}'s modhash is: {mh}'.format(USER=username, mh=client.modhash)
client.user = username
def name():

return '{}'s client'.format(username)

#pp2(j)

return client

#----------------------------------------------------------------------
def subredditInfo(client, limit=25, sr='tankorsmash',
sorting='', return_json=False, **kwargs):
"""retrieves X (max 100) amount of stories in a subreddit

'sorting' is whether or not the sorting of the reddit should be customized or not,
if it is: Allowed passing params/queries such as t=hour, week, month, year or all"""

#query to send
parameters = {'limit': limit,}
#parameters= defaults.copy()
parameters.update(kwargs)

url = r'http://www.reddit.com/r/{sr}/{top}.json'.format(sr=sr, top=sorting)
r = client.get(url,params=parameters)
print 'sent URL is', r.url
j = json.loads(r.text)

#return raw json
if return_json:
return j

#or list of stories
else:
stories = []
for story in j['data']['children']:
#print story['data']['title']
stories.append(story)

return stories

client = login('USERNAME', 'PASSWORD')

j = subredditInfo(client, limit=1)

pp2(j)
1,984 chars, 193 words, 73 lines·Create new version