confirm_only.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """浠呯‘璁わ細login + trade-confirmations/operate"""
  4. import json
  5. import sys
  6. import time
  7. import requests
  8. API = "http://localhost:5000"
  9. USERNAME = "tsi19338"
  10. PASSWORD = "ayx71486"
  11. MAFILE = r"c:\Users\Administrator\Desktop\tsi19338.maFile"
  12. CONFIRMATION_ID = "1184627388269539651"
  13. PROXY = "http://127.0.0.1:7897"
  14. def login():
  15. body = {
  16. "Username": USERNAME,
  17. "Password": PASSWORD,
  18. "MaFilePath": MAFILE,
  19. }
  20. if PROXY:
  21. body["ProxyUrl"] = PROXY
  22. for attempt in range(1, 6):
  23. print(f"[login] attempt {attempt}/5")
  24. r = requests.post(f"{API}/login", json=body, timeout=90)
  25. print(f"[login] HTTP {r.status_code} {r.text[:300]}")
  26. if r.status_code == 200:
  27. return r.json()
  28. time.sleep(3)
  29. raise RuntimeError("login failed")
  30. def main():
  31. data = login()
  32. sess = data["session"]
  33. session = {
  34. "SteamId": sess["steamId"],
  35. "AccessToken": sess["accessToken"],
  36. "RefreshToken": sess["refreshToken"],
  37. "SessionId": sess["sessionId"],
  38. }
  39. # list first
  40. list_body = {"MaFilePath": MAFILE, "Session": session}
  41. if PROXY:
  42. list_body["ProxyUrl"] = PROXY
  43. print("[list] fetching confirmations...")
  44. lr = requests.post(f"{API}/trade-confirmations/list", json=list_body, timeout=60)
  45. print(f"[list] HTTP {lr.status_code} {lr.text[:2000]}")
  46. if lr.status_code == 200:
  47. lj = lr.json()
  48. if lj.get("session"):
  49. s = lj["session"]
  50. session = {
  51. "SteamId": s.get("steamId", session["SteamId"]),
  52. "AccessToken": s.get("accessToken", session["AccessToken"]),
  53. "RefreshToken": s.get("refreshToken", session["RefreshToken"]),
  54. "SessionId": s.get("sessionId", session["SessionId"]),
  55. }
  56. op_body = {
  57. "MaFilePath": MAFILE,
  58. "Session": session,
  59. "ConfirmationId": int(CONFIRMATION_ID),
  60. "Operation": "accept",
  61. }
  62. if PROXY:
  63. op_body["ProxyUrl"] = PROXY
  64. for attempt in range(1, 11):
  65. print(f"[confirm] attempt {attempt}/10 ConfirmationId={CONFIRMATION_ID}")
  66. r = requests.post(f"{API}/trade-confirmations/operate", json=op_body, timeout=60)
  67. print(f"[confirm] HTTP {r.status_code}")
  68. print(r.text[:2000])
  69. if r.status_code == 200:
  70. j = r.json()
  71. if j.get("success") in (True, 1, "1"):
  72. print("[DONE] confirm success")
  73. return 0
  74. # refresh session for next try
  75. if j.get("session"):
  76. s = j["session"]
  77. op_body["Session"] = {
  78. "SteamId": s.get("steamId", session["SteamId"]),
  79. "AccessToken": s.get("accessToken", session["AccessToken"]),
  80. "RefreshToken": s.get("refreshToken", session["RefreshToken"]),
  81. "SessionId": s.get("sessionId", session["SessionId"]),
  82. }
  83. time.sleep(3)
  84. print("[DONE] confirm failed")
  85. return 1
  86. if __name__ == "__main__":
  87. try:
  88. sys.stdout.reconfigure(encoding="utf-8")
  89. except Exception:
  90. pass
  91. raise SystemExit(main())