| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- from fpl import FPL
- from fpl.utils import get_current_gameweek
- import aiohttp
- import asyncio
- from bson.objectid import ObjectId
- class Team:
- def __init__(self, name):
- self.name = name
- def set_players(self, players):
- self.players = players
- def show_players_info(self):
- print(f"{self.name} players:")
- for p in self.players:
- print(f"{p} gs = {p.goals_scored} tp = {p.total_points}")
- total = sum(p.goals_scored for p in self.players)
- print(f"Total Score => {total}")
- class Leauge:
- def __init__(self, title, mongo=None):
- self.title = title
- self.mongo = mongo
- @classmethod
- def from_id(cls, oid, mongo=None):
- lg = mongo.db.lgs.find_one({"_id": ObjectId(oid)})
- print(f"lg = {lg}")
- c = cls(None, mongo)
- c.init_db(lg)
- return c
- def init_db(self, col):
- self.title = col.get('title', None)
- self._teams = col.get('teams', [])
- self._id = col.get('_id',None)
- @property
- def teams(self):
- return self.mongo.db.teams.find({"_id": {"$in": self._teams}})
- def save(self):
- self.mongo.db.lgs.update_one({"_id": self._id}, {
- '$set': {'title': self.title, 'teams': self._teams}
- })
- def create(self):
- return self.mongo.db.lgs.insert_one({
- 'title': self.title, 'teams': []
- })
- def add_team(self, team_id):
- self._teams.append(ObjectId(team_id))
- def remove_team(self, team_id):
- self._teams.remove(ObjectId(team_id))
- class SFL:
- def __init__(self, name,mongo=None):
- self.name = name
- self.mongo = mongo
- async def _setup(self):
- async with aiohttp.ClientSession() as session:
- self.session = session
- self.fpl = FPL(self.session)
- self.players = await self.fpl.get_players()
- #return self
- def setup(self):
- asyncio.set_event_loop(asyncio.SelectorEventLoop())
- asyncio.get_event_loop().run_until_complete(self._setup())
- def get_player(self, pid):
- asyncio.set_event_loop(asyncio.SelectorEventLoop())
- return asyncio.get_event_loop().run_until_complete(self._get_player(pid))
- async def _get_player(self, pid):
- return await self.fpl.get_player(pid)
- def search_player(self, name):
- results = [{'info': str(x), 'id': x.id } for x in self.players if name in x.web_name.lower()]
- return results
- async def main():
- async with aiohttp.ClientSession() as session:
- fpl = FPL(session)
- gameweek = await fpl.get_gameweek(1)
- cg = await get_current_gameweek(fpl.session)
- gameweek2 = await fpl.get_gameweek(cg)
- gameweek3 = await fpl.get_gameweek(cg+1)
- players = await fpl.get_players()
- #print("==== players ====")
- '''
- for p in players[:10]:
- print(dir(p))
- '''
- #print(gameweek.name)
- #print(cg)
- #print(dir(gameweek))
- print(gameweek2)
- print("======================")
- #print(gameweek3)
- team = Team("Tum Team")
- team.set_players(players[:15])
- team.show_players_info()
- if __name__ == "__main__":
- asyncio.get_event_loop().run_until_complete(main())
|