SberHistoryToExcel/README.md

162 lines
5.2 KiB
Markdown
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.

# Sber History To Excel
Скрипт выгружает историю операций СберБанк Онлайн за выбранный месяц и сохраняет ее в один Excel-файл `.xlsx`.
## Что делает
- Получает операции через API истории операций Сбера.
- Забирает данные постранично.
- Оставляет только операции за указанный месяц.
- Убирает дубли по идентификатору операции.
- Сохраняет результат в один `.xlsx` файл.
## Требования
- Python 3.10+
- Библиотека `requests`
- Актуальный Cookie авторизованной сессии СберБанк Онлайн
Установка зависимости:
```bash
python3 -m pip install requests
```
## Настройка Cookie
Скрипт берет Cookie из переменной окружения `Cookie`.
```bash
export Cookie='твой-cookie-из-браузера'
```
Не сохраняй Cookie в коде или в репозитории: это чувствительные данные доступа к аккаунту.
## Запуск
Пример выгрузки операций за май 2026 года:
```bash
python3 load_data.py --year 2026 --month 5 --output sber_may_2026.xlsx
```
Если `--output` не указать, файл будет создан с именем:
```text
sber_operations_2026_05.xlsx
```
## Использование из кода
```python
from load_data import SberMonthHistoryExporter
exporter = SberMonthHistoryExporter()
output_path = exporter.save_month(2026, 5, "sber_may_2026.xlsx")
print(output_path)
```
## Веб-интерфейс
Запустить локальную форму:
```bash
.venv/bin/python web_app.py
```
После запуска откройте:
```text
http://127.0.0.1:8000
```
Публичный адрес через Traefik:
```text
https://sber.gb.7af.ru/
```
В форме можно вставить cookies в одном из поддержанных форматов, формат определяется автоматически:
- Netscape `cookies.txt`
- JSON-массив cookies
- обычный HTTP-заголовок `Cookie`
Для получения `cookies.txt` можно использовать расширение Chrome:
[Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc?pli=1).
Порядок действий:
1. Установить расширение [Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc?pli=1).
2. Открыть [СберБанк Онлайн](https://online.sberbank.ru/CSAFront/index.do) и авторизоваться.
3. Скопировать cookies через расширение и вставить их в поле формы.
После вставки cookies форма сразу проверяет, сможет ли сервер распарсить введенный формат.
После выбора месяца экспорт скачивается ZIP-архивом. Внутри архива:
- `.xlsx` с основными полями операций
- `.json` со списком всех операций в том виде, в котором они пришли из API
Каждый экспорт сохраняется в `data/exports` с уникальным именем ZIP-архива. После скачивания архив не удаляется; отдельные временные `.xlsx` и `.json` остаются только внутри архива.
### Запуск через Docker Compose
```bash
docker compose up --build
```
После запуска интерфейс будет доступен здесь:
```text
http://127.0.0.1:8000
```
В Docker файлы экспорта сохраняются в named volume `sberhistorytoexcel_sber-history-data`.
Остановить контейнер:
```bash
docker compose down
```
Можно отдельно получить операции без сохранения:
```python
from load_data import SberMonthHistoryExporter
exporter = SberMonthHistoryExporter()
operations = exporter.fetch_month(2026, 5)
print(len(operations))
```
## Формат результата
В Excel попадают основные поля операции:
- дата
- получатель
- описание
- сумма операции
- валюта
- сумма в RUB
- бонусы Спасибо
- счет
- остаток после операции
- статус
- тип операции
- код категории
- ID операции
## Возможные ошибки
Если Cookie не задан:
```text
ValueError: Set Sber auth cookie in the Cookie environment variable.
```
Если Cookie устарел, Сбер может вернуть ошибку авторизации. В этом случае нужно снова войти в СберБанк Онлайн в браузере и обновить значение переменной `Cookie`.