Загрузка...

Скрипт PlayerokAPI - Удобный API для работы с торговой площадкой Playerok на ЯП Python на запросах.

Тема в разделе Python создана пользователем extractorgg 11 июн 2025 в 20:16. 209 просмотров

  1. extractorgg
    extractorgg Автор темы 11 июн 2025 в 20:16 6 14 апр 2021
    PlayerokAPI
    Неофициальный API для работы с торговой площадкой Playerok на ЯП python, основанный на запросах.​


    Увидел, что в интернете нету ни одного +- юзабельного API для взаимодействия с площадкой Playerok, поэтому решил разработать собственное .
    Апишка работает на запросах и достаточно проста в использовании. Есть функционал слушателя событий, который будет получать новые события с сайта (будь то новое сообщение или новый заказ), а после сами сможете его обработать.

    Функционал почти весь, который есть в самом Playerok:
    - получение сделок, предметов, игр, категорий, чатов, сообщений чатов, профилей пользователей и т.п
    - выставление, создание, обновление предметов, отправка сообщений
    и многое другое...

    Быстрый старт
    Пример простого бота, который будет отвечать на несложные команды
    python
    from playerokapi.account import Account
    from playerokapi.types import *
    from playerokapi.enums import *
    from playerokapi.listener.listener import EventListener

    # --- инициализация аккаунта ---
    acc = Account(token="l0eSI6IjFlZTEzODQ2LWVlNGUtNjcxMC1kZDNjLTNiMmVhODIxMT...",
    user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36").get()

    # --- инициализация и запуск слушателя событий ---
    listener = EventListener(acc)
    for event in listener.listen(requests_delay=2): # - указываем периодичность запросов в 2 сек, меньше не рекомендую

    if event.type is EventTypes.NEW_MESSAGE: # ловим тип ивента "Новое сообщение"
    if event.message.user.id != acc.id: # проверяем, если это сообщение было отправлено не от своего же лица
    chat = acc.get_chat_by_username(event.message.user.username) # получаем чат с собеседником

    if event.message.text == "!команды": # проверяем, если текст сообщение - нужная наша команда
    acc.send_message(chat.id, " Доступные команды: \n┗ !что-то там - показывает что-то\n┗ !где-то там - показывает где-то", True) # отправляем пользователю сообщение
    if event.message.text == "!привет":
    acc.send_message(chat.id, " Привет, я бот для Playerok!\n┗ Узнать команды - !команды", True)
    if event.message.text == "!дата":
    acc.send_message(chat.id, f" Текущая дата: {datetime.now ().strftime("%d/%m/%Y, %H:%M:%S")}", True)


    Создание и публикация предмета
    Пример кода, который создаст и опубликует предмет в приложении «Telegram», категории «Подарки (NFT)»
    python
    from playerokapi.account import Account
    from playerokapi.types import *
    from playerokapi.enums import *

    # --- инициализация аккаунта ---
    acc = Account(token="l0eSI6IjFlZTEzODQ2LWVlNGUtNjcxMC1kZDNjLTNiMmVhODIxMT...",
    user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36").get()

    # --- создание предмета ---
    game = acc.get_game(slug="telegram") # получаем нужную игру
    game_category = acc.get_game_category([category for category in game.categories if category.name == "Подарки (NFT)"][0].id) # получаем категорию этой игры
    obtaining_type_list = acc.get_game_category_obtaining_types(game_category.id) # получаем типы получения предмета в этой категории
    gift_obtaining_type = [obtaining_type for obtaining_type in obtaining_type_list.obtaining_types if obtaining_type.name == "Подарок"][0] # берём тип выдачи подарком

    gift_type_option = [gift_type for gift_type in game_category.options if gift_type.value == "heart"][0] # берём тип подарка "Сердце"
    # тут могут быть прочие опции...

    data_field_list = acc.get_game_category_data_fields(game_category.id, gift_obtaining_type.id) # получаем поля с данными категории определённого типа выдачи
    commentary_data_field = [data_field for data_field in data_field_list.data_fields if data_field.label == "Комментарий"][0] # берём поле с данным о комментарие (в этом случае только одно, чаще всего несколько необходимых)
    commentary_data_field.value = "Напишу вам в ТГ после оформления заказа" # задаём значение этому полю, так как оно обязательное

    banner_attachment = "banner.png" # описываем пути к файлам-приложениям предмета

    item = acc.create_item( # вызываем метод создания предмета
    game_category_id=game_category.id, # - указываем id категории игры
    obtaining_type_id=gift_obtaining_type.id, # указываем id типа получения предмета
    name="Подарок \"Сердце\"", # - указываем название предмета
    price=500, # - указываем цену предмета
    description="Выдача осуществляется без захода на ваш аккаунт", # - указываем описание предмета
    options=[gift_type_option], # - указываем опции предмета (в данном случае одна, но может быть несколько, поэтому указываются в массиве)
    data_fields=[commentary_data_field], # - указываем поля с данными предмета
    attachments=[banner_attachment] # - указываем файлы-приложения предмета (баннер и прочие изображения)
    )

    # --- публикация предмета ---
    statuses = acc.get_item_priority_statuses(item.id, item.price) # получаем статусы приоритета предмета
    free_status = statuses[1].id # получаем бесплатный статус, чтобы не платить за премиум выставление
    new_item = acc.publish_item(item.id, free_status) # выставляем предмет на продажу


    Получение предметов пользователя
    Пример простого кода, который получит последние 24 предмета пользователя «LexeyLex» и выведет в консоль их названия
    python
    user = acc.get_user(username="LexeyLex")
    item_list = user.get_items()
    for item in item_list.items:
    print(item.name)


    Получение сообщений чата
    Пример простого кода, который получит последние 24 сообщения в чате с пользователем «LexeyLex» и выведет в их в консоль
    python
    chat = acc.get_chat_by_username("LexeyLex")
    chat_message_list = acc.get_chat_messages(chat.id)
    for message in chat_message_list.messages:
    print(message.text)

    Разумеется это не всё, полный функционал ещё больше, можете ознакомиться с ним в документации.
    Хотел залить библиотеку на PyPi, но возникают какие-то траблы, поэтому пока что без него. Скачать пока что можно с GitHub (ссылки в самом низу).
    Кстати, это мой первый пост на сайте за 4 года :roflanebalo:

    PlayerokAPI (GitHub)
    Документация

    Связь со мной:
    TG разработчика
    Мой TG канал - там кстати есть разработанный мною крутой бот для Funpay, а так-же готовый модуль AutoBooster, автоматизирующий продажу SMM услуг (в неделю выходит около 2-3к рублей чистыми :da:).
    Мой TG бот
     
    11 июн 2025 в 20:16 Изменено
  2. Nekro3
    Nekro3 11 июн 2025 в 20:41 Закажи разработку тут - lolz.live/threads/7578402/
    хоть кто то додумался написать, молодес
     
  3. Локет
    ебнутый, долго делал?
     
    1. extractorgg Автор темы
      Локет, недели 2, но это я ленился просто. так бы быстрее было
  4. feraxg
    как указать подкатегорию. и можно ли указывать не визуал. имя?
     
    1. extractorgg Автор темы
      feraxg, для получения категории можно указать её id или slug. slug - имя страницы этой категории в браузере, например у telegram подарков это nft. по слугу может находить не ту категорию, так как часто бывают одинаковыми, в следующей версии сделаю, чтобы можно было также дополнительно указывать id игры категории, чтобы уж точно находилось
  5. extractorgg
    extractorgg Автор темы 12 июн 2025 в 09:55 6 14 апр 2021
    feraxg, только что обновил репозиторий на git, теперь для получения категории можешь делать так:
    python
    game = acc.get_game(slug="telegram")
    cat = acc.get_game_category(game_id=game.id, slug="nft")
     
    12 июн 2025 в 09:55 Изменено
    1. extractorgg Автор темы
      extractorgg, покажу также, что такое slug. это имя в поисковой строке на странице категории[IMG]
  6. sdsddsdsdsdsd
    жду когда сделаешь бота руки расцелую)
     
    1. extractorgg Автор темы
Загрузка...
Top