pipisa-exporter/exporto.py

100 lines
2.6 KiB
Python
Raw Normal View History

2023-06-20 21:10:04 +10:00
from sqlalchemy import create_engine, Integer, String, BIGINT, Column, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import select, update
2023-06-20 21:10:25 +10:00
from flask import Flask
app = Flask(__name__)
2023-06-20 21:10:04 +10:00
engine = create_engine('postgresql+psycopg2://postgres:postgres@postgres.vdk2ch.ru:5432/jack_bot', echo=True)
Session = sessionmaker(bind=engine)
Base = declarative_base()
class user(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
user_id = Column(Integer)
user_fullname = Column(String)
dick_size = (Column(Integer))
datetimes = (Column(DateTime))
chat_id = Column(BIGINT)
def get_top_dicks():
session = Session()
2023-06-21 12:24:29 +10:00
top = session.query(user.user_fullname, user.dick_size, user.user_id, user.chat_id).order_by(user.dick_size.desc()).all()
2023-06-20 21:10:04 +10:00
session.close()
return top
2023-06-21 12:24:29 +10:00
2023-06-21 12:30:26 +10:00
docks = get_top_dicks()
print(docks)
2023-06-21 12:24:29 +10:00
2023-06-21 12:30:26 +10:00
for k in range(len(docks)):
if k == 0:
print(f"{docks[k][0]} 0")
else:
2023-06-21 12:24:29 +10:00
2023-06-21 12:30:26 +10:00
i = k - 1
upper_dick_size = docks[i][1]
while i > 0 and upper_dick_size == docks[k][1]:
i -= 1
upper_dick_size = docks[i][1]
2023-06-21 12:24:29 +10:00
2023-06-21 12:30:26 +10:00
print(f"{docks[k][0]} {upper_dick_size - docks[k][1]}")
2023-06-21 12:24:29 +10:00
2023-06-21 12:30:26 +10:00
# @app.route('/metrics')
# def metrics():
# metrics = ""
# docks = get_top_dicks()
# # текущий размер пипис
# for dick in docks:
# metrics += 'pipisio{user="%s", user_id="%s", chat_id="%s"} %s\n' % (dick[0], dick[2], dick[3], dick[1])
2023-06-21 12:24:29 +10:00
2023-06-21 12:30:26 +10:00
# # расстояние до следующего впереди
# for k in range(len(docks)):
# ### не самый красивый код для не самой красивой ситуации
# if k == 0:
# metrics += 'pipisio_topdick_distanso{user="%s", user_id="%s", chat_id="%s"} %s\n' % (docks[k][0], docks[k][2], docks[k][3], 0)
# else:
# i = k - 1
# upper_dick_size = docks[i][1]
# while i > 0 and upper_dick_size == docks[k][1]:
# i -= 1
# upper_dick_size = docks[i][1]
2023-06-21 12:24:29 +10:00
2023-06-21 12:30:26 +10:00
# if i == 0:
# metrics += 'pipisio_topdick_distanso{user="%s", user_id="%s", chat_id="%s"} %s\n' % (docks[k][0], docks[k][2], docks[k][3], 0)
# else:
# metrics += 'pipisio_topdick_distanso{user="%s", user_id="%s", chat_id="%s"} %s\n' % (docks[k][0], docks[k][2], docks[k][3], (upper_dick_size - docks[k][1]))
# return metrics
2023-06-20 21:10:04 +10:00
2023-06-21 12:30:26 +10:00
# if __name__ == '__main__':
# app.run(host='0.0.0.0', port=9992)
# engine.dispose()