xync-client 0.0.120__tar.gz → 0.0.124__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.120/xync_client.egg-info → xync_client-0.0.124}/PKG-INFO +3 -2
  2. {xync_client-0.0.120 → xync_client-0.0.124}/pyproject.toml +2 -1
  3. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/InAgent.py +68 -60
  4. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/etype/order.py +1 -2
  5. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Payeer/__init__.py +2 -2
  6. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Payeer/login.py +12 -2
  7. {xync_client-0.0.120 → xync_client-0.0.124/xync_client.egg-info}/PKG-INFO +3 -2
  8. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client.egg-info/requires.txt +2 -1
  9. {xync_client-0.0.120 → xync_client-0.0.124}/.env.sample +0 -0
  10. {xync_client-0.0.120 → xync_client-0.0.124}/.gitignore +0 -0
  11. {xync_client-0.0.120 → xync_client-0.0.124}/.pre-commit-config.yaml +0 -0
  12. {xync_client-0.0.120 → xync_client-0.0.124}/README.md +0 -0
  13. {xync_client-0.0.120 → xync_client-0.0.124}/__init__.py +0 -0
  14. {xync_client-0.0.120 → xync_client-0.0.124}/makefile +0 -0
  15. {xync_client-0.0.120 → xync_client-0.0.124}/setup.cfg +0 -0
  16. {xync_client-0.0.120 → xync_client-0.0.124}/tests/TestAgent.py +0 -0
  17. {xync_client-0.0.120 → xync_client-0.0.124}/tests/TestAsset.py +0 -0
  18. {xync_client-0.0.120 → xync_client-0.0.124}/tests/TestEx.py +0 -0
  19. {xync_client-0.0.120 → xync_client-0.0.124}/tests/TestOrder.py +0 -0
  20. {xync_client-0.0.120 → xync_client-0.0.124}/tests/_todo_refact/Binance/test_binance.py +0 -0
  21. {xync_client-0.0.120 → xync_client-0.0.124}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
  22. {xync_client-0.0.120 → xync_client-0.0.124}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
  23. {xync_client-0.0.120 → xync_client-0.0.124}/tests/_todo_refact/Gate/test_gate.py +0 -0
  24. {xync_client-0.0.120 → xync_client-0.0.124}/tests/_todo_refact/Wallet/test_agent.py +0 -0
  25. {xync_client-0.0.120 → xync_client-0.0.124}/tests/_todo_refact/Wallet/test_ex.py +0 -0
  26. {xync_client-0.0.120 → xync_client-0.0.124}/tests/_todo_refact/__init__.py +0 -0
  27. {xync_client-0.0.120 → xync_client-0.0.124}/tests/_todo_refact/_test_ex.py +0 -0
  28. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/Agent.py +0 -0
  29. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/Asset.py +0 -0
  30. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/Auth.py +0 -0
  31. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/BaseTest.py +0 -0
  32. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/Ex.py +0 -0
  33. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/Exception.py +0 -0
  34. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/InAgent.py +0 -0
  35. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/Order.py +0 -0
  36. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/PmAgent.py +0 -0
  37. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Abc/xtype.py +0 -0
  38. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/__init__.py +0 -0
  39. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/binance_async.py +0 -0
  40. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/earn_api.py +0 -0
  41. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/etype/ad.py +0 -0
  42. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/etype/pm.py +0 -0
  43. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/ex.py +0 -0
  44. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/exceptions.py +0 -0
  45. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/sapi.py +0 -0
  46. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Binance/web_c2c.py +0 -0
  47. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BingX/__init__.py +0 -0
  48. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BingX/agent.py +0 -0
  49. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BingX/base.py +0 -0
  50. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BingX/etype/ad.py +0 -0
  51. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BingX/etype/pm.py +0 -0
  52. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BingX/ex.py +0 -0
  53. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BingX/req.mjs +0 -0
  54. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BingX/sign.js +0 -0
  55. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BitGet/__init__.py +0 -0
  56. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BitGet/agent.py +0 -0
  57. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BitGet/etype/ad.py +0 -0
  58. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BitGet/ex.py +0 -0
  59. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/BitPapa/ex.py +0 -0
  60. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/agent.py +0 -0
  61. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/etype/ad.py +0 -0
  62. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/etype/cred.py +0 -0
  63. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/ex.py +0 -0
  64. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/order.py +0 -0
  65. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/web_earn.py +0 -0
  66. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/web_p2p.py +0 -0
  67. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Bybit/ws.py +0 -0
  68. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Gate/etype/ad.py +0 -0
  69. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Gate/ex.py +0 -0
  70. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Gate/premarket.py +0 -0
  71. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Gmail/__init__.py +0 -0
  72. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Htx/agent.py +0 -0
  73. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Htx/earn.py +0 -0
  74. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Htx/etype/__init__.py +0 -0
  75. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Htx/etype/ad.py +0 -0
  76. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Htx/etype/cred.py +0 -0
  77. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Htx/etype/pm.py +0 -0
  78. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Htx/etype/test.py +0 -0
  79. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Htx/ex.py +0 -0
  80. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/KuCoin/etype/ad.py +0 -0
  81. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/KuCoin/etype/pm.py +0 -0
  82. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/KuCoin/ex.py +0 -0
  83. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/KuCoin/web.py +0 -0
  84. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Mexc/etype/ad.py +0 -0
  85. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Mexc/etype/pm.py +0 -0
  86. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Mexc/ex.py +0 -0
  87. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Okx/etype/ad.py +0 -0
  88. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Okx/etype/pm.py +0 -0
  89. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Okx/ex.py +0 -0
  90. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/.gitignore +0 -0
  91. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Alfa/__init__.py +0 -0
  92. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Alfa/state.json +0 -0
  93. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/MTS/__init__.py +0 -0
  94. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Ozon/__init__.py +0 -0
  95. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Payeer/.gitignore +0 -0
  96. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Payeer/api.py +0 -0
  97. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Sber/__init__.py +0 -0
  98. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Sber/utils.py +0 -0
  99. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Tinkoff/__init__.py +0 -0
  100. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Volet/__init__.py +0 -0
  101. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
  102. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
  103. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Volet/api.py +0 -0
  104. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Volet/pl.py +0 -0
  105. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Xync/__main__.py +0 -0
  106. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Xync/ed.py +0 -0
  107. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/Pms/Yandex/__init__.py +0 -0
  108. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/agent.py +0 -0
  109. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/asset.py +0 -0
  110. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/auth.py +0 -0
  111. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/ex.py +0 -0
  112. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/inAgent.py +0 -0
  113. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/order.py +0 -0
  114. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/pyd.py +0 -0
  115. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/pyro.py +0 -0
  116. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/TgWallet/web.py +0 -0
  117. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/__init__.py +0 -0
  118. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/loader.py +0 -0
  119. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client/pm_unifier.py +0 -0
  120. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client.egg-info/SOURCES.txt +0 -0
  121. {xync_client-0.0.120 → xync_client-0.0.124}/xync_client.egg-info/dependency_links.txt +0 -0
  122. {xync_client-0.0.120 → xync_client-0.0.124}/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.120
