Files
KHL/function.py
2025-11-10 19:07:27 +03:00

41 lines
1.8 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 os
from io import BytesIO
import pandas as pd
from dotenv import load_dotenv
from synology_drive_api.drive import SynologyDrive
from synology_drive_api.base import SynologyException
load_dotenv()
SYNO_HOST = os.getenv("SYNO_BASE_URL", "").strip() # без схемы! например: "nas.example.com"
SYNO_USERNAME = os.getenv("SYNO_USERNAME", "")
SYNO_PASSWORD = os.getenv("SYNO_PASSWORD", "")
SYNO_PORT = int(os.getenv("SYNO_PORT", "5001"))
def load_osheet(file_path: str, sheet: str | int = 0) -> pd.DataFrame:
"""
Скачивает Synology Office .osheet через Drive API (делает экспорт в xlsx под капотом)
и возвращает pandas.DataFrame для указанного листа.
file_path: путь вида '/GFX/…/MATCH.osheet' (шара должна быть Team Folder в Drive).
"""
drv = SynologyDrive(SYNO_USERNAME, SYNO_PASSWORD, SYNO_HOST, SYNO_PORT, https=True, dsm_version="7")
try:
# вернёт BytesIO c xlsx
bio = drv.download_synology_office_file(file_path)
df = pd.read_excel(bio, sheet_name=sheet)
return df
except SynologyException as e:
# Часто: {"code":1000,"message":"get file information failed"} — Drive не видит путь (нет Team Folder/прав)
raise RuntimeError(
"Не удалось экспортировать .osheet через Synology Drive. "
"Проверь, что шара включена в Drive Admin Console → Team Folder, "
"и у пользователя есть права. Исходная ошибка: " + str(e)
)
finally:
try:
drv.logout()
except Exception:
pass
load_osheet(file_path="/GFX/Hockey/KHL/Soft/MATCH.osheet", sheet="TEAMS")