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())