Link do repositório: https://github.com/PHGodoyCosta/Site_de_filmes
Sempre gostei muito de assistir filmes e séries, e que não gosta... Em casa com a minha mãe, por muito tempo assistíamos pela Netflix, mas as vezes queriamos uma opção que estava em outros streamings ou filmes que tinham saído cinema a pouco tempo e ainda não estavam em streaming, era quando recorríamos ao bom e velho torrent 😁
Então, quando a minha mãe queria assistir um filme, eu mostrava um catalogo para ela do TMDB ou outros, baixava e colocava via Pen Drive pela TV da sala para ela assistir.
Muitos me perguntavam, como faço para assistir tal filme? Onde eu acho na internet? filmes que eu tinha por torrent, mas como eu iria passar um arquivo de 2 ou 3 GB para elas que muitas vezes só tinham celular!
Foi um problema que sempre me incomodou, mas só mexeu realmente comigo no começo de 2025
Eu iria embora para Palotina/PR, onde atualmente estou morando, e já começaram as brincadeiras em casa... "Mas onde eu vou assistir os filmes agora? 😂", porém o que me fez arregaçar as mangas e abrir o VS Code, foi outra ocasião...
Assisti um filme com a minha mãe chamado Jorge da Capadócia, que conta a história de São Jorge, filme muito bom. Recomendei para uns amigos seminaristas e minha mãe para umas amigas dela, e vieram as perguntas: Como eu vejo? Onde encontro para assistir?
Lembrei que tinha uma conta do One Drive e fiz uma gambiarra 🤭 Subi o filme por lá, deixei o link aberto e compartilhei, sem saber estava criando um MVP ksksk
Todos gostaram, disseram que o filme realmente era bom, uma cliente da minha mãe colocou pela TV espelhando o celular e disse que adorou, ela veio conversar comigo e perguntou: "Onde eu consigo esses filmes cristãos para assistir? Procuro em vários lugares e não acho." Conversei com ela, e nem os clássicos ela tinha assistido!
Eu DEFINITIVAMENTE precisava fazer alguma coisa!
Poderia continuar com o MVP, subir os filmes para o One Drive, compartilhar os links e correr para o abraço 🤭👍
Mas nem tudo são flores... O One Drive é uma plataforma excelente para armazenar, fazer upload e download de arquivos, mas como plataforma de streaming, é horrível 🤮
Alguns filmes não param de travar, você tenta pular o arquivo e ele demora uma eternidade, e ainda... Muitos dos filmes torrent vem mais de uma opção de audio (Inglês e Português), com legendas... E não da para ativar isso player online.
Para a maior parte do público tambem é inviável pedir para que baixassem, porque a maioria usa celular e os leigos (como a minha mãe, por exemplo) já teriam certa dificuldade ksksk.
Tinha que ser um site. Mas como? Não compensa pagar uma CDN para armazenar porque eu não vou ganhar nada e não da para criar um negócio porque os filmes são piratas, mas e se eu puxasse pelo One Drive...
A ideia me fez sentir aquela sensação de pasta nova no VS Code e fui tentar ksksk.
Começei a estudar a API do One Drive, criei a aplicação e voalá!
Porém para subir os filmes, ainda iria me render um trabalhinho a mais... Como é streaming, não posso criar uma tag vídeo puxando um arquivo com 3 horas de filme!
Tem como ser como no Youtube, baixar um pedaço por vez. Para isso escolhi o protocolo HLS, e teria que preparar o arquivo do filme para isso...
Então começei a brincadeira com um script Python:
Repositório: https://github.com/PHGodoyCosta/Site-de-filmes-script
Ele começa analisando o preload.json
OBS... O movieId é o ID do filme no TMDB e local é o local do arquivo no meu computador
{
"movieId": 68730,
"local": "/home/phgodoycosta/Downloads/torrents/Silêncio 2017 [BluRay] (1080p) DUBLADO/Silêncio.2017.1080p.BluRay.x264.DUBLADO-WWW.BLUDV.COM.mp4"
}
Então o script é responsável por:
Agora ficou tudo mais fácil 😁
Repositório: https://github.com/PHGodoyCosta/Site_de_filmes
Url Produção Temporário: https://hackstorm.net/
Montei o site com Laravel e escolhi essa tecnologia por dois motivos principais:
O único projeto relevante que eu tinha com laravel, era o meu Site Repositório
Pela hospedagem que tinha contratado com a hostinger, só conseguia hospedar sites PHP. E como trabalhar com Laravel é uma delícia, eu escolhi ele mesmo 😁
Montei um site bem simples, com o visual simples mesmo, meu foco estava em montar o Player HLS
A partir do arquivo .m3u8 no One Drive, o site faz uma requisição para pegar a ordem dos arquivos .ts, reordena e monta um novo arquivo .m3u8 com os links de Download para o One Drive
Route::get("/api/{filme}/video/hls", function (string $filmeHash) {
$filme = Filmes::where("hash", $filmeHash)->firstOrFail();
$one_drive = new OneDriveController();
$hlsContent = $one_drive->downloadFile($filme->hls_id);
$file_names = $one_drive->extractTsFilesFromHls($hlsContent);
$list_files_of_videos = $one_drive->listFiles($filme->folder_id);
foreach ($file_names as $file_name) {
foreach($list_files_of_videos->value as $file_link) {
if ($file_name == $file_link->name) {
$hlsContent = str_replace($file_name, $file_link->{'@microsoft.graph.downloadUrl'}, $hlsContent);
}
}
}
header("Content-Type: application/vnd.apple.mpegurl");
echo $hlsContent;
});
Montei um player de vídeo do 0 com JS Puro. Para rodar o HLS eu usei a biblioteca hls.js, mas o resto foi com JS Puro.
Um vídeo de demonstração do site completo:
Ainda tem muito o que trabalhar no site... Estou no seminário e acabo não tendo muito tempo disponível para mexer, mas não deixarei esse projeto de lado.
Mesmo em Beta já salvou a vida de muita gente ksksks
Acabei tendo alguns problemas, porque o One Drive não foi feito exatamente para isso. Então em 1 hora mais ou menos os links de download expiram e tem que gerar outro .hls...
Como tinha um domínio disponível: hackstorm.net, deixei ele hospedado temporariamente ai (não garanto que ainda estará funcionando quando você ler essa matéria)
Localmente funcionou perfeitamente, mas no meu servidor que não é tão bom assim, tive uns problemas na hora que ele ia trocar de token, que travavam o site todo... Mas aos poucos vou corrigindo e melhorando.
Quem sabe daqui uns tempos não começo uma nova Netflix ai... 🤭