leke_login.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # -*- coding: utf-8 -*-
  2. # Author : Charley
  3. # Python : 3.10.8
  4. # Date : 2025/3/24 17:53
  5. import requests
  6. # from loguru import logger
  7. from mysql_pool import MySQLConnectionPool
  8. from settings import *
  9. # logger.remove()
  10. # logger.add("./logs/login_{time:YYYYMMDD}.log", encoding='utf-8', rotation="00:00",
  11. # format="[{time:YYYY-MM-DD HH:mm:ss.SSS}] {level} {message}",
  12. # level="DEBUG", retention="7 day")
  13. def get_token(log):
  14. log.debug("Start fetching token...........")
  15. # headers = {
  16. # "User-Agent": "Dart/3.5 (dart:io)",
  17. # "Accept-Encoding": "gzip",
  18. # "Content-Type": "application/json",
  19. # "deviceid": "06609f63-1a0c-46c2-9f61-9acebe289e79",
  20. # "brand": "Redmi",
  21. # "os": "android",
  22. # "content-type": "application/json; charset=utf-8",
  23. # "authori-zation": "",
  24. # "systemversion": "32",
  25. # "lang": "zh",
  26. # "verse-ua": "d7b3b338008806f1b20427173b983e29",
  27. # "version": "2.5.3",
  28. # "isphysicaldevice": "true",
  29. # "cid": ""
  30. # }
  31. url = "https://api.luckycards.com.cn/api/front/login/pwd"
  32. data = {
  33. "phone": "19521500850",
  34. "pwd": "Pass2025",
  35. "spreaderInviteCode": ""
  36. }
  37. response = requests.post(url, headers=HEADERS, json=data)
  38. # print(response.text)
  39. resp_json = response.json()
  40. if resp_json["code"] == 200:
  41. token = resp_json["data"]["token"]
  42. log.debug("Fetch token success!")
  43. return token
  44. else:
  45. log.error(f"Fetch token failed! Msg:{resp_json['message']}")
  46. return None
  47. @retry(stop=stop_after_attempt(100), wait=wait_fixed(3600), after=after_log)
  48. def login_main():
  49. # 配置 MySQL 连接池
  50. sql_pool = MySQLConnectionPool(log=logger)
  51. if not sql_pool.check_pool_health():
  52. logger.error("数据库连接池异常")
  53. raise RuntimeError("数据库连接池异常")
  54. token = get_token(logger)
  55. if token is None:
  56. logger.error("获取token失败")
  57. raise RuntimeError("获取token失败")
  58. else:
  59. sql_pool.update_one_or_dict(table="leka_token", data={"token": token}, condition={"id": 1})
  60. logger.debug("------------------ 更新token成功 ------------------")
  61. if __name__ == '__main__':
  62. login_main()