Brak opisu

fpl_lib.py 3.3KB

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