Yt_dlp YoutubeDL работает локально, но не работает при рендеринге с сообщением «Войдите, чтобы подтвердить, что вы не боPython

Программы на Python
Ответить
Anonymous
 Yt_dlp YoutubeDL работает локально, но не работает при рендеринге с сообщением «Войдите, чтобы подтвердить, что вы не бо

Сообщение Anonymous »

Я создаю серверную часть Flask, которая загружает аудио с YouTube с помощью yt_dlp.

Локально все работает отлично. Но когда я развертываю тот же код в Render, маршрут /import-youtube возвращает ошибку 500.
Вот мой упрощенный маршрут:

Код: Выделить всё

@app.route('/import-youtube', methods=['POST'])
def import_youtube():
data = request.get_json(silent=True) or {}
url = data.get("url")

ydl_opts = {
"format": "bestaudio/best",
"postprocessors": [{
"key": "FFmpegExtractAudio",
"preferredcodec": "mp3",
"preferredquality": "192",
}],
"outtmpl": os.path.join(DOWNLOADS_DIR, "%(title)s.%(ext)s"),
}

try:
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(url, download=True)
except Exception as e:
app.logger.error("YouTube import failed", exc_info=True)
return jsonify({"error": str(e)}), 500
Что не удается при рендеринге
В журналах показано:

Код: Выделить всё

yt_dlp.utils.DownloadError: ERROR: [youtube] :
Sign in to confirm you’re not a bot.
Use --cookies-from-browser or --cookies for authentication.
Локально на моей машине такого никогда не происходит.
Моя среда
  • Python 3.13 (Render)
  • Flask
  • yt_dlp 2024.x
  • FFmpeg установлен в среде Render
  • Использование Gunicorn: Gunicorn FindSongsBackEnd.app:app
Мой вопрос
Почему yt_dlp требует «Войдите в систему, чтобы подтвердить, что вы не бот» только в Render, в то время как тот же самый код работает локально?
Существует ли рекомендуемый способ избежать этой ошибки при запуске yt_dlp у провайдеров облачного хостинга (Render, AWS и т. д.)?
Я специально ищу:
  • Не является ли это проблемой IP/ограничения скорости.
  • Есть ли способ настроить yt_dlp, чтобы избежать этой ошибки без передачи файлов cookie браузера.
  • Или правильный подход — перехватить DownloadError и обработать этот случай как невосстанавливаемый ответ.
Любые рекомендации или предыдущий опыт работы с yt_dlp на облачных хостах буду признателен.

Подробнее здесь: https://stackoverflow.com/questions/798 ... onfirm-you
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»