вторник, 22 января 2019 г.

RKNreporter - python скрипт для автоматического получения с сайта portal.rfc-revizor.ru

Лень - двигатель если не прогресса.. то хотя бы просто двигатель =)
И так. Скрипт для автоматического получения отчетов по работе "ревизоров" с сайта portal.rfc-revizor.ru
Полностью автоматического. Да, там капча ) но ничего страшного, она слабенькая.

Лежит тут: https://github.com/KindEvilDm/RKNreporter

Для работы нужен python3, tesseract, ImageMagic(convert) и опционально mutt.
Все это ставим из репов. Тестировалось на python 3.5.2, если меньше - гарантий нет )
Для облегчения жизни ставим так же pip:
sudo apt install python3-pip
Клонируем репу себе, ставим нужные для работы либы. В директории проекта:
pip3 install -r requirements.txt
Копируем дефолтный конфиг в config и правим:
cp config.default config
nano config
 Конфиг подробно прокомментирован, проблем быть не должно.

Ставим +x rknreporter.py:
chmod +x rknreporter.py
И можно пробовать:
./rknreporter.py
Краткая версия отчета + полный csv файл отчета придут на почту или в телеграм, в зависимости от того, что было выбрано.

Если нужно проверять отчеты по нескольким ревизорам (а такое бывает, да) можно сделать несколько конфигов и запускать скрипт передавая его в параметрах:
./rknreporter.py --config config.isp1
./rknreporter.py --config config.isp2 
В параметрах так же можно передавать дату (по умолчанию проверят за вчера):
./rknreporter.py --date today
./rknreporter.py --date 01.01.2019
И еще много разного (вдруг пригодится)
  -h, --help                    show this help message and exit
  --orgname ORGNAME             Название организации
  --login LOGIN                 Логин на portal.rfc-revizor.ru
  --password PASSWORD           Пароль на portal.rfc-revizor.ru
  --date DATE                   Дата в формате 01.01.2018
  --retry-count RETRY_COUNT     Кол-во попыток.
  --notify NOTIFY               Куда отправлять (telegram/email)
  --contact CONTACT             адрес (почта или tg-id)
  --config CONFIG               Файл конфигурации.
Ставим в крон/systemd timer и расслабляемся.

Работает уже около года, особых проблем (и вопросов=) ) замечено не было.

Вопросы, предложения, комментарии, фичреквесты: 
ds@nettools.club
или сюда:
https://t.me/KindEvil
а так же в issues на гитхабе.

пятница, 18 января 2019 г.

четверг, 17 января 2019 г.

Получаем свой внешний ip в python скрипте.

Без регистраци и смс =)
Получаем свой ip в python скрипте на раз-два:

import requests


url = "https://nettools.club/api/ip"
ip = requests.get(url)
print(ip.text)

Если нужна более подробная информация:

import requests
import json


url = "https://nettools.club/api/ipall.json"
ipall = json.loads(requests.get(url).text)

print(ipall.get('ip'))
print(ipall.get('isp'))
print(ipall.get('latitude'))
print(ipall.get('longitude'))

Список всех доступных полей:

for key, value in ipall.items():
    print(f"{key:15}: {value}")

понедельник, 14 января 2019 г.

TypeError: 'PosixPath' object is not iterable. Python version < 3.6

Заметочка в мемориз, если вдруг придется тестить код, написанный для python 3.6+ в более ранних версиях. Вроде просто, но почему-то искал этот нюанс долго.

https://realpython.com/python-pathlib/

>>> from configparser import ConfigParser
>>> path = pathlib.Path('config.txt')
>>> cfg = ConfigParser()
>>> cfg.read(path)                     # Error on Python < 3.6
TypeError: 'PosixPath' object is not iterable
>>> cfg.read(str(path))                # Works on Python >= 3.4
['config.txt']