Update admin bot token, refine VK and Yapfiles URL handling, enhance Docker configuration for Instagram downloader, and improve YouTube downloader's cookie validation and error messaging.

This commit is contained in:
vrubelroman 2026-01-10 21:40:07 +00:00
parent 5c8456de96
commit 551b64777a
10 changed files with 522 additions and 1083 deletions

View file

@ -39,7 +39,7 @@ def extract_download_url(page_url: str) -> tuple[str, str]:
'User-Agent': USER_AGENT,
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'Referer': 'https://www.yapfiles.com/',
'Referer': 'https://www.yapfiles.ru/',
}
logger.info(f"Загружаю страницу: {page_url}")
@ -69,9 +69,7 @@ def extract_download_url(page_url: str) -> tuple[str, str]:
if '/files/' in href and 'token=' in href:
download_url = href
if not download_url.startswith('http'):
# Определяем домен из исходного URL
domain = 'yapfiles.com' if 'yapfiles.com' in page_url else 'yapfiles.ru'
download_url = f'https://www.{domain}' + download_url
download_url = 'https://www.yapfiles.ru' + download_url
logger.info(f"Найдена ссылка на скачивание: {download_url}")
break
@ -90,24 +88,20 @@ def extract_download_url(page_url: str) -> tuple[str, str]:
# Или относительные пути
matches = re.findall(r'["\']?(/files/[^\s"\'<>]+\.mp4\?token=[^\s"\'<>]+)["\']?', script_text)
if matches:
# Определяем домен из исходного URL
domain = 'yapfiles.com' if 'yapfiles.com' in page_url else 'yapfiles.ru'
download_url = f'https://www.{domain}' + matches[0]
download_url = 'https://www.yapfiles.ru' + matches[0]
logger.info(f"Найдена относительная ссылка в скрипте: {download_url}")
break
# Способ 4: Формируем ссылку на основе URL страницы
# URL страницы: https://www.yapfiles.com/show/3532099/30faa897f5a34bb58c018f909a6f1fae.mp4.html
# URL файла: https://www.yapfiles.com/files/3532099/30faa897f5a34bb58c018f909a6f1fae.mp4
# URL страницы: https://www.yapfiles.ru/show/3532099/30faa897f5a34bb58c018f909a6f1fae.mp4.html
# URL файла: https://www.yapfiles.ru/files/3532099/30faa897f5a34bb58c018f909a6f1fae.mp4
if not download_url:
match = re.search(r'/show/(\d+)/([^/]+)\.html', page_url)
if match:
file_id = match.group(1)
file_name = match.group(2)
# Определяем домен из исходного URL
domain = 'yapfiles.com' if 'yapfiles.com' in page_url else 'yapfiles.ru'
# Пробуем без токена - иногда работает для публичных файлов
download_url = f'https://www.{domain}/files/{file_id}/{file_name}'
download_url = f'https://www.yapfiles.ru/files/{file_id}/{file_name}'
logger.info(f"Сформирована ссылка на основе URL: {download_url}")
if not download_url:
@ -200,7 +194,7 @@ def download_stream():
logger.info(f"Получен запрос на скачивание (stream): {url}")
# Проверяем, что это Yapfiles URL
if 'yapfiles.ru' not in url and 'yapfiles.com' not in url:
if 'yapfiles.ru' not in url:
return jsonify({'error': 'Only Yapfiles URLs are supported'}), 400
# Скачиваем видео