xync-client 0.0.139__py3-none-any.whl → 0.0.143__py3-none-any.whl

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.

@@ -6,7 +6,9 @@ from enum import StrEnum
6
6
 
7
7
  from playwright.async_api import Page, Playwright
8
8
  from pyro_client.client.file import FileClient
9
- from xync_client.loader import TOKEN
9
+ from pyro_client.client.user import UserClient
10
+
11
+ from xync_client.loader import NET_TOKEN
10
12
  from xync_schema.enums import UserStatus
11
13
  from xync_schema.models import PmAgent, User
12
14
 
@@ -22,24 +24,22 @@ class PmAgentClient(metaclass=ABCMeta):
22
24
  OTP_LOGIN = base + "login/otp"
23
25
 
24
26
  norm: str
25
- uid: int
26
27
  agent: PmAgent
27
- bot: FileClient
28
+ bot: FileClient | UserClient
28
29
  page: Page
29
30
  pages: type(StrEnum) = Pages
30
31
  last_page: int = 0
31
32
  last_active: datetime = datetime.now()
32
33
  _is_started: bool = False
33
34
 
34
- async def start(self, pw: Playwright, headed: bool = False) -> "PmAgentClient":
35
- dct = dict(user__status__gte=UserStatus.PAY, pm__norm=self.norm)
36
- if self.uid:
37
- dct.update({"user__username_id": self.uid})
38
-
39
- self.bot = FileClient(TOKEN)
35
+ async def start(self, pw: Playwright, headed: bool = False, userbot: bool = False) -> "PmAgentClient":
36
+ bot = FileClient(NET_TOKEN)
37
+ self.bot = UserClient(self.uid, bot) if userbot else bot
40
38
  await self.bot.start()
41
39
 
42
- self.browser = await pw.chromium.launch(channel="chromium-headless-shell", headless=not headed)
40
+ self.browser = await pw.chromium.launch(
41
+ channel="chromium" if headed else "chromium-headless-shell", headless=not headed
42
+ )
43
43
  context = await self.browser.new_context(storage_state=self.agent.state)
44
44
  self.page = await context.new_page()
45
45
  await self.page.goto(self.pages.SEND) # Оптимистично переходим сразу на страницу отправки
@@ -90,3 +90,4 @@ class PmAgentClient(metaclass=ABCMeta):
90
90
  def __init__(self, agent: PmAgent):
91
91
  self.agent = agent
92
92
  self.uid = agent.user.username_id
93
+ self.norm = agent.pm.norm
xync_client/Binance/ex.py CHANGED
@@ -6,7 +6,7 @@ from x_model import init_db
6
6
  from xync_client.Abc.Ex import BaseExClient
7
7
  from xync_client.Binance.etype import pm, ad
8
8
  from xync_client.Abc.xtype import PmEx, MapOfIdsList
9
- from xync_client.loader import TOKEN, TORM
9
+ from xync_client.loader import NET_TOKEN, TORM
10
10
 
11
11
  from xync_schema.models import Ex
12
12
  from xync_schema import xtype
@@ -139,7 +139,7 @@ class ExClient(BaseExClient):
139
139
  async def main():
140
140
  _ = await init_db(TORM)
141
141
  ex = await Ex.get(name="Binance")
142
- async with FileClient(TOKEN) as b:
142
+ async with FileClient(NET_TOKEN) as b:
143
143
  cl = ExClient(ex, b)
144
144
  await cl.set_pms()
145
145
  await cl.set_coins()
xync_client/BingX/ex.py CHANGED
@@ -8,7 +8,7 @@ from xync_schema import xtype
8
8
 
9
9
  from xync_client.Abc.Ex import BaseExClient
10
10
  from xync_client.BingX.base import BaseBingXClient
11
- from xync_client.loader import TOKEN, TORM
11
+ from xync_client.loader import NET_TOKEN, TORM
12
12
  from xync_client.Abc.xtype import MapOfIdsList
13
13
  from xync_client.BingX.etype import ad, pm
14
14
  from xync_client.Abc.xtype import PmEx
@@ -93,7 +93,7 @@ class ExClient(BaseExClient, BaseBingXClient):
93
93
  async def main():
94
94
  _ = await init_db(TORM, True)
95
95
  bg = await Ex.get(name="BingX").prefetch_related("pm_reps")
96
- async with FileClient(TOKEN) as b:
96
+ async with FileClient(NET_TOKEN) as b:
97
97
  b: FileClient
98
98
  cl = ExClient(bg, b)
