Como baixar vídeos do Facebook via terminal
Neste artigo veremos como baixar vídeos do Facebook em formato HD ou SD via terminal. Para a tarefa usaremos um script em Python, o Facebook-Video-Downloader.
Introdução
Nesta dica apresentarei uma forma de baixar vídeos do Facebook via terminal. Faremos isso com um ótimo programa escrito em Python que encontrei no GitHub:
git clone https://github.com/sameera-madushan/Facebook-Video-Downloader.git
Entre no diretório do projeto:
cd Facebook-Video-Downloader
E instale as dependências do Python. Lembrando que o script usa o Python3.x:
pip3 install requirements.txt
NOTA: use "sudo pip3 install requirements.txt" caso queira instalar as dependências para todos os usuários do sistema.
python3 downloader.py
Uma tela com um prompt será apresentada:
Escolha se deseja baixar o vídeo em qualidade HD ou SD e aperte Enter. Pronto! Teu vídeo foi salvo na pasta onde o comando foi executado com o formato: ano-mes-dia-hora-min-seg.mp4
mediainfo 2020-04-20-12-01-55.mp4
Copie o downloader.py para a pasta /usr/local/bin. Será necessário permissão de root para escrever lá:
sudo cp downloader.py /usr/local/bin
Por motivos de didática irei renomear o downloader.py para "facebookvideo", escolha o nome que achar mais adequado:
sudo mv /usr/local/bin/downloader.py /usr/local/bin/facebookvideo
Transforme o arquivo em executável:
sudo chmod +x /usr/local/bin/facebookvideo
Porém se você executar o comando agora, irá obter uma mensagem de erro:
facebookvideo
sudo vim /usr/local/bin/facebookvideo
E pronto! Agora sempre que quiser baixar um vídeo no Facebook pelo terminal, basta digitar:
facebookvideo
Quem quiser contribuir com o projeto e adicionar suporte a formatos mais baixos, o trecho de código a ser alterado é este (ponto de partida): o
Fica o convite/desafio para se tornar um contribuidor de software livre! Implemente o código e faça um pull request.
Espero ter ajudado!
Instalação
Primeiro passo será clonar o repositório. Abra um terminal e digite:git clone https://github.com/sameera-madushan/Facebook-Video-Downloader.git
Entre no diretório do projeto:
cd Facebook-Video-Downloader
E instale as dependências do Python. Lembrando que o script usa o Python3.x:
pip3 install requirements.txt
NOTA: use "sudo pip3 install requirements.txt" caso queira instalar as dependências para todos os usuários do sistema.
Forma de uso
Para usar o script basta digitar:python3 downloader.py
Uma tela com um prompt será apresentada:
___ ___ __ ___ _ ___ _ _
| __| _ ) / (_)__| |___ ___ | _____ __ ___ _ | |___ __ _ __| |___ _ _
| _|| _ V /| / _` / -_) _ | |) / _ V V / ' | / _ / _` / _` / -_) '_|
|_| |___/ \_/ |_\__,_\___\___/ |___/\___/\_/\_/|_||_|_\___/\__,_\__,_\___|_|
[Sameera Madushan]
Enter the URL of Facebook video:
Agora você só precisa colar a URL do vídeo desejado. Para isso abra o vídeo no Facebook, clique com o botão direito sobre ele e escolha a opção "Show Video URL". Copie a URL com Ctrl + C.
Volte ao terminal e cole a URL com: Ctrl + Shift + V (ou botão direito + colar)
Escolha se deseja baixar o vídeo em qualidade HD ou SD e aperte Enter. Pronto! Teu vídeo foi salvo na pasta onde o comando foi executado com o formato: ano-mes-dia-hora-min-seg.mp4
mediainfo 2020-04-20-12-01-55.mp4
General Complete name : /home/fabio/2020-04-20-16-29-26.mp4 Format : MPEG-4 Format profile : Base Media Codec ID : isom (isom/iso2/avc1/mp41) File size : 7.45 MiB Duration : 3 min 21 s Overall bit rate : 310 kb/s Movie name : 485955588626401 Encoded date : UTC 1904-01-01 00:00:00 Tagged date : UTC 1904-01-01 00:00:00 Writing application : Lavf56.40.101 Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : Baseline@L3 Format settings, CABAC : No Format settings, ReFrames : 5 frames Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 3 min 21 s Bit rate : 274 kb/s Width : 400 pixels Height : 224 pixels Display aspect ratio : 16:9 Original display aspect ratio : 16:9 Frame rate mode : Variable Frame rate : 29.970 FPS Minimum frame rate : 29.960 FPS Maximum frame rate : 30.000 FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.102 Stream size : 6.56 MiB (88%) Writing library : x264 core 157 Encoding settings : cabac=0 / ref=5 / deblock=1:0:0 / analyse=0x1:0x111 / me=hex / subme=7 / psy=0 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=7 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=90 / keyint_min=9 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=27.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=450 / vbv_bufsize=900 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=2:1.00 Encoded date : UTC 1904-01-01 00:00:00 Tagged date : UTC 1904-01-01 00:00:00 Audio ID : 2 Format : AAC Format/Info : Advanced Audio Codec Format profile : HE-AACv2 / HE-AAC / LC Codec ID : 40 Duration : 3 min 21 s Duration_LastFrame : 154 ms Bit rate mode : Constant Bit rate : 32.0 kb/s Channel(s) : 2 channels / 1 channel / 1 channel Channel positions : Front: L R / Front: C / Front: C Sampling rate : 44.1 kHz / 44.1 kHz / 22.05 kHz Frame rate : 21.533 FPS (1024 spf) Compression mode : Lossy Stream size : 787 KiB (10%) Default : Yes Alternate group : 1 Encoded date : UTC 1904-01-01 00:00:00 Tagged date : UTC 1904-01-01 00:00:00
Bônus - script para comando
Bom, é meio desconfortável toda hora que quiser baixar um vídeo ter que entrar na pasta do projeto e digitar "python3 downloader.py" né? Então vamos converter o script em comando. Eu particularmente uso uma pasta ~/bin no meu $HOME, mas para simplificar o artigo vou usar o /usr/local/bin.Copie o downloader.py para a pasta /usr/local/bin. Será necessário permissão de root para escrever lá:
sudo cp downloader.py /usr/local/bin
Por motivos de didática irei renomear o downloader.py para "facebookvideo", escolha o nome que achar mais adequado:
sudo mv /usr/local/bin/downloader.py /usr/local/bin/facebookvideo
Transforme o arquivo em executável:
sudo chmod +x /usr/local/bin/facebookvideo
Porém se você executar o comando agora, irá obter uma mensagem de erro:
facebookvideo
from: can't read /var/mail/datetime from: can't read /var/mail/tqdmIsso ocorre porque não indicamos que o script é do tipo Python. Edite o script com seu editor preferido e adicione o conteúdo abaixo na primeira linha:
sudo vim /usr/local/bin/facebookvideo
#!/usr/bin/env python3
E pronto! Agora sempre que quiser baixar um vídeo no Facebook pelo terminal, basta digitar:
facebookvideo
Problemas
O único problema que encontrei no script foi o fato dele não fazer download de vídeos de baixa qualidade. É necessário que o vídeo tenha suporte para download em HD ou SD, caso contrário ele não faz nada.Quem quiser contribuir com o projeto e adicionar suporte a formatos mais baixos, o trecho de código a ser alterado é este (ponto de partida): o
_qualityhd = re.search('hd_src:"https', html)
_qualitysd = re.search('sd_src:"https', html)
_hd = re.search('hd_src:null', html)
_sd = re.search('sd_src:null', html)
_qualitysd = re.search('sd_src:"https', html)
_hd = re.search('hd_src:null', html)
_sd = re.search('sd_src:null', html)
Fica o convite/desafio para se tornar um contribuidor de software livre! Implemente o código e faça um pull request.
Agradecimentos
Agradecimento especial ao Sameera Madushan por compartilhar o código sob licença GPL 3.0.Espero ter ajudado!