1
0
Fork 0
mirror of https://github.com/Findus23/HNReader.git synced 2024-09-19 15:23:44 +02:00
HNReader/server.py

44 lines
1 KiB
Python
Raw Normal View History

2021-04-08 22:29:27 +02:00
import requests
from flask import Flask, jsonify, make_response
from redis import Redis
from config import user_agent
from hnapi import HNClient
from reader import Reader
app = Flask(__name__)
r = Redis()
s = requests.session()
s.headers.update({'User-Agent': user_agent})
api = HNClient(s, r)
@app.route("/api/topstories")
def topstories():
return jsonify(api.get_stories("topstories"))
@app.route("/api/item/<int:item_id>")
def item(item_id):
return jsonify(api.get_full_item(item_id))
@app.route("/api/read/<int:item_id>")
def read(item_id):
item = api.get_item(item_id)
if "url" not in item:
return "Url not found", 404
key = f"hnclient_read_{item_id}"
cache = r.get(key)
if cache:
response = make_response(cache)
else:
readable = Reader(item["url"], s, r)
output = readable.readable_html()
r.set(key, output, ex=60 * 60 * 24)
response = make_response(output)
response.headers["Content-Type"] = "application/json"
return response