34 lines
744 B
Python
34 lines
744 B
Python
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)
|
|
|