xync-client 0.0.107__tar.gz → 0.0.110__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of xync-client might be problematic. Click here for more details.

Files changed (122) hide show
  1. {xync_client-0.0.107/xync_client.egg-info → xync_client-0.0.110}/PKG-INFO +2 -1
  2. {xync_client-0.0.107 → xync_client-0.0.110}/pyproject.toml +1 -0
  3. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/InAgent.py +9 -9
  4. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Payeer/__init__.py +16 -12
  5. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Payeer/login.py +9 -24
  6. {xync_client-0.0.107 → xync_client-0.0.110/xync_client.egg-info}/PKG-INFO +2 -1
  7. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client.egg-info/requires.txt +1 -0
  8. {xync_client-0.0.107 → xync_client-0.0.110}/.env.sample +0 -0
  9. {xync_client-0.0.107 → xync_client-0.0.110}/.gitignore +0 -0
  10. {xync_client-0.0.107 → xync_client-0.0.110}/.pre-commit-config.yaml +0 -0
  11. {xync_client-0.0.107 → xync_client-0.0.110}/README.md +0 -0
  12. {xync_client-0.0.107 → xync_client-0.0.110}/__init__.py +0 -0
  13. {xync_client-0.0.107 → xync_client-0.0.110}/makefile +0 -0
  14. {xync_client-0.0.107 → xync_client-0.0.110}/setup.cfg +0 -0
  15. {xync_client-0.0.107 → xync_client-0.0.110}/tests/TestAgent.py +0 -0
  16. {xync_client-0.0.107 → xync_client-0.0.110}/tests/TestAsset.py +0 -0
  17. {xync_client-0.0.107 → xync_client-0.0.110}/tests/TestEx.py +0 -0
  18. {xync_client-0.0.107 → xync_client-0.0.110}/tests/TestOrder.py +0 -0
  19. {xync_client-0.0.107 → xync_client-0.0.110}/tests/_todo_refact/Binance/test_binance.py +0 -0
  20. {xync_client-0.0.107 → xync_client-0.0.110}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
  21. {xync_client-0.0.107 → xync_client-0.0.110}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
  22. {xync_client-0.0.107 → xync_client-0.0.110}/tests/_todo_refact/Gate/test_gate.py +0 -0
  23. {xync_client-0.0.107 → xync_client-0.0.110}/tests/_todo_refact/Wallet/test_agent.py +0 -0
  24. {xync_client-0.0.107 → xync_client-0.0.110}/tests/_todo_refact/Wallet/test_ex.py +0 -0
  25. {xync_client-0.0.107 → xync_client-0.0.110}/tests/_todo_refact/__init__.py +0 -0
  26. {xync_client-0.0.107 → xync_client-0.0.110}/tests/_todo_refact/_test_ex.py +0 -0
  27. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/Agent.py +0 -0
  28. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/Asset.py +0 -0
  29. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/Auth.py +0 -0
  30. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/BaseTest.py +0 -0
  31. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/Ex.py +0 -0
  32. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/Exception.py +0 -0
  33. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/InAgent.py +0 -0
  34. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/Order.py +0 -0
  35. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/PmAgent.py +0 -0
  36. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Abc/xtype.py +0 -0
  37. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/__init__.py +0 -0
  38. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/binance_async.py +0 -0
  39. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/earn_api.py +0 -0
  40. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/etype/ad.py +0 -0
  41. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/etype/pm.py +0 -0
  42. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/ex.py +0 -0
  43. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/exceptions.py +0 -0
  44. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/sapi.py +0 -0
  45. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Binance/web_c2c.py +0 -0
  46. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BingX/__init__.py +0 -0
  47. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BingX/agent.py +0 -0
  48. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BingX/base.py +0 -0
  49. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BingX/etype/ad.py +0 -0
  50. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BingX/etype/pm.py +0 -0
  51. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BingX/ex.py +0 -0
  52. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BingX/req.mjs +0 -0
  53. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BingX/sign.js +0 -0
  54. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BitGet/__init__.py +0 -0
  55. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BitGet/agent.py +0 -0
  56. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BitGet/etype/ad.py +0 -0
  57. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BitGet/ex.py +0 -0
  58. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/BitPapa/ex.py +0 -0
  59. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/agent.py +0 -0
  60. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/etype/ad.py +0 -0
  61. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/etype/cred.py +0 -0
  62. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/etype/order.py +0 -0
  63. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/ex.py +0 -0
  64. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/order.py +0 -0
  65. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/web_earn.py +0 -0
  66. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/web_p2p.py +0 -0
  67. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Bybit/ws.py +0 -0
  68. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Gate/etype/ad.py +0 -0
  69. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Gate/ex.py +0 -0
  70. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Gate/premarket.py +0 -0
  71. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Gmail/__init__.py +0 -0
  72. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Htx/agent.py +0 -0
  73. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Htx/earn.py +0 -0
  74. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Htx/etype/__init__.py +0 -0
  75. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Htx/etype/ad.py +0 -0
  76. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Htx/etype/cred.py +0 -0
  77. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Htx/etype/pm.py +0 -0
  78. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Htx/etype/test.py +0 -0
  79. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Htx/ex.py +0 -0
  80. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/KuCoin/etype/ad.py +0 -0
  81. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/KuCoin/etype/pm.py +0 -0
  82. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/KuCoin/ex.py +0 -0
  83. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/KuCoin/web.py +0 -0
  84. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Mexc/etype/ad.py +0 -0
  85. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Mexc/etype/pm.py +0 -0
  86. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Mexc/ex.py +0 -0
  87. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Okx/etype/ad.py +0 -0
  88. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Okx/etype/pm.py +0 -0
  89. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Okx/ex.py +0 -0
  90. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/.gitignore +0 -0
  91. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Alfa/__init__.py +0 -0
  92. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Alfa/state.json +0 -0
  93. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/MTS/__init__.py +0 -0
  94. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Ozon/__init__.py +0 -0
  95. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Payeer/.gitignore +0 -0
  96. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Payeer/api.py +0 -0
  97. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Sber/__init__.py +0 -0
  98. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Sber/utils.py +0 -0
  99. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Tinkoff/__init__.py +0 -0
  100. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Volet/__init__.py +0 -0
  101. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
  102. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
  103. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Volet/api.py +0 -0
  104. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Volet/pl.py +0 -0
  105. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Xync/__main__.py +0 -0
  106. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Xync/ed.py +0 -0
  107. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/Pms/Yandex/__init__.py +0 -0
  108. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/agent.py +0 -0
  109. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/asset.py +0 -0
  110. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/auth.py +0 -0
  111. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/ex.py +0 -0
  112. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/inAgent.py +0 -0
  113. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/order.py +0 -0
  114. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/pyd.py +0 -0
  115. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/pyro.py +0 -0
  116. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/TgWallet/web.py +0 -0
  117. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/__init__.py +0 -0
  118. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/loader.py +0 -0
  119. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client/pm_unifier.py +0 -0
  120. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client.egg-info/SOURCES.txt +0 -0
  121. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client.egg-info/dependency_links.txt +0 -0
  122. {xync_client-0.0.107 → xync_client-0.0.110}/xync_client.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.107
