phenny/modules/randomreddit.py

56 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""
randomreddit.py - return a random reddit url from a subreddit's frontpage
author: andreim <andreim@andreim.net>
"""
import web
import re
import json
from tools import GrumbleError
from random import choice
def randomreddit(phenny, input):
subreddit = input.group(2)
if not subreddit:
phenny.say(".random <subreddit> - get a random link from the subreddit's frontpage")
return
if not re.match('^[A-Za-z0-9_-]*$',subreddit):
phenny.say(input.nick + ": bad subreddit format.")
return
url = "http://www.reddit.com/r/" + subreddit + "/.json"
try:
resp = web.get(url)
except:
try:
resp = web.get(url)
except:
try:
resp = web.get(url)
except:
raise GrumbleError('Reddit or subreddit unreachable.')
try:
reddit = json.loads(resp)
post = choice(reddit['data']['children'])
except:
raise GrumbleError('Error parsing response from Reddit.')
nsfw = False
if post['data']['over_18']:
nsfw = True
if nsfw:
phenny.reply("!!NSFW!! " + post['data']['url'] + " (" + post['data']['title'] + ") !!NSFW!!")
else:
phenny.reply(post['data']['url'] + " (" + post['data']['title'] + ")")
randomreddit.commands = ['random']
randomreddit.priority = 'medium'
randomreddit.thread = False