# MRKTAPI
Библиотека для работы с Telegram Market API (MRKT) - платформой для торговли NFT подарками в Telegram.
## Описание
MRKTAPI предоставляет удобный Python интерфейс для взаимодействия с API платформы Telegram Market. Библиотека позволяет искать, покупать, продавать подарки, управлять балансом.
## Установка
```bash
pip install MRKTAPI
```
## Быстрый старт
### Получение токена
Для работы с API необходимо получить токен аутентификации:
```python
import asyncio
from MRKTAPI.auth import update_auth
async def get_token():
# Используя api_id и api_hash
token = await update_auth(
api_id="YOUR_API_ID",
api_hash="YOUR_API_HASH"
)
return token
# Получаем токен
token = asyncio.run(get_token())
print(f"Токен получен: {token}")
```
### Основные операции
```python
import asyncio
from MRKTAPI import search, getBalance, buy, sale, getMyGifts
async def main():
auth_data = "YOUR_TOKEN"
# Получаем баланс
balance = await getBalance(authData=auth_data)
print(f"Баланс: {balance.hard} TON")
# Ищем подарки
gifts = await search(
authData=auth_data,
count=10,
min_price=1.0, # в TON
max_price=10.0
)
for gift in gifts:
print(f"Подарок: {gift.name}, Цена: {gift.price} TON")
# Покупаем подарок
if gifts:
result = await buy(
nft_id=gifts[0].id,
price=gifts[0].price_nano, # цена в нанотонах
authData=auth_data
)
print("Покупка успешна!")
# Получаем свои подарки
my_gifts = await getMyGifts(authData=auth_data)
print(f"У вас {len(my_gifts)} подарков")
asyncio.run(main())
```
## Основные функции
### Аутентификация
- `update_auth()` - получение токена для работы с API
### Баланс и торговля
- `getBalance(authData)` - получение баланса аккаунта
- `search(authData, **filters)` - поиск подарков на маркетплейсе
- `buy(nft_id, price, authData)` - покупка подарка
- `sale(nft_id, price, authData)` - выставление подарка на продажу
- `cancel(nft_ids, authData)` - отмена продажи подарков
### Управление подарками
- `getMyGifts(authData, **filters)` - получение списка своих подарков
- `giftsFloors(authData)` - получение минимальных цен коллекций
- `modelFloors(collection_name, authData)` - получение минимальных цен моделей
### Гивевеи
- `getGiveaways(giveaway_type, count, authData)` - получение списка гивевеев
### Утилиты
- `nanoToNormal(nano)` - конвертация нанотонов в TON
- `convertToNano(ton)` - конвертация TON в нанотоны
- `toShortName(name)` - сокращение названий
- `rarityPerMilleToPercent(per_mille)` - конвертация редкости
## Примеры использования
### Поиск подарков с фильтрами
```python
gifts = await search(
authData=auth_data,
count=20,
collection_names=["Lol Pop"],
model_names=["Satellite"],
ordering="Price",
low_to_high=True
)
```
### Получение минимальных цен
```python
# Минимальные цены всех коллекций
floors = await giftsFloors(auth_data)
print(f"Минимальная цена Collection1: {floors.floors['Collection1']} TON")
# Минимальные цены моделей в коллекции
model_floors = await modelFloors("Collection1", auth_data)
for model in model_floors.models:
print(f"{model.name}: {model.floor_price} TON")
```
## Структуры данных
### MRKTGift
Объект подарка с полями:
- `id` - уникальный идентификатор
- `name` - название подарка
- `price` - цена в TON
- `price_nano` - цена в нанотонах
- `collection_name` - название коллекции
- `model_name` - название модели
- `backdrop_name` - название фона
- `symbol_name` - название символа
- `is_mintable` - можно ли минтить
- `is_new` - новый ли подарок
### MRKTBalance
Объект баланса с полями:
- `hard` - баланс в TON
- `hard_nano` - баланс в нанотонах
## Требования
- Python 3.8+
- asyncio
- curl_cffi
- Kurigram
## Поддержка
При возникновении проблем создавайте issue в репозитории проекта.
Raw data
{
"_id": null,
"home_page": "https://github.com/into-the-null/MRKTAPI",
"name": "MRKTAPI",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "MRKT API library, MRKT API, Telegram Market",
"author": "into-the-null",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/84/7c/a0972391f85692ae54f0c35022ea18d4008e3fdf4294459752a4fdaf7de7/mrktapi-1.0.3.tar.gz",
"platform": null,
"description": "# MRKTAPI\r\n\r\n\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Telegram Market API (MRKT) - \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 NFT \u043f\u043e\u0434\u0430\u0440\u043a\u0430\u043c\u0438 \u0432 Telegram.\r\n\r\n## \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\r\n\r\nMRKTAPI \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 Python \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 API \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Telegram Market. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c, \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u044c, \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441\u043e\u043c.\r\n\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n```bash\r\npip install MRKTAPI\r\n```\r\n\r\n## \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\r\n\r\n### \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430\r\n\r\n\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438:\r\n\r\n```python\r\nimport asyncio\r\nfrom MRKTAPI.auth import update_auth\r\n\r\nasync def get_token():\r\n \r\n # \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f api_id \u0438 api_hash\r\n token = await update_auth(\r\n api_id=\"YOUR_API_ID\",\r\n api_hash=\"YOUR_API_HASH\"\r\n )\r\n \r\n return token\r\n\r\n # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d\r\n token = asyncio.run(get_token())\r\n print(f\"\u0422\u043e\u043a\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0435\u043d: {token}\")\r\n```\r\n\r\n### \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438\r\n\r\n```python\r\nimport asyncio\r\nfrom MRKTAPI import search, getBalance, buy, sale, getMyGifts\r\n\r\nasync def main():\r\n auth_data = \"YOUR_TOKEN\"\r\n \r\n # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0431\u0430\u043b\u0430\u043d\u0441\r\n balance = await getBalance(authData=auth_data)\r\n print(f\"\u0411\u0430\u043b\u0430\u043d\u0441: {balance.hard} TON\")\r\n \r\n # \u0418\u0449\u0435\u043c \u043f\u043e\u0434\u0430\u0440\u043a\u0438\r\n gifts = await search(\r\n authData=auth_data,\r\n count=10,\r\n min_price=1.0, # \u0432 TON\r\n max_price=10.0\r\n )\r\n \r\n for gift in gifts:\r\n print(f\"\u041f\u043e\u0434\u0430\u0440\u043e\u043a: {gift.name}, \u0426\u0435\u043d\u0430: {gift.price} TON\")\r\n \r\n # \u041f\u043e\u043a\u0443\u043f\u0430\u0435\u043c \u043f\u043e\u0434\u0430\u0440\u043e\u043a\r\n if gifts:\r\n result = await buy(\r\n nft_id=gifts[0].id,\r\n price=gifts[0].price_nano, # \u0446\u0435\u043d\u0430 \u0432 \u043d\u0430\u043d\u043e\u0442\u043e\u043d\u0430\u0445\r\n authData=auth_data\r\n )\r\n print(\"\u041f\u043e\u043a\u0443\u043f\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u0430!\")\r\n \r\n # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0430\u0440\u043a\u0438\r\n my_gifts = await getMyGifts(authData=auth_data)\r\n print(f\"\u0423 \u0432\u0430\u0441 {len(my_gifts)} \u043f\u043e\u0434\u0430\u0440\u043a\u043e\u0432\")\r\n\r\nasyncio.run(main())\r\n```\r\n\r\n## \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\r\n\r\n### \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\r\n- `update_auth()` - \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API\r\n\r\n### \u0411\u0430\u043b\u0430\u043d\u0441 \u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u044f\r\n- `getBalance(authData)` - \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\r\n- `search(authData, **filters)` - \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u0430\u0440\u043a\u043e\u0432 \u043d\u0430 \u043c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441\u0435\r\n- `buy(nft_id, price, authData)` - \u043f\u043e\u043a\u0443\u043f\u043a\u0430 \u043f\u043e\u0434\u0430\u0440\u043a\u0430\r\n- `sale(nft_id, price, authData)` - \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u0436\u0443\r\n- `cancel(nft_ids, authData)` - \u043e\u0442\u043c\u0435\u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u0436\u0438 \u043f\u043e\u0434\u0430\u0440\u043a\u043e\u0432\r\n\r\n### \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0430\u043c\u0438\r\n- `getMyGifts(authData, **filters)` - \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u0434\u0430\u0440\u043a\u043e\u0432\r\n- `giftsFloors(authData)` - \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043d \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439\r\n- `modelFloors(collection_name, authData)` - \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043d \u043c\u043e\u0434\u0435\u043b\u0435\u0439\r\n\r\n### \u0413\u0438\u0432\u0435\u0432\u0435\u0438\r\n- `getGiveaways(giveaway_type, count, authData)` - \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0433\u0438\u0432\u0435\u0432\u0435\u0435\u0432\r\n\r\n### \u0423\u0442\u0438\u043b\u0438\u0442\u044b\r\n- `nanoToNormal(nano)` - \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u043d\u0430\u043d\u043e\u0442\u043e\u043d\u043e\u0432 \u0432 TON\r\n- `convertToNano(ton)` - \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f TON \u0432 \u043d\u0430\u043d\u043e\u0442\u043e\u043d\u044b\r\n- `toShortName(name)` - \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439\r\n- `rarityPerMilleToPercent(per_mille)` - \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0440\u0435\u0434\u043a\u043e\u0441\u0442\u0438\r\n\r\n## \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n\r\n### \u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u0430\u0440\u043a\u043e\u0432 \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438\r\n\r\n```python\r\ngifts = await search(\r\n authData=auth_data,\r\n count=20,\r\n collection_names=[\"Lol Pop\"],\r\n model_names=[\"Satellite\"],\r\n ordering=\"Price\",\r\n low_to_high=True\r\n)\r\n```\r\n\r\n\r\n### \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043d\r\n\r\n```python\r\n# \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0446\u0435\u043d\u044b \u0432\u0441\u0435\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439\r\nfloors = await giftsFloors(auth_data)\r\nprint(f\"\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0446\u0435\u043d\u0430 Collection1: {floors.floors['Collection1']} TON\")\r\n\r\n# \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0446\u0435\u043d\u044b \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438\r\nmodel_floors = await modelFloors(\"Collection1\", auth_data)\r\nfor model in model_floors.models:\r\n print(f\"{model.name}: {model.floor_price} TON\")\r\n```\r\n\r\n\r\n## \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445\r\n\r\n### MRKTGift\r\n\u041e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u0434\u0430\u0440\u043a\u0430 \u0441 \u043f\u043e\u043b\u044f\u043c\u0438:\r\n- `id` - \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\r\n- `name` - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0430\r\n- `price` - \u0446\u0435\u043d\u0430 \u0432 TON\r\n- `price_nano` - \u0446\u0435\u043d\u0430 \u0432 \u043d\u0430\u043d\u043e\u0442\u043e\u043d\u0430\u0445\r\n- `collection_name` - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438\r\n- `model_name` - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\r\n- `backdrop_name` - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u043e\u043d\u0430\r\n- `symbol_name` - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\r\n- `is_mintable` - \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043c\u0438\u043d\u0442\u0438\u0442\u044c\r\n- `is_new` - \u043d\u043e\u0432\u044b\u0439 \u043b\u0438 \u043f\u043e\u0434\u0430\u0440\u043e\u043a\r\n\r\n### MRKTBalance\r\n\u041e\u0431\u044a\u0435\u043a\u0442 \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0441 \u043f\u043e\u043b\u044f\u043c\u0438:\r\n- `hard` - \u0431\u0430\u043b\u0430\u043d\u0441 \u0432 TON\r\n- `hard_nano` - \u0431\u0430\u043b\u0430\u043d\u0441 \u0432 \u043d\u0430\u043d\u043e\u0442\u043e\u043d\u0430\u0445\r\n\r\n\r\n## \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\r\n\r\n- Python 3.8+\r\n- asyncio\r\n- curl_cffi\r\n- Kurigram\r\n\r\n\r\n## \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\r\n\r\n\u041f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 issue \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "API library for MRKT app",
"version": "1.0.3",
"project_urls": {
"Homepage": "https://github.com/into-the-null/MRKTAPI",
"Issues": "https://github.com/into-the-null/MRKTAPI/issues",
"Repository": "https://github.com/into-the-null/MRKTAPI"
},
"split_keywords": [
"mrkt api library",
" mrkt api",
" telegram market"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "931be517c6383c33e2a082500c7f9dae9484f68266c88cee8f769250ff0c23fb",
"md5": "6eff958ff1d57e0021f8de0f65a51c9d",
"sha256": "20a1ee31ca59406858802390214de3bb0a3df752c06cbf19a867323f77430162"
},
"downloads": -1,
"filename": "mrktapi-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6eff958ff1d57e0021f8de0f65a51c9d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 18985,
"upload_time": "2025-07-19T15:12:23",
"upload_time_iso_8601": "2025-07-19T15:12:23.378110Z",
"url": "https://files.pythonhosted.org/packages/93/1b/e517c6383c33e2a082500c7f9dae9484f68266c88cee8f769250ff0c23fb/mrktapi-1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "847ca0972391f85692ae54f0c35022ea18d4008e3fdf4294459752a4fdaf7de7",
"md5": "9a6b3b38e0fff3590455f6aa036bd3c4",
"sha256": "196503694e40ae99a66d303fb8dfcca6e2c9c3229d412a15fb2e83634031ae4d"
},
"downloads": -1,
"filename": "mrktapi-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "9a6b3b38e0fff3590455f6aa036bd3c4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 13017,
"upload_time": "2025-07-19T15:12:24",
"upload_time_iso_8601": "2025-07-19T15:12:24.925536Z",
"url": "https://files.pythonhosted.org/packages/84/7c/a0972391f85692ae54f0c35022ea18d4008e3fdf4294459752a4fdaf7de7/mrktapi-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-19 15:12:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "into-the-null",
"github_project": "MRKTAPI",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "mrktapi"
}