3
+ Version: 0.0.110
4
4
  Author-email: Mike Artemiev <mixartemev@gmail.com>
5
5
  Project-URL: Homepage, https://gitlab.com/XyncNet/client
6
6
  Project-URL: Repository, https://gitlab.com/XyncNet/client
@@ -14,6 +14,7 @@ Requires-Dist: python-binance
14
14
  Requires-Dist: pybit
15
15
  Requires-Dist: pyotp
16
16
  Requires-Dist: kurigram
17
+ Requires-Dist: playwright
17
18
  Requires-Dist: python-dotenv
18
19
  Requires-Dist: python-okx
19
20
  Requires-Dist: pyrogram-client
@@ -17,6 +17,7 @@ dependencies = [
17
17
  "pyotp",
18
18
  # "kurigram @ git+https://github.com/mixartemev/pyrogram.git",
19
19
  "kurigram",
20
+ "playwright",
20
21
  "python-dotenv",
21
22
  "python-okx",
22
23
  "pyrogram-client",
@@ -126,7 +126,7 @@ class InAgentClient(BaseInAgentClient):
126
126
  addr__coin_id=order_db.ad.pair_side.pair.coin_id,
127
127
  addr__actor=self.agent_client.actor,
128
128
  )
129
- ass.free -= float(order_db.amount / order_db.ad.price)
129
+ ass.free -= int(order_db.amount / order_db.ad.price)
130
130
  await ass.save(update_fields=["free"])
