h/plugins/hackernews.py

34 lines
744 B
Python
Raw Normal View History

import re
import urlparse
from util import http, hook
base_api = 'https://hacker-news.firebaseio.com/v0/item/'
def get_by_id(id):
url = base_api + id + ".json?print=pretty"
try:
return http.get_json(url)
except ValueError:
return None
@hook.regex(r'(?i)https://(?:www\.)?news\.ycombinator\.com(?:/.+)?')
def hackernews(match):
parsed = urlparse.urlparse(match.group())
id = urlparse.parse_qs(parsed.query)['id'][0]
entry = get_by_id(id)
if not entry:
return
if entry['type'] == "story":
return "{title} by {by} with {score} points and {descendants} comments ({url})".format(**entry)
if entry['type'] == "comment":
return '"{text}" -- {by}'.format(**entry)