프로젝트 소개

MyMovieStore는 Kotlin으로 개발된 Android 네이티브 영화/동영상 탐색 및 재생 앱입니다. 하나의 APK로 휴대폰과 Android TV/셋톱박스를 동시에 지원합니다. 앱은 기능을 콘텐츠 발견 계층과 콘텐츠 재생 계층으로 분리합니다. 콘텐츠 발견 계층은 Douban 페이지에서 영화/동영상 콘텐츠를 스크래핑하여 영화, TV 시리즈, 예능, 애니메이션 등 카테고리별 탐색을 지원합니다. 콘텐츠 재생 계층은 19개의 크롤러 재생 소스(예: Juji Wu, Yinghua Anime, Movie Paradise 등)를 집계하여 멀티 소스 병렬 검색, 빈자리 채우기 정렬, 상세 정보 파싱 및 Media3 ExoPlayer 재생을 지원합니다. 프로젝트는 비교적 완전한 기능 체계를 갖추고 있습니다. 플레이어는 자막 시스템(멀티 소스 검색, 캐싱, 로컬 우선, 글꼴 크기 자동 조정), 재생 기록, 검색 기록, 비디오 소스 원격 구성 관리, 카테고리 캐시 정리, M3U8 다운로드 관리(AES-128 암호화 스트림 복호화, 중단점 재개, 오프라인 재생 포함), 크롤러 속도 제한(소스별 독립 큐, 최소 3초 간격, 우선순위 선점) 및 Cloudflare 우회, TLS 핑거프린트 차단 다운그레이드 등 안티 크롤링 대응을 지원합니다. Android TV 적응은 런타임 형태 판단을 통해 구현되며, 네트워크 계층, Repository, ViewModel 및 플레이어 캡슐화는 완전히 공유되고, 적응 범위는 UI 계층으로 제한됩니다. TV 측은 10-foot UI(밀도 1.45배 확대), 리모컨 D-pad 포커스 시스템, 상단 내비게이션 바, 휴대폰 QR 코드 검색, 기능 부재 가드 등을 제공합니다. 기술 스택은 Kotlin 2.0.0, Gradle 8.9, minSdk 24, targetSdk 36을 사용하며, Room, OkHttp, Media3 ExoPlayer, ZXing 등의 구성 요소를 사용합니다. 프로젝트는 Kotlin 코드 크롤러 연습용으로 설계되었으며, 코드 구조가 명확하여 새로운 재생 소스를 추가하려면 CrawlerVideoSource를 상속하고 두 개의 파싱 메서드만 구현하면 됩니다.