131
131
  # обновляем остаток валюты
132
132
  fiat = await models.Fiat.get(cred_id=order_db.cred_id)
@@ -247,7 +247,7 @@ class InAgentClient(BaseInAgentClient):
247
247
  async def send_payment(self, order_db: models.Order, dest):
248
248
  if order_db.status not in (OrderStatus.created, OrderStatus.requested):
249
249
  return
250
- int_am = round(order_db.amount * 10**-2, 2)
250
+ fmt_am = round(order_db.amount * 10**-2, 2)
251
251
  pma, cur = await self.get_pma_by_pmex(order_db)
252
252
  async with in_transaction():
253
253
  # отмечаем ордер на бирже "оплачен"
@@ -259,9 +259,9 @@ class InAgentClient(BaseInAgentClient):
259
259
  paymentId=str(credex.exid), # credex.exid
260
260
  )
261
261
  # проверяем не отправляли ли мы уже перевод по этому ордеру
262
- if t := await models.Transfer.get_or_none(order=order_db, amount=int_am):
263
- await pma.bot.send(f"Order# {order_db.exid}: Double send {int_am}{cur} to {dest} #{t.pmid}!")
264
- raise Exception(f"Order# {order_db.exid}: Double send {int_am}{cur} to {dest} #{t.pmid}!")
262
+ if t := await models.Transfer.get_or_none(order=order_db, amount=order_db.amount):
263
+ await pma.bot.send(f"Order# {order_db.exid}: Double send {fmt_am}{cur} to {dest} #{t.pmid}!")
264
+ raise Exception(f"Order# {order_db.exid}: Double send {fmt_am}{cur} to {dest} #{t.pmid}!")
265
265
 
266
266
  # ставим в бд статус "оплачен"
267
267
  order_db.status = OrderStatus.paid
@@ -271,13 +271,13 @@ class InAgentClient(BaseInAgentClient):
271
271
  ass = await models.Asset.get(
272
272
  addr__coin_id=order_db.ad.pair_side.pair.coin_id, addr__actor=self.agent_client.actor
273
273
  )
274
- ass.free += float(order_db.amount / order_db.ad.price)
274
+ ass.free += int(order_db.amount / order_db.ad.price)
275
275
  await ass.save(update_fields=["free"])
276
276
  # отправляем деньги
277
- tid, img, rest_amount = await pma.send(dest=dest, amount=int_am, cur=cur)
277
+ tid, img, rest_amount = await pma.send(dest=dest, amount=fmt_am, cur=cur)
278
278
  # создаем перевод в бд
279
279
  t, _ = await models.Transfer.update_or_create(
280
- {"amount": int_am * 100},
280
+ {"amount": order_db.amount},
281
281
  order=order_db,
282
282
  pmid=tid,
283
283
  )
@@ -288,7 +288,7 @@ class InAgentClient(BaseInAgentClient):
288
288
  self.agent_client.api.send_chat_message(
289
289
  orderId=str(order_db.exid), contentType="pic", message=res["url"], msgUuid=uuid4().hex
290
290
  )
291
- logging.info(f"Order {order_db.exid} PAID at {datetime.now()}: {int_am}!")
291
+ logging.info(f"Order {order_db.exid} PAID at {datetime.now()}: {fmt_am}!")
292
292
 
