При таком использовании не требуется установка проприетарного ПО и отсутствуют какие либо лицензионные ограничения.
* Приоритетный вариант: Если Вы хотите иметь доступ ко всем возможностям (Telegram bot, просмотр логов, расписание проверок и т.п.), то необходимо запускать web сервер, он легковесный, и ресурсов не потребляет. Основное потребление ресурсов это работа движка хрома, но без этого уже никак.
* Если Ваша цель только получить баланс телефонов в виде файла web странички - то mbplugin может запускаться как скрипт по расписанию и не иметь постоянно запущенной части по завершении проверки будет генерироваться файл страничка `balance.html` которую можно просто открыть в браузере.
Для устанавливающих на linux и macOS есть вариант запускать систему в собранном докер контейнере. Контейнер собран авторами playwright и по идее должен работать хорошо без дополнительных усилий, правда размер контейнера довольно большой - около 2ГБ. Пару слов про докер для общего понимания. docker если очень упрощенно такая суперлегкая виртуализация (запущенная машина называется container, а образ из которого она создается docker image, накладные расходы ОС на запуск контейнера минимальны), позволяющая удобно работать с данными, расположенными за пределами работающего контейнера. Чтобы не возиться с установкой софта можно взять готовый контейнер с dockerhub.com и сразу запустить. Очень прикольная штука, если вы на linux или на mac и вы еще не слышали про докер очень рекомендую про него почитать, руководств в т.ч. и на русском полно.
Для Windows есть собранный готовый к использованию без установки доп пакетов дистрибутив (в процессе настройки будет скачан движок хрома).
Для Linux и MacOs есть два варианта установки, в варианте без докера потребуется первоначальная установка пакетов, в случае установки через докер - потребуется установка докера.
Также обратите внимание что в windows кодировка ini файлов должна быть CP1251, а в Linux и MacOs - UTF-8 без BOM (если Вы редактируете файл для Linux из windows то в Блокноте выбирайте - сохранение UTF-8 (не выбирайте UTF-8 со спецификацией), в Notepad++ в меню при сохранении есть пункты UTF-8 (это тот что нужен) и UTF-8-BOM (этот не нужен))
- Создаем в удобном месте папку mbstandalone (название можете выбрать какое нравиться, это не принципиально)
!!! Все команды после установки мы запускаем из нашей корневой папки mbstandalone - Помещаем, если есть, в эту папку phones.ini от MobileBalance. Если его нет, то на этапе инициализации будет создан демо файл с примерами
- Скачиваем последнюю версию mbplugin.NNN.zip из с github или из форума 4pda
- Распаковываем в эту папку содержимое архива (папка mbplugin).
- Запускаем
mbplugin\standalone\mbp.bat
, скрипт проведет диагностику, проведет донастройку и поместит в папку mbstandalonembp.bat
, в дальнейшем все взаимодействие мы будем производить через него.
- Создаем в удобном месте папку mbstandalone (название можете выбрать какое нравиться, это не принципиально)
!!! Все команды после установки мы запускаем из нашей корневой папки mbstandalone
mkdir mbstandalone
cd mbstandalone
- Помещаем, если есть, в эту папку phones.ini от MobileBalance. Если его нет, то на этапе инициализации будет создан демо файл с примерами
- Скачиваем последнюю версию mbplugin_bare.NNN.zip из с github - это облегченная версия без виндовых пакетов, пакеты будем ставить самостоятельно.
- Распаковываем в эту папку содержимое архива (папка mbplugin).
- Устанавливаем пакеты (команды выполняем находясь в папке mbstandalone):
apt-get install -y python3.8 python3-venv npm unzip
python3.8 -m venv env
. env/bin/activate
python -m pip install --upgrade pip
python -m pip install -r mbplugin/docker/requirements.txt
python -m playwright install chrome
bash mbplugin/standalone/mbp python
Если в системе установлен git, то вместо шагов 2 и 3 можно дать команду git clone https://github.com/artyl/mbplugin
Устанавливаем докер - выберете инструкцию под свою систему
1-4. Шаги 1-4 аналогично установке без докера
5. bash mbplugin/standalone/mbp docker
Данный вариант прост и хорошо управляем, повторяем, независим от версий приложений установленных в системе, работает в серверном варианте без установленного GUI, но требует установки Docker (там в принципе ничего сложного) и сам контейнер с Playwright занимает порядка 2 GB на диске (для современных дисков по моему тоже не сильно критично). Если с местом проблемы, или не хотите устанавливать докер то попробуйте вариант без докера с установкой всего в систему (В целом тоже рабочее решение, но вероятность проблем по ходу, если Вы с системой не на ты - выше).
Специфический момент при работе через докер.
Т.к. запуск в докере - это запуск по сути на отдельной машине для доступа к web серверу нам необходимо разрешить доступ на web сервер извне, не с localhost - поэтому host=0.0.0.0
, доступ к web серверу извне будет ограничен параметром при запуске докера -p 127.0.0.1:19777:19777
.
Т.к. появлялись вопросы обращаю внимание что с докером у нас получается для разрешения внешнего доступа к web прописать разрешение в ДВУХ местах в mbplugin.ini и dockervarfile. Если нужно чтобы доступ был извне машины на которой работает докер, то необходимо в файле dockervarfile в строчке DOCKER_WEB после установке поменять -p 127.0.0.1:19777:19777
на -p 0.0.0.0:19777:19777
(эта настройка может не сохраняться после обновления, так что после обновления проверяйте).
Управлять сервером можно также командами TG бота или командами через mbp, а баланс смотреть в TG либо в файле balance.html
так что доступ извне к web можно и не включать
Важно если вы будете потом запускать веб-сервер без докера, то обязательно выключите доступ к веб-серверу снаружи host=127.0.0.1
иначе web сервер будет доступен с других компьютеров сети
Итак:
# init
bash mbplugin/standalone/mbp docker
# Если хотим управлять web сервером и открывать страницу баланса с него то разрешаем доступ к серверу извне (см комментарий выше)
./mbp set ini/HttpServer/host=0.0.0.0
# Запуск web сервера
./mbp web-server start
# Запрос баланса с генерацией balance.html (можно запускать без web сервера)
./mbp get-balance
- Все управление mbplugin производится с помощью скрипта mbp в папке mbstandalone. Находясь в папке mbstandalone дайте команду
mbp
(в linux./mbp
) для получения справки по командам, также управлять web сервером можно через иконку в трее (только windows) и через web страницу http://localhost:19777/main - Настраиваем телефоны в
phones.ini
, при установке будет скопирован файл примера из mbplugin\standalone с двумя примерами телефонов. Если у вас уже естьphones.ini
положите его в папку вместоphones.ini
с примером и настройте пароли в полеpassword2
ВАЖНО Когда вы будете добавлять новые номера, то номера секций ([Phone] #номер
) не должны повторяться
Запрос баланса будет работать только для телефонов, у которых в поле password2 прописан пароль (см пример phones.ini в папке mbplugin\standalone). - Для получения балансов
mbp get-balance
обратите внимание что здесь и далее:- В windows мы запускаем
mbp get-balance
- В Linux и MacOs
./mbp get-balance
- В windows мы запускаем
- Если нужно запросить только балансы, по которым были ошибки запустите
mbp get-balance --only_failed
- Чтобы только обновить balance.html без получения балансов
mbp refresh-balance-html
- Если нужно получить по части номеров запустите
mbp get-balance filter1 filter2 ...
будут получены только балансы у которых один из фильтров совпадет с плагином или логином - Для настройки автоматической проверки баланса необходимо воспользоваться встроенным в web сервер планировщиком (см Расписание проверок) либо по какому-то расписанию запускать
mbp get-balance
например через системный планировщикtaskschd.msc
либо как-то еще
При включении опции phone_ini_save=1
(в режиме standalone включена по умолчанию) доступна работа со списком телефонов через утилиту mbp
При редактировании не задействуется вспомогательный phones_add.ini все записывается в phone.ini
mbp phone-list
Чтобы добавить номер нужно не указывая порядковый номер указать обязательно оператора, логин и пароль
mbp phone-change -pl p_test1 -l 9161234567 -p SuPeR_PaSsW0Rd
Поменять alias у второго номера
mbp phone-change -n 2 -a "Петрович Гадя"
Например удалить номер с порядковым номером 3
mbp phone-change --delete -n 3
Удалить все номера оператора p_mts
mbp phone-change --delete -pl p_mts
Почти все опции из раздела Option можно индивидуально прописать в phones.ini/phones_add.ini и тогда она перекроет настройки для конкретного телефона, например если Вы хотите чтобы при проверки какого-то баланса был показан браузер - пропишите в разделе для этого телефона show_chrome=1 и при опросе только этого телефона хром будет запущен с отображением браузера.
Текущую версию mbplugin можно узнать командой mbp version -v
из папки mbstandalone
Для обновления версии запустите mbp version-update
Механизм обновления устроен просто - он качает архив mbplugin_bare.NNN.zip от нужной версии с github (он в отличии от сборки включает в себя только скрипты , поэтому он очень маленький- около 300kb) и просто обновляет изменившиеся с предыдущей версии файлы.
В веб-сервер встроен планировщик. Естественно чтобы он работал должен быть запущен веб-сервер.
Для добавления заданий добавьте в секцию [HttpServer]
одну или несколько строк, Важно - у всех строк номера должны отличаться, один может быть без номера
Если хотите проверять не все телефоны а только часть то после расписания через запятую перечислите фильтры для отбора номеров которые хотите проверить
Формат расписания повторяет формат в библиотеке schedule
Возможные команды:
- check - проверка балансов
- check_send - проверка балансов и отправка по завершении отчета
- check_new_version - проверить наличие новой версии, и отправить в телеграм сообщение
- ping - послать сообщение
Если к команде добавить в конце _once, то команда выполнится один раз, после чего будет удалена из расписания в памяти, но останется в ini.
Т.к. у пользователей возникают вопросы - поясню пример запуска после стартаevery().minute,check_once
- задание будет отрабатывать каждую минуту (every().minute) и т.к. указан _once после выполнения задание будет удалено, т.е. задание отработает один раз через минуту после старта программы.
Примеры:
;Проверять раз в 4 часа mts и beeline, отчет в телегу не отправлять
schedule = every(4).hours,check, mts,beeline
;Проверять все номера один раз в день, отчет в телегу не отправлять
schedule1 = every().day,check
;Проверять один раз в день в 10:30 номер 123456 и отправлять отчет в телегу
schedule2 = every().day.at("10:30"),check_send,123456
;Проверить обновление один раз в неделю
schedule3 = every().week,check_new_version
;Проверить обновление после старта программы (обратите внимание на _once)
schedule4 = every().minute,check_new_version_once
;Проверить все номера после старта программы (обратите внимание на _once)
schedule5 = every().minute,check_once
После изменения расписания чтобы изменения применились запустите mbp reload-schedule
или нажмите на кнопку Reload schedule на странице управления http://localhost:19777/main
Актуальное расписание можно посмотреть на странице http://localhost:19777/schedule на которую также можно попасть с главной страницы. По актуальному расписанию сразу снимается много вопросов из разряда почему расписание не работает как ожидалось.
Если планируется совместное использование standalone версии и MobileBalance, то при запуске Mobilebalance все чужеродные поля будут стерты из Phones.ini.
Для этого был сделан механизм с файлом phones_add.ini.
Вот как выглядит секция для телефона в phones.ini
[Phone] #1
Region = p_test1
Monitor = TRUE
Alias = Ivanych
Number = 9161112233
Password2 = 123password
Создаем phones_add.ini и переносим поле Password2 в него. Phones_add.ini
[Phone] #1
Password2 = 123password
Все параметры прописанные в phones_add.ini будут при подгрузке перекрывать параметры в phones.ini
Не забывайте также про то что результаты запросов сделанных не из Mobilebalance (tray icon, web-server и telegram bot) не попадут в MobileBalance
Для использования возможностей standalone запустите mbplugin\standalone\mbp.bat
после установки используйте mbp.bat в корневой папке (в папке где находится папка mbplugin)
К сожалению с работой через прокси возник ряд проблем поэтому пришлось сделать несколько параметров
- Options\browser_proxy - настройки прокси для браузера
- Options\requests_proxy - настройки прокси для обычных плагинов
- Telegram\tg_proxy - настройки прокси для бота
- В Standalone версии для получения баланса не требуется веб-сервер, веб-сервер нужен только для показа информации и обработки команд телеграм ботом. Так что если вы не собираетесь пользоваться телеграм ботом и встроенным шедулером, а балансы смотреть через сгенеренную страничку balance.html с диска то web сервер можно не запускать. Отправка балансов в телеграм через send_tgbalance_onlysend.bat, также работает без веб-сервера.
- Какой оператор указывается в phones.ini (пример файла phones.ini смотрите в папке standalone) в поле Region плагины - это файлы в папке mbplugin\plugin т.е. например для плагина mts файл mts.py, а в поле нужно будет указать
Region=p_mts
т.е. с префиксом p_ и без расширения - На текущий момент доступен только просмотр веб страницы с балансом http://localhost:19777/report, открыть его можно, выбрав Open report через иконку веб-сервера в системном трее, либо без веб-сервера можно открыть balance.html в корневой папке standalone версии
- Можно сделать несколько альтернативных наборов колонок, добавив в ini параметр, например table_format1, и открывать http://localhost:19777/report1
- Для просмотра истории по балансу установите параметр RealAverageDays=число дней просмотра истории. Помните, что чем больше дней, тем дольше строится страница с балансом. История баланса будет отображаться при наведении мышкой на баланс.
- Все данные по балансам хранятся в файле BalanceHistory.sqlite в корне проекта, это база данных sqlite при желании можно поработать с ней из других программ для построения какой-то аналитики.
- При желании можно настроить телеграм бота так же как для обычной версии, но только по варианту 2 (tg_from = sqlite, см общий readme раздел Телеграм бот вариант 2 (получаем балансы из sqlite))
- При желании можно запустить несколько mbplugin одновременно из разных папок на разных портах, но возможны коллизии при управлении хромом, когда несколько разных плагинов попытаются запускать их одновременно
Слабая диагностика ошибок в phones.ini, который пока правится руками.
- Запросить неудачные попытки
- В дальнейшем это частично переедет в веб-сервер, где будет шедулер и подобный функционал.