domingo, 29 de janeiro de 2023

Tutorial e Dica: Como Fazer Download no YouTube - 3 modos diferentes!!! E ainda crie um programa para baixar vídeos você mesmo!

Pessoal,


Com frequência nos deparamos com algum vídeo no YouTube que julgamos necessário guardar para consulta futuro.

Nesse momento, a única opção que temos é fazer o download do vídeo. O vídeo pode ser retirado, sua internet pode cair, o YouTube pode ser proibido no país, sei lá. Ene possibilidades.

Pensei em mostrar aqui três formas de fazer downloads de vídeos do YouTube: usando um site, usando Docker e usando um programa em Python.

Vamos começar pelo site.


1 - savefrom.net

Esse é um serviço clássico e que todos já devem conhecer. O site savefrom.net faz o download de videos do YT. É só colar o endereço do vídeo do YT e pronto.


O site ainda permite que você escolha algumas opções de resolução para download. Algumas, nem todas.



Repare que apenas duas opções (720 e 360) têm áudio. As outras você baixa o vídeo, mas não terá áudio... O site do YT tem várias outras resoluções para assistir, até 4k.


E também não tem a opção de baixar apenas áudio (vai que era apenas um vídeo para tirar uma música?).

O site ainda tem duas outras opções para download, todas levando ao mesmo lugar: adicionar uma extensão ao navegador (o que eu me recuso a fazer, pois você autoriza o site a monitorar seu tráfego pela internet, deixa o navegador mais pesado e consumindo mais recursos, etc) e o famoso "ss" (onde você coloca as letras "ss" antes do "youtube" no link e manda carregar a página novamente.

No caso do link anterior, ao invés de "https://www.youtube.com/watch?v=VK7bCs4Ho_I" ficaria assim: "https://www.ssyoutube.com/watch?v=VK7bCs4Ho_I". Esse link leva para a página do SaveFrom.net. Claro, quando funciona...


Próximo!


2 - Docker

Esta opção é bem interessante. Você instala um container docker e acessa a página do container para baixar o vídeo.

Existem várias opções boas:

 - TubeSync, que funciona como o Sonarr, baixando canais e playlists inteiras. Atualizou o canal? Ele baixa automaticamente.

 - MeTube: é um fork do yt-dlp. Você coloca o link do video do YT (e vários outros serviços) e ele baixa automaticamente.

- Alltube: tipo o MeTube, mas com o layout mais feinho.

 - TubeArchivist: tipo o TubeSync, mas com o layout bem poluído. Baixa um vídeo, playlist e canal todo...

 - Youtube Downloader: excelente opção. Permite escolher a resolução, baixar apenas áudio, etc.

Eu pessoalmente tenho instalado o MeTube e o Youtube Downloader.

Para instalar o MeTube, usei o docker-compose do Portainer (Stack):
version: "3"
services:
  metube:
    image: alexta69/metube
    restart: always
    ports:
      - "5992:8081"
    volumes:
      - /volume3/Download/NAS Downloads:/downloads
    user: "1026:100"
Para acessar o serviço, digite o IP do container pela porta 5992.


Funciona muito bem, você pode escolher a resolução, o download é rápido, baixar um vídeo, uma playlist ou apenas o áudio... Muito bom! Também tem modo escuro, se quiser.

Para instalar o YouTube Downloader já dá um pouco mais de trabalho. Como estou instalando no Synology, vou mostar como fazer por ele.

Primeiro você deve ir no File Station, na pasta Docker e criar uma pasa com o nome "youtubedl" (tudo em minúsculo mesmo". Dentro desta pasta, crie outras cinco pastas: "appdata", "audio", "subscriptions", "users" e "video". Novamente, tudo em minúsculo.


Mesmo que você faça por outro sistema ou outro modo, deverá criar as pastas.

version: "2.1"
services:
  youtube_downloader:
    image: tzahi12345/youtubedl-material
    container_name: youtube_downloader
    volumes:
      - /volume3/docker/youtubedl/appdata:/app/appdata \
      - /volume3/docker/youtubedl/audio:/app/audio \
      - /volume3/docker/youtubedl/subscriptions:/app/subscriptions \
      - /volume3/docker/youtubedl/users:/app/users \
      - /volume3/docker/youtubedl/video:/app/video \
    ports:
      - 8084:17442
    restart: always
Pronto! Você já recebeu mastigado, no Stack, bem diferente do que eu achei :)

Para acessar, digite o IP com a porta 8084.


Veja que também é possivel mudar a qualidade do download, baixar apenas audio e baixar playlists. Tem também opção de usar modo escuro.

Achei um pouco estranho porque não achei onde estava o vídeo do download. Entendi que, após fazer o dowload, para efetivamente ter ele no seu computador você precisa tocar o vídeo no player embutido para, então, conseguir copiá-lo para o seu computador.

Mas isso me deixou preocupado: onde está o vídeo baixado? Penso que ele está em alguma pasta do NAS mas eu não consegui encontrá-lo... Depois de muitos e muitos downloads, será que vou torrar meu espaço de armazenamento?

Ele tem muitas configurações, permite editar uma série de metadados, enfim, é muito bom. Mas esse questão do download me deixou com uma pulga atrás da orelha... :\

Vamos agora para a cereja do bolo: um bom programinha em Python!


3 - Python

É aqui que as coisas ficam interessantes! Não vou ensinar aqui a instalar o Python nem as dependências do programa. Se você optou por isso, imagino que saiba resolver essas questões ou que terá interesse em aprender. O site do Python ensina isso muito melhor do eu seria capaz de fazer.

Basicamente o programa usa a biblioteca "pytube" para fazer o download do vídeo e de algumas informações (título do vídeo, tamanho do arquivo e duração do vídeo). 

Ele pede a URL do vídeo, apresenta uma barra de progressão do vídeo e ao final avisa que o vídeo foi baixado e mostra as informações.
from pytube import YouTube
from pytube.cli import on_progress
import pytube.request

pytube.request.default_range_size = 500000

def completou_download(a, b):
completo = '\n\nDownload Completo!\n'
titulo = 'Título: ' + stream.title + '\n'
tamanho = 'Tamanho: ' + str(stream.filesize / 1000000) + ' Mb\n'
duracao = 'Duração: ' + str(yt.length) + ' Segundos\n'

lista_inf = [completo, titulo, tamanho, duracao]

for t in lista_inf:
print(t)
print('-*' * 30)


url = input('\nDigite a URL do vídeo: ')
try:
yt = YouTube(url, on_progress_callback=on_progress, on_complete_callback=completou_download)
stream = yt.streams.filter(progressive=True, file_extension='mp4').get_highest_resolution()
print('\nIniciando Download...\n')
stream.download()
except:
print('\nOoops! Algo deu errado!\n')
Duas dicas para instalação do Python e da biblioteca "pytube":

    1 - às vezes você pode encontrar um erro do tipo 'urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)'. Para resolver isso, ao menos no MacOS, abra a pasta /Aplicativos/Python 3.x (onde x é a versão que você está usando) e clique duas vezes no arquivo "Install Certificates.command". Se você tiver mais de uma versão instalada, faça isso em todas as versões.


    2 - para instalar o "pytube", digite o comando:  
# pip install pytube
Porém, às vezes, você pode se deparar com este erro ao depurar e executar o programa:
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import pytube
ImportError: No module named 'pytube'
Aqui provavemente é porque deve haver mais de uma versão do pip e do Python instaladas.


No meu caso, repare que eu tenho a versão 3.9.1 do Python instalada e a versão 22.3.1 do pip que está no Python 3.9

No meu caso, digitando pip ou pip3 já corresponde à única versão instalada do Pyhton. Portanto, o comando para instalar o "pytube" pra mim mostra isso:


Se você tiver mais de uma versão instalada, precisará digitar "pip install pytube" e "pip3 install pytube" para baixar o "pytube" em ambas as versões do Python instaladas.

Bom, com todas as dependências resolvidas, a reposta é essa aqui:


Pronto!

Existe mais uma dica extra. Na verdade eu já dei essa dica lá atrás, há dois anos!! Veja ela aqui. Essa dica trata do cxfreeze, uma biblioteca do Python que cria um executável. Depois de digitar esse programa em Python para baixar vídeos do Youtube, vá no link acima (esse aqui) e crie um executável desse programa.

Nesse post você viu três formas de fazer download de vídeos do Youtube! Escolha a sua e seja feliz!

Nenhum comentário:

Postar um comentário