Sobre o projeto
MyMovieStore é um aplicativo nativo Android desenvolvido em Kotlin para navegação e reprodução de vídeos, com um único APK compatível tanto com celulares quanto com Android TV/boxes. O aplicativo divide suas funcionalidades em camada de descoberta de conteúdo e camada de reprodução: a camada de descoberta extrai conteúdo de vídeo de páginas do Douban, suportando navegação por categorias como filmes, séries, variedades e animes; a camada de reprodução agrega 19 fontes de reprodução via crawlers (como Juji Wu, Yinghua Anime, Dianying Tiantang, etc.), com suporte a busca paralela em múltiplas fontes, ordenação por método de preenchimento de lacunas, análise de detalhes e reprodução via Media3 ExoPlayer.
O projeto possui um sistema funcional completo: o player suporta sistema de danmaku (busca em múltiplas fontes, cache, prioridade local, ajuste de tamanho de fonte), histórico de reprodução, histórico de busca, gerenciamento remoto de configuração de fontes de vídeo, limpeza de cache de categorias, gerenciamento de download M3U8 (incluindo descriptografia de fluxo AES-128, retomada de download e reprodução offline), limitação de taxa de crawlers (fila independente por fonte, intervalo mínimo de 3 segundos, prioridade de preempção) e medidas anti-anti-scraping, como contorno de Cloudflare e degradação de bloqueio de impressão digital TLS.
A adaptação para Android TV é implementada por detecção de forma em tempo de execução, com a camada de rede, repositórios, ViewModels e encapsulamento do player totalmente compartilhados, limitando a adaptação à camada de UI. O lado da TV oferece uma UI de 10 pés (densidade ampliada em 1,45x), sistema de foco D-pad para controle remoto, barra de navegação superior, busca por código QR no celular e proteções para recursos ausentes.
A pilha técnica usa Kotlin 2.0.0, Gradle 8.9, minSdk 24, targetSdk 36, com componentes como Room, OkHttp, Media3 ExoPlayer e ZXing. O projeto é posicionado como um exercício de crawler em código Kotlin, com estrutura de código clara; para adicionar uma nova fonte de reprodução, basta herdar de CrawlerVideoSource e implementar dois métodos de análise.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.