293
293
  async def get_pma_by_cdex(self, order: OrderFull) -> tuple[PmAgentClient | None, CredEx] | None:
294
294
  cdxs = await models.CredEx.filter(
@@ -56,16 +56,20 @@ class Client(PmAgentClient):
56
56
  if float(amount) <= has_amount:
57
57
  await page.locator('input[name="param_ACCOUNT_NUMBER"]').fill(dest)
58
58
  await page.locator("select[name=curr_receive]").select_option(value=cur)
59
+ sleep(0.5)
59
60
  await fill_amount(page.locator('input[name="sum_receive"]'), str(amount))
60
- await page.wait_for_selector(".btn.n-form--btn.n-form--btn-mod", state="visible")
61
+ await page.wait_for_selector(".btn.n-form--btn.n-form--btn-mod", state="visible", timeout=3000)
62
+ sleep(1.5)
61
63
  await click_send(page.locator(".btn.n-form--btn.n-form--btn-mod:not(.repeat)"))
62
- await page.locator(".note_txt").wait_for(state="visible")
64
+ await page.locator(".note_txt").wait_for(state="visible", timeout=6000)
63
65
  if await page.locator('.note_txt:has-text("successfully completed")').count():
64
66
  transaction = await page.locator(".note_txt").all_text_contents()
65
67
  trans_num = int(transaction[0].replace("Transaction #", "").split()[0])
66
68
  await page.goto("https://payeer.com/ru/account/history/")
69
+ sleep(1.5)
67
70
  await page.click(f".history-id-{trans_num} a.link")
68
- await page.wait_for_selector(".ui-dialog.ui-corner-all", state="visible")
71
+ await page.wait_for_selector(".ui-dialog.ui-corner-all", state="visible", timeout=5000)
72
+ sleep(1)
69
73
  receipt = await page.query_selector(".ui-dialog.ui-corner-all")
70
74
  return trans_num, await receipt.screenshot(path=f"tmp/{dest}.png"), has_amount
71
75
  else:
@@ -81,7 +85,7 @@ class Client(PmAgentClient):
81
85
  raise Exception(f"Need {amount}{cur}, but has only {has_amount}")
82
86
 
83
87
  def check_in(
84
- self, amount: Decimal | int | float, cur: str, time: datetime = None, tid: str | int = None
88
+ self, amount: Decimal | int | float, cur: str, tme: datetime = None, tid: str | int = None
85
89
  ) -> tuple[Decimal | None, int | None]:
86
90
  history = self.api.history(type="incoming", append=tid, count=3)
87
91
  if tid:
@@ -92,7 +96,7 @@ class Client(PmAgentClient):
92
96
  if (
93
97
  amount <= Decimal(h["creditedAmount"]) <= ceil(amount)
94
98
  and h["creditedCurrency"] == cur
95
- and datetime.fromisoformat(h["date"]) > time - timedelta(minutes=1)
99
+ and datetime.fromisoformat(h["date"]) > tme - timedelta(minutes=1)
96
100
  )
97
101
  ]
98
102
  if not (t := t and t[0]):
@@ -107,7 +111,7 @@ class Client(PmAgentClient):
107
111
  async def fill_amount(loc: Locator, amount: str):
108
112
  await loc.wait_for(state="visible")
109
113
  await loc.fill(amount)
110
- sleep(1)
114
+ sleep(2)
111
115
  if await loc.input_value() != amount or await loc.input_value() != amount:
112
116
  logging.warning("Fill amount repeated!")
113
117
  await fill_amount(loc, amount)
@@ -115,16 +119,16 @@ async def fill_amount(loc: Locator, amount: str):
115
119
  ...
116
120
 
117
121
 
118
- async def click_send(loc: Locator, count: int = 1):
119
- if await loc.is_visible():
120
- sleep(1)
121
- await loc.click(delay=90)
122
+ async def click_send(loc1: Locator, count: int = 1):
123
+ if await loc1.is_visible():
124
+ await loc1.click(delay=90)
125
+ sleep(2)
122
126
  try:
