Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save me-suzy/1a50fe97b2d5564916ec0e05760622fb to your computer and use it in GitHub Desktop.
Save me-suzy/1a50fe97b2d5564916ec0e05760622fb to your computer and use it in GitHub Desktop.
Extract audio from youtube video de la un anumit timp.py
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