|
1 |
| -import collections |
2 | 1 | import json
|
3 |
| -import sys |
4 | 2 | import traceback
|
| 3 | +from collections import OrderedDict |
| 4 | +from optparse import OptionParser |
5 | 5 |
|
6 | 6 | import mf2py
|
7 | 7 | import mf2util
|
8 |
| -from flask import Flask, render_template, jsonify, request, make_response |
| 8 | +from flask import Flask, jsonify, make_response, render_template, request |
| 9 | + |
| 10 | +parser = OptionParser() |
| 11 | + |
| 12 | +parser.add_option( |
| 13 | + "-d", |
| 14 | + "--debug", |
| 15 | + action="store_true", |
| 16 | + default=False, |
| 17 | + help="Run application in debug mode", |
| 18 | +) |
| 19 | + |
| 20 | +(options, args) = parser.parse_args() |
9 | 21 |
|
10 | 22 | app = Flask(__name__)
|
11 | 23 |
|
12 | 24 | mf2py.Parser.user_agent = "python.microformats.io (mf2py/" + mf2py.__version__ + ") Mozilla/5.0 Chrome/29.0.1547.57 Safari/537.36"
|
13 |
| -mf2py.Parser.dict_class = collections.OrderedDict |
| 25 | +mf2py.Parser.dict_class = OrderedDict |
| 26 | +mf2py.Parser.img_with_alt = True |
14 | 27 |
|
15 |
| -@app.route('/', methods=['GET', 'POST']) |
| 28 | +@app.route("/", methods=["GET", "POST"]) |
16 | 29 | def index():
|
17 | 30 | try:
|
18 |
| - util = request.args.get('util') or request.form.get('util') |
19 |
| - url = request.args.get('url') or request.form.get('url') |
20 |
| - doc = request.args.get('doc') or request.form.get('doc') |
21 |
| - parser = request.args.get('parser') or request.form.get('parser') |
22 |
| - callback = request.args.get('callback') or request.form.get('callback') |
| 31 | + util = request.args.get("util") or request.form.get("util") |
| 32 | + url = request.args.get("url") or request.form.get("url") |
| 33 | + doc = request.args.get("doc") or request.form.get("doc") |
| 34 | + parser = request.args.get("parser") or request.form.get("parser") |
| 35 | + callback = request.args.get("callback") or request.form.get("callback") |
23 | 36 |
|
24 | 37 | cached_mf2 = {}
|
25 | 38 |
|
26 | 39 | def fetch_mf2(url):
|
27 | 40 | if url in cached_mf2:
|
28 | 41 | return cached_mf2[url]
|
29 |
| - p = mf2py.parse( |
30 |
| - url=url, html_parser=parser or None) |
| 42 | + p = mf2py.parse(url=url, html_parser=parser or None) |
31 | 43 | cached_mf2[url] = p
|
32 | 44 | return p
|
33 | 45 |
|
34 | 46 | if url or doc:
|
35 |
| - p = mf2py.parse(url=url or None, |
36 |
| - doc=doc or None, |
37 |
| - html_parser=parser or None) |
| 47 | + p = mf2py.parse( |
| 48 | + url=url or None, doc=doc or None, html_parser=parser or None |
| 49 | + ) |
38 | 50 | if util:
|
39 |
| - if any('h-feed' in item['type'] for item in p['items']): |
| 51 | + if any("h-feed" in item["type"] for item in p["items"]): |
40 | 52 | p = mf2util.interpret_feed(
|
41 |
| - p, url, want_json=True, fetch_mf2_func=fetch_mf2) |
| 53 | + p, url, want_json=True, fetch_mf2_func=fetch_mf2 |
| 54 | + ) |
42 | 55 | else:
|
43 | 56 | p = mf2util.interpret(
|
44 |
| - p, url, want_json=True, fetch_mf2_func=fetch_mf2) |
| 57 | + p, url, want_json=True, fetch_mf2_func=fetch_mf2 |
| 58 | + ) |
45 | 59 | if callback:
|
46 |
| - response = make_response('{}({})'.format(callback, json.dumps(p)), 200) |
47 |
| - response.headers['Content-Type'] = 'text/javascript' |
| 60 | + response = make_response("{}({})".format(callback, json.dumps(p)), 200) |
| 61 | + response.headers["Content-Type"] = "text/javascript" |
48 | 62 | else:
|
49 | 63 | response = make_response(json.dumps(p, indent=True), 200)
|
50 |
| - response.headers['Content-Type'] = 'application/json' |
| 64 | + response.headers["Content-Type"] = "application/json" |
51 | 65 | return response
|
52 | 66 |
|
53 |
| - return render_template('index.jinja2', |
54 |
| - mf2py_version=mf2py.__version__) |
| 67 | + return render_template("index.jinja2", mf2py_version=mf2py.__version__) |
55 | 68 | except BaseException as e:
|
56 | 69 | traceback.print_exc()
|
57 |
| - return jsonify(error='%s: %s' % (type(e).__name__, e)), 400 |
| 70 | + return jsonify(error="%s: %s" % (type(e).__name__, e)), 400 |
| 71 | + |
| 72 | + |
| 73 | +if options.debug: |
| 74 | + app.run(debug=True, port=8080) |
0 commit comments