From 6433d9c11e4ec5f007e03d7150662aa95a4ddb0b Mon Sep 17 00:00:00 2001
From: itexpert228 <67105314+fdaser1337@users.noreply.github.com>
Date: Fri, 10 Apr 2026 10:56:19 +0300
Subject: [PATCH] suki
---
games/nude.py | 104 +++++++++++++++++++++++++++++++-------------------
1 file changed, 64 insertions(+), 40 deletions(-)
diff --git a/games/nude.py b/games/nude.py
index 5dfe692..280bbf4 100644
--- a/games/nude.py
+++ b/games/nude.py
@@ -3,7 +3,7 @@ from aiogram import types
import config
import logging
import random
-import json
+import re
logger = logging.getLogger(__name__)
@@ -19,66 +19,90 @@ async def handle_nude_cmd(message: types.Message):
help_msg = (
"🔥 Справка по команде /nude:\n\n"
"Получает случайные изображения взрослых женщин из открытых источников.\n"
- "• Использует Pornhub API для поиска контента\n"
- "• По умолчанию ищет популярные видео с высоким рейтингом\n"
- "• Отправляет превью видео как изображение\n\n"
+ "• Использует прямое сканирование сайтов для поиска контента\n"
+ "• По умолчанию ищет популярные изображения\n"
+ "• Отправляет изображения напрямую\n\n"
"Пример: /nude\n"
- "По умолчанию: Популярный контент для взрослых"
+ "По умолчанию: Случайные изображения с популярных сайтов"
)
await message.reply(help_msg, parse_mode="HTML")
return
- # Используем Pornhub API для поиска видео
- url = "https://www.pornhub.com/webmasters/search"
+ # Список сайтов для сканирования
+ sites = [
+ "https://www.imagefap.com/gallery.php?pg=random",
+ "https://xhamster.com/photos?sort=random",
+ "https://spankbang.com/random"
+ ]
- params = {
- "category": "straight",
- "ordering": "mostviewed",
- "period": "week",
- "thumbsize": "medium"
- }
+ random_site = random.choice(sites)
headers = {
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
+ "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"
}
try:
async with aiohttp.ClientSession() as session:
- async with session.get(url, params=params, headers=headers) as resp:
+ async with session.get(random_site, headers=headers) as resp:
if resp.status != 200:
- logger.error(f"Pornhub API Error: {resp.status}")
- await message.reply("Не удалось получить контент от сервера :(")
+ logger.error(f"Site access error: {resp.status}")
+ await message.reply("Не удалось получить доступ к сайту :(")
return
- # Pornhub API возвращает HTML, нужно парсить
- text = await resp.text()
+ html = await resp.text()
- # Ищем URL превью в HTML
- import re
- thumb_pattern = r'
]+src="([^"]+)"[^>]+class="thumb"'
- matches = re.findall(thumb_pattern, text)
+ # Ищем URL изображений в HTML
+ img_patterns = [
+ r'
]+src="([^"]+)"',
+ r']+href="([^"]+\.(jpg|jpeg|png|gif|webp))"',
+ r'data-src="([^"]+)"'
+ ]
- if not matches:
- await message.reply("Не удалось найти контент :(")
+ 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("Изображения не найдены на странице :(")
return
- # Берем случайное превью
- thumb_url = random.choice(matches)
+ # Фильтруем и выбираем случайное изображение
+ 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
+
+ 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
- caption = random.choice(CAPTIONS)
-
- # Отправляем как фото
- try:
- 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{thumb_url}")
+ final_img_url = random.choice(valid_imgs)
+ caption = random.choice(CAPTIONS)
+
+ # Отправляем изображение
+ try:
+ input_file = types.URLInputFile(final_img_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}")
except Exception as e:
logger.exception("Error in nude command")
- await message.reply("Произошла ошибка при обращении к API :(")
+ await message.reply("Произошла ошибка при обработке запроса :(")
--
2.45.2