anybalance github

Я думаю многие пользователи смартфонов имеют на своих девайсах программы для просмотра балансов (или оповещений о том что баланса уже не осталось) различных аккаунтов, будь то интернет, мобильный телефон или что угодно еще. Раньше для этого приходилось писать скрипты и запускать их по крону на выполнение с отображением баланса например в Conky или на панели задач. Не проверять же руками в самом деле (:

AnyBalance - одна из наиболее универсальных программ подобного рода. Она проприетарная и постоянно клянчит денежку если превысить лимит на количество провайдеров или оповещений. А так же не удобно сделано обновление новых версий провайдеров (например для моей мамы это вообще нереальная задача). Но неадекватность ценовой политики все же оставим на совести авторов проекта. Если использовать его для базовых целей, то вполне ничего. При том все провайдеры находятся в открытом доступе в репозитории GitHub

Однажды при запуске приложения заметил, что баланс моего интернет провайдера равен 0, хотя я знал что это не так. Дело явно было в недавней деноминации (это Беларусь, детка!). И вот наконец решил попробовать разобраться как это исправить.

screenshot
общая картина, баланс на самом деле больше

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

Теперь выкачиваем репозиторий, на компьютере должен быть уствновлен git. Ссылку можно взять из адресной строки или кликнув по кнопке Clone or download:
git clone https://github.com/YOUR_USERNAME/any-balance-providers

Файлов много, поэтому пришлось немного подождать. Далее я нашел нужный файл, в моем случае это any-balance-providers/providers/ab-internet-garant/main.js.

Документация рекомендует использовать специальный Chrome плагин для отладки. По началу я думал обойтись без него, но оказалось не все так просто. Итак, поставил плагин, настроил html страницу. Чтобы использовать зависимость в провайдере, нужно подключить скрипт в созданную страницу. Например в моем провайрере в файле anybalance-manifest.xml:
<depends>
    <module id="library"/>
</depends>

То есть нужно подключить модуль library, добавляем в html:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="main.js"></script>
<script src="file:///tmp/any-balance-providers/modules/library/build/head/library.min.js"></script>

Путь нужно указывать абсолютный, к тем файлам, что был скачаны из гитхаба.

debugging
примерно так происходит отладка

Так как провайдер работает через капчу, столкнулся с тем, что окно ввода капчи есть, а картинку посмотреть невозможно. Решилось установкой breakpoint перед выводом окна ввода, в консоли есть путь к капче.

Так же, чтобы примерно понять как это работает, нужно посмотреть код library, кроме минифицированного есть полные файлы, например нужный мне оказался в /tmp/any-balance-providers/modules/library/source/.

Хотя правки я сделал подсмотрев, как это было реализовано у провайдера velcom, там, судя по всему, была похожая ситуация с рублями и копейками.

При отправке zip-архива с провайдером на телефон, следует обратить внимание на anybalance-manifest.xml, в нем содержутся основные параметры провайдера. Мне пришлось добавить строку в files:
<js>library.min.js</js>
и закинуть соответствующий файл в кучу ко всем. Так же нужно повышать версию при каждом обновлении, чтобы исключить работу провайдера из кэша. Главное не забыть понизить версию перед коммитом, а так же удалить добавленные html и js файлы.

Итак, все готово, не забываем поставить правильную версию, а так же внести изменения в history.xml. А еще я заменил иконку провайдера. Перед коммитом проверяем, что все хорошо:
git status
git diff HEAD

если так и есть, то:
git add *
git commit -m "comment"

комментарии лучше писать в том же стиле, что и весь проект.

Теперь нужно добавить удаленный репозиторий:
git remote add dukei https://github.com/YOUR_USERNAME/any-balance-providers
и отправить коммиты:
git push -u dukei master

Осталось только отправить pull request, нажав соответствующую кнопку и дав подтверждение с описанием. Теперь нужно только ждать когда PR примут (или не примут) и он попадет в основной репозиторий.