tum лет назад: 5
Сommit
53097184c5
5 измененных файлов с 163 добавлено и 0 удалено
  1. BIN
      __pycache__/app.cpython-36.pyc
  2. BIN
      __pycache__/fpl_lib.cpython-36.pyc
  3. 52 0
      app.py
  4. 74 0
      fpl_lib.py
  5. 37 0
      templates/index.html

BIN
__pycache__/app.cpython-36.pyc


BIN
__pycache__/fpl_lib.cpython-36.pyc


+ 52 - 0
app.py

@@ -0,0 +1,52 @@
1
+from flask import Flask, render_template, request
2
+from fpl_lib import SFL, Team
3
+from flask_pymongo import PyMongo
4
+from bson.objectid import ObjectId
5
+
6
+
7
+app = Flask(__name__)
8
+app.config["MONGO_URI"] = "mongodb://localhost:27017/fpl_db"
9
+mongo = PyMongo(app)
10
+
11
+sfp = SFL("ABC")
12
+sfp.setup()
13
+
14
+@app.route('/', methods=["GET", "POST"])
15
+def index():
16
+    players = sfp.players[:400]
17
+    print("=== players ===")
18
+    print(players)
19
+    selectTeam = request.args.get("t", "")
20
+
21
+    if request.method == "POST":
22
+
23
+        teamCreate = request.form.get('teamCreate', None)
24
+        if 'selectPlayerBtn' in request.form:
25
+            print(f"selectPlayerBtn == {selectTeam}")
26
+            selectPlayers = request.form.getlist('players')
27
+            selectPlayers = [int(x) for x in selectPlayers]
28
+            mongo.db.teams.update_one({"_id": ObjectId(selectTeam)}, {"$set": {"players": selectPlayers}})
29
+
30
+        print("select players")
31
+        print(selectPlayers)
32
+
33
+        if teamCreate:
34
+            print("Team Create")
35
+            teamName = request.form.get('teamName', None)
36
+            mongo.db.teams.insert_one({'title': teamName})
37
+
38
+    teams = mongo.db.teams.find()
39
+    currentTeam = None
40
+
41
+    if selectTeam != "":
42
+        currentTeam = mongo.db.teams.find_one({"_id": ObjectId(selectTeam)})
43
+        currentPlayers = []
44
+
45
+        for p in currentTeam['players']:
46
+            try:
47
+                currentPlayers.append(sfp.get_player(p))
48
+            except:
49
+                currentPlayers.append(None)
50
+       #currentPlayers = sfp.get_players(currentTeam['players'])
51
+
52
+    return render_template('index.html', players = players, teams=teams, selectTeam =  selectTeam, currentTeam = currentTeam, currentPlayers = currentPlayers)

+ 74 - 0
fpl_lib.py

@@ -0,0 +1,74 @@
1
+from fpl import FPL
2
+from fpl.utils import get_current_gameweek
3
+import aiohttp
4
+import asyncio
5
+
6
+class Team:
7
+    def __init__(self, name):
8
+        self.name = name
9
+
10
+    def set_players(self, players):
11
+        self.players = players
12
+
13
+    def show_players_info(self):
14
+        print(f"{self.name} players:")
15
+        for p in self.players:
16
+            print(f"{p}  gs = {p.goals_scored} tp = {p.total_points}")
17
+
18
+        total = sum(p.goals_scored for p in self.players)
19
+        print(f"Total Score => {total}")
20
+
21
+class SFL:
22
+    def __init__(self, name):
23
+        self.name = name
24
+
25
+    async def _setup(self):
26
+        async with aiohttp.ClientSession() as session:
27
+            self.session = session
28
+            self.fpl = FPL(self.session)
29
+            self.players = await self.fpl.get_players()
30
+            #return self
31
+
32
+    def setup(self):
33
+        asyncio.set_event_loop(asyncio.SelectorEventLoop())
34
+        asyncio.get_event_loop().run_until_complete(self._setup())
35
+
36
+    def get_player(self, pid):
37
+        asyncio.set_event_loop(asyncio.SelectorEventLoop())
38
+        return asyncio.get_event_loop().run_until_complete(self._get_player(pid))
39
+
40
+    async def _get_player(self, pid):
41
+        return await self.fpl.get_player(pid)
42
+
43
+
44
+async def main():
45
+    async with aiohttp.ClientSession() as session:
46
+        fpl = FPL(session)
47
+        gameweek = await fpl.get_gameweek(1)
48
+
49
+        cg = await get_current_gameweek(fpl.session)
50
+        gameweek2 = await fpl.get_gameweek(cg)
51
+        gameweek3 = await fpl.get_gameweek(cg+1)
52
+
53
+        players = await fpl.get_players()
54
+
55
+    #print("==== players ====")
56
+    '''
57
+    for p in players[:10]:
58
+        print(dir(p))
59
+    '''
60
+
61
+
62
+    #print(gameweek.name)
63
+    #print(cg)
64
+    #print(dir(gameweek))
65
+    print(gameweek2)
66
+    print("======================")
67
+    #print(gameweek3)
68
+
69
+    team = Team("Tum Team")
70
+    team.set_players(players[:15])
71
+    team.show_players_info()
72
+
73
+if __name__ == "__main__":
74
+    asyncio.get_event_loop().run_until_complete(main())

+ 37 - 0
templates/index.html

@@ -0,0 +1,37 @@
1
+<html>
2
+<body>
3
+    <div style='width:50%; float:left'>
4
+    <h1>Players</h1>
5
+    <form method="post">
6
+        <input type=hidden name='selectTeam' value="{{ selectTeam }}" />
7
+    <ol>
8
+    {% for p in players %}
9
+    <li><input type=checkbox name="players" value="{{ p.id }}" />{{ p }}</li>
10
+    {% endfor %}
11
+    </ol>
12
+    <input type="submit" name="selectPlayerBtn"  value="Select Player">
13
+    </form>
14
+    </div>
15
+    <div style='width:50%; float:left'>
16
+        <h1>Teams</h1>
17
+        {{ currentTeam }}
18
+        <h2>P</h2>
19
+        <ul>
20
+            
21
+        {% for p in  currentPlayers %}
22
+        <li>{{ p }}  GS={{ p.goals_scored }}</li>
23
+        {% endfor %}
24
+        </ul>
25
+        <hr>
26
+        <form  method="post">
27
+        <input type=text name='teamName' />
28
+        <input type="submit" name="teamCreate"  value="Create Team">
29
+    </form>
30
+    <ol>
31
+    {% for t in teams %}
32
+    <li><a href="?t={{ t._id }}">{{ t['title'] }}</a></li>
33
+    {% endfor %}
34
+    </ol>
35
+    </div>
36
+</body>
37
+</html>