Как стать автором
Обновить

Python-скрипт для импорта банковских расходов в Splitwise

Время на прочтение3 мин
Количество просмотров4.9K

Если для вас важен вопрос ведения личного или семейного бюджета, или если вы часто ездите в совместные поездки с друзьями, то вы либо уже слышали про Splitwise, либо вам может быть полезно про него услышать. Splitwise - это довольно удобный сайт + приложения для iOS и Андроид, которые позволяют вести учёт совместных расходов. Имеется также полезная функция минимизации количества взаиморасчётов (пример: если все должны Саше по 100 рублей, Петя должен саше еще +20 рублей, а Вася должен Пете 120 рублей, то в итоге Вася отдаст сразу 220 рублей Саше, и все рады). Впервые я пользовался Splitwise пару лет назад в поездке с друзьями в Италию, и с тех пор мы довольно часто используем его для разных целей - покупки подарков, совместных поездок на пикники, и т.д.

Пользоваться Splitwise довольно просто - создаёте группу, приглашаете в неё друзей, каждый добавляет туда сколько потратил, и в какой пропорции эти траты нужно разделить (по дефолту - поровну). Вы можете вести расчёт всех ваших взаимных расходов в одной группе, а можете создавать отдельную группу для каждой поездки/подарка/ и тд.

Если вы, допустим, хотите вести в Splitwise семейный бюджет - записывать туда общие расходы на аренду, покупки, ЖКХ, веб версия также показывает диаграмму ваших затрат по категориям (правда эти категории для каждого платежа еще нужно назначить). В приложении эта функция платная, однако в веб версии, которую я чаще всего использую, диаграммы можно смотреть и без подписки. В общем, основной юскейс для меня - это именно ведение бюджета, поэтому когда мне очередной раз в напоминают, что пора бы заполнить сплитвайз, обычно я, тяжело вздыхая, открывал приложение своего банка, и начинал методично ручками перебивать туда все траты. Если вам важна история платежей и вы хотите смотреть на диаграммки, то кроме суммы и разбивки вам придётся заполнить: дату, выбрать из меню категорию платежа, написать более-менее понятное название, по которому можно будет адекватно идентифицировать платёж.

Так выглядит форма ввода в веб-версии.
Так выглядит форма ввода в веб-версии.

В общем, в определенный момент, когда я откладывал это дело целый месяц, я понял, что вносить пару десятков платежей ручками для меня просто неприемлемо, так что я решил наговнокодить что-нибудь для этого дела на питончике. Так за пару выходных появился мой монстр Франкенштейна под названием splitwise_importer (ссылка на гитхаб).

splitwise_importer

Splitwise_importer - программа с TUI интерфейсом (форк библиотеки npyscreen, ее использует например Telegram TUI), написанa на Python, работает из консоли, и использует Python-API сплитвайза (конкретно этот форк, потому что мэйнтейнер не мерджит полезный PR). Splitwise_importer позволяет автоматически создавать платежи в Splitwise на основе выгрузки из интернет-банка в формате CSV.
Программа максимально костыльно-доморощенная, так что user experience может быть сильно на любителя, впрочем, главная задача спасения от монотонных действий - выполнена. Протестировано на MacOS и Ubuntu 20.04 WSL с Python 3.7.1+.

Чтобы начать использовать splitwise_importer нужно:

  • зарегистрироваться в Splitwise, получить ключи для приложения и вставить их в конфиг

  • скачать выгрузку операций из интернет банка в формате CSV.

  • в конфиге заполнить секцию с расположениями полей в CSV (колонка суммы, колонка даты, и т.д.). В дефолтном конфиге у меня заполнены колонки для Тинькофф-банка, так что можете сразу пользоваться.
    UPD: появился также конфиг для ВТБ (спасибо @S_o_T).

  • (опционально) во втором конфиге прописать соответствие категорий платежа из выгрузки вашего банка категориям сплитвайза (они все есть в файле). Если лень, то все траты будут вноситься по дефолту как General expenses.

Запускаем в консоли скрипт importer.py, открывается диалог выбора файла. По идее, если вызывать скрипт сразу из нужной директории, то выбор файла стартует в ней же, при этом ничего не ломается, так что можно создать alias для запуска скрипта. Подтверждаем выбор файла.

Окно выбора операций. Отображается тестовый CSV с повторяющейся одной и той же строчкой.
Окно выбора операций. Отображается тестовый CSV с повторяющейся одной и той же строчкой.

Появится основное окно выбора операций, стрелочками двигаем курсор, пробелом отмечаем операции к отправке. Жмём "ОК", в окошке 'log' наблюдаем результат отправки каждой операции (либо ОК, либо ошибка, которую вернул сервер Splitwise). Вот и всё. Надеюсь кому-то ещё программа пригодится. Подробная инструкция в репозитории.

Теги:
Хабы:
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Публикации

Истории

Работа

Python разработчик
108 вакансий
Data Scientist
69 вакансий

Ближайшие события