Создание либ на питоне
happypython teamВведение
Мы часто используем pip, кто то ставит либы через конду. Но проходит время, мы натыкаемся на ресурс, кода под который просто нет, но есть например официальная документация. Как создать свою библиотеку (обвертку API) на питон? Сегодня выясним.
В качестве примера возьмем ресурс wazzup24.ru - по факту воронка, у них есть апишка. Данная штука используется для интеграций в тот же битрикс24.
Что представляет из себя либа - это класс, или определенный набор функций, которые облегчают нам жизнь.
Создание основ
В качестве базы будем использовать стандартные requests питона
pip install requests
Если ты хочешь написать асинхронную либу - твой путь пойдет через aiohttp.

Тут мы создаем блок инита, грубо говоря мы смотрим в доках то, что от нас хочет апи и даем ей это.

Мы видим, что кровь из носа, в башке запроса мы передаем апи ключ, так же мы обращаемся по различным url адресам. каждый из них содержит кусок
https://api.wazzup24.com/v3 - как раз наш кусок
На этом наши основы заканчиваются. Дальше мы просто штампуем функции к каждому методу.
Функции апи
Для меня самой важной задачей было - создавать iframe, чтобы уже потом его засунуть на сайт. Процесс получения был по схеме:
Идешь на сервер с номером -> Получаешь ссылку -> Кидаешь в шаблонизатор
Документация нам говорит пойти по этому адресу:
POST https://api.wazzup24.com/v3/iframe А так же передай мне пж параметры

Окей, параметры есть, апи ключ в хедере, url нам нужный дали, даже показали как это через curl сделать
curl --location --request POST 'https://api.wazzup24.com/v3/iframe' \
--header 'Authorization: Bearer c8cf90554027882f912520f454468d27' \
--header 'Content-Type: application/json' \
--data-raw '
{
"user": {
"id": "222555",
"name": "User Name"
},
"scope": "card",
"filter": [
{
"chatType": "whatsapp",
"chatId": "79998887766"
}
],
"activeChat": {
"chatType": "whatsapp",
"chatId": "79998887766"
}
}
'
Значит время перенести на питошу

Как видим - глобальный и локальный фрейм мы создаем.
Работа по созданию апи заключается в том, что ты читаешь что надо кинуть на сервер, чтобы получить нужные тебе данные. Поэтому повторяем процесс для всех базовых функций.
Отлично, допилили весь функционал, что делать дальше? каждый раз кидать файл в корень? Нет. Можно загрузить либу на pypi.org
Загрузка библиотеки на PyPi
Первым делом - регаемся
from setuptools import setup, find_packages
setup(
name='your_package_name',
version='0.1',
packages=find_packages(),
description='Описание вашего пакета',
long_description=open('README.md').read(),
long_description_content_type='text/markdown',
author='Ваше Имя',
author_email='your.email@example.com',
url='URL репозитория на GitHub или другом сервисе',
license='Лицензия',
install_requires=[
# Список зависимостей
],
classifiers=[
# Классификаторы PyPI
],
)
Заполняем все поля так, как вам нужно.
Собираем пакет
python3 setup.py sdist bdist_wheel - команда для сборки и переноса всего в папку dist
Далее в консоль нам надо ввести
sudo apt install twine - установит утилиту для выгрузки на pypi
далее надо сгенерировать токен на pypi, при загрузке вместо пароля мы будем использовать именно токен, так как по паролю войти больше нельзя с 21 года :)
twine upload dist/* - загружаемся
Завершение
Надеюсь данная инструкция поможет тебе выгружать свои проекты в массы, писать либы - это правда классно, но мои сферы в этом плане завершаются только вебом.

Ресурсы:
https://wazzup24.ru/help/api-ru/
https://github.com/meowk1r1/wazzup_api_python - можешь глянуть мой говнокод