3
+ Version: 0.0.124
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
@@ -13,7 +13,8 @@ Requires-Dist: msgspec
13
13
  Requires-Dist: python-binance
14
14
  Requires-Dist: pybit
15
15
  Requires-Dist: pyotp
16
- Requires-Dist: kurigram
16
+ Requires-Dist: pypng
17
+ Requires-Dist: kurigram<2.2.10
17
18
  Requires-Dist: payeer-api
18
19
  Requires-Dist: playwright
19
20
  Requires-Dist: python-dotenv
@@ -15,8 +15,9 @@ dependencies = [
15
15
  "python-binance",
16
16
  "pybit",
17
17
  "pyotp",
18
+ "pypng",
18
19
  # "kurigram @ git+https://github.com/mixartemev/pyrogram.git",
19
- "kurigram",
20
+ "kurigram<2.2.10",
20
21
  "payeer-api",
21
22
  "playwright",
22
23
  "python-dotenv",
@@ -87,9 +87,11 @@ class InAgentClient(BaseInAgentClient):
87
87
  match upd.status:
88
88
  case StatusApi.created:
89
89
  logging.info(f"Order {order.id} created at {order.createDate}")
90
- if upd.side == 1: # я покупатель - ждем мою оплату
90
+ # сразу уменьшаем доступный остаток монеты/валюты
91
+ await self.money_upd(order_db)
92
+ if upd.side: # я покупатель - ждем мою оплату
91
93
  dest = order.paymentTermList[0].accountNo
92
- if not re.match(r"^P\d{8,10}$", dest):
94
+ if not re.match(r"^([Pp])\d{8,10}$", dest):
93
95
  continue
94
96
  await order_db.fetch_related("ad__pair_side__pair", "cred__pmcur__cur")
95
97
  await self.send_payment(order_db, dest)
@@ -114,34 +116,17 @@ class InAgentClient(BaseInAgentClient):
114
116
  accepted_at=datetime.now(timezone.utc),
115
117
  ),
