- 80
- 35
Mini API | FunPay
Сделал небольшое API для FunPay.Функционал мал, но если вам понравиться сделаю его побольше.
Раньше не писал ничего подобного, поэтому для меня это большой и интересный опыт.
Куки копируйте с аккаунта funpay, иначе они будут на один запрос.
Для начала скачиваем либу нижу. Далее устанавливаем все нужные библ.
requests
lxml
beautifulsoup4
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))
Последнее редактирование: