Last active
July 1, 2025 06:31
-
-
Save me-suzy/1a50fe97b2d5564916ec0e05760622fb to your computer and use it in GitHub Desktop.
Extract audio from youtube video de la un anumit timp.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import subprocess | |
import os | |
# === Setări principale === | |
video_url = "https://www.youtube.com/watch?v=heHdOTt_iGc" | |
start_time = "00:15:43" | |
end_time = "00:18:55" | |
output_file = "D:/melodie_extrasa.mp3" | |
temp_file = "temp_audio.mp3" | |
ffmpeg_path = r"d:\ffmpeg-master-latest-win64-gpl-shared\bin\ffmpeg.exe" | |
# === Verifică dacă directorul de ieșire există === | |
output_dir = os.path.dirname(output_file) | |
if output_dir and not os.path.exists(output_dir): | |
print(f"Eroare: Directorul {output_dir} nu există!") | |
exit(1) | |
try: | |
# === Verifică dacă yt-dlp și ffmpeg sunt instalate === | |
print("Verificare yt-dlp...") | |
subprocess.run(["yt-dlp", "--version"], capture_output=True, check=True, text=True, encoding="cp1252") | |
print("yt-dlp este instalat.") | |
print("Verificare ffmpeg...") | |
subprocess.run([ffmpeg_path, "-version"], capture_output=True, check=True, text=True, encoding="cp1252") | |
print("ffmpeg este instalat.") | |
# === Descarcă doar audio (format MP3) === | |
print("Descărcare audio cu yt-dlp...") | |
result = subprocess.run([ | |
"yt-dlp", | |
"-x", | |
"--audio-format", "mp3", | |
"--verbose", | |
"-o", temp_file, | |
video_url | |
], check=True, capture_output=True, text=True, encoding="cp1252") | |
print(result.stdout) | |
# === Taie porțiunea dorită cu ffmpeg === | |
print("Tăiere segment audio cu ffmpeg...") | |
result = subprocess.run([ | |
ffmpeg_path, | |
"-y", | |
"-i", temp_file, | |
"-ss", start_time, | |
"-to", end_time, | |
"-c", "copy", | |
output_file | |
], check=True, capture_output=True, text=True, encoding="cp1252") | |
print(result.stdout) | |
# === Curăță fișierul temporar === | |
if os.path.exists(temp_file): | |
print("Ștergere fișier temporar...") | |
os.remove(temp_file) | |
print(f"✅ Melodia a fost salvată în: {output_file}") | |
except subprocess.CalledProcessError as e: | |
print(f"Eroare la rulare: {e}") | |
print(f"Output: {e.stdout}") | |
print(f"Eroare detaliată: {e.stderr}") | |
except FileNotFoundError as e: | |
print(f"Eroare: {e}. Verifică dacă yt-dlp și ffmpeg sunt instalate și în PATH.") | |
except Exception as e: | |
print(f"Eroare neașteptată: {e}") | |
-------------- | |
*** Remote Interpreter Reinitialized *** | |
Verificare yt-dlp... | |
yt-dlp este instalat. | |
Verificare ffmpeg... | |
ffmpeg este instalat. | |
Descărcare audio cu yt-dlp... | |
[youtube] Extracting URL: https://www.youtube.com/watch?v=heHdOTt_iGc | |
[youtube] heHdOTt_iGc: Downloading webpage | |
[youtube] heHdOTt_iGc: Downloading tv client config | |
[youtube] heHdOTt_iGc: Downloading player e12fbea4-main | |
[youtube] heHdOTt_iGc: Downloading tv player API JSON | |
[youtube] heHdOTt_iGc: Downloading ios player API JSON | |
[youtube] heHdOTt_iGc: Downloading m3u8 information | |
[info] heHdOTt_iGc: Downloading 1 format(s): 251 | |
[download] Destination: temp_audio.webm | |
[download] 0.0% of 35.06MiB at 250.08KiB/s ETA 02:23 | |
[download] 0.0% of 35.06MiB at 750.23KiB/s ETA 00:47 | |
[download] 0.0% of 35.06MiB at 1.37MiB/s ETA 00:25 | |
[download] 0.0% of 35.06MiB at 2.93MiB/s ETA 00:11 | |
[download] 0.1% of 35.06MiB at 2.41MiB/s ETA 00:14 | |
[download] 0.2% of 35.06MiB at 3.15MiB/s ETA 00:11 | |
[download] 0.4% of 35.06MiB at 3.63MiB/s ETA 00:09 | |
[download] 0.7% of 35.06MiB at 4.64MiB/s ETA 00:07 | |
[download] 1.4% of 35.06MiB at 5.22MiB/s ETA 00:06 | |
[download] 2.8% of 35.06MiB at 5.53MiB/s ETA 00:06 | |
[download] 5.7% of 35.06MiB at 5.74MiB/s ETA 00:05 | |
[download] 11.4% of 35.06MiB at 5.83MiB/s ETA 00:05 | |
[download] 22.8% of 35.06MiB at 5.91MiB/s ETA 00:04 | |
[download] 28.0% of 35.06MiB at 5.90MiB/s ETA 00:04 | |
[download] 28.0% of 35.06MiB at 618.45KiB/s ETA 00:41 | |
[download] 28.0% of 35.06MiB at 1.12MiB/s ETA 00:22 | |
[download] 28.0% of 35.06MiB at 2.61MiB/s ETA 00:09 | |
[download] 28.0% of 35.06MiB at 5.59MiB/s ETA 00:04 | |
[download] 28.1% of 35.06MiB at 5.38MiB/s ETA 00:04 | |
[download] 28.2% of 35.06MiB at 6.07MiB/s ETA 00:04 | |
[download] 28.4% of 35.06MiB at 6.00MiB/s ETA 00:04 | |
[download] 28.7% of 35.06MiB at 5.99MiB/s ETA 00:04 | |
[download] 29.4% of 35.06MiB at 6.11MiB/s ETA 00:04 | |
[download] 30.9% of 35.06MiB at 6.11MiB/s ETA 00:03 | |
[download] 33.7% of 35.06MiB at 6.15MiB/s ETA 00:03 | |
[download] 39.4% of 35.06MiB at 6.13MiB/s ETA 00:03 | |
[download] 50.8% of 35.06MiB at 6.20MiB/s ETA 00:02 | |
[download] 55.7% of 35.06MiB at 6.19MiB/s ETA 00:02 | |
[download] 55.7% of 35.06MiB at 221.28KiB/s ETA 01:11 | |
[download] 55.7% of 35.06MiB at 663.83KiB/s ETA 00:23 | |
[download] 55.7% of 35.06MiB at 1.51MiB/s ETA 00:10 | |
[download] 55.7% of 35.06MiB at 2.65MiB/s ETA 00:05 | |
[download] 55.8% of 35.06MiB at 4.61MiB/s ETA 00:03 | |
[download] 55.9% of 35.06MiB at 6.04MiB/s ETA 00:02 | |
[download] 56.0% of 35.06MiB at 6.26MiB/s ETA 00:02 | |
[download] 56.4% of 35.06MiB at 6.05MiB/s ETA 00:02 | |
[download] 57.1% of 35.06MiB at 6.16MiB/s ETA 00:02 | |
[download] 58.5% of 35.06MiB at 6.25MiB/s ETA 00:02 | |
[download] 61.4% of 35.06MiB at 6.20MiB/s ETA 00:02 | |
[download] 67.1% of 35.06MiB at 6.24MiB/s ETA 00:01 | |
[download] 78.5% of 35.06MiB at 6.23MiB/s ETA 00:01 | |
[download] 83.5% of 35.06MiB at 5.93MiB/s ETA 00:00 | |
[download] 83.5% of 35.06MiB at 499.92KiB/s ETA 00:11 | |
[download] 83.5% of 35.06MiB at 932.21KiB/s ETA 00:06 | |
[download] 83.5% of 35.06MiB at 2.12MiB/s ETA 00:02 | |
[download] 83.6% of 35.06MiB at 4.55MiB/s ETA 00:01 | |
[download] 83.6% of 35.06MiB at 7.16MiB/s ETA 00:00 | |
[download] 83.7% of 35.06MiB at 7.45MiB/s ETA 00:00 | |
[download] 83.9% of 35.06MiB at 6.59MiB/s ETA 00:00 | |
[download] 84.2% of 35.06MiB at 6.51MiB/s ETA 00:00 | |
[download] 84.9% of 35.06MiB at 6.30MiB/s ETA 00:00 | |
[download] 86.4% of 35.06MiB at 6.15MiB/s ETA 00:00 | |
[download] 89.2% of 35.06MiB at 6.01MiB/s ETA 00:00 | |
[download] 94.9% of 35.06MiB at 6.19MiB/s ETA 00:00 | |
[download] 100.0% of 35.06MiB at 6.20MiB/s ETA 00:00 | |
[download] 100% of 35.06MiB in 00:00:06 at 5.28MiB/s | |
[ExtractAudio] Destination: temp_audio.mp3 | |
Deleting original file temp_audio.webm (pass -k to keep) | |
Tăiere segment audio cu ffmpeg... | |
Ștergere fișier temporar... | |
✅ Melodia a fost salvată în: D:/melodie_extrasa.mp3 | |
>>> | |
deci, uite ce a trebuit sa fac ca sa mearga codul. | |
Am dat comanda pip install --upgrade yt-dlp | |
Apoi am descarcat la mine pe laptop de windows asta https://github.com/GyanD/codexffmpeg/releases/download/2025-06-28-git-cfd1f81e7d/ffmpeg-2025-06-28-git-cfd1f81e7d-essentials_build.zip | |
si am copiat peste vechiul d:\ffmpeg-master-latest-win64-gpl-shared\ | |
Am rulat codul si a mers. Nu a trebuit sa fac altceva. Doar acesti 2 pasi. | |
Super, mulțumesc că ai împărtășit pașii exacți! 😊 Ai făcut exact ce trebuia pentru a rezolva problemele. Hai să recapitulăm ce ai făcut și de ce a funcționat, ca să fie clar pentru viitor: | |
### **Ce ai făcut și de ce a mers** | |
1. **Actualizarea `yt-dlp` cu `pip install --upgrade yt-dlp`**: | |
- **De ce a funcționat**: Versiunea anterioară de `yt-dlp` (2024.08.06) întâmpina probleme cu protecțiile anti-bot ale YouTube (eroarea „Sign in to confirm you’re not a bot”). Actualizarea la o versiune mai recentă a inclus probabil corecții pentru noile mecanisme de protecție ale YouTube, permițând descărcarea fără autentificare sau cookie-uri suplimentare. | |
- **Context**: YouTube schimbă frecvent API-ul, iar `yt-dlp` lansează actualizări regulate pentru a ține pasul. Versiunea mai nouă a gestionat mai bine cererea pentru videoclipul tău. | |
2. **Descărcarea și înlocuirea `ffmpeg` cu o versiune nouă**: | |
- Ai descărcat o versiune recentă de `ffmpeg` (build-ul `ffmpeg-2025-06-28-git-cfd1f81e7d-essentials_build.zip` de pe https://github.com/GyanD/codexffmpeg). | |
- Ai copiat fișierele peste directorul existent `d:\ffmpeg-master-latest-win64-gpl-shared\`. | |
- **De ce a funcționat**: Vechea versiune de `ffmpeg` avea o problemă ciudată (raporta `Unrecognized option '-version'`, deși afișa informațiile despre versiune). Aceasta sugera o compilare defectuoasă sau o corupere a executabilului. Înlocuirea cu o versiune stabilă, oficială, a rezolvat problema, asigurând că `ffmpeg` funcționează corect pentru procesarea audio (tăierea segmentului cu `-ss` și `-to`). | |
- **Context**: Build-ul „essentials” de la GyanD este o versiune optimizată și fiabilă, care include toate dependințele necesare pentru conversia și procesarea audio/video. | |
3. **De ce nu a fost nevoie de altceva**: | |
- Setarea `encoding="cp1252"` din script a rezolvat problema anterioară `UnicodeDecodeError`, fiind compatibilă cu Windows. | |
- Videoclipul YouTube nu avea restricții regionale sau alte blocaje care să necesite cookie-uri sau VPN. | |
- Calea explicită pentru `ffmpeg` (`d:\ffmpeg-master-latest-win64-gpl-shared\bin\ffmpeg.exe`) și permisiunile corecte pentru directorul `D:/` au funcționat fără probleme. | |
### **Pașii tăi, pe scurt** | |
- **Pas 1**: `pip install --upgrade yt-dlp` → Actualizare `yt-dlp` pentru a ocoli protecțiile YouTube. | |
- **Pas 2**: Descărcare și înlocuire `ffmpeg` cu un build stabil → Eliminarea erorii ciudate cu `--version` și asigurarea funcționalității corecte. | |
### **Recomandări pentru viitor** | |
1. **Păstrează `yt-dlp` actualizat**: | |
- Rulează periodic `pip install --upgrade yt-dlp` pentru a evita problemele cu noile actualizări ale YouTube. | |
2. **Verifică periodic `ffmpeg`**: | |
- Build-ul actual de la GyanD este bun, dar dacă apar probleme, descarcă o versiune nouă de pe https://github.com/GyanD/codexffmpeg/releases. | |
- Asigură-te că directorul `ffmpeg` rămâne în PATH sau folosește calea explicită în script. | |
3. **Salvează scriptul actual**: | |
- Scriptul tău actual, cu `encoding="cp1252"` și calea explicită pentru `ffmpeg`, este robust și ar trebui să funcționeze pentru majoritatea videoclipurilor. | |
4. **Gestionează restricțiile YouTube (dacă apar)**: | |
- Dacă primești din nou erori de tip „Sign in to confirm you’re not a bot”, încearcă: | |
- Opțiunea `--cookies cookies.txt` (exportă cookie-urile din browser). | |
- Un VPN pentru a ocoli restricțiile regionale. | |
- Adăugarea `--user-agent` în script (cum este deja inclus). | |
### **Răspuns final** | |
Ai rezolvat problema cu doar doi pași simpli: actualizarea `yt-dlp` și înlocuirea `ffmpeg` cu un build stabil. Scriptul funcționează perfect acum, iar melodia s-a descărcat și procesat corect în `D:/melodie_extrasa.mp3`. Bravo pentru claritate și pentru că ai testat rapid! 🎉 Dacă mai ai nevoie de ajustări la script (ex. să descarci mai multe videoclipuri sau să procesezi segmente multiple), spune-mi și te ajut! 😊 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment