-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFlaskTodo.py
114 lines (101 loc) · 3.26 KB
/
FlaskTodo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from flask import Flask, jsonify
from flask import redirect
from flask import render_template
from flask import request
from flask_sqlalchemy import SQLAlchemy
import requests
from lxml import etree
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
token = ''
imdb = ''
what = ''
@app.before_first_request
def setup_app():
global token
url = 'http://api.opensubtitles.org/xml-rpc'
headers = {
'Content-Type': 'text/xml',
'User-Agent': 'OSTestUserAgent'
}
xml = """<?xml version="1.0"?>
<methodCall>
<methodName>LogIn</methodName>
<params>
<param>
<value><string>yadoxo</string></value>
</param>
<param>
<value><string>***</string></value>
</param>
<param>
<value><string>en</string></value>
</param>
<param>
<value><string>OSTestUserAgent</string></value>
</param>
</params>
</methodCall>"""
resp = requests.post(url, data=xml, headers=headers).text
e = etree.XML(resp[39:])
token = e.xpath('//methodResponse/params/param/value/struct/member/value/string/text()')[0]
class Todo(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.Text, unique=False)
is_completed = db.Column(db.Boolean)
def __init__(self, title):
self.title = title
self.is_completed = False
@app.route('/')
def index():
#todos = Todo.query.all()
return render_template('index.html', imdb=imdb)
@app.route('/add', methods=['POST'])
def add():
db.session.add(Todo(title=request.form['title']))
db.session.commit()
return redirect("/")
@app.route('/autocomplete', methods=['GET'])
def autocomplete():
search = request.args.get('q')
url = 'http://www.omdbapi.com/'
params = {
's': str(search),
'plot': 'short',
'r': 'json'
}
res = requests.get(url, params=params).json()
# for resp in res['Search']:
# results.append(resp['Title'])
results = [resp['Title'] for resp in res['Search']]
return jsonify(matching_results=results)
@app.route('/search', methods=['POST'])
def search():
global imdb
global what
what = request.form['autocomplete']
url = 'http://api.opensubtitles.org/xml-rpc'
headers = {
'Content-Type': 'text/xml',
'User-Agent': 'OSTestUserAgent'
}
xml = """<methodCall>
<methodName>SearchMoviesOnIMDB</methodName>
<params>
<param>
<value><string>"""+token+"""</string></value>
</param>
<param>
<value><string>"""+what+"""</string></value>
</param>
</params>
</methodCall>"""
resp = requests.post(url, data=xml, headers=headers).text
e = etree.XML(resp[39:])
imdb = e.xpath('//methodResponse/params/param/value/struct/member/value/array/data/value/struct/member/value/string/text()')[0]
return redirect("/")
app.debug = True
if __name__ == '__main__':
app.run()