116
118
  order=order_db,
119
+ # pm_id=order_db.cred.pmcur.pm_id,
117
120
  pmid=tid,
118
121
  )
119
122
  if not is_new:
120
123
  continue
121
- await order_db.fetch_related("ad__pair_side__pair")
122
- async with in_transaction():
123
- # уменьшаем остаток монеты
124
- ass = await models.Asset.get(
125
- addr__coin_id=order_db.ad.pair_side.pair.coin_id,
126
- addr__actor=self.agent_client.actor,
127
- )
128
- coinex = await models.CoinEx.get(
129
- coin_id=order_db.ad.pair_side.pair.coin_id,
130
- ex=self.agent_client.ex_client.ex,
131
- )
132
- ass.free -= (
133
- int(order_db.amount / order_db.ad.price) * 10**coinex.scale
134
- )
135
- await ass.save(update_fields=["free"])
136
- # обновляем остаток валюты
137
- fiat = await models.Fiat.get(cred_id=order_db.cred_id)
138
- fiat.amount += order_db.amount
139
- await fiat.save(update_fields=["amount"])
140
- # отправляем деньги
141
- self.agent_client.api.release_assets(orderId=upd.id)
142
- logging.info(
143
- f"Order {order.id} created, paid before #{tid}:{am} at {order.createDate}, and RELEASED at {datetime.now()}"
144
- )
124
+
125
+ # !!! ОТПРАВЛЯЕМ ДЕНЬГИ !!!
126
+ self.agent_client.api.release_assets(orderId=upd.id)
127
+ logging.info(
128
+ f"Order {order.id} created, paid before #{tid}:{am} at {order.createDate}, and RELEASED at {datetime.now()}"
129
+ )
145
130
  elif upd.side == 1: # я покупатель - ждем мою оплату
146
131
  continue # logging.warning(f"Order {order.id} PAID at {datetime.now()}: {int_am}")
147
132
  else:
@@ -149,6 +134,20 @@ class InAgentClient(BaseInAgentClient):
149
134
  # todo: check is always canceling
150
135
  # await order_db.update_from_dict({"status": OrderStatus.canceled}).save()
151
136
  # logging.info(f"Order {order.id} canceled at {datetime.now()}")
137
+
138
+ case StatusApi.wait_for_seller:
139
+ if order_db.status == OrderStatus.paid:
140
+ continue
141
+ await order_db.update_from_dict(
142
+ {
143
+ "status": OrderStatus.paid,
144
+ "payed_at": datetime.fromtimestamp(
145
+ float(order.transferDate) / 1000
146
+ ),
147
+ }
148
+ ).save()
149
+ logging.info(f"Order {order.id} payed at {order_db.payed_at}")
150
+
152
151
  case StatusApi.appealed:
153
152
  # todo: appealed by WHO? щас наугад стоит by_seller
154
153
  await order_db.update_from_dict(
@@ -160,19 +159,13 @@ class InAgentClient(BaseInAgentClient):
160
159
  }
161
160
  ).save()
162
161
  logging.info(f"Order {order.id} appealed at {order_db.appealed_at}")
162
+
163
163
  case StatusApi.canceled:
164
164
  await order_db.update_from_dict({"status": OrderStatus.canceled}).save()
165
165
  logging.info(f"Order {order.id} canceled at {datetime.now()}")
