About this project
MyMovieStore is an Android native movie browsing and playback application developed using Kotlin. A single APK is compatible with both phones and Android TV/boxes. The app splits functionality into a content discovery layer and a content playback layer: the content discovery layer scrapes movie and TV show data from Douban pages, supporting browsing by categories such as movies, TV series, variety shows, and anime; the content playback layer aggregates 19 crawler playback sources (e.g., Juji House, Sakura Anime, Movie Paradise, etc.), supporting multi-source parallel search, gap-filling sorting, detail parsing, and Media3 ExoPlayer playback.
The project features a relatively complete functional system: the player supports a danmaku system (multi-source search, caching, local priority, font size adaptation), playback history, search history, remote configuration management of video sources, category cache clearing, M3U8 download management (including AES-128 encrypted stream decryption, resume download, offline playback), crawler rate limiting (independent queue per source, minimum 3-second interval, priority preemption), and anti-scraping measures such as Cloudflare bypass and TLS fingerprint interception degradation.
Android TV adaptation is achieved through runtime form detection, with the network layer, Repository, ViewModel, and player encapsulation fully shared, limiting adaptation to the UI layer. The TV side provides a 10-foot UI (density scaled by 1.45x), remote control D-pad focus system, top navigation bar, phone QR code search, and capability deficiency guards.
The tech stack uses Kotlin 2.0.0, Gradle 8.9, minSdk 24, targetSdk 36, and components such as Room, OkHttp, Media3 ExoPlayer, and ZXing. The project is positioned as a Kotlin code crawler practice exercise, with a clear code structure. Adding a new playback source only requires inheriting CrawlerVideoSource and implementing two parsing methods.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.