ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
  • Firma

Automatyczne pobieranie ścieżek audio z YouTube

Napisane przez Igor Brzeżek on 18 września 2025
Napisane w: Programowanie, Różne, Software.

Wstęp
Dziś miałem taki problem, że trzeba było pobrać tylko ścieżki audio (najlepiej w mp3) z kilkuset filmów umieszczonych na playliście w serwisie Youtube.

Można to wykonać ręcznie:
– klikamy prawym na filmie
– wybieramy pozycję „Kopiuj adres linku”
– link wklejamy do jednego w wielu „pobieraczy” YT np. serwisu tuberipper.com
– klikamy w Download czy jak to sie tam nazywa i kolejno w .mp3 wybierając format (albo coś innego co chcemy pobrać)
– po chwili mamy ścieżkę audio na dysku

Fajne, ale chciałbym to zautomatyzować. Da się fajnie pod Linux z wiersza poleceń. Rozwiązaniem jest program yt-dlp. Może jednak on wymagać instalacji i jednorazowego uruchomienia chrome lub innej przeglądarki celem utworzenia profilu dla ciasteczek. Będzie też potrzebny ffmpeg do dekodowania audio/video oraz Python 3 i kilka bibliotek. Poniżej jak to wszystko poskładać.

Konfiguracja dla Linux z oknami 
– aktualizacja pakietów

#apt update ; apt upgrade

– instalacja python3, pip: sprawdź dla swojego systemu jak to się instaluje

–  instalacja ffmpeg

#apt install ffmpeg

– instalacja yt-dlp

# sudo pip3 install –upgrade yt-dlp

To wymaga nowej wersji Python i jeśli masz starszy musisz dokonać aktualizacji. Sprawdź dla swojego systemu jak to zrobić. U mnie pojawił się problem (choć sam program działa):

Zatem można aktualizować Python. Program można także instalować dla konkretnego Pythona:

#python3.11 -m pip install –upgrade yt-dlp

Teraz instalujemy chrome lub firefox, także popatrz jak dla twojego systemu to wykonać. Trzeba uruchomić Chrome aby utworzył katalog domowy i wejść na dowolną stronę. To wystarczy, Chrome można zamknąć. Chrome można pobrać tak

#wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

i zainstalować jak niżej:

#sudo dpkg -i google-chrome-stable_current_amd64.deb

Można też instalować tego pobieracza w inny sposób

# sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
# sudo chmod a+rx /usr/local/bin/yt-dlp

 

Pobranie playlisty z YouTube

Wymagany ffmpeg do konwersji audio!

Teraz czas na pobranie playlisty (zamiast chrome można wpisać firefox jeśli jest zainstalowany):

# yt-dlp –cookies-from-browser chrome -x –audio-format mp3 –playlist-start 1 –playlist-stop 100 https://adres-playlisty

Jeżeli będzie problem z uruchomieniem programu możesz go startować z katalogu: ~/.local/bin/

# ~/.local/bin/yt-dlp –cookies-from-browser chrome -x –audio-format mp3 –playlist-start 1 –playlist-stop 100 https://adres-playlisty

Jeśli playlista jest długa można określić, ile danych pobieramy:

# yt-dlp –cookies-from-browser chrome -x –audio-format mp3 –playlist-start 1 –playlist-stop 100 https://adres-playlisty

Można także podać programowi „ręcznie” plik cookie witryny (trzeba go wcześniej pozyskać z komputera gdzie już istnieje):

# yt-dlp –cookies  ścieżka-do-pliku-cookie -x –audio-format mp3 https://nasza-playlista

Pobranie tylko ścieżki audio (128k) z jednego filmu

# yt-dlp -x –audio-format mp3 –audio-quality 5 –no-keep-video –no-playlist „https://youtu.be/7AzhPG9k_CE”

Pobieranie surowej ścieżki audio (bez konwersji)

# yt-dlp -f „bestaudio[abr<=128]”  „https://youtu.be/7AzhPG9k_CE”

 

Przykład skryptu Python

https://github.com/IgorBrzezek/yt-audio-extractor

Przykład skryptu Linux Bash 

Skrypt pobiera kolejno filmy do wyciągnięcia z nich strumienia audio w formacie mp3 128k.

#!/bin/bash
# ============================================
# yt-dl128.sh
# Pobiera ścieżkę audio z YouTube jako MP3
# Obsługuje:
# --mp3 → szybki tryb (bez konwersji, jak najszybciej)
# --128 → konwersja do MP3 128 kb/s
# --list <plik.txt> → pobieranie wielu filmów
# Loguje postęp do ~/ytdl-download.log
# ============================================

OUTPUT_DIR="$HOME"
LOG_FILE="$OUTPUT_DIR/ytdl-download.log"