166
+ await self.money_upd(order_db)
167
+
166
168
  case StatusApi.completed:
167
- if upd.side: # я покупатель, продавец подтвердил получение
168
- # добавляем остаток монеты
169
- await order_db.fetch_related("ad__pair_side__pair") # todo: refact
170
- ass = await models.Asset.get(
171
- addr__coin_id=order_db.ad.pair_side.pair.coin_id,
172
- addr__actor=self.agent_client.actor,
173
- )
174
- ass.free += order_db.quantity
175
- await ass.save(update_fields=["free"])
176
169
  await order_db.update_from_dict(
177
170
  {
178
171
  "status": OrderStatus.completed,
@@ -181,19 +174,8 @@ class InAgentClient(BaseInAgentClient):
181
174
  ),
182
175
  }
183
176
  ).save()
184
- logging.info(f"Order {order.id} completed at {order_db.confirmed_at}")
185
- case StatusApi.wait_for_seller:
186
- if order_db.status == OrderStatus.paid:
187
- continue
188
- await order_db.update_from_dict(
189
- {
190
- "status": OrderStatus.paid,
191
- "payed_at": datetime.fromtimestamp(
192
- float(order.transferDate) / 1000
193
- ),
194
- }
195
- ).save()
196
- logging.info(f"Order {order.id} payed at {order_db.payed_at}")
177
+ await self.money_upd(order_db)
178
+
197
179
  case _:
198
180
  logging.warning(f"Order {order.id} UNKNOWN STATUS {datetime.now()}")
199
181
  case "COUNT_DOWN":
@@ -258,8 +240,45 @@ class InAgentClient(BaseInAgentClient):
258
240
  if not upd:
259
241
  logging.warning(data, "NOT PROCESSED UPDATE")
260
242
 
243
+ async def money_upd(self, order_db: models.Order):
244
+ # обновляем остаток монеты
245
+ await order_db.fetch_related("ad__pair_side__pair", "cred")
246
+ ass = await models.Asset.get(
247
+ addr__coin_id=order_db.ad.pair_side.pair.coin_id, addr__actor=self.agent_client.actor
248
+ )
249
+ # обновляем остаток валюты
250
+ fiat = await models.Fiat.get(
251
+ cred__person_id=self.agent_client.actor.person_id, cred__pmcur_id=order_db.cred.pmcur_id
252
+ ).prefetch_related("cred__pmcur__pm")
253
+ fee = round(order_db.amount * (fiat.cred.pmcur.pm.fee or 0) * 0.0001)
254
+ im_seller = order_db.ad.pair_side.is_sell == (_im_maker := order_db.ad.maker_id == self.agent_client.actor.id)
255
+ # k = int(im_seller) * 2 - 1 # im_seller: 1, im_buyer: -1
256
+ if order_db.status == OrderStatus.created:
257
+ if im_seller:
258
+ ass.free -= order_db.quantity
259
+ ass.freeze += order_db.quantity
260
+ else: # я покупатель
261
+ fiat.amount -= order_db.amount + fee
262
+ elif order_db.status == OrderStatus.completed:
263
+ if im_seller:
264
+ fiat.amount += order_db.amount
265
+ else: # я покупатель
266
+ ass.free += order_db.quantity
267
+ ass.freeze -= order_db.quantity
268
+ elif order_db.status == OrderStatus.canceled:
269
+ if im_seller:
270
+ ass.free += order_db.quantity
271
+ ass.freeze -= order_db.quantity
272
+ else: # я покупатель
273
+ fiat.amount += order_db.amount + fee
274
+ else:
275
+ logging.exception(order_db.id, f"STATUS: {order_db.status.name}")
276
+ await ass.save(update_fields=["free", "freeze"])
277
+ await fiat.save(update_fields=["amount"])
278
+ logging.info(f"Order #{order_db.id} {order_db.status.name}. Fiat: {fiat.amount}, Asset: {ass.free}")
279
+
261
280
  async def send_payment(self, order_db: models.Order, dest):
262
- if order_db.status not in (OrderStatus.created, OrderStatus.requested):
281
+ if order_db.status != OrderStatus.created:
263
282
  return
264
283
  fmt_am = round(order_db.amount * 10**-2, 2)
