Progmar Marcin Załęczny

Język:

Pobieranie plików video z Youtube w systemie Ubuntu

Instalujemy potrzebne programy: sudo apt-get install mplayer2 ffmpeg Upewniamy się, że program youtube-dl mamy w najnowszej wersji: sudo apt-get remove -y youtube-dl
sudo wget https://yt-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+x /usr/local/bin/youtube-dl
hash -r

Jeśli polecenie: youtube-dl -g "https://www.youtube.com/watch?v=youtube_video_code" zwróci błąd: ERROR: Signature extraction failed, to najprawdopodobniej mamy zainstalowaną starszą wersję programu youtube-dl. Jeśli jednak mamy najnowszą wersję, to filmu z Yutube nie ściągniemy (do czasu aż autor programu nie dostosuje go do zmian na Youtubie).

Teraz utwórzmy w katalogu /usr/local/bin plik grab.sh o następującej zawartości:

#!/bin/bash

rm -rf video.mov video.url
rm -rf audio.mov audio.url

for url in $(youtube-dl -g "http://www.youtube.com/watch?v=$1"); do
    if [ ! -r video.mov ]; then
        echo $url > video.url
        cat video.url | xargs curl -L > video.mov
        continue
    fi
    if [ ! -r audio.mov ]; then
        echo $url > audio.url
        cat audio.url | xargs curl -L > audio.mov
        break
    fi
done;

ffmpeg -i video.mov -i audio.mov -vcodec copy -acodec copy "$1.mov"
if [ -r "$1.mov" ]; then
    rm -rf video.mov video.url
    rm -rf audio.mov audio.url
fi

ls -al

Nadajmy mu uprawnienia do wykonywania: sudo chmod 755 /usr/local/bin/grab.sh

Od teraz film ściągniemy wydając polecenie: grab.sh youtube_video_code Powyższy skrypt ściąga video w dwóch plikach, oddzielnie dla video oraz audio. Po ściągnięciu powyższych plików są one scalane w jeden plik audio-video.

Skrypt ten czasami zwraca błąd: moov atom not found
audio.mov: Invalid data found when processing input
Oznacza to, że jeden z tych plików albo oba nie ściągnęły się poprawnie. W przeważającej liczbie przypadków wystarczy jeszcze raz odpalić ten skrypt i film ściągnie się poprawnie. Jeśli pomimo kilkukrotnego wywołania skryptu cały czas pluje on powyższym błędem, to filmu nie da się ściągnąć. W tym przypadku w bieżącym katalogu pozostaną pliki: audio.mov, video.mov, oraz audio.url i video.url, które można wykorzystać to zbadania przyczyny niepowodzenia.


Pobieranie plików video z innych serwisów w systemie Ubuntu

Instalujemy potrzebne programy: sudo apt-get install mplayer2 Jeśli plik video, który chcemy pobrać znajduje się na stronie dostępnej przez protokół http, to do jego pobrania wystarczy wywołać poniższe polecenie: mplayer http://url-strony-z-filmem -dumpstream -dumpfile nazwa-pliku-wyjsciowego.flv

Dla wygody, poniżej znajduje się krótki skrypt, który wystarczy wywołać z parametrem będącym pełnym urlem do strony z filmem. Odetnie on ostatni człon urla i utworzy z niego nazwę pliku docelowego. Jeśli plik taki nie istnieje w bieżącym katalogu, to nastąpi pobranie filmu:

#!/bin/bash

url="$1"
fname=${url##http*/}.flv

if [ ! -r "./$fname" ]; then
    mplayer $url -dumpstream -dumpfile $fname
fi