server.py 1.56 KB
from flask import Flask, jsonify, send_file #, url_for
import os, json

app = Flask(__name__)

def read(fname):
    with open(fname, 'r') as f:
        data = f.read()
        f.close()
        return json.loads(data)

@app.route('/')
def api_root():
    return """Welcome I'm a <a href="http://www.python.org">python</a> server that give you data."""

@app.errorhandler(404)
def not_found(a):
    return """Error! Ask the right question. <br/> ระบุข้อมูลและรูปแบบให้ถูกต้องด้วย """

@app.route('/<data>/<dataformat>')
def app_data(data, dataformat):
    DATA = {
        'speakers': ["K","Kai","Or","Paul","Tom","Woot"],
        'height': [180,164,165,165,180,170],
        'pop':  [3.25,3.9,4,3,3.5,3.44],
        'popularity': [3.25,3.9,4,3,3.5,3.44]
    }
    try:
        if dataformat in ['txt', 'text', 'TXT']:
            return " ".join(DATA[data])
        if dataformat in ['json', 'JSON', 'jsn']:
            return jsonify(DATA[data])
    except: pass
    return """Error! Ask the right question. <br/> ระบุข้อมูลและรูปแบบให้ถูกต้องด้วย """

@app.route('/api/<name>')
def api_name(name):
    return jsonify(read('api/{}.json'.format(name)))

@app.route('/picture/<speaker>')
def api_image(speaker):
    fname = 'image/{}.jpg'.format(speaker)
    if os.path.exists(fname):
        return send_file(fname, mimetype="image/jpeg")
    return """Error! no picture for {}.""".format(speaker)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)