Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed chromedriver.exe
Binary file not shown.
40 changes: 0 additions & 40 deletions docker-compose.yaml

This file was deleted.

59 changes: 0 additions & 59 deletions src/main.py

This file was deleted.

39 changes: 39 additions & 0 deletions telegram/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
version: '3.7'

services:

rabbitmq:
image: 'rabbitmq:latest'

ports:
- '5672:5672'
- '15672:15672'
environment:
RABBITMQ_DEFAULT_USER: "guest"
RABBITMQ_DEFAULT_PASS: "guest"
networks:
- network

telebot:
depends_on:
- rabbitmq
build: tele_bot/
environment:
AMQP_URL: 'amqp://rabbitmq?connection_attempts=5&retry_delay=5'
command: python3.9 main.py
networks:
- network

server:
depends_on:
- rabbitmq
build: src/
environment:
AMQP_URL: 'amqp://rabbitmq?connection_attempts=5&retry_delay=5'
command: python3.9 src/main.py
networks:
- network

networks:
network:
driver: bridge
13 changes: 0 additions & 13 deletions telegram/listener/Dockerfile

This file was deleted.

61 changes: 0 additions & 61 deletions telegram/listener/listener.py

This file was deleted.

7 changes: 7 additions & 0 deletions telegram/src/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM python:3.9
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

COPY . /src
RUN pip install --upgrade pip
RUN pip install -r src/requirements.txt
23 changes: 13 additions & 10 deletions src/counter.py → telegram/src/counter.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,19 @@ def dfs(v: int, p: int):
dfs(0, -1)
ans = str()
pos = N - 1
while pos != 0:
cur_offer = prev[pos]
if cur_offer.init_coin != cur_offer.receive_coin:
ans += "Buy " if cur_offer.sell_buy else "Sell "
ans += "Taker " if cur_offer.maker_commission > cur_offer.taker_commission else "Maker "
ans += cur_offer.market + " " + cur_offer.init_coin + " " + cur_offer.receive_coin + " "
ans += cur_offer.payment + " -> "
else:
ans += cur_offer.init_coin + " Transfer to next market -> "
pos = PosByOffer(cur_offer, "receive")
for i in range(3):
try:
cur_offer = prev[pos]
if cur_offer.init_coin != cur_offer.receive_coin:
ans += "Buy " if cur_offer.sell_buy else "Sell "
ans += "Taker " if cur_offer.maker_commission > cur_offer.taker_commission else "Maker "
ans += cur_offer.market + " " + cur_offer.init_coin + " " + cur_offer.receive_coin + " "
ans += cur_offer.payment + " -> "
else:
ans += cur_offer.init_coin + " Transfer to next market -> "
pos = PosByOffer(cur_offer, "receive")
except Exception:
break
if dp[N - 1] >= 0:
ans += "PROFITABLY!"
else:
Expand Down
28 changes: 28 additions & 0 deletions telegram/src/db_requests/db_session.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import sqlalchemy as sa
import sqlalchemy.ext.declarative as dec
import sqlalchemy.orm as orm
from sqlalchemy.orm import Session

SqlAlchemyBase = dec.declarative_base()

__factory = None


def global_init():
global __factory

if __factory:
return

conn_str = f'postgresql://postgres:NP9IGumJsdIvnDfVkOd0@containers-us-west-192.railway.app:6504/railway'
print(f'Подключение к базе данных по адресу {conn_str}')

engine = sa.create_engine(conn_str)
__factory = orm.sessionmaker(bind=engine)

SqlAlchemyBase.metadata.create_all(engine)


def create_session() -> Session:
global __factory
return __factory()
23 changes: 23 additions & 0 deletions telegram/src/db_requests/offers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import sqlalchemy
from sqlalchemy_serializer import SerializerMixin
import sys
sys.path.append('..')

from src.db_requests.db_session import SqlAlchemyBase


class Offer(SqlAlchemyBase, SerializerMixin): # Это класс, описывающий таблицу в бд
__tablename__ = 'offers'
__table_args__ = {'extend_existing': True}

id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement=True)
market = sqlalchemy.Column(sqlalchemy.Text)
payment = sqlalchemy.Column(sqlalchemy.Text)
sell_buy = sqlalchemy.Column(sqlalchemy.Integer)
init_coin = sqlalchemy.Column(sqlalchemy.Text)
receive_coin = sqlalchemy.Column(sqlalchemy.Text)
id_limit = sqlalchemy.Column(sqlalchemy.Integer)
price = sqlalchemy.Column(sqlalchemy.Float)
maker_commission = sqlalchemy.Column(sqlalchemy.Float)
taker_commission = sqlalchemy.Column(sqlalchemy.Float)

18 changes: 14 additions & 4 deletions src/get_offers.py → telegram/src/get_offers.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
from db_requests import db_session
from db_requests.offers import Offer

from src.db_requests import db_session
from src.db_requests.offers import Offer

limits = {1: 1000, 2: 5000, 3: 10000, 4: 25000, 5: 50000, 6: 100000}
rev_limits = {1000: 1, 5000: 2, 10000: 3, 25000: 4, 50000: 5, 100000: 6}


def get_limits_list(limit):
limit = int(limit)
cur_limit_id = []
for lim in sorted(rev_limits.keys())[::-1]:
if limit <= lim:
if limit >= lim:
cur_limit_id.append(rev_limits[lim])
break
if len(cur_limit_id) == 0:
cur_limit_id.append(1)
kol_iteration = 0
lim = cur_limit_id[0] - 1
while kol_iteration < 2 and lim > 0:
Expand All @@ -30,6 +34,7 @@ def get_offers(cur_fiat: list, cur_cripto: list, cur_limit_id: list, cur_market:
for it_payment in cur_payment:
for it_market in cur_market:
for it_fiat in cur_fiat:
# print(it_limit_id, it_crypto, it_payment, it_market, it_fiat)
# TODO проверить, что с .lower(), всё работает
offers = sessions.query(Offer).filter(Offer.market == it_market.lower(),
Offer.init_coin == it_fiat,
Expand All @@ -42,9 +47,14 @@ def get_offers(cur_fiat: list, cur_cripto: list, cur_limit_id: list, cur_market:
Offer.payment == it_payment,
Offer.id_limit == it_limit_id).all()
for offer in offers:
if offer is None:
continue
ans.append(offer)
for offer in rev_offers:
if offer is None:
continue
ans.append(offer)
ans_for_one_limit_id.append(ans)
all_offers.append(ans_for_one_limit_id)
sessions.close()
return all_offers
Loading