265
284
  pma, cur = await self.get_pma_by_pmex(order_db)
@@ -289,17 +308,6 @@ class InAgentClient(BaseInAgentClient):
289
308
  order=order_db,
290
309
  pmid=tid,
291
310
  )
292
- # обновляем остаток валюты
293
- await order_db.fetch_related("cred") # todo: refact
294
- await (
295
- (
296
- await models.Fiat.get(
297
- cred__person_id=self.agent_client.actor.person_id, cred__pmcur_id=order_db.cred.pmcur_id
298
- )
299
- )
300
- .update_from_dict({"amount": rest_amount * 100})
301
- .save()
302
- )
303
311
  # отправляем продавцу чек
304
312
  if res := self.agent_client.api.upload_chat_file(upload_file=f"tmp/{dest}.png").get("result"):
305
313
  self.agent_client.api.send_chat_message(
@@ -16,7 +16,7 @@ class Topic(IntEnum):
16
16
 
17
17
  class Status(IntEnum):
18
18
  deleted = 40 # order canceled
19
- # created = 10 # waiting for buyer to pay
19
+ created = 10
20
20
  appealable = 20 # waiting for seller to release
21
21
  canceled = 40
22
22
  completed = 50 # order finished
@@ -26,7 +26,6 @@ class Status(IntEnum):
26
26
  paid = 50
27
27
  rejected = 40
28
28
  request_canceled = 40
29
- requested = 10
30
29
  seller_appeal_disputed_by_buyer = 30
31
30
 
32
31
 
@@ -124,7 +124,7 @@ async def main(uid: int):
124
124
  playwright: Playwright = await async_playwright().start()
125
125
  pyr = Client(uid)
126
126
  try:
127
- await pyr.start(playwright, True)
127
+ await pyr.start(playwright, False)
128
128
 
129
129
  dest, amount, cur = "P79619335", 2, "RUB"
130
130
 
@@ -151,4 +151,4 @@ async def main(uid: int):
151
151
 
152
152
 
153
153
  if __name__ == "__main__":
154
- run(main(193017646))
154
+ run(main(1779829771))
@@ -8,7 +8,14 @@ import time
8
8
 
9
9
 
10
10
  async def login(agent: PmAgent):
11
- driver = uc.Chrome(no_sandbox=False, headless=False)
11
+ options = uc.ChromeOptions()
12
+ options.add_argument("--disable-blink-features=AutomationControlled")
13
+ options.add_argument("--no-sandbox")
14
+ options.add_argument("--disable-dev-shm-usage")
15
+ options.add_argument("--window-size=1920,1080")
16
+ options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")
17
+
18
+ driver = uc.Chrome(options=options, headless=True)
12
19
  wait = WebDriverWait(driver, timeout=10)
13
20
  try:
14
21
  driver.get("https://payeer.com/en/auth")
@@ -22,7 +29,10 @@ async def login(agent: PmAgent):
22
29
  login_button = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "login-form__login-btn.step1")))
23
30
  login_button.click()
24
31
  time.sleep(4)
25
- login_button.click()
32
+ try:
33
+ login_button.click()
34
+ except Exception:
35
+ pass
26
36
  time.sleep(1)
27
37
  if (v := driver.find_elements(By.CLASS_NAME, "form-input-top")) and v[0].text == "Введите проверочный код":
28
38
  code = input("Email code: ")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.120
3
+ Version: 0.0.124
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
@@ -13,7 +13,8 @@ Requires-Dist: msgspec
13
13
  Requires-Dist: python-binance
14
14
  Requires-Dist: pybit
15
15
  Requires-Dist: pyotp
16
- Requires-Dist: kurigram
16
+ Requires-Dist: pypng
17
+ Requires-Dist: kurigram<2.2.10
17
18
  Requires-Dist: payeer-api
18
19
  Requires-Dist: playwright
19
20
  Requires-Dist: python-dotenv
@@ -6,7 +6,8 @@ msgspec
6
6
  python-binance
7
7
  pybit
8
8
  pyotp
9
- kurigram
9
+ pypng
10
+ kurigram<2.2.10
10
11
  payeer-api
11
12
  playwright
12
13
  python-dotenv
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes