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.

[ Hits: 4.447 ]

Por: Fábio Berbert de Paula em 20/04/2020 | Blog: https://youtube.com/c/cotidianohackeado


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:

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                           : [email protected]
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/tqdm

Isso 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)

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!

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

O Linux e o Star Office

Viva o Linux 2008 - Site com cara e recursos novos!

Alexa e o ranking dos principais sites Linux da comunidade brasileira

Como camuflar seu WhatsApp Web usando Snippets JavaScript

Tecnologia a seu favor: 3 motivos para ter um sistema financeiro e ganhar tempo no trabalho

Leitura recomendada

Python - Uma linguagem orientada a objetos

ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583

Pydev - Preparando o Eclipse para o Python

Introdução a Threads e como implementá-las em Python

Programe em Python no jogo Minecraft com seu filho ou sozinho

  
Comentários
[1] Comentário enviado por dix em 20/04/2020 - 18:13h

Precisei disso a algum tempo e não consegui fazer! Maneiro!

[2] Comentário enviado por mauricio123 em 25/04/2020 - 09:56h


Bacana. de vez em quando aparece um video interessante no face para baixar.


Contribuir com comentário