Geen omschrijving

fpl_lib.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from fpl import FPL
  2. from fpl.utils import get_current_gameweek
  3. import aiohttp
  4. import asyncio
  5. from bson.objectid import ObjectId
  6. class Team:
  7. def __init__(self, name):
  8. self.name = name
  9. def set_players(self, players):
  10. self.players = players
  11. def show_players_info(self):
  12. print(f"{self.name} players:")
  13. for p in self.players:
  14. print(f"{p} gs = {p.goals_scored} tp = {p.total_points}")
  15. total = sum(p.goals_scored for p in self.players)
  16. print(f"Total Score => {total}")
  17. class Leauge:
  18. def __init__(self, title, mongo=None):
  19. self.title = title
  20. self.mongo = mongo
  21. @classmethod
  22. def from_id(cls, oid, mongo=None):
  23. lg = mongo.db.lgs.find_one({"_id": ObjectId(oid)})
  24. print(f"lg = {lg}")
  25. c = cls(None, mongo)
  26. c.init_db(lg)
  27. return c
  28. def init_db(self, col):
  29. self.title = col.get('title', None)
  30. self._teams = col.get('teams', [])
  31. self._id = col.get('_id',None)
  32. @property
  33. def teams(self):
  34. return self.mongo.db.teams.find({"_id": {"$in": self._teams}})
  35. def save(self):
  36. self.mongo.db.lgs.update_one({"_id": self._id}, {
  37. '$set': {'title': self.title, 'teams': self._teams}
  38. })
  39. def create(self):
  40. return self.mongo.db.lgs.insert_one({
  41. 'title': self.title, 'teams': []
  42. })
  43. def add_team(self, team_id):
  44. self._teams.append(ObjectId(team_id))
  45. def remove_team(self, team_id):
  46. self._teams.remove(ObjectId(team_id))
  47. class SFL:
  48. def __init__(self, name,mongo=None):
  49. self.name = name
  50. self.mongo = mongo
  51. async def _setup(self):
  52. async with aiohttp.ClientSession() as session:
  53. self.session = session
  54. self.fpl = FPL(self.session)
  55. self.players = await self.fpl.get_players()
  56. #return self
  57. def setup(self):
  58. asyncio.set_event_loop(asyncio.SelectorEventLoop())
  59. asyncio.get_event_loop().run_until_complete(self._setup())
  60. def get_player(self, pid):
  61. asyncio.set_event_loop(asyncio.SelectorEventLoop())
  62. return asyncio.get_event_loop().run_until_complete(self._get_player(pid))
  63. async def _get_player(self, pid):
  64. return await self.fpl.get_player(pid)
  65. def search_player(self, name):
  66. results = [{'info': str(x), 'id': x.id } for x in self.players if name in x.web_name.lower()]
  67. return results
  68. async def main():
  69. async with aiohttp.ClientSession() as session:
  70. fpl = FPL(session)
  71. gameweek = await fpl.get_gameweek(1)
  72. cg = await get_current_gameweek(fpl.session)
  73. gameweek2 = await fpl.get_gameweek(cg)
  74. gameweek3 = await fpl.get_gameweek(cg+1)
  75. players = await fpl.get_players()
  76. #print("==== players ====")
  77. '''
  78. for p in players[:10]:
  79. print(dir(p))
  80. '''
  81. #print(gameweek.name)
  82. #print(cg)
  83. #print(dir(gameweek))
  84. print(gameweek2)
  85. print("======================")
  86. #print(gameweek3)
  87. team = Team("Tum Team")
  88. team.set_players(players[:15])
  89. team.show_players_info()
  90. if __name__ == "__main__":
  91. asyncio.get_event_loop().run_until_complete(main())