123
- await loc.wait_for(state="hidden", timeout=2000 * count)
127
+ await loc1.wait_for(state="hidden", timeout=2000 * count)
124
128
  except TimeoutError:
125
129
  if count < 4:
126
130
  logging.warning("Click repeated!")
127
- await click_send(loc, count + 1)
131
+ await click_send(loc1, count + 1)
128
132
  else:
129
133
  raise TimeoutError
130
134
 
@@ -1,51 +1,36 @@
1
- from time import sleep
2
-
3
1
  from selenium.webdriver.common.by import By
4
2
  import undetected_chromedriver as uc
5
3
  from xync_schema.models import PmAgent
6
4
  from selenium.webdriver.support.ui import WebDriverWait
7
5
  from selenium.webdriver.support import expected_conditions as EC
8
6
  from selenium.webdriver.common.action_chains import ActionChains
7
+ import time
9
8
 
10
9
 
11
10
  async def login(agent: PmAgent):
12
- driver = uc.Chrome(no_sandbox=True)
11
+ driver = uc.Chrome(no_sandbox=True, headless=False)
13
12
  wait = WebDriverWait(driver, timeout=10)
14
13
  try:
15
- driver.get("https://payeer.com/ru/auth")
14
+ driver.get("https://payeer.com/en/auth")
16
15
  wait.until(EC.invisibility_of_element_located((By.TAG_NAME, "lottie-player")))
17
16
  login_link = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "button.button_empty")))
18
- try:
19
- login_link.click()
20
- except Exception:
21
- driver.execute_script("arguments[0].click();", login_link)
17
+ login_link.click()
22
18
  email_field = wait.until(EC.presence_of_element_located((By.NAME, "email")))
23
19
  email_field.send_keys(agent.auth.get("email"))
24
20
  password_field = wait.until(EC.presence_of_element_located((By.NAME, "password")))
25
21
  password_field.send_keys(agent.auth.get("password"))
26
22
  login_button = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "login-form__login-btn.step1")))
27
- sleep(1)
28
- try:
29
- login_button.click()
30
- except Exception:
31
- driver.execute_script("arguments[0].click();", login_button)
32
- try:
33
- login_button = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "login-form__login-btn.step1")))
34
- driver.execute_script("arguments[0].click();", login_button)
35
- except Exception:
36
- pass
23
+ login_button.click()
24
+ time.sleep(5)
25
+ login_button.click()
26
+ time.sleep(1)
37
27
  if (v := driver.find_elements(By.CLASS_NAME, "form-input-top")) and v[0].text == "Введите проверочный код":
38
28
  code = input("Email code: ")
39
29
  actions = ActionChains(driver)
40
30
  for char in code:
41
31
  actions.send_keys(char).perform()
42
32
  step2_button = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "login-form__login-btn.step2")))
43
- try:
44
- step2_button.click()
45
- except Exception:
46
- driver.execute_script("arguments[0].click();", step2_button)
47
-
48
- sleep(1)
33
+ step2_button.click()
49
34
  agent.state = {"cookies": driver.get_cookies()}
50
35
  await agent.save()
51
36
  finally:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.107
3
+ Version: 0.0.110
4
4
  Author-email: Mike Artemiev <mixartemev@gmail.com>
5
5
  Project-URL: Homepage, https://gitlab.com/XyncNet/client
6
6
  Project-URL: Repository, https://gitlab.com/XyncNet/client
@@ -14,6 +14,7 @@ Requires-Dist: python-binance
14
14
  Requires-Dist: pybit
15
15
  Requires-Dist: pyotp
16
16
  Requires-Dist: kurigram
17
+ Requires-Dist: playwright
17
18
  Requires-Dist: python-dotenv
18
19
  Requires-Dist: python-okx
19
20
  Requires-Dist: pyrogram-client
@@ -7,6 +7,7 @@ python-binance
7
7
  pybit
8
8
  pyotp
9
9
  kurigram
10
+ playwright
10
11
  python-dotenv
11
12
  python-okx
12
13
  pyrogram-client
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes