! note que o leia-me ainda não foi atualizado
Uma API baseada em Quart para baixar vídeos e áudio do YouTube, recuperar metadados de vídeo e manipular legendas. Essa API permite que você interaja com o conteúdo do YouTube de forma programática, aproveitando tarefas em segundo plano para gerenciar arquivos temporários e fornecer downloads eficientes.
Baixe vídeos e áudio: recupere conteúdo com resoluções e taxas de bits especificadas.
Recuperar metadados de vídeo: obtenha detalhes como título, visualizações e informações do canal.
Lidar com legendas: busque e salve legendas no formato SRT.
Verifique o armazenamento: Garanta espaço de armazenamento suficiente antes de fazer o download.
Python 3.7+
FFmpeg
Dependências requirements.txt
Clonar o repositório
clone git https://github.com/DannyAkintunde/YouTube-dl-apicd Youtube-dl-api
Execute o script de instalação
Execute o script install.sh
para instalar dependências Python e pacotes de sistema:
chmod +x instalar.sh ./install.sh
Este script irá:
Instale as dependências do Python listadas em requirements.txt
Atualizar a lista de pacotes
Instale o FFmpeg
Verifique a instalação do FFmpeg
Ajuste as configurações no arquivo settings.py
:
DEBUG
: Habilita ou desabilita o modo de depuração (padrão: True
).
PROXY
: Configure proxies no formato http_proxy,https_proxy.
AUTH
: Configure a autenticação (padrão: False
).
ACCESS_TOKEN
: Token para acessar recursos protegidos (obrigatório se AUTH
for True
).
REFRESH_TOKEN
: Token para atualização de acesso (obrigatório se AUTH
for True
).
EXPIRES
: Tempo de expiração do token de acesso (obrigatório se AUTH
for True
).
VISITOR_DATA
: Dados para rastreamento de visitantes (obrigatório se AUTH
for True
).
PO_TOKEN
: Token para pedidos de compra (obrigatório se AUTH
for True
).
MAX_DOWNLOAD_SIZE
: Tamanho máximo do arquivo para downloads (padrão: 2 GiB
).
MAX_SEARCH_AMOUNT
: número máximo de resultados de pesquisa de vídeo (padrão: 25
).
MIN_SEARCH_AMOUNT
: número mínimo de resultados de pesquisa de vídeo (padrão: 2
).
DEFAULT_SEARCH_AMOUNT
: número padrão de resultados de pesquisa de vídeo (padrão: 20
).
EXPIRATION_DELAY
: Atraso para expiração de arquivos temporários (padrão: 1800 seconds
).
TEMP_DIR
: Diretório para armazenamento de arquivos temporários (padrão: 'temp_files'
).
AUTH_DIR
: Caminho para salvar o arquivo de autenticação (padrão: 'auth'
).
AUTH_FILE_NAME
: Nome do arquivo de autenticação (padrão: 'temp.json'
).
CODECS
: Lista de codecs de vídeo e áudio a serem usados (padrão: 'avc1,aac'
).
OBTER /ping
Descrição: Verifica o status da API.
Resposta:
{ "mensagem": "pong"}
200 OK
: {"message": "pong"}
OBTER /search
Descrição: pesquisa vídeos do YouTube com base em uma consulta.
Parâmetros de consulta:
q
ou query
: consulta de pesquisa.
Solicitação de exemplo:
GET /search?q=python+tutorial
Exemplo de resposta:
{ { "comprimento": 20, "resultados": [ { "accessibility": {"duration": "6 horas, 14 minutos, 7 segundos","title": "Tutorial Python - Curso completo de Python para iniciantes programando com Mosh 41.059.791 visualizações há 5 anos 6 horas e 14 minutos" } , "canal": {"id": "UCWv7vMbMWH4-V0ZXdmDpPBA","link": "https://www.youtube.com/channel/UCWv7vMbMWH4-V0ZXdmDpPBA","name": "Programando com Mosh","thumbnails": [ {"altura": 68,"url": "https://yt3.ggpht.com/lCeCb47hCbXWFa0I4gi8uWDHzWSs7sjK4FDmk7lFEUMRNp6QRzIQOkwaKhwv7eNKZacRI2uR=s68-ck-c0x00ffffff-no-rj","largura": 68 } ] }, "descriçãoSnippet": [ { "texto": "Torne-se um "}, { "negrito": verdadeiro, "texto": "Python"}, { "text": " pro! Este abrangente "}, { "negrito": verdadeiro, "texto": "tutorial"}, { "text": " leva você do iniciante ao herói, cobrindo o básico, aprendizado de máquina e ..."} ], "duração": "6:14:07", "id": "_uQrJ0TkZlc", "link": "https://www.youtube.com/watch?v=_uQrJ0TkZlc", "publishedTime": "5 anos atrás", "richThumbnail": {"height": 180,"url": "https://i.ytimg.com/an_webp/_uQrJ0TkZlc/mqdefault_6s.webp?du=3000&sqp=CLf547cG&rs=AOn4CLCAcnB5okiLttIEMkLM9bb-3w28AQ","largura": 320 }, "shelfTitle": nulo, "miniaturas": [ { "altura": 202, "url": "https://i.ytimg.com/vi/_uQrJ0TkZlc/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCQfkbApoaN-_QBOuiyHzWJOiziEA", "largura": 360}, { "altura": 404, "url": "https://i.ytimg.com/vi/_uQrJ0TkZlc/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCpUFKfUMVNbg8mqTcZ8UdSUjpilw", "largura": 720} ], "title": "Tutorial Python - Curso completo de Python para iniciantes", "type": "video", "viewCount": {"short": "41 milhões de visualizações","text": "41.059.791 visualizações" } }//...mais resultados aqui ], "search": "tutorial python", "search_id": "00b5a31c-30d7-4d96-92e5-42b871062bca", "search_suggestions": ["tutorial python","tutorial python para iniciantes","tutorial python 2024" ] }
200 OK
: Resultados da pesquisa.
400 Bad Request
: parâmetro de consulta ausente ou inválido.
500 Internal Server Error
: erro do lado do servidor.
OBTER /info
Descrição: recupera metadados de um vídeo do YouTube.
Parâmetros de consulta:
url
: o URL do vídeo do YouTube.
Solicitação de exemplo:
OBTER /info?url=https://youtube.com/watch?v=dQw4w9WgXcQ
Exemplo de resposta:
{ "autor": "Rick Astley", "taxas de bits": ["160kbps","128kbps","70kbps","50kbps" ], "channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw", "channel_url": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw", "description": "O vídeo oficial de “Never Gonna Give You Up” de Rick Astley. nnO novo álbum 'Are We There Yet?' já foi lançado: Baixe aqui: https://RickAstley.lnk.to/AreWeThereYetFA/itunesnn“Never Gonna Give You Up” foi um sucesso global em seu lançamento em julho de 1987, liderando as paradas em 25 países, incluindo o Reino Unido, país natal de Rick e o Billboard Hot 100 dos EUA. Também ganhou o Brit Award de Melhor Single em 1988. Stock Aitken e Waterman escreveram e produziram a faixa que foi o primeiro single e faixa principal do LP de estreia de Rick, “Whenever You Need Somebody”. O álbum foi número um no Reino Unido e vendeu mais de 15 milhões de cópias em todo o mundo. O vídeo lendário foi dirigido por Simon West – que mais tarde fez sucessos de bilheteria em Hollywood. como Con Air, Lara Croft – Tomb Raider e The Expendables 2. O vídeo ultrapassou a marca de 1 bilhão de visualizações no YouTube em 28 de julho de 2021.nnInscreva-se no canal oficial de Rick Astley no YouTube: https://RickAstley.lnk.to/YTSubIDnnSiga Rick Astley:nFacebook: https://RickAstley.lnk.to/FBFollowID nTwitter: https://RickAstley.lnk.to/TwitterID nInstagram: https://RickAstley.lnk. para/InstagramID nWebsite: https://RickAstley.lnk.to/storeID nTikTok: https://RickAstley.lnk.to/TikTokIDnnOuça Rick Astley:nSpotify: https://RickAstley.lnk.to/SpotifyID nApple Music: https://RickAstley.lnk.to/AppleMusicID nAmazon Music: https://RickAstley .lnk.to/AmazonMusicID nDeezer: https://RickAstley.lnk.to/DeezerID nnLyrics:nNão somos estranhos ao amornVocê conhece as regras e InA também conhece.Um compromisso total é o que estou pensandonVocê não conseguiria isso de nenhum outro carannEu só quero te contar como eu Estou sentindo,Tenho que fazer você entenderNunca vou desistir de vocêNunca vou te decepcionarNunca vou correr por aí e abandonar vocêNunca vou fazer você chorarNunca vou dizer adeusNunca vou mentir e machucar vocêNós nos conhecemos há tanto temponSeu coração está doendo, mas você é muito tímido para dizer issonPor dentro nós dois sabemos o que está acontecendonNós conhecemos o jogo e vamos jogá-lonnE se você me perguntar como Estou sentindo. Não me diga que você é cego demais para ver. Nunca vou desistir de você. Nunca vou te decepcionar. Nunca vou correr por aí e te abandonar. Nunca vou te obrigar. chorarNunca vou dizer adeusNunca vou mentir e machucar você#RickAstley #NeverGonnaGiveYouUp #WheneverYouNeedSomebody #OfficialMusicVideo", "id": "dQw4w9WgXcQ", "keywords": ["rick astley","Never Gonna Give You Up","nggyu" ,"nunca vou desistir de você letras","rick roll","Rick Roll","rick astley oficial","rickrolled","música de Fortnite","evento de Fortnite","dança de Fortnite","fortnite nunca vou desistir de você","rick roll","rickrolling","rick rolando","nunca vou te dar up","música dos anos 80","rick astley new","vídeo animado","rickroll","músicas meme","nunca vou desistir de você letras","Rick Astley 2022","nunca vou deixar você down","animado","rick rolls 2022","nunca vou desistir de você no karaokê" ], "comprimento": 212, "data de publicação": nulo, "resoluções": ["1080p","720p","480p","360p","240p","144p" ], "subtitles": ["en"], "thumbnail_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg", "title": "Rick Astley - Nunca vou desistir de você ( Vídeo oficial da música)", "url": {"audio": { "128kbps": "https://rr2---sn-nx5s7n76.googlevideo.com/videoplayback?expire=1727620629&ei=tBH5ZuXtPK32sfIPmpfRaA&ip=34.213.214.55&id=o-AFciugVQSUntvlu-EtzrcBd4W06EaI8LnUezpJa hzv8S&itag=140&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=7c&mm=31%2C2 9&mn=sn-nx5s7n76%2Csn-nx57ynsk&ms=au%2Crdu&mv=m&mvi=2&pl=17&initcwndbps=906250&siu =1&bui=AXLXGFTLtpYeBi-WkfbOrD6x11PgTTzzR3XccdPZFtz4stuPKtFQJJZUbJtbt6KJJdElaNlI6w &spc=54MbxZ-8cHiojJiaToWtUNunjsdmNSRVaZsp33b3yJk5hWz-XyvPBPMvqlmBFtXq-StOzuzECw&vp rv=1&svpuc=1&mime=audio%2Fmp4&ns=LcPciQPCIlyTAh4bUR1Ry3oQ&rqh=1&gir=yes&clen=3433 605&dur=212.091&lmt=1717047821006373&mt=1727598776&fvip=4&keepalive=sim&fexp=51299 152%2C51300760&c=WEB&sefc=1&txp=4532434&n=PBkHSDz29n0qdg&sparams=expire%2Cei%2Cip %2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2 Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Ci nitcwndbps&lsig=ABPmVW0wRQIhAL4XTegKBWTyhPvlGwVYx5b6wKFXGaJnWz5hPoyu2V1jAiBX3ZHpSl -MMXhVWpt3O5ds3INf0Wlr-pbzhcj9KywORA%3D%3D&pot=MnRLRTG8kBazMEt9RGwvFceBv40KENnpHt lDrguGDKni7A-azrTC0L_GYy7Pz-fH6mqHFsS7CmHJ3c3g9Y6z-RqqRsbYhMeXWbiXmyTXLpKRXOkQFbgS jNeRohf9afkINW7suFEVcBe0OedclwPPNYTqkcXvKA%3D%3D&sig=AJfQdSswRQIhALzVUs_1ZBhAU4vl 4-_gWy8D_IuAVQZJzFanrawDMKOsAiAGBw-Q385K5JzdWj80j9eKH3yKDR0xsKxZTyKPU2Ubkg%3D%3D", "160kbps": "https://rr2---sn-nx5s7n76.googlevideo.com/videoplayback?expire=1727620629&ei=tBH5ZuXtPK32sfIPmpfRaA&ip=34.213.214.55&id=o-AFciugVQSUntvlu-EtzrcBd4W06EaI8LnUezpJa hzv8S&itag=251&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=7c&mm=31%2C2 9&mn=sn-nx5s7n76%2Csn-nx57ynsk&ms=au%2Crdu&mv=m&mvi=2&pl=17&initcwndbps=906250&si u=1&bui=AXLXGFTLtpYeBi-WkfbOrD6x11PgTTzzR3XccdPZFtz4stuPKtFQJJZUbJtbt6KJJdElaNlI6 w&spc=54MbxZ-8cHiojJiaToWtUNunjsdmNSRVaZsp33b3yJk5hWz-XyvPBPMvqlmBFtXq-StOzuzECw& vprv=1&svpuc=1&mime=audio%2Fwebm&ns=LcPciQPCIlyTAh4bUR1Ry3oQ&rqh=1&gir=yes&clen=3 437753&dur=212.061&lmt=1717047822556748&mt=1727598776&fvip=4&keepalive=yes&fexp=5 1299152%2C51300760&c=WEB&sefc=1&txp=4532434&n=PBkHSDz29n0qdg&sparams=expire%2Cei% 2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cm ime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cp l%2Cinitcwndbps&lsig=ABPmVW0wRQIhAL4XTegKBWTyhPvlGwVYx5b6wKFXGaJnWz5hPoyu2V1jAiBX 3ZHpSl-MMXhVWpt3O5ds3INf0Wlr-pbzhcj9KywORA%3D%3D&pot=MnRLRTG8kBazMEt9RGwvFceBv40K ENnpHtlDrguGDKni7A-azrTC0L_GYy7Pz-fH6mqHFsS7CmHJ3c3g9Y6z-RqqRsbYhMeXWbiXmyTXLpKRX OkQFbgSjNeRohf9afkINW7suFEVcBe0OedclwPPNYTqkcXvKA%3D%3D&sig=AJfQdSswRAIgRgmVXNz6G XZTa8wFsnP1g7VTKkAinxQ2MeL4L7_PpUUCIHgo1DpARUjGV3QpFS06_Q9xdzrUmYnQWyWm0VhX-HFS", "50kbps": "https://rr2---sn-nx5s7n76.googlevideo.com/videoplayback?expire=1727620629&ei=tBH5ZuXtPK32sfIPmpfRaA&ip=34.213.214.55&id=o-AFciugVQSUntvlu-EtzrcBd4W06EaI8LnUezpJa hzv8S&itag=249&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=7c&mm=31%2C2 9&mn=sn-nx5s7n76%2Csn-nx57ynsk&ms=au%2Crdu&mv=m&mvi=2&pl=17&initcwndbps=906250&siu =1&bui=AXLXGFTLtpYeBi-WkfbOrD6x11PgTTzzR3XccdPZFtz4stuPKtFQJJZUbJtbt6KJJdElaNlI6w &spc=54MbxZ-8cHiojJiaToWtUNunjsdmNSRVaZsp33b3yJk5hWz-XyvPBPMvqlmBFtXq-StOzuzECw&vp rv=1&svpuc=1&mime=audio%2Fwebm&ns=LcPciQPCIlyTAh4bUR1Ry3oQ&rqh=1&gir=yes&clen=123 2413&dur=212.061&lmt=1717047819209140&mt=1727598776&fvip=4&keepalive=yes&fexp=5129 9152%2C51300760&c=WEB&sefc=1&txp=4532434&n=PBkHSDz29n0qdg&sparams=expire%2Cei%2Ci p% 2Cid% 2Citag% 2Csource% 2Crequiressl% 2Cxpc% 2Csiu% 2Cbui% 2Cspc% 2Cvprv% 2Csvpuc% 2Cmime %2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2 Cinitcwndbps&lsig=ABPmVW0wRQIhAL4XTegKBWTyhPvlGwVYx5b6wKFXGaJnWz5hPoyu2V1jAiBX3ZHp Sl-MMXhVWpt3O5ds3INf0Wlr-pbzhcj9KywORA%3D%3D&pot=MnRLRTG8kBazMEt9RGwvFceBv40KENnp HtlDrguGDKni7A-azrTC0L_GYy7Pz-fH6mqHFsS7CmHJ3c3g9Y6z-RqqRsbYhMeXWbiXmyTXLpKRXOkQFb gSjNeRohf9afkINW7suFEVcBe0OedclwPPNYTqkcXvKA%3D%3D&sig=AJfQdSswRgIhANYw5Elp9cly-p k9fZtviQxozUwSbmeyiPSX7xxOHywGAiEAoHiFDUhUA-S4m-WjPNnlnSXp65opUramacG4gcucmFg%3D", "70kbps": "https://rr2---sn-nx5s7n76.googlevideo.com/videoplayback?expire=1727620629&ei=tBH5ZuXtPK32sfIPmpfRaA&ip=34.213.214.55&id=o-AFciugVQSUntvlu-EtzrcBd4W06EaI8LnUezpJ ahzv8S&itag=250&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=7c&mm=31%2C 29&mn=sn-nx5s7n76%2Csn-nx57ynsk&ms=au%2Crdu&mv=m&mvi=2&pl=17&initcwndbps=906250&s iu=1&bui=AXLXGFTLtpYeBi-WkfbOrD6x11PgTTzzR3XccdPZFtz4stuPKtFQJJZUbJtbt6KJJdElaNlI 6w&spc=54MbxZ-8cHiojJiaToWtUNunjsdmNSRVaZsp33b3yJk5hWz-XyvPBPMvqlmBFtXq-StOzuzECw &vprv=1&svpuc=1&mime=audio%2Fwebm&ns=LcPciQPCIlyTAh4bUR1Ry3oQ&rqh=1&gir=yes&clen= 1630086&dur=212.061&lmt=1717047822840442&mt=1727598776&fvip=4&keepalive=yes&fexp= 51299152%2C51300760&c=WEB&sefc=1&txp=4532434&n=PBkHSDz29n0qdg&sparams=expire%2Cei %2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2C mime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2C pl%2Cinitcwndbps&lsig=ABPmVW0wRQIhAL4XTegKBWTyhPvlGwVYx5b6wKFXGaJnWz5hPoyu2V1jAiB X3ZHpSl-MMXhVWpt3O5ds3INf0Wlr-pbzhcj9KywORA%3D%3D&pot=MnRLRTG8kBazMEt9RGwvFceBv40 KENnpHtlDrguGDKni7A-azrTC0L_GYy7Pz-fH6mqHFsS7CmHJ3c3g9Y6z-RqqRsbYhMeXWbiXmyTXLpKR XOkQFbgSjNeRohf9afkINW7suFEVcBe0OedclwPPNYTqkcXvKA%3D%3D&sig=AJfQdSswRAIgcZBnQIuS U46Et4rVk1EP96LN12X6zEturr49Dt3IdtgCICaL6e5X_7qoN782XgA94aCWl9APN7sqdpZDfnSQ3n4a" },"vídeo": { "360p": "https://rr2---sn-nx5s7n76.googlevideo.com/videoplayback?expire=1727620629&ei=tBH5ZuXtPK32sfIPmpfRaA&ip=34.213.214.55&id=o-AFciugVQSUntvlu-EtzrcBd4W06EaI8LnUezpJ ahzv8S&itag=18&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=7c&mm=31%2C 29&mn=sn-nx5s7n76%2Csn-nx57ynsk&ms=au%2Crdu&mv=m&mvi=2&pl=17&initcwndbps=906250&s iu=1&bui=AXLXGFRb9LWg32JPSnGMKJTLm8K3ulHeoFqy6jW98J3ow17XhWM6hHiFPFeuDi2q4X9h4Fb CSw&spc=54MbxZ-_cHiojJiaToWtUNunjsdmNSRVaZsp33b3yJk5hWz-XyvPBPMvqlmBFtXq-StOzuz0D mJD&vprv=1&svpuc=1&mime=video%2Fmp4&ns=8KIxDqAhSq857Jj0EsIv_rAQ&rqh=1&cnr=14&rat ebypass=sim&dur=212.091&lmt=1717051812678016&mt=1727598776&fvip=4&fexp=51299152%2 C51300760&c=WEB&sefc=1&txp=4538434&n=5BzkN_PgDUfS4g&sparams=expire%2Cei%2Cip%2Ci d%2Citag%2Csource%2Crequiressl%2Cxpc%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns %2Crqh%2Ccnr%2Cratebypass%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl %2Cinitcwndbps&lsig=ABPmVW0wRQIhAL4XTegKBWTyhPvlGwVYx5b6wKFXGaJnWz5hPoyu2V1jAiBX3 ZHpSl-MMXhVWpt3O5ds3INf0Wlr-pbzhcj9KywORA%3D%3D&pot=MnRLRTG8kBazMEt9RGwvFceBv40K ENnpHtlDrguGDKni7A-azrTC0L_GYy7Pz-fH6mqHFsS7CmHJ3c3g9Y6z-RqqRsbYhMeXWbiXmyTXLpKRX OkQFbgSjNeRohf9afkINW7suFEVcBe0OedclwPPNYTqkcXvKA%3D%3D&sig=AJfQdSswRAIgfjB7dIm2 WxtJENp3UQMt-R6AOxAG42tSR_R8AY1VOjQCIHZTT43adN0Wy7XAicHL3yPavg78sous0M4orEjRw98v" } }, "visualizações": 1576357050, "watch_url": "https://youtube.com/watch?v=dQw4w9WgXcQ"}
200 OK
: Metadados de vídeo.
400 Bad Request
: URL inválido ou parâmetro ausente.
500 Internal Server Error
: erro do lado do servidor.
POSTAR /download
Descrição: baixa conteúdo do YouTube com a resolução mais alta disponível.
Corpo da solicitação:
{ "url": "https://youtube.com/watch?v=dQw4w9WgXcQ", "subtitle": {"burn": true,"lang": "en" }, "link": falso}
Exemplo de resposta (download de arquivo):
Se link
for false
:
A resposta será um download de arquivo.
Se link
for true
:
{ "download_link": "http://example.com/temp_file/temp_Python_Tutorial_for_Beginners.mp4"}
200 OK
: Baixar link ou arquivo.
400 Bad Request
: URL ou parâmetros inválidos.
500 Internal Server Error
: erro do lado do servidor.
POST /download/<resolution>
Descrição: baixa conteúdo do YouTube com uma resolução especificada.
Corpo da solicitação:
{ "url": "https://youtube.com/watch?v=dQw4w9WgXcQ", "taxa de bits": "128kbps", "subtitle": {"burn": true,"lang": "en" }, "link": falso}
Exemplo de resposta (download de arquivo):
Se link
for false
:
A resposta será um download de arquivo.
Se link
for true
:
{ "download_link": "http://example.com/temp_file/temp_Python_Tutorial_360p.mp4"}
200 OK
: Baixar link ou arquivo.
400 Bad Request
: resolução, taxa de bits ou URL inválidos.
500 Internal Server Error
: erro do lado do servidor.
POST /download_audio
Descrição: Baixa áudio do YouTube com a mais alta qualidade.
Corpo da solicitação:
{ "url": "https://youtube.com/watch?v=dQw4w9WgXcQ", "link": falso}
Exemplo de resposta (download de arquivo):
Se link
for false
:
A resposta será um download de arquivo.
Se link
for true
:
{ "download_link": "http://example.com/temp_file/temp_Python_Tutorial.mp3"}
200 OK
: Baixar link ou arquivo.
400 Bad Request
: URL inválido.
500 Internal Server Error
: erro do lado do servidor.
POST /download_audio/<bitrate>
Descrição: baixa o áudio do YouTube com uma taxa de bits especificada.
Corpo da solicitação:
{ "url": "https://youtube.com/watch?v=dQw4w9WgXcQ", "link": falso}
Exemplo de resposta (download de arquivo):
Se link
for false
:
A resposta será um download de arquivo.
Se link
for true
:
{ "download_link": "http://example.com/temp_file/temp_Python_Tutorial_48kbps.mp3"}
200 OK
: Baixar link ou arquivo.
400 Bad Request
: taxa de bits ou URL inválido.
500 Internal Server Error
: erro do lado do servidor.
GET /captions/<lang>
Descrição: recupera legendas para um vídeo do YouTube.
Parâmetros de consulta:
url
: o URL do vídeo do YouTube.
Solicitação de exemplo:
OBTER /captions/en?url=https://youtube.com/watch?v=dQw4w9WgXcQ
Exemplo de resposta:
{ "caption": "geralmente são meus filhos que quebram as coisas e sou eu quem conserta, mas quando há corrosão no resfriamento da água da minha piscina DIY", "caption_json": [ { "duration": 5.679, "start": 0.12, "text": "geralmente são meus filhos que quebram coisas e"}, { "duration": 5.919, "start": 2.72, "text": "Sou eu quem conserto, mas quando"}, { "duration": 6.201, "start": 5.799, "text": "corrosão no resfriamento da água da minha piscina DIY"} ], "arquivo": "http://youtube-dl-api.frii.site/temp_file/I%20broke%20my%20son's%20gaming%20PC%20and%20now%20I%E2%80%99m%20making%20him %20fix%20it.srt", "lang": "Inglês (gerado automaticamente)", "lang_code": "en"}
200 OK
: Dados de legendas.
400 Bad Request
: URL ou código de idioma inválido.
500 Internal Server Error
: erro do lado do servidor.
GET /temp_file/<filename>
Descrição: Recupera um arquivo temporário.
Parâmetros:
filename
: O nome do arquivo.
Solicitação de exemplo:
OBTER /temp_file/temp_Python_Tutorial_for_Beginners.mp4
Exemplo de resposta:
Se o arquivo existir, a resposta será o download do arquivo.
Se o arquivo não existir:
{ "erro": "Arquivo não encontrado"}
200 OK
: Download de arquivo.
404 Not Found
: arquivo não encontrado.
Para executar a API, use:
python principal.py
Limpeza de arquivos temporários: O aplicativo agenda uma tarefa para limpar arquivos temporários com mais de 24 horas.
Verifique app.log
para mensagens de erro detalhadas.
Certifique-se de que TEMP_DIR
tenha as permissões apropriadas.
Valide URLs e parâmetros do YouTube em solicitações de API.
Este projeto está licenciado sob a Licença AGPL-3. Consulte o arquivo LICENSE
para obter detalhes.