Compare commits

..

No commits in common. "06d97cbff0594729d68e1916270fd30b26bce941" and "361e86c384067b3ca50ac80c3b9d3e5cfde3679f" have entirely different histories.

View file

@ -3,7 +3,7 @@ from aiogram import types
import config
import logging
import random
import re
import json
logger = logging.getLogger(__name__)
@ -19,90 +19,66 @@ async def handle_nude_cmd(message: types.Message):
help_msg = (
"🔥 <b>Справка по команде /nude:</b>\n\n"
"Получает случайные изображения взрослых женщин из открытых источников.\n"
"• Использует прямое сканирование сайтов для поиска контента\n"
"• По умолчанию ищет популярные изображения\n"
"• Отправляет изображения напрямую\n\n"
"• Использует Pornhub API для поиска контента\n"
"• По умолчанию ищет популярные видео с высоким рейтингом\n"
"• Отправляет превью видео как изображение\n\n"
"<i>Пример:</i> <code>/nude</code>\n"
"<i>По умолчанию:</i> Случайные изображения с популярных сайтов"
"<i>По умолчанию:</i> Популярный контент для взрослых"
)
await message.reply(help_msg, parse_mode="HTML")
return
# Список сайтов для сканирования
sites = [
"https://www.imagefap.com/gallery.php?pg=random",
"https://xhamster.com/photos?sort=random",
"https://spankbang.com/random"
]
# Используем Pornhub API для поиска видео
url = "https://www.pornhub.com/webmasters/search"
random_site = random.choice(sites)
params = {
"category": "straight",
"ordering": "mostviewed",
"period": "week",
"thumbsize": "medium"
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1"
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
try:
async with aiohttp.ClientSession() as session:
async with session.get(random_site, headers=headers) as resp:
async with session.get(url, params=params, headers=headers) as resp:
if resp.status != 200:
logger.error(f"Site access error: {resp.status}")
await message.reply("Не удалось получить доступ к сайту :(")
logger.error(f"Pornhub API Error: {resp.status}")
await message.reply("Не удалось получить контент от сервера :(")
return
html = await resp.text()
# Pornhub API возвращает HTML, нужно парсить
text = await resp.text()
# Ищем URL изображений в HTML
img_patterns = [
r'<img[^>]+src="([^"]+)"',
r'<a[^>]+href="([^"]+\.(jpg|jpeg|png|gif|webp))"',
r'data-src="([^"]+)"'
]
# Ищем URL превью в HTML
import re
thumb_pattern = r'<img[^>]+src="([^"]+)"[^>]+class="thumb"'
matches = re.findall(thumb_pattern, text)
img_urls = []
for pattern in img_patterns:
matches = re.findall(pattern, html, re.IGNORECASE)
img_urls.extend(matches)
if not img_urls:
await message.reply("Изображения не найдены на странице :(")
if not matches:
await message.reply("Не удалось найти контент :(")
return
# Фильтруем и выбираем случайное изображение
valid_imgs = []
for img_url in img_urls:
if img_url.startswith('//'):
img_url = 'https:' + img_url
elif img_url.startswith('/'):
if 'imagefap.com' in random_site:
img_url = 'https://www.imagefap.com' + img_url
elif 'xhamster.com' in random_site:
img_url = 'https://xhamster.com' + img_url
elif 'spankbang.com' in random_site:
img_url = 'https://spankbang.com' + img_url
# Берем случайное превью
thumb_url = random.choice(matches)
if any(ext in img_url.lower() for ext in ['.jpg', '.jpeg', '.png', '.gif', '.webp']):
valid_imgs.append(img_url)
# Убедимся что URL полный
if not thumb_url.startswith('http'):
thumb_url = f"https://thumb.pornhub.com{thumb_url}"
if not valid_imgs:
await message.reply("Подходящие изображения не найдены :(")
return
final_img_url = random.choice(valid_imgs)
caption = random.choice(CAPTIONS)
# Отправляем изображение
# Отправляем как фото
try:
input_file = types.URLInputFile(final_img_url)
input_file = types.URLInputFile(thumb_url)
await message.answer_photo(photo=input_file, caption=caption)
except Exception as e:
logger.error(f"Error sending photo: {e}")
await message.answer(f"{caption}\n{final_img_url}")
await message.answer(f"{caption}\n{thumb_url}")
except Exception as e:
logger.exception("Error in nude command")
await message.reply("Произошла ошибка при обработке запроса :(")
await message.reply("Произошла ошибка при обращении к API :(")