# Kolory
GREEN="\e[32m"
RED="\e[31m"
YELLOW="\e[33m"
BLUE="\e[34m"
RESET="\e[0m"

# Tworzy katalog i log
mkdir -p "$OUTPUT_DIR"
touch "$LOG_FILE"

# Funkcja logowania
log() {
 local MESSAGE="$1"
 echo -e "[$(date '+%Y-%m-%d %H:%M:%S')] $MESSAGE" >> "$LOG_FILE"
}

# --------------------------------------------
# Funkcje pobierania
# --------------------------------------------

download_fast_mp3() {
 local URL="$1"
 echo -e "${BLUE} Szybkie pobieranie MP3:${RESET} $URL"
 log "FAST_MP3: $URL"

yt-dlp -x --audio-format mp3 \
 --no-keep-video --no-playlist \
 -o "$OUTPUT_DIR/%(title)s.%(ext)s" \
 "$URL"

local STATUS=$?
 if [ $STATUS -eq 0 ]; then
 echo -e "${GREEN} Sukces:${RESET} pobrano $URL"
 log "SUCCESS_FAST: $URL"
 else
 echo -e "${RED} Błąd podczas pobierania:${RESET} $URL"
 log "ERROR_FAST: $URL"
 fi
 echo "-----------------------------------"
}

download_mp3_128() {
 local URL="$1"
 echo -e "${BLUE} Pobieranie i konwersja do MP3 128k:${RESET} $URL"
 log "MP3_128: $URL"

yt-dlp -x --audio-format mp3 \
 --postprocessor-args "-b:a 128k" \
 --no-keep-video --no-playlist \
 -o "$OUTPUT_DIR/%(title)s.%(ext)s" \
 "$URL"

local STATUS=$?
 if [ $STATUS -eq 0 ]; then
 echo -e "${GREEN} Sukces:${RESET} pobrano $URL"
 log "SUCCESS_128: $URL"
 else
 echo -e "${RED} Błąd podczas pobierania:${RESET} $URL"
 log "ERROR_128: $URL"
 fi
 echo "-----------------------------------"
}

# --------------------------------------------
# Obsługa argumentów
# --------------------------------------------

show_help() {
 echo -e "${YELLOW}Użycie:${RESET}"
 echo " $0 --mp3 <link_do_youtube>"
 echo " $0 --128 <link_do_youtube>"
 echo " $0 --mp3 --list <plik_z_linkami.txt>"
 echo " $0 --128 --list <plik_z_linkami.txt>"
 exit 1
}

if [ $# -lt 2 ]; then
 show_help
fi

MODE=""
LIST_FILE=""
URL=""

# Parsowanie argumentów
while [[ $# -gt 0 ]]; do
 case "$1" in
 --mp3)
 MODE="mp3"
 shift
 ;;
 --128)
 MODE="128"
 shift
 ;;
 --list)
 LIST_FILE="$2"
 shift 2
 ;;
 *)
 URL="$1"
 shift
 ;;
 esac
done

if [ -z "$MODE" ]; then
 echo -e "${RED} Nie podano trybu (--mp3 lub --128)!${RESET}"
 show_help
fi

if [ -n "$LIST_FILE" ]; then
 # Tryb listy
 if [ ! -f "$LIST_FILE" ]; then
 echo -e "${RED} Plik '${LIST_FILE}' nie istnieje!${RESET}"
 exit 1
 fi

echo -e "${YELLOW} Wczytywanie listy:${RESET} $LIST_FILE"
 echo -e "${YELLOW} Logowanie do:${RESET} $LOG_FILE"
 echo "-----------------------------------"
 log "===== START BATCH ($MODE) from $LIST_FILE ====="

while IFS= read -r LINE || [ -n "$LINE" ]; do
 if [[ -z "$LINE" || "$LINE"]()]()

…

 

 

Nawigacja

← Przekierowanie zapytań DNS do lokalnego resolvera
Elementy bezpieczeństwa IT – Triada CIA →
  • Szukaj

  • Kategorie

    • IT ogólnie (110)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Sieci (25)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (3)
        • Symulator sieci GNS3 (2)
      • Software (53)
        • Bazy danych (12)
        • Programowanie (3)
        • Systemy operacyjne (15)
          • Linux Debian (14)
        • Windows (7)
      • WiFi (2)
      • Wirtualizacja (26)
    • Różne (1)
  • Ostatnie wpisy

    • Małe wprowadzenie do baz danych
    • Bazy danych – Model relacyjny
    • Bazy danych – Elementy modelowania
    • Bazy danych – Ewolucja systemów zarządzania danymi
    • Bazy danych – Wstęp do normalizacji
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y