Package: vkinfo
ImprovadoTestPython back-end test taskInstallationpip install vkinfoUsage1. Generate access_tokenWhy do you need one:Indicates you as the one who is trying to get information, and wether or not you are allowed to.For example: If user has private account and only his friends can acccess their info, or their music tastes are very singular, so only you can see it. VK just needs to know whos asking, otherwise its kinda creepy.How to get one:command below will open VK auth page and ask to grant permessions for this app.vkinfo tokenThen, you'll be redirected to blank page. Copy access_token from url of this page.Congrats! This is your access token for the next 24 hours.2. Run scriptvkinfo run {access_token} {search_user_id}ParametersGloballog-path: Path for the log file.Exportingexport-path: Path for the log file.export-format: Format for the export (choices:csv|json|tsv).Examplevkinfo run asfajhskaaalx 1478202 --format tsv --path ~/projects/lalareport --log-path ~/projects/lalalogs.logCommand above will: get friends list of user1478202using tokenasfajhskaaalxand save it astsvfile in~/projects/lalareport.tsvand log file saved in~/projects/lalalogs.logEndpointsVK API endpoints used/method/friends.get/method/stats.TrackVisitor/method/users.get/authorizeДополнениеМодульность и структураПроект имеет структуру файлов и распределение по функционалу.config файл с константами по умолчаниюexceptions для кастомных исключений и их обработкиget_token может запускаться как mainvk_api создает собственный класс-сессию для текущего пользователя с основными параметрами, новый функционал легко добавить как метод класса.папка util содержит вспомогательные функции, такие как обработка данных и export классРедактирование представленного и добавление нового функционала.с помощью VkApiSess.method_execute() можно использовать любые(get) методы api vk + произвольные параметры, а не только friends.getполученные данные имеют представление pandas.Dataframe и обрабатываются в util.parsers в зависимости от поствленной задачикласс exporter получает на вход pandas.Dataframe и делает с ним всё что можно и нельзяЧистые логиЧтобы не пугать пользователя кучей страшных символов, логи делятся.Те, что видны в консоли(info): отображают ход выполнения программы.Дебаг, логи внешних модулей и полные описания ошибок записываются в файл.То же самое с ошибками, адекватные люди не будут копаться в traceback'ах, поэтому все исключения вызывают SystemExit с коротким сообщением, а неадекватные могут посмотреть в лог файле.Простая установка через pipПроект загружен на PyPi для максимальной простоты установкиОптимальный анализ данныхДля анализа данных выбрал pandas потому что он удобный, универсальный, гибкий и вообще клёвый.Также выбор pandas обусловлен капом на друзей в 10к, для таких размеров это показалось оптимальным вариантом(подробнее в комментах vk_api.py). Но это вряд ли оптимальная стратегия для более массивных данных.ЗамечанияОсобо важные комменты на русском ибо понимание > понтыПисал и тестировал на wsl2 Ubuntu20.04Во время получения токена(а точнее открытия браузера) есть косяк,
но это никак не мешает работе скрипта и косяк только wslНе приспособлено и даже не запускалось на Windowspython3.8.10