Coletores de cobre
Em qualquer boa história, deve haver um vilão, e como tal personagem decidi escolher colecionadores de cobre - ladrões que coletavam metais não ferrosos na área. Foram eles que motivaram a criação do youtube-dl. Em 2006, minha aldeia estava localizada a 5 a 10 quilômetros da pequena cidade de Avilés, no norte da Espanha. Os moradores de Avilés desfrutaram de boa infraestrutura e serviços, incluindo TV a cabo e acesso ADSL à Internet. Não havia nada parecido na minha área: longe demais de uma central telefônica ADSL, e coletores de cobre durante anos roubaram fios de cobre no caminho, ocasionalmente causando interrupções na conexão telefônica e forçando a companhia telefônica a substituir esses fios por outros mais fracos e mais finos, porque eles também podem ser roubados. Isso continuou por vários anos.
A única maneira de acessar a Internet de casa era um modem V.90 de 56k . Na verdade, a qualidade da conexão era tão ruim que foi necessário reduzir a velocidade para 33,6 Kbps para estabilidade. As velocidades reais de download raramente ultrapassam 4 KB / s. Ao mesmo tempo, um interessante serviço de vídeo YouTube apareceu na Internet, estava ganhando popularidade rapidamente e no final do mesmo ano foi comprado pelo Google.
Ficar acordado a noite toda para assistir uma peça
Assistir a qualquer vídeo do YouTube em uma conexão de 33,6 Kbps foi uma experiência dolorosa. Praticamente qualquer vídeo demorava uma eternidade para baixar. Por exemplo, leva 40 minutos para baixar um vídeo curto de 10 MB, o que torna o streaming impossível. Um vídeo mais longo e de qualidade superior leva várias horas e ocupa o canal por completo, sem falar que a conexão pode ser interrompida a qualquer momento - e o download terá que ser reiniciado! Imagine que você realmente gostou de um determinado vídeo e deseja assisti-lo uma segunda ou terceira vez. A repetição desse processo tornou-se praticamente um ato de masoquismo.
Em tal situação, comecei a pensar nas possibilidades de baixar arquivos de vídeo: se o vídeo fosse interessante, ter uma cópia permite que você revise várias vezes depois. E se o programa de download for muito bom, então após a interrupção da conexão ele poderá retomar o download do mesmo lugar!
Havia outras soluções para baixar vídeos do YouTube na época, incluindo o popular script Greasemonkey... Por pura coincidência, não consegui configurar nenhuma das soluções existentes para funcionar, então decidi escrever minha própria ferramenta. É assim que o programa youtube-dl apareceu. Foi mais conveniente e rápido para mim iniciá-lo a partir do console, portanto, não há interface gráfica. Python foi escolhido porque possui uma extensa biblioteca padrão, com o agradável efeito colateral de que funcionará em qualquer plataforma.
Lançamento etéreo
A primeira versão só funcionou no YouTube. O programa praticamente não tinha arquitetura normal, pois não era necessário. Escrito como um script simples, foi direto ao ponto. O tamanho do programa é de 223 linhas, com apenas 143 códigos reais, 44 linhas de comentários e 36 linhas vazias. O nome foi escolhido por pura conveniência: youtube-dl é óbvio, compreensível, difícil de esquecer e pode ser inserido intuitivamente como “YOU-TAB” no console.
Como já uso o Linux há vários anos, decidi publicar o programa sob uma licença gratuita (MIT nas primeiras versões) caso alguém o considere útil. Naquela época, o GitHub ainda não havia aparecido e tínhamos que nos contentar com o SourceForge . Mas aí, ao criar um novo projeto, você tinha que preencher um formulário tedioso. Então, em vez de SourceForge, eu rapidamente postei o código empágina pessoal , que foi fornecida pelo provedor de Internet. Embora isso pareça incomum hoje, os ISPs costumavam fornecer aos usuários um endereço de e-mail e alguma hospedagem onde eles pudessem carregar arquivos via FTP. Assim, você pode hospedar seu próprio site pessoal na web. A primeira versão do programa foi publicada em 08.08.2006, embora já o estivesse usando há várias semanas.
Durante o processo de desenvolvimento, foi necessário entender o funcionamento do navegador Firefox ao assistir vídeos no YouTube. Se bem me lembro, o Firefox ainda não incorporou ferramentas de desenvolvimento para analisar a atividade de rede. As conexões eram feitas principalmente por HTTP, então o Wireshark, conhecido na época como Ethereal, tornou-se uma ferramenta inestimável para analisar o tráfego de rede. Escrevi youtube-dl com o propósito específico de fazer a mesma coisa que o navegador da web fazia ao extrair um vídeo. O programa até enviou a mesma string de agente de usuário, copiada literalmente do Firefox para Linux, para garantir que o site enviaria ao programa as mesmas páginas da web que o navegador.
Além disso, o YouTube usava o Adobe Flash player naquela época.... Os vídeos eram servidos como arquivos Flash Video (FLV), então um plugin proprietário era necessário para visualizar em um navegador (muitos se lembrarão da temida biblioteca libflashplayer.so), portanto, quaisquer ferramentas de desenvolvimento no navegador eram inúteis. Este plugin proprietário tem sido uma fonte constante de vulnerabilidades e problemas de segurança. Eu tinha uma extensão do Firefox chamada Flashblock que impedia o conteúdo de carregar por padrão e substituiu-a por espaços reservados com um ícone clicável, de forma que o conteúdo só carregaria mediante solicitação e a biblioteca de plugins não seria usada a menos que o usuário solicitasse.
Além de melhorar a segurança, o Flashblock teve dois outros benefícios. Primeiro, ele removeu muitos banners barulhentos e desagradáveis, que também podem ser uma fonte de problemas de segurança. Em segundo lugar, facilitou a análise do processo de carregamento de vídeo no player. Esperei que a página carregasse totalmente e iniciei o Wireshark antes de clicar no ícone do Flashblock, iniciando o download do vídeo. Assim, o único tráfego a ser analisado estava relacionado ao plugin que carrega o aplicativo do reprodutor de vídeo e o próprio aplicativo que carrega o vídeo.
Também é importante notar que o plugin do Flash Player na época já carregava uma cópia do vídeo para o disco rígido (no Linux eles estavam armazenados
/tmp), e muitos usuários contam com essa funcionalidade para fazer uma cópia sem ferramentas adicionais. Portanto, o youtube-dl era mais conveniente apenas porque extraía o nome do vídeo e o atribuía ao arquivo automaticamente, por exemplo.
Oh, carne fresca!
Por fim, o Flash Player foi alterado para tornar os vídeos mais difíceis de extrair . Uma das primeiras medidas foi quebrar o link para o arquivo de vídeo após sua criação, para que o i-node ainda exista e esteja disponível para o processo que o usa (até que seja fechado), mantendo o arquivo invisível do ponto de vista do sistema de arquivos. Ainda era possível pegar um arquivo usando o sistema de arquivos
/procpara examinar os descritores de arquivo usados pelo processo do navegador, mas com cada uma dessas pequenas etapas, o youtube-dl se tornou mais e mais conveniente.
Como muitos entusiastas do código aberto na época, usei o Freshmeat para assinar novos lançamentos de projetos que me interessaram. Quando criei o youtube-dl, também criei um registro de projeto neste site para que os usuários possam ser notificados sobre novos lançamentos e um changelog listando novos recursos, correções e melhorias. No catálogo Freshmeat, era possível pesquisar projetos novos e interessantes; a primeira página publicava as atualizações mais recentes, geralmente várias dezenas por dia. Suponho que desta forma Joe Barr (descanse em paz), o editor de linux.com , descobriu o programa e decidiu escrever um artigo sobre eleem 2006. Linux.com era um dos recursos mais populares para entusiastas do Linux na época, junto com outros sites clássicos como Slashdot ou Linux Weekly News. Pelo menos para mim.
A partir daquele momento, a popularidade do youtube-dl começou a crescer, e de tempos em tempos comecei a receber cartas de agradecimento pela criação e apoio ao programa.
Contagem de tráfego
Avance para 2008. A popularidade do youtube-dl continuou a crescer lentamente e os usuários frequentemente pediam para fazer programas semelhantes para baixar de outros sites, e eu cedi a esse pedido várias vezes. Foi nesse ponto que decidi reescrever o programa do zero para implementar o suporte original para vários sites de vídeo. Tive algumas ideias simples sobre como dividir os componentes internos do programa em várias partes para simplificar as partes mais importantes: um carregador de arquivos separado, comum a todos os sites, e separadamente - extratores de informações: objetos (classes) que contêm código específico para um determinado site de vídeo. Quando um URL ou pseudo-URL é fornecido, os extratores são solicitados a descobrir qual deles pode lidar com esse tipo de URL e, em seguida, são solicitados a extrair informações sobre esse vídeo ou lista de vídeos,com o objetivo principal de obter um URL de vídeo ou uma lista de URLs com os formatos disponíveis, bem como alguns outros metadados como títulos como.
Também aproveitei para mudar o sistema de controle de versão e mover o projeto para outro hosting. Na época, o Git estava vencendo a guerra do controle de versão distribuída, mas o Mercurial também tinha muitos usuários. Testei ambos e decidi que gosto um pouco mais do Mercurial do que do Git. Comecei a usar no youtube-dl e postei o projeto no Bitbucketque foi uma escolha natural. Na época, o Bitbucket hospedava apenas repositórios Mercurial e o GitHub hospedava apenas Git. Ambos lançados em 2008 e são uma lufada de ar fresco em comparação com o SourceForge. Diferentes namespaces de projeto para cada usuário (ou seja, o nome do seu projeto não precisa ser globalmente exclusivo, mas exclusivo apenas para seus projetos) com sistemas de controle de versão distribuídos significa que você pode publicar seus projetos pessoais em questão de minutos para qualquer um dos dois sites ... De qualquer forma, mover o histórico do projeto para o Git e mover o projeto para o GitHub aconteceu alguns anos depois .
Ao reescrever o projeto, sem dúvida, aproveitei a oportunidade para renomeá-lo, mas não quis confundir os usuários existentes e deixei o nome na tentativa de manter o programa um pouco popular.
O contexto tecnológico também mudou ligeiramente naquele ano. Os planos de dados móveis começaram a ganhar força e, no final daquele ano, comprei um modem 3G e um plano de dados que pela primeira vez me permitia navegar na web a uma velocidade decente. De qualquer forma, isso não me fez parar de usar o youtube-dl. Pagava 45 euros por mês, mas o limite mensal de dados era limitado a 5 GB, o que significa que só conseguia usar cerca de 150 MB por dia em média. E a velocidade permitia que você baixasse muito mais, então era preciso monitorar o tráfego e selecionar seletivamente o conteúdo, evitando downloads grandes se possível. Portanto, o youtube-dl ajudou muito a evitar múltiplos downloads de grandes arquivos de vídeo e a permanecer dentro do plano tarifário.
Episódio: Nova Casa
Algum tempo depois, no final de 2009, me mudei e finalmente comecei a morar com minha namorada (agora minha esposa e mãe de dois filhos) em Avilés. Pela primeira vez, ganhei internet de alta velocidade, que tem sido o padrão para muitos de meus amigos e familiares por muitos anos. Lembro que era uma conexão a cabo de 100/10 Mbps (download / upload) sem limitação de tráfego. Isso definitivamente marcou um ponto de viragem na frequência com que usei o youtube-dl e na quantidade de atenção que dei ao projeto.
Mais tarde, finalmente portei o código para Git e GitHub. Naquela época, o YouTube começou a fazer experiências com vídeo HTML5, que se tornaria o padrão por volta de 2015. Em 2011, trabalhei em tempo integral por vários anos como engenheiro de software e, em geral, ao retornar do trabalho, eu realmente não queria programar e configurar o youtube-dl ou implementar, a pedido dos usuários, uma função que eu mesmo não usaria pessoalmente.
No segundo semestre de 2011, em meio a mais um projeto importante, decidi deixar o cargo de mantenedor do youtube-dl, já que há vários meses não estava dando conta da tarefa. Philip Hagemeisterprovou ser um ótimo programador e enviou várias solicitações de pull ao GitHub com correções que interessaram a muitas pessoas. Dei a ele acesso aos commits do meu repositório youtube-dl e foi essencialmente o fim da história da minha parte. Os logs upstream me mostram um fluxo contínuo de commits até março de 2011 e um salto para agosto de 2011 com uma fusão de Philip. Eu tenho feito desde a única cometer em 2013 para uma mudança na rg3.github.com código fonte para rg3.github.io quando GitHub mudou páginas personalizadas de USERNAME.github.com para USERNAME.github.io a questões de segurança evitam com código malicioso em seu próprio domínio, se bem me lembro.
Embora eu não tenha participado do desenvolvimento do youtube-dl, por muitos anos a página oficial do projeto ainda estava sob minha conta no
https://github.com/rg3/youtube-dle https://rg3.github.io/youtube-dl/. Eu precisava aparecer quando Philip ou outros mantenedores pedissem acesso de commit para desenvolvedores adicionais, como Filippo Valsorda ou Sergey M. , um dos mantenedores atuais. Infelizmente, em 2019, houve um pequeno problema com trolls no rastreador, e apenas os proprietários do projeto têm permissão para bloquear usuários. Isso nos fez finalmente mover o projeto para a organização GitHub, onde todos que tinham acesso aos commits foram convidados (embora nem todos tenham aderido). A organização do GitHub permitiu que os mantenedores agissem com mais liberdade, sem me puxar à menor provocação.
Gostaria de expressar mais uma vez minha mais sincera gratidão aos vários mantenedores do projeto durante esses anos, que melhoraram significativamente o código, foram capazes de criar uma comunidade real ao redor e que tornaram o projeto muito mais popular do que quando saí há quase 10 anos.
Offline e grátis
Gostaria de observar mais uma vez que o propósito do youtube-dl como ferramenta praticamente não mudou ao longo dos 14 anos de sua existência. Antes e depois de receber a carta DMCA da RIAA, muitos falaram sobre como usam o youtube-dl para diferentes fins .
Para mim, sempre foi o acesso offline aos vídeos que já estão disponíveis para o grande público na Internet. No mundo das redes móveis e da conectividade sempre ativa, você pode perguntar se é realmente necessário. Acho que sim, se Netflix, Amazon, Disney e HBO implementaram funcionalidades semelhantes em seus aplicativos de streaming extremamente populares. Para longas viagens rodoviárias ou viagens ao exterior, especialmente com crianças, ou no subsolo, ou em um avião, ou em um lugar com conexões ruins ou limitadas, é incrivelmente conveniente ter acesso offline a um podcast, palestra, crítica, notícias ou arte.
Um efeito colateral adicional do youtube-dl é o acesso ao conteúdo quando a interface online não está à altura da tarefa. O antigo plugin proprietário do Flash não funcionava para todas as plataformas e arquiteturas. Atualmente, os navegadores podem reproduzir vídeos, mas às vezes falham em tirar proveito da decodificação eficiente da GPU e gastam muita bateria. O Youtube-dl pode ser usado com seu próprio reprodutor para tornar certos vídeos reproduzíveis e / ou eficientes. Por exemplo, o reprodutor mpv inclui suporte integrado para youtube-dl. Você só precisa passar o URL para ele e ele usa o youtube-dl para acessar o stream de vídeo e reproduzi-lo sem salvar nada em seu disco rígido.
A interface online padrão pode não ter recursos de acessibilidade que algumas pessoas precisam para navegar, ou filtros daltônicos, novamente disponíveis no aplicativo reprodutor de vídeo nativo.
Por último, mas não menos importante, ferramentas como o youtube-dl permitem que você acesse vídeos online usando apenas software livre. Eu entendo que não existem tantos apoiadores de software estritamente gratuito e de código aberto no mundo. Eu nem me considero como tal, em geral. O software proprietário está constantemente presente em nossa vida moderna e é entregue a nós todos os dias na forma de uma grande quantidade de linhas Javascript no navegador, com as mais diversas finalidades e nem sempre no melhor interesse dos usuários. A prova é o surgimento do GDPR, com todas as suas falhas e problemas. Acessar vídeos online com o youtube-dl garante a você completa paz de espírito incógnito onde o uBlock Origin ou o Privacy Badger mal acalmam.