@oryadaniely אז למה הקוד הזה (לוקאלית)
import yt_dlp
import os
from flask import jsonify
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
COOKIES_FILE = os.path.join(SCRIPT_DIR, 'cookies.txt')
def download_video(url, download_audio_only=False, output_dir='./', quality_video='720', quality_audio='320'):
os.makedirs(output_dir, exist_ok=True)
outtmpl = os.path.join(output_dir, '%(title)s.%(ext)s')
# בניית format string לוידאו: "best" / "worst" / "720"
if quality_video == 'best':
video_format = 'bestvideo+bestaudio/best'
elif quality_video == 'worst':
video_format = 'worst'
else: # מספר כסטרינג
video_format = f'best[height<={quality_video}]/bestvideo[height<={quality_video}]+bestaudio/best'
# בניית format string לאודיו: "best" / "worst" / "320"
if quality_audio == 'best':
audio_format = 'bestaudio/best'
audio_quality = '320'
elif quality_audio == 'worst':
audio_format = 'worstaudio'
audio_quality = '64'
else: # מספר כסטרינג
audio_format = 'bestaudio/best'
audio_quality = str(quality_audio)
if not download_audio_only:
ydl_opts = {
'cookiefile': COOKIES_FILE,
'outtmpl': outtmpl,
'noplaylist': True,
'format': video_format,
'merge_output_format': 'mp4',
}
else:
ydl_opts = {
'cookiefile': COOKIES_FILE,
'outtmpl': outtmpl,
'format': audio_format,
'extract_audio': True,
'audio_format': 'mp3',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': audio_quality,
}],
}
try:
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(url)
filename = ydl.prepare_filename(info)
if download_audio_only:
filename = os.path.splitext(filename)[0] + '.mp3'
elif not os.path.exists(filename):
filename = os.path.splitext(filename)[0] + '.mp4'
ydl.download([url])
return jsonify({'message': 'ההורדה הסתיימה בהצלחה'}), 200
except Exception as e:
print(f"שגיאה בהורדה: {e}")
return jsonify({'error': str(e)}), 500
מחזיר את זה?
(.venv) PS C:\Users\user\Music\AAA_youtube\YouTube_flask> python app.py
* Serving Flask app 'app'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 324-587-224
127.0.0.1 - - [22/Jun/2026 11:30:46] "GET / HTTP/1.1" 304 -
127.0.0.1 - - [22/Jun/2026 11:30:47] "GET /assets/index-CARg7Y43.js HTTP/1.1" 304 -
127.0.0.1 - - [22/Jun/2026 11:30:47] "GET /assets/index-ByVum_QV.css HTTP/1.1" 304 -
127.0.0.1 - - [22/Jun/2026 11:30:49] "GET /logo.png HTTP/1.1" 304 -
[youtube:tab] Extracting URL: https://www.youtube.com/watch?v=FSq6ghoEFq8&list=PLeXm9_pfh4dwrpjdN-8vGCEjcqBQPIZ8H&index=1&t=42s
[youtube:tab] Downloading just the video FSq6ghoEFq8 because of --no-playlist
[youtube] Extracting URL: https://www.youtube.com/watch?v=FSq6ghoEFq8
[youtube] FSq6ghoEFq8: Downloading webpage
[youtube] FSq6ghoEFq8: Downloading web creator player API JSON
WARNING: [youtube] HTTP Error 418: Blocked by NetFree. Retrying (1/3)...
[youtube] FSq6ghoEFq8: Downloading web creator player API JSON
WARNING: [youtube] HTTP Error 418: Blocked by NetFree. Retrying (2/3)...
[youtube] FSq6ghoEFq8: Downloading web creator player API JSON
WARNING: [youtube] HTTP Error 418: Blocked by NetFree. Retrying (3/3)...
[youtube] FSq6ghoEFq8: Downloading web creator player API JSON
WARNING: [youtube] Unable to download API page: HTTP Error 418: Blocked by NetFree (caused by <HTTPError 418: Blocked by NetFree>)
[youtube] FSq6ghoEFq8: Downloading mweb player API JSON
[youtube] FSq6ghoEFq8: Downloading player ac678d18
WARNING: [youtube] Falling back to generic n function search
player = https://www.youtube.com/s/player/ac678d18/player_es6.vflset/en_US/base.js
WARNING: [youtube] FSq6ghoEFq8: nsig extraction failed: Some formats may be missing
n = pENS_29V7KUi33Y ; player = https://www.youtube.com/s/player/ac678d18/player_es6.vflset/en_US/base.js
WARNING: [youtube] Falling back to generic n function search
player = https://www.youtube.com/s/player/ac678d18/player_es6.vflset/en_US/base.js
WARNING: [youtube] FSq6ghoEFq8: nsig extraction failed: Some formats may be missing
n = C6HZqNMvKSGNcIl ; player = https://www.youtube.com/s/player/ac678d18/player_es6.vflset/en_US/base.js
WARNING: Only images are available for download. use --list-formats to see them
ERROR: [youtube] FSq6ghoEFq8: Requested format is not available. Use --list-formats for a list of available formats
שגיאה בהורדה: ERROR: [youtube] FSq6ghoEFq8: Requested format is not available. Use --list-formats for a list of available formats
127.0.0.1 - - [22/J