99
99
  _ads = await cl.ads(
xync_client/BitGet/ex.py CHANGED
@@ -6,7 +6,7 @@ from xync_schema.models import Ex
6
6
  from xync_schema import xtype
7
7
 
8
8
  from xync_client.Abc.Ex import BaseExClient
9
- from xync_client.loader import TORM, TOKEN
9
+ from xync_client.loader import TORM, NET_TOKEN
10
10
  from xync_client.Abc.xtype import PmEx, MapOfIdsList
11
11
  from xync_client.BitGet.etype import ad
12
12
 
@@ -94,7 +94,7 @@ class ExClient(BaseExClient):
94
94
  async def main():
95
95
  _ = await init_db(TORM, True)
96
96
  bg = await Ex.get(name="BitGet")
97
- cl = ExClient(bg, FileClient(TOKEN))
97
+ cl = ExClient(bg, FileClient(NET_TOKEN))
98
98
  _ads = await cl.ads("USDT", "RUB", False, [])
99
99
  await cl.curs()
100
100
  await cl.coins()
@@ -19,7 +19,6 @@ from xync_client.Abc.PmAgent import PmAgentClient
19
19
  from xync_schema import models
20
20
  from xync_schema.enums import UserStatus, OrderStatus
21
21
 
22
- from xync_client.Pms.Payeer import Client
23
22
  from xync_client.Bybit.etype.order import (
24
23
  StatusChange,
25
24
  CountDown,
@@ -29,7 +28,7 @@ from xync_client.Bybit.etype.order import (
29
28
  OrderFull,
30
29
  StatusApi,
31
30
  )
32
- from xync_client.loader import TOKEN
31
+ from xync_client.loader import NET_TOKEN
33
32
  from xync_client.Abc.InAgent import BaseInAgentClient
34
33
  from xync_client.Bybit.agent import AgentClient
35
34
 
@@ -407,17 +406,18 @@ async def main():
407
406
  person__user__status=UserStatus.ACTIVE,
408
407
  person__user__pm_agents__isnull=False,
409
408
  )
410
- .prefetch_related("ex", "agent", "person__user__pm_agents")
409
+ .prefetch_related("ex", "agent", "person__user__pm_agents__user", "person__user__pm_agents__pm")
411
410
  .first()
412
411
  )
413
412
 
414
- async with FileClient(TOKEN) as b:
413
+ async with FileClient(NET_TOKEN) as b:
415
414
  b: FileClient
416
415
  cl: InAgentClient = actor.in_client(b)
417
416
  # await cl.agent_client.export_my_ads()
418
- payeer_cl = Client(actor.person.user.username_id)
417
+ # payeer_cl = Client(actor.person.user.username_id)
419
418
  for pma in actor.person.user.pm_agents:
420
- cl.pmacs[pma.pm_id] = await payeer_cl.start(await async_playwright().start(), False)
419
+ pcl = pma.client()
420
+ cl.pmacs[pma.pm_id] = await pcl.start(await async_playwright().start(), False)
421
421
  try:
422
422
  _ = await cl.start_listen()
423
423
  except Exception as e:
@@ -43,7 +43,7 @@ from xync_client.Bybit.etype.order import (
43
43
  Message,
44
44
  Status,
45
45
  )
46
- from xync_client.loader import TORM, TOKEN
46
+ from xync_client.loader import TORM, NET_TOKEN
47
47
 
48
48
 
49
49
  class NoMakerException(Exception):
@@ -1264,7 +1264,7 @@ async def main():
1264
1264
  actor = (
1265
1265
  await models.Actor.filter(ex_id=4, agent__isnull=False).prefetch_related("ex", "agent", "person__user").first()
1266
1266
  )
1267
- filebot = FileClient(TOKEN)
1267
+ filebot = FileClient(NET_TOKEN)
1268
1268
  await filebot.start()
1269
1269
  # b.add_handler(MessageHandler(cond_start_handler, command("cond")))
1270
1270
  cl: AgentClient = actor.client(filebot)
@@ -1315,10 +1315,10 @@ async def main():
1315
1315
  hist |= papi.history(count=1000, append=list(hist.keys())[-1])
1316
1316
  cl.hist = hist
1317
1317
 
1318
- cl.completed_orders = await models.Order.filter(status=OrderStatus.completed, transfer__isnull=False).values_list(
1319
- "exid", flat=True
1320
- )
1321
- await cl.get_api_orders() # 43, 1741294800000, 1749157199999)
1318
+ # cl.completed_orders = await models.Order.filter(status=OrderStatus.completed, transfer__isnull=False).values_list(
1319
+ # "exid", flat=True
1320
+ # )
1321
+ # await cl.get_api_orders() # 43, 1741294800000, 1749157199999)
1322
1322
 
1323
1323
  races = await models.Race.filter(started=True).prefetch_related(
1324
1324
  "road__ad__pair_side__pair__cur",
xync_client/Bybit/ex.py CHANGED
@@ -7,7 +7,7 @@ from xync_schema import models, xtype
7
7
  from xync_schema.models import Ex, Agent
8
8
 
9
9
  from xync_client.Abc.Ex import BaseExClient
10
- from xync_client.loader import TOKEN
10
+ from xync_client.loader import NET_TOKEN
11
11
  from xync_client.Bybit.etype import ad
12
12
  from xync_client.Abc.xtype import PmEx, MapOfIdsList
13
13
  from xync_client.loader import TORM
@@ -114,7 +114,7 @@ class ExClient(BaseExClient): # Bybit client
114
114
  async def main():
115
115
  _ = await init_db(TORM, True)
116
116
  ex = await Ex.get(name="Bybit")
117
- bot: FileClient = FileClient(TOKEN)
117
+ bot: FileClient = FileClient(NET_TOKEN)
118
118
  # await bot.start()
119
119
  cl = ExClient(ex, bot)
120
120
  await cl.set_pms()
xync_client/Gate/ex.py CHANGED
@@ -6,7 +6,7 @@ from xync_schema.models import Ex
6
6
  from xync_schema import xtype
7
7
 
8
8
  from xync_client.Abc.Ex import BaseExClient
9
- from xync_client.loader import TOKEN, TORM
9
+ from xync_client.loader import NET_TOKEN, TORM
10
10
  from xync_client.Abc.xtype import PmEx, MapOfIdsList
11
11
  from xync_client.Gate.etype import ad
12
12
 
@@ -93,7 +93,7 @@ class ExClient(BaseExClient):
93
93
  async def main():
94
94
  _ = await init_db(TORM, True)
95
95
  gt = await Ex.get(name="Gate")
96
- async with FileClient(TOKEN) as b:
96
+ async with FileClient(NET_TOKEN) as b:
97
97
  cl = ExClient(gt, b)
98
98
  await cl.set_pairs()
99
99
  pms = await cl.set_coins()
@@ -1,9 +1,9 @@
1
1
  from playwright.async_api import Page, Playwright
2
- from pyro_client.client.bot import BotClient
2
+ from pyro_client.client.file import FileClient
3
3
  from pyro_client.client.user import UserClient
4
4
  from xync_schema.models import User, Gmail
5
5
 
6
- from xync_client.loader import TOKEN
6
+ from xync_client.loader import NET_TOKEN
7
7
 
8
8
 
9
9
  class GmClient:
@@ -23,7 +23,7 @@ class GmClient:
23
23
  login=input(f"{self.user.last_name} gmail login:"), password=input("password:")
24
24
  )
