Código em python utilizando Flask de uma API que permite o download de musicas do Youtube.
Esta API tem como objetivo a fácil integração em aplicativos e sites, possuindo funções simples capazes de se adaptar a diferentes casos.
Caso você esteja a procura de uma API já pronta para o uso em projetos próprios que não necessitam de velocidade de resposta, sinta-se livre para utilizar a minha.
If you are looking for an API ready for use in your own projects that do not require speed of response, feel free to use my.
https://apiyoutube.eduardoroth1.repl.co
- Suas funcionalidades estarão listadas a baixo.
A API estava hospedada no RepliIt ,porém a partir do dia 1/1/2024 ela parou de aceitar hospedagem de Bots e APIs, estou procurando outro local para hospeda-la, porém sem data definida de voltar.
Até o presente momento (11/10/2023), a API está funcionando, ela pode apresentar erros devido a futuras atualizações da biblioteca utilizada.
A API disponibilizada a cima está livre para o uso, porém a única função que possui bloqueio para terceiros é a Parâmetros de pesquisa. por motivos que a API oficial do Youtube possui limite diário de 100 requests.
O objetivo desta API é ser uma aplicação simples e de fácil integração em diferentes cenários. Tem também como objetivo a fácil manutenção e modificação de acordo com as necessidades.
A ideia principal é a hospedagem da API no Replit, caso você deseje hospedar sua própria API no Replit, esteja ciente de que encontrará algumas dificuldades, veja a seção Hospedagem da API. A hospedagem da mesma é possivel em diferentes sites, não se esqueça de fazer as modificações necessárias.
- Instalação das ferramentas
- Remoção de audios baixados.
- Parâmetros de pesquisa.
- Niveis de qualidade.
- Download por ID.
- Download qualidade alta.
- Download qualidade media.
- Download qualidade baixa.
- Hospedagem da API
Todas as bibliotecas citadas possuem documentação nos links disponibilizados.
É possivel que problemas ocorram com a biblioteca Pytube
, principalmente se o projeto estiver sendo feito no Replit, caso isso aconteça, vá na seção Hospedagem da API, lá poderá ser encontrado mais detalhes.
Toda vez que a API é iniciada, a função delete_audio()
é chamada para excluir a pasta que contém os arquivos de audio. Esta função é necessária para que não acabe o espaço disponível. Não é necessária a criação da pasta novamente, a mesma é recriada quando o primeiro arquivo for baixado.
A função buscar_parametros()
não é necessária para o download dos arquivos, mas é um sistema de pesquisa integrado na API. Esta função tem como objetivo mandar uma request para a API oficial do Youtube com o algo que o usuário deseja pesquisar, seja o nome do vídeo, canal, palavras chaves, etc. Logo após, ela faz o tratamento desses dados e devolve como resposta da requisição inicial, um JSON com informações dos 10 primeiros vídeos encontrados, contendo:
- O link com qualidade média das Thumbnails.
- Nome do Canal.
- Titulo do Vídeo.
- ID do vídeo.
Duvidas podem ser geradas quanto a definição de "ID do vídeo", esta informação é a sequência de caracteres que correspondem ao vídeo e que ficam localizadas no final de toda URL de vídeos, após a rota /watch
seguido de ?v=
e então o ID, exemplo:
- https://www.youtube.com/watch?v=
4-43lLKaqBQ
Para a utilização desta função, é necessário o cadastro no site da API do Youtube duas keys são necessárias, a primeira vai nas configurações da API, onde está escrito developer_key
coloque sua developer key.
A segunda key vai na URL para a request, local que está escrito key
coloque a sua request key.
- https://sua_url_aqui/old town road
A função getids()
tem como objetivo retornar um JSON contendo:
- Qualidade do audio em kbps.
- ID.
A informaçãoID
deve ser utilizada na próxima função. Audios com qualidades mais altas necessitam de um maior tempo para o download e envio.
Para Utilizar esta função, deve-se escrever a rota/getids
após a URL principal e então adicionar?
no final para que o código conseguida fazer o tratamento dos dados, após isso deve ser passado o link inteiro do vídeo desejado, note que é possível fazer modificações básicas para que o código aceite apenas oID do vídeo
:
- https://sua_url_aqui/getids?https://www.youtube.com/watch?v=SlnrCLivyjM
Esta funcionalidade necessita que você passe dois parametros,primeiramente você passa a rota /down
e então em seguida vem os parametros, o primeiro é o ID da qualidade desejada que você encontra em Niveis de qualidade e o segundo é o link do vídeo que você deseja baixar.
- https://sua_url_aqui/down/250?https://www.youtube.com/watch?v=-59jGD4WrmE
- Arquivo MP3 que contém o audio do video escolhido.
Esta funcionalida serve para fazer o download com a maior qualidade disponivel, em alguns poucos videos, a qualidade mais alta, 128kbps
, não está disponivel, neste caso, o código mostra no console um aviso e tenta baixar na menor qualidade possivel,pois todos os videos possuem esta opção de download.
Basta colocar a URL principal, a rota /downalto
seguido de ?
e então o link completo do vídeo.
- https://sua_url_aqui/downalto?https://www.youtube.com/watch?v=vtNJMAyeP0s
- Arquivo MP3 que contém o audio do video escolhido.
Esta funcionalida serve para fazer o download com a qualidade média, em alguns poucos videos, a qualidade média, 70kbps
, não está disponivel, neste caso, o código mostra no console um aviso e tenta baixar na menor qualidade possivel,pois todos os videos possuem esta opção de download.
Basta colocar a URL principal, a rota /downmedio
seguido de ?
e então o link completo do vídeo.
- https://sua_url_aqui/downmedio?https://www.youtube.com/watch?v=vtNJMAyeP0s
- Arquivo MP3 que contém o audio do video escolhido.
Esta funcionalida serve para você fazer o download com a menor qualidade disponivel 48kbps
,
Basta colocar a URL principal, a rota /downbaixo
seguido de ?
e então o link completo do vídeo.
- https://sua_url_aqui/downbaixo?https://www.youtube.com/watch?v=vtNJMAyeP0s
- Arquivo MP3 que contém o audio do video escolhido.
A biblioteca Pytube
foi feita para fazer o download de vídeos do Youtube, porém devido a constantes atualizações de código do Youtube esta prática acaba ficando mais dificil, então é possivel que ao fazer o download padrão da biblioteca não funcione, segue a baixo uma maneira de tentar solucionar o problema.
Caso o projeto esteja sendo feito no Replit, é recomendado que seja começado com o template Flask
, pois ele já possui as configurações iniciais necessárias para o acesso da API remotamente por toda a internet.
Logo após, faça o passo a cima caso não funcione o download padrão e então vá em Files
e clique em Show hidden files
, irá aparecer novos arquivos antes escondidos.
Encontre o arquivo replit.nix
e modifique o deps
como está na imagem a baixo.