Исходник Mini API | FunPay

Sqeezi

Участник
Автор темы
80
35
Mini API | FunPay
Сделал небольшое API для FunPay.
Функционал мал, но если вам понравиться сделаю его побольше.
Раньше не писал ничего подобного, поэтому для меня это большой и интересный опыт.
Куки копируйте с аккаунта funpay, иначе они будут на один запрос.

Для начала скачиваем либу нижу. Далее устанавливаем все нужные библ.
requests
lxml
beautifulsoup4
Также я хотел сделать отправка сообщения в "Секретный чат", но, что то у меня не получается.
В коде отставил свою версию, если кому то интересно, то пусть он ее допишет.

CODE:
import *Название файла API*
user_agent = 'сюда user agent'
coockies = 'сюда куки'

api.setup(user_agent, coockies)

...
code:
import requests
import json
import bs4
import re

headers = {}
session = requests.session()

def setup(user_agent, cookie): # Функция установки
    global headers
    headers = {
        "user-agent": user_agent,
        "cookie": cookie
    }
    session.headers = headers


def get_threads(url): # Все темы продажи

    req = session.get(url)
    bs = bs4.BeautifulSoup(req.text, 'lxml')
    result = []
    online = False

    for item in bs.find_all('a', 'tc-item'):
        link = item['href']                                             # Ссылка на объявление
        server = item.find('div', class_='tc-server').text                 # Сервер игры
        opis = item.find('div', class_='tc-desc-text').text             # Короткое описание объявления
        author = item.find('div', class_='media-user-name').text         # Автор
        price = item.find('div', class_='tc-price').text                 # Цена
        link_author = item.find('div', class_='pseudo-a')['data-href']     # Ссылка на автора

        if item.find('div', class_='media media-user mt0 online style-circle'):
            online = True
        else:
            online = False

        result.append({
            "link": link,
            "server": server,
            "opis": opis,
            "author": author,
            "price": price,
            "author_online": online,
            "link_author": link_author
            })

    return result

def get_profile(url): # Информаия со странице профиля

    req = session.get(url)
    bs = bs4.BeautifulSoup(req.text, 'lxml')
    result = []
    online = False

    nick = bs.find('span', class_='mr4').text     # Ник-Нейм в профиле
    rating = bs.find('span', class_='big').text # Рейтинг пользователя

    if bs.find('div', class_='mb40 online'):
        online = True
    else:
        online = False

    date_register = bs.find('div', class_='text-nowrap').text
    review = bs.find('div', class_='rating-full-count').a

    result.append({
        "nick": nick,
        "online": online,
        "rating": rating,
        "registration": date_register.split(',')[0],
        "review_link": review['href'],
        "review_text": review.text
        })
    return result

def get_reviews(url): # Отзывы на странице профиля

    req = session.get(url)
    bs = bs4.BeautifulSoup(req.text, 'lxml')
    result = []

    if bs.find('div', class_='review-container'):
        for item in bs.find_all('div', class_='review-container'):
            review_date = item.find('div', class_='review-item-date').text         # Дата отзыва
            review_detal = item.find('div', class_='review-item-detail').text     # Заголовок отзыва
            review_text = item.find('div', class_='review-item-text').text         # Текст отзыва

            result.append({
                "date": review_date,
                "detal": review_detal,
                "text": ''.join(review_text.strip())
                })

        return result # Всегда нужно делать проверку. Пример: if get_reviews(url=...): ... else: ...
   

def get_categories(url): # Получаем категории (Услуги, Аккаунты, Бронза, Вирты и т.п)

    req = session.get(url)
    bs = bs4.BeautifulSoup(req.text, 'lxml')
    result = []

    for item in bs.find_all('div', class_='inside'):
        result.append({
            "text_cat": item.find('div', class_='counter-param').text # Текст категории
        })

    return result

#def send_message():
    # request    "{\"action\":\"chat_message\",\"data\":{\"node\":\"flood\",\"last_message\":826605185,\"content\":\"mnbn\",\"show_avatar\":1}}"
    #msg = {"action": "chat_message", "data": {"node": "flood", "last_message": 826605185, "content": "mnbn", "show_avatar": 1}}
    #req = session.post(url='https://funpay.com/', data=json.dumps(msg))
 
Последнее редактирование:
  • Нравится
Реакции: Hamer228 и kru_tin