25
25
  browser = await pw.chromium.launch(
26
- channel="chrome",
26
+ channel="chrome" if headed else "chromium-headless-shell",
27
27
  headless=not headed,
28
28
  args=[
29
29
  "--disable-blink-features=AutomationControlled",
@@ -83,8 +83,8 @@ class GmClient:
83
83
 
84
84
  async def load_bot(self):
85
85
  if not self.bot:
86
- bot = await BotClient(TOKEN)
87
- self.bot = await UserClient(self.uid, bot)
86
+ bot = FileClient(NET_TOKEN)
87
+ self.bot = UserClient(self.uid, bot)
88
88
  if not self.bot.is_connected:
89
89
  await self.bot.start()
90
90
 
xync_client/Htx/ex.py CHANGED
@@ -11,7 +11,7 @@ from xync_schema.enums import PmType
11
11
  from xync_client.Abc.Ex import BaseExClient
12
12
  from xync_client.Abc.xtype import PmEx, MapOfIdsList
13
13
  from xync_client.Htx.etype import pm, Country, ad
14
- from xync_client.loader import TOKEN
14
+ from xync_client.loader import NET_TOKEN
15
15
  from xync_client.loader import TORM
16
16
 
17
17
 
@@ -156,7 +156,7 @@ class ExClient(BaseExClient):
156
156
  async def main():
157
157
  _ = await init_db(TORM, True)
158
158
  ex = await Ex.get(name="Htx")
159
- async with FileClient(TOKEN) as b:
159
+ async with FileClient(NET_TOKEN) as b:
160
160
  b: FileClient
161
161
  cl = ExClient(ex, b)
162
162
  await cl.set_curs()
xync_client/KuCoin/ex.py CHANGED
@@ -2,7 +2,7 @@ from asyncio import run
2
2
 
3
3
  from pyro_client.client.file import FileClient
4
4
  from x_model import init_db
5
- from xync_client.loader import TORM, TOKEN
5
+ from xync_client.loader import TORM, NET_TOKEN
6
6
  from xync_schema import models
7
7
  from xync_schema import xtype
8
8
 
@@ -80,7 +80,7 @@ class ExClient(BaseExClient):
80
80
  async def main():
81
81
  _ = await init_db(TORM, True)
82
82
  bg = await models.Ex.get(name="KuCoin")
83
- async with FileClient(TOKEN) as b:
83
+ async with FileClient(NET_TOKEN) as b:
84
84
  cl: ExClient = bg.client(b)
85
85
  await cl.set_pms()
86
86
  await cl.set_coins()
xync_client/Mexc/ex.py CHANGED
@@ -3,7 +3,7 @@ from asyncio import run
3
3
  from pyro_client.client.file import FileClient
4
4
  from x_model import init_db
5
5
  import requests
6
- from xync_client.loader import TORM, TOKEN
6
+ from xync_client.loader import TORM, NET_TOKEN
7
7
 
8
8
  from xync_client.Abc.Ex import BaseExClient
9
9
  from xync_client.Abc.xtype import PmEx, MapOfIdsList
@@ -90,7 +90,7 @@ class ExClient(BaseExClient):
90
90
 
91
91
  async def main():
92
92
  _ = await init_db(TORM)
93
- async with FileClient(TOKEN) as b:
93
+ async with FileClient(NET_TOKEN) as b:
94
94
  ex = await Ex.get(name="Mexc")
95
95
  cl = ex.client(b)
96
96
  # await ex.curexs.filter(cur__ticker="EUR")
xync_client/Okx/ex.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from asyncio import run
2
2
 
3
3
  from pyro_client.client.file import FileClient
4
- from pyro_client.loader import TOKEN
4
+ from pyro_client.loader import NET_TOKEN
5
5
  from x_model import init_db
6
6
 
7
7
  from xync_client.Abc.Exception import NoPairOnEx
@@ -102,7 +102,7 @@ class ExClient(BaseExClient):
102
102
  async def main():
103
103
  _ = await init_db(TORM)
104
104
  bg = await models.Ex.get(name="Okx")
105
- cl = ExClient(bg, FileClient(TOKEN))
105
+ cl = ExClient(bg, FileClient(NET_TOKEN))
106
106
  await cl.ads("USDT", "EUR", True)
107
107
  # curs = await cl.curs()
108
108
  # coins = await cl.coins()
@@ -4,22 +4,20 @@ from asyncio import run, ensure_future
4
4
  from decimal import Decimal
5
5
  from enum import StrEnum
6
6
  from hashlib import sha256
7
- from typing import Literal
8
7
 
9
8
  from playwright.async_api import async_playwright, Page, Locator, Position, Playwright # , FloatRect
10
9
  from pyotp import TOTP
11
10
 
12
11
  # noinspection PyProtectedMember
13
12
  from playwright._impl._errors import TimeoutError
14
- from pyro_client.client.bot import BotClient
15
13
  from pyro_client.client.user import UserClient
14
+ from pyrogram.handlers import MessageHandler
16
15
  from xync_schema.enums import UserStatus
17
16
  from xync_schema.models import Cur, User, PmAgent, Cred, PmCur, Fiat, TopUp
18
17
 
19
18
  from xync_client.Abc.PmAgent import PmAgentClient
20
19
  from xync_client.Gmail import GmClient
21
20
  from xync_client.Pms.Volet.api import APIClient
22
- from xync_client.loader import TOKEN
23
21
 
24
22
 
25
23
  class CaptchaException(Exception): ...
@@ -34,14 +32,6 @@ class NoCodeException(Exception): ...
34
32
  class NoMailException(Exception): ...
35
33
 
36
34
 
37
- class Pages(StrEnum):
38
- base_url = "https://account.volet.com/"
39
- LOGIN = base_url + "login"
40
- OTP_LOGIN = base_url + "login/otp"
41
- HOME = base_url + "pages/transaction"
42
- SEND = base_url + "pages/transfer/wallet"
43
-
44
-
45
35
  def parse_transaction_info(text: str) -> dict[str, str] | None:
46
36
  # Поиск ID транзакции
47
37
  transaction_id_match = re.search(r"Transaction ID:\s*([\w-]+)", text)
@@ -61,8 +51,12 @@ def parse_transaction_info(text: str) -> dict[str, str] | None:
61
51
 
62
52
 
63
53
  class Client(PmAgentClient):
64
- async def _login(self):
65
- pass
54
+ class Pages(StrEnum):
55
+ base = "https://account.volet.com/"
56
+ LOGIN = base + "login"
57
+ OTP_LOGIN = base + "login/otp"
58
+ # HOME = base + "pages/transaction"
59
+ SEND = base + "pages/transfer/wallet"
66
60
 
67
61
  async def check_in(self, amount: int | Decimal | float, cur: str, tid: str | int = None) -> float | None:
68
62
  pass
@@ -76,6 +70,8 @@ class Client(PmAgentClient):
76
70
  api: APIClient
77
71
  page: Page
78
72
  gmail: GmClient
73
+ norm: str = "payeer"
74
+ pages: type(StrEnum) = Pages
79
75
 
80
76
  def __init__(self, agent: PmAgent):
81
77
  super().__init__(agent)
@@ -118,51 +114,37 @@ class Client(PmAgentClient):
118
114
  }
119
115
 
120
116
  async def start(self, pw: Playwright, headed: bool = False):
121
- self.agent = await PmAgent.get(
122
- user__username_id=self.uid, user__status__gte=UserStatus.PAY, pm__norm="volet"
123
- ).prefetch_related("user__gmail", "user__username__session")
124
- # await self.upd_balances()
125
- bot = await BotClient(TOKEN)
126
- self.bot = await UserClient(self.uid, bot)
127
- await self.bot.start()
128
-
129
- browser = await pw.chromium.launch(channel="chrome", headless=not headed, timeout=9000)
130
- context = await browser.new_context(storage_state=self.agent.state, locale="en")
131
- self.page = await context.new_page()
132
- ensure_future(self.gmail.start(pw, headed))
133
- await self.go(Pages.HOME)
134
- if self.page.url == Pages.LOGIN:
135
- await self.login()
136
- # elif self.page.url == Pages.OTP_LOGIN:
137
- # await self.login_otp()
138
- if self.page.url != Pages.HOME:
139
- await self.bot.receive("Not logged in!", photo=await self.page.screenshot())
140
- raise Exception(f"User {self.agent.user_id} has not logged in")
141
-
142
- async def wait_for_code(self, typ: Literal["login", "send"]) -> str:
143
- code = await self.bot.wait_from(243630567, f"otp_{typ}")
144
- return code[-6:]
145
-
146
- async def login(self):
147
- await self.page.locator("input#j_username").fill("mixartemev@gmail.com")
117
+ ensure_future(self.gmail.start(pw, False))
118
+ return await super().start(pw, False, True)
119
+
120
+ async def wait_for_code(self, uid: int, topic: str, hg: tuple[MessageHandler, int]) -> str:
121
+ code = await self.bot.wait_from(uid, topic, hg)
122
+ return code and code[-6:]
123
+
124
+ async def _login(self):
125
+ ll = self.page.locator("input#j_username")
126
+ await ll.fill("mixartemev@gmail.com")
148
127
  await self.page.locator("input#j_password").fill("mixfixX98")
128
+ await self.page.wait_for_timeout(200)
129
+ await ll.click()
130
+ volet_bot_id, topic = 243630567, "otp_login"
149
131
  await self.page.locator("input#loginToAdvcashButton", has_text="log in").hover()
132
+ hg = self.bot.subscribe_for(volet_bot_id, topic) # 243630567 - is volet bot
150
133
  await self.page.locator("input#loginToAdvcashButton:not([disabled])", has_text="log in").click()
151
- await self.page.wait_for_url(Pages.OTP_LOGIN)
152
- await self.login_otp()
153
-
154
- async def login_otp(self):
155
- if not (code := await self.wait_for_code("login")):
134
+ await self.page.wait_for_url(self.pages.OTP_LOGIN)
135
+ if not (code := await self.wait_for_code(volet_bot_id, topic, hg)):
156
136
  await self.bot.receive("no login code", photo=await self.page.screenshot())
157
137
  raise NoCodeException(self.agent.user_id)
158
138
  await self.page.locator("input#otpId").fill(code)
159
139
  await self.page.click("input#checkOtpButton")
160
- await self.page.wait_for_url(Pages.HOME)
140
+ await self.page.wait_for_url(self.pages.SEND)
141
+
142
+ async def send(self, dest: str, amount: float, cur: str) -> tuple[int, bytes, float]:
143
+ curs_map = {"RUB": "Ruble"}
161
144
 
162
- async def send(self, dest: str, amount: float):
163
- await self.go(Pages.SEND)
145
+ await self.go(self.pages.SEND)
164
146
  await self.page.click("[class=combobox-account]")
165
- await self.page.click('[class=rf-ulst-itm] b:has-text("Ruble ")')
147
+ await self.page.click(f'[class=rf-ulst-itm] b:has-text("{curs_map[cur]}") ")')
166
148
  await self.page.wait_for_timeout(200)
167
149
  await self.page.fill("#srcAmount", str(amount))
168
150
  await self.page.fill("#destWalletId", dest)
@@ -182,7 +164,7 @@ class Client(PmAgentClient):
182
164
  raise OtpNotSetException(self.agent.user_id)
183
165
  await self.page.fill("#securityValue", code)
184
166
  await self.page.locator("input[type=submit]", has_text="confirm").click()
185
- await self.page.wait_for_url(Pages.SEND)
167
+ await self.page.wait_for_url(self.pages.SEND)
186
168
  await self.page.get_by_role("heading").click()
187
169
  slip = await self.page.screenshot(clip={"x": 440, "y": 205, "width": 420, "height": 360})
188
170
  await self.bot.receive(f"{amount} to {dest} sent", photo=slip)
@@ -264,7 +246,7 @@ class Client(PmAgentClient):
264
246
 
265
247
  async def _test():
266
248
  from x_model import init_db
267
- from xync_schema import TORM
249
+ from xync_client.loader import TORM
268
250
 
269
251
  _ = await init_db(TORM, True)
270
252
  logging.basicConfig(level=logging.DEBUG)
@@ -16,7 +16,7 @@ from xync_client.TgWallet.pyd import (
16
16
  _PmsTrait,
17
17
  _BaseAd,
18
18
  )
19
- from xync_client.loader import TOKEN, TORM
19
+ from xync_client.loader import NET_TOKEN, TORM
20
20
  from xync_client.Abc.Ex import BaseExClient
21
21
  from xync_client.Abc.xtype import MapOfIdsList
22
22
  from xync_client.TgWallet.auth import AuthClient
@@ -156,7 +156,7 @@ class ExClient(BaseExClient, AuthClient):
156
156
  async def _test():
157
157
  await init_db(TORM)
158
158
  tgex = await models.Ex.get(name="TgWallet")
159
- async with FileClient(TOKEN) as b:
159
+ async with FileClient(NET_TOKEN) as b:
160
160
  cl: ExClient = tgex.client(b)
161
161
 
162
162
  await cl.set_coins()
xync_client/loader.py CHANGED
@@ -4,7 +4,7 @@ from xync_schema import models
4
4
 
5
5
  load_dotenv()
6
6
 
7
- TOKEN = env("TOKEN")
7
+ NET_TOKEN = env("NET_TOKEN")
8
8
  PG_DSN = f"postgres://{env('POSTGRES_USER')}:{env('POSTGRES_PASSWORD')}@{env('POSTGRES_HOST', 'xyncdbs')}:{env('POSTGRES_PORT', 5432)}/{env('POSTGRES_DB', env('POSTGRES_USER'))}"
9
9
  TORM = {
10
10
  "connections": {"default": PG_DSN},
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.139
3
+ Version: 0.0.143
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
@@ -1,6 +1,6 @@
1
1
  xync_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  xync_client/details.py,sha256=21itVPCgAtaYRR1H9J9oYudj95gafcFjExUN6QL17OI,1330
3
- xync_client/loader.py,sha256=qAOQqE4id42aOG3jwc0UMBB8roHd6X3_O08qRG7Bfxw,563
3
+ xync_client/loader.py,sha256=zhslCMgtgp-xINPG4qQwhI1ee5Ap1vuoC8oK7GyhyMw,571
4
4
  xync_client/pm_unifier.py,sha256=T2Xh-tvcu114P2YBI6RK_XDiaIhyq6ABMrXDuXPlx7A,6541
5
5
  xync_client/Abc/Agent.py,sha256=OJaJ1RIMDYAS4xeefeXxVIVI0EKnMczQtrO35MLzqr4,5390
6
6
  xync_client/Abc/Asset.py,sha256=hlgyFaU9byr2N2r8Heh-_ICx49SKuKxfRTUA4yQWmEw,454
@@ -10,12 +10,12 @@ xync_client/Abc/Ex.py,sha256=n41-XCjoIV-KpC_lK3jO049tQKbFmE0eDU3SDlgZTws,12986
10
10
  xync_client/Abc/Exception.py,sha256=Sts7RpP370NBdjaH_cyXDdHtjge8zXNUGWCrKw49Zyk,482
11
11
  xync_client/Abc/InAgent.py,sha256=svKGATUM0c9YIDDEVLc-NxpUNWqZoVr5PjxoxK64RKs,650
12
12
  xync_client/Abc/Order.py,sha256=7-FGIJu5z9aYi0A_eJV4F-cp_6Mz_izNpefexDQZvHw,2428
13
- xync_client/Abc/PmAgent.py,sha256=bvBHzzfg5-X6-JSPS0WGC6d69Cr57GWlMFKBq7x1yJw,4024
13
+ xync_client/Abc/PmAgent.py,sha256=wS1ZQs-hcC8ICDLcc9EfyNBKrM_ZDpJolAg-l_5ro-8,4094
14
14
  xync_client/Abc/xtype.py,sha256=o1JEzWmEXCPddtlqWZ6HRTZTKX6SAnvsztbASj21zOQ,2584
15
15
  xync_client/Binance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  xync_client/Binance/binance_async.py,sha256=LP2DZaHwkfsp_4Tjvetb-1ntjQtJfODF0OgZpoPx4KU,2688
17
17
  xync_client/Binance/earn_api.py,sha256=hvk0MaVTLszIglQXVhbUjGcaHfbF9Ul7FFXmy94U2so,4411
18
- xync_client/Binance/ex.py,sha256=QACoWp_xFdS9LD1aWv6zZHw-FMCxx1YXkIvt7zn_1gg,5360
18
+ xync_client/Binance/ex.py,sha256=m9KvSS-FjPe0BH-npkoqaIZ2WyNUsddxEgrbUpFzGsw,5368
19
19
  xync_client/Binance/exceptions.py,sha256=An-TK5_SKmGXMdGIs_K59u-0iBpqVgOPfkJqrEELcGQ,847
20
20
  xync_client/Binance/sapi.py,sha256=_2eXFtcFIerjvyyyqqSnwZxCqQPiMUdqAXJj7hyOQDQ,9584
21
21
  xync_client/Binance/web_c2c.py,sha256=WZ2BVq26ZcdOEcRvRsEKxvwe6x-XQ51b-nEFFAaRNOk,9249
@@ -24,19 +24,19 @@ xync_client/Binance/etype/pm.py,sha256=rorFX4HDjqDQwJ7Kqx41KOO1JJAi4yWbe4pkGAMmR
24
24
  xync_client/BingX/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  xync_client/BingX/agent.py,sha256=F-QvzPCwwSvgFe5DafscT-puISbqCw23iTnvbfXlV-k,4318
26
26
  xync_client/BingX/base.py,sha256=Zx2H21iZrF94cMOz3imz6djMMNzAaB_iJSzDSP6beXo,739
27
- xync_client/BingX/ex.py,sha256=m47cXkmd6vzh_i4NuNeCcYHcCYz2dX5Jt7q-UTP6CEY,4267
27
+ xync_client/BingX/ex.py,sha256=QzHaEEB_mnOSdMSfvg3Odd9oHortj6wZeIC7fPPFFf4,4275
28
28
  xync_client/BingX/req.mjs,sha256=JvLv1KBKsiIVVvRmAFC0RqpsxkBcwqbjk2_PGCubnX0,304
29
29
  xync_client/BingX/sign.js,sha256=uTfbKV0Y7bKapOs1AtlT1FmduelwvH2pGqIxCK2z5NY,100086
30
30
  xync_client/BingX/etype/ad.py,sha256=aUsZcvhk418d73SaOQlZYYYikHN1zFVYj49d5Xzb6qc,1360
31
31
  xync_client/BingX/etype/pm.py,sha256=hKaUHwkZC2ioBv_mNfIIutDkNNhO_ljhsCtSy2uwLAY,128
32
32
  xync_client/BitGet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  xync_client/BitGet/agent.py,sha256=YVs3bDY0OcEJGU7m2A8chzO6PFhWDnQQrA-E6MVkBBg,3030
34
- xync_client/BitGet/ex.py,sha256=nAexKRkguIhq4fYP1tkIaou6oBFjjV2xwlajlJ-9DAE,3757
34
+ xync_client/BitGet/ex.py,sha256=uEvvXuLaJv8o8BFi0bMA3XyBuTfVDWagAjLOHZl-xlE,3765
35
35
  xync_client/BitGet/etype/ad.py,sha256=fysSW47wGYjSOPUqY864z857AJz4gjN-nOkI1Jxd27U,1838
36
36
  xync_client/BitPapa/ex.py,sha256=U-RRB_RSOtErfRgxOZYWegZ_td_uZO37YKo3Jxchf_w,912
37
- xync_client/Bybit/InAgent.py,sha256=EzxMwbSVPv5CKGWzILSwKMEvuIzIl4wtdaPNbkhrln0,25294
38
- xync_client/Bybit/agent.py,sha256=wpFGareRojeG0nW1mBrtxU9HJlQjStsexdTRMm_3s_w,61753
39
- xync_client/Bybit/ex.py,sha256=DgPOmnjphcSCSsO4ZQjnIlWICNzdtKhNIpVsU93s99k,4707
37
+ xync_client/Bybit/InAgent.py,sha256=QQTRWcZXhNO-AZi9wfCAA-x24FIRL00_f4T5xCVgC10,25324
38
+ xync_client/Bybit/agent.py,sha256=fz76f-6g81TnFoFqWX0AqMaKvnYzgYKfhpkckIOM0cM,61769
39
+ xync_client/Bybit/ex.py,sha256=3oARvReBoDs90FzQY31-L-q_YU-TIRbvWB7z4lwESsA,4715
40
40
  xync_client/Bybit/order.py,sha256=H4UIb8hxFGnw1hZuSbr0yZ4qeaCOIZOMc6jEst0ycBs,1713
41
41
  xync_client/Bybit/web_earn.py,sha256=qjqS10xlFc8r40IhDdPZ0LxA2dFEGbvBGXdsrUUJCMo,3019
42
42
  xync_client/Bybit/web_p2p.py,sha256=sAXzK03t6jwDnz4rrvP2IzI0KxfKa7C_5GuzH1HwLuA,11768
@@ -44,26 +44,26 @@ xync_client/Bybit/ws.py,sha256=OQjZHo_MiAH1dlOs3c-aUZBKyqToNTmH560udh6RYDE,1431
44
44
  xync_client/Bybit/etype/ad.py,sha256=HJOHi9KrbLQMpwEyd4oA8436QTNRqrd2HWFF-JNZGDo,8066
45
45
  xync_client/Bybit/etype/cred.py,sha256=dgFExLB4e5Wf6SqfU9SOdeooHQa84DRbTGm_OJhNw_o,1354
46
46
  xync_client/Bybit/etype/order.py,sha256=rPXw9eHJW3afVPQDRiooUkHfQhmqJ5fTdZ4vKdO6uHQ,8273
47
- xync_client/Gate/ex.py,sha256=1vSXctCOyZfYDojkHU6u4YSXwYTLg-e7BfAdGKvZ_UM,3727
47
+ xync_client/Gate/ex.py,sha256=QbhB3u7TWnvVGD-AknB2nay6KZjEXQ-1JT9UacX4sWI,3735
48
48
  xync_client/Gate/premarket.py,sha256=IW-CgkmNJePJR2j_NRfULNKTePMX35XlhldqdiO76zY,2138
49
49
  xync_client/Gate/etype/ad.py,sha256=-EwtFcOWWvtE6UjaOdsuXWDTCVjAIRK0kSEsqPP4Yls,1296
50
- xync_client/Gmail/__init__.py,sha256=6aXhqtiVS5lA6O_W1276kamnixlH5OmUFklqwbVG4RA,4647
50
+ xync_client/Gmail/__init__.py,sha256=YYMDDstX8f_LVGLvqmNJi07I8BMqWhfAhLZuFQKcqcA,4687
51
51
  xync_client/Htx/agent.py,sha256=rOURgTeY9TsA-IzT78l5-Ze91i0x1PY683mrX38MSgs,7356
52
52
  xync_client/Htx/earn.py,sha256=jL6eRwytZEMRom_3bFm1DYthi_GFg-E1Mm3ZDXENHSg,2386
53
- xync_client/Htx/ex.py,sha256=KobBInICyuEdvwRbMe8SYfAQYczn5_7CvNdu5_CXvL0,6066
53
+ xync_client/Htx/ex.py,sha256=GuWK5lA_MvtSd-0DhKf2MAstKvZMHhc3BIiZSgdwZv4,6074
54
54
  xync_client/Htx/etype/__init__.py,sha256=sZIhFOxj2dRQRmMe86-y9vlzOGAPo1qoOi6u1qVxWr0,123
55
55
  xync_client/Htx/etype/ad.py,sha256=bShCGHRAvFJxt2io5rjQrEFMB0zZzkTww7sBxIcmLVM,2000
56
56
  xync_client/Htx/etype/cred.py,sha256=sAOQTsk7BA8zBWUkkwM6vIQcq1LcSK5NLYGrkTdtkQ8,1129
57
57
  xync_client/Htx/etype/pm.py,sha256=ILCP9reFRkfuzmtsJDYomJ3WBTU4s_KE-69JksTxwMk,375
58
58
  xync_client/Htx/etype/test.py,sha256=uomFicPE1OoA3WXnXOxhsTtGJEpVCQ0CId9D0NI6vto,893
59
- xync_client/KuCoin/ex.py,sha256=Ovni7nj4-Z5jeP_YBPQAAq8N31PAu45mzsVIbYlmyMA,3229
59
+ xync_client/KuCoin/ex.py,sha256=w-6-aedlC1mYf8LShMv6pOrQzqMR9E6yIyXGUHQP888,3237
60
60
  xync_client/KuCoin/web.py,sha256=--OHS0Z29xjfNUjdTL7K0EDmU4dwej95OJ8Sv4PsxLI,920
61
61
  xync_client/KuCoin/etype/ad.py,sha256=MTx90Qo2xFKvfgIr4_qMowjwO23HVpFCD6J7INNFDuQ,1223
62
62
  xync_client/KuCoin/etype/pm.py,sha256=S50S5fyY5YeWlcPwO66o-GsPcdqgoeXuxvmEIy6Zqvs,130
63
- xync_client/Mexc/ex.py,sha256=WuR-MLwcz5rkHuCewE_jkxv3n6_2ZEPSUaU9SzFnGms,4287
63
+ xync_client/Mexc/ex.py,sha256=jpITGa2GTeYayMVStQOomBW-P0YQoXjKExKZi_kS-2A,4295
64
64
  xync_client/Mexc/etype/ad.py,sha256=GUgvylx_z64CXNcw0YejUQJHg9F59eRo5v0zU7DRrAM,1434
65
65
  xync_client/Mexc/etype/pm.py,sha256=m5kCoMx9IEKUPB-z7YwwymQhASkv2npC4-Z_ePYeeRY,453
66
- xync_client/Okx/ex.py,sha256=7YQ1e2z1NawObbM9Z5js8kaQdwNhv0BkyU0CA3AZMb4,4534
66
+ xync_client/Okx/ex.py,sha256=WG1NSh7wFMNePV0eXDePWELUBD1ksxE_-Q87QaDXLvE,4542
67
67
  xync_client/Okx/etype/ad.py,sha256=rTWMMmDwJK9chBByyihCZcgE5P6c5ti2yR1RbUtev3A,3773
68
68
  xync_client/Okx/etype/pm.py,sha256=MaxeyltowP3ESdOjec2HvSfMBwV_mC6w56Xbw-puadc,251
69
69
  xync_client/Pms/.gitignore,sha256=uGduC1_B8Wc0RiBzBS1YsrLPClFG2e42r1At9taidMI,6
@@ -78,7 +78,7 @@ xync_client/Pms/Payeer/login.py,sha256=W5FAA0reW5x2hSh8sBIWmR38VcYhwvrn1R64IAtWH
78
78
  xync_client/Pms/Sber/__init__.py,sha256=dxQfd9ZPhFTc_C4xrwaxrV6p0SijDCLNzBeUv3oQG38,4926
79
79
  xync_client/Pms/Sber/utils.py,sha256=gIeJspwvoBbOBt-fjxwW4WDHPoL2Evs8LVufsjrFOfo,1870
80
80
  xync_client/Pms/Tinkoff/__init__.py,sha256=ZyLvBEUn-vh-85oPUUDS586AHgvx3c-mkQE3yBQtbw8,5580
81
- xync_client/Pms/Volet/__init__.py,sha256=fHS_0mvih0KRnczh303vmM208IMXwJTbaJMXo60LvHk,11386
81
+ xync_client/Pms/Volet/__init__.py,sha256=v-45Qu1MgUuMfRXnwvzsEDA3s6AJ0-50B_J3vHS0Hws,10728
82
82
  xync_client/Pms/Volet/api.py,sha256=okqppqT7M5E6sswu-xz3L4Y9-ngefBPbFtywRi6A7Xo,3595
83
83
  xync_client/Pms/Volet/pl.py,sha256=l7lvUrpjFoObXPHaseOIAcSbkNqJdpy6OLDutxYJH3U,2451
84
84
  xync_client/Pms/Volet/_todo_req/req.mjs,sha256=ut3Jw37rL5lY7SskjZ9f1l0VE33tuP-PZEYUTcJMc2I,817
@@ -89,13 +89,13 @@ xync_client/Pms/Yandex/__init__.py,sha256=2Fu77vDlnGnhesu-OTSsn8lYsnMGO2eDBxWW57
89
89
  xync_client/TgWallet/agent.py,sha256=2fCB8ea8kEAbMqqcflpZUoHTK6_dQZrxmZbrhXci7nk,22066
90
90
  xync_client/TgWallet/asset.py,sha256=pNauwSE7tp5mKQVxH3W-B1yyEV6ZCefttVElOhyqJ1c,433
91
91
  xync_client/TgWallet/auth.py,sha256=pfoEiOW3bg8oJqD4hFBlSNnxTTVTzr305YrAREqqfFY,1284
92
- xync_client/TgWallet/ex.py,sha256=4fxJLtBPUBCX29ww_4w2CbYQOh9fE_QeTdkpQoO5cvI,8198
92
+ xync_client/TgWallet/ex.py,sha256=N6z9Ht_wZXRR_6qSj8HMYg4URGiLvSjkUZZaJlgvt8k,8206
93
93
  xync_client/TgWallet/inAgent.py,sha256=vJUQNlQviSnDnhSfEubqwz-DnrYtMnS4qZ2gDjnK3Tc,5441
94
94
  xync_client/TgWallet/order.py,sha256=BOmBx5WWfJv0-_-A8DcR-Xd8utqO_VTmSqSegm0cteQ,3818
95
95
  xync_client/TgWallet/pyd.py,sha256=Ys3E8b3RLuyQ26frWT0F0BorkNxVpxnd18tY4Gp9dik,5636
96
96
  xync_client/TgWallet/pyro.py,sha256=2K7QWdo48k4MbbgQt90gdz_HiPck69Njm4xaMjIVgoo,1440
97
97
  xync_client/TgWallet/web.py,sha256=kDcv9SKKQPe91mw1qJBpbuyKYCAmZdfdHJylHumLBVU,1608
98
- xync_client-0.0.139.dist-info/METADATA,sha256=9rxN-VreJl1QAUz5lI4LtIr40e1J2BzTPDFRZNpopXQ,1037
99
- xync_client-0.0.139.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
100
- xync_client-0.0.139.dist-info/top_level.txt,sha256=bmYEVIIrD3v7yFwH-X15pEfRvzhuAdfsAZ2igvNI4O8,12
101
- xync_client-0.0.139.dist-info/RECORD,,
98
+ xync_client-0.0.143.dist-info/METADATA,sha256=ihkIz-z4Ih0vWS2ohLWk4clvAKj4IbviGfNeFVHUJaU,1037
99
+ xync_client-0.0.143.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
100
+ xync_client-0.0.143.dist-info/top_level.txt,sha256=bmYEVIIrD3v7yFwH-X15pEfRvzhuAdfsAZ2igvNI4O8,12
101
+ xync_client-0.0.143.dist-info/RECORD,,