owen-script/vodynoi/gen_tabel.py

102 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import requests
import json
import os
from dotenv import load_dotenv
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
# Load information for owencloud and telegram
load_dotenv()
to = int(datetime.now().timestamp()* 1000)
from_ = int((datetime.now() - relativedelta(months=3)).timestamp()* 1000)
to_formatted = (datetime.now())
from_formatted = to_formatted - relativedelta(months=3)
from_str = from_formatted.strftime('%d.%m')
to_str = to_formatted.strftime('%d.%m.%y')
file_name = f"{from_str}-{to_str}.xlsx"
def send_telegram():
token = os.getenv("TELEGRAM_TOKEN")
channel_id = os.getenv("TELEGRAM_CHANNEL_ID")
if not token or not channel_id:
raise ValueError("Telegram токен или ID канала не заданы в .env")
url = f"https://api.telegram.org/bot{token}/sendDocument"
comment = f"Начало: {from_str}\nКонец: {to_str}"
with open(file_name, 'rb') as file:
r = requests.post(url, data={
"chat_id": channel_id,
"caption": comment
}, files={
"document": file
})
print(r.text)
if r.status_code != 200:
raise Exception(f"Ошибка отправки в Telegram: {r.text}")
def get_token():
login = os.getenv("LOGIN")
password = os.getenv("PASSWORD")
if not login or not password:
raise ValueError("Логин или пароль не заданы в .env")
data = {'login': login, 'password': password}
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
req = requests.post("https://api.owencloud.ru/v1/auth/open/", json=data, headers=headers)
if req.status_code == 200:
answer = req.json()
token = (answer["token"])
return token
else:
print(f"Ошибка авторизации: {req.status_code}, {req.text}")
return None
#Device parsing
def main():
token = get_token()
if not token:
print("Не удалось получить токен. Завершаем работу.")
return
device_id = "296613"
headers = {'Authorization': token}
#data = json.dumps({'filter': ''})
data = {
'query': f'''{{
"parameters":"[13716435,13716441,13716465,13716447,13716453,13716471,13716477,13716483,13716495,13716489,13716501]",
"filename":"tmp.xlsx",
"token":"{token}",
"deviceId":296613,
"from": {from_},
"to": {to},
"translations":{{
"report":"Отчет",
"period":"Период",
"device":"Устройство",
"time":"Дата/время",
"reportname":"Таблица",
"error":"Ошибка"
}}
}}'''
}
req = requests.post(f"https://web.owencloud.ru/device/table-export", data=data, headers=headers)
if req.status_code != 200:
print(f"Ошибка запроса устройства: {req.status_code}, {req.text}")
return
#nswer = req.json()
#print("Now i save fia")
with open(file_name, 'wb') as ff:
ff.write(req.content)
send_telegram()
if __name__ == "__main__":
main()