# Anime Downloader for FlaskFarm **Anime Downloader**는 FlaskFarm 플랫폼에서 동작하는 애니메이션 자동 다운로드 플러그인입니다. 국내 주요 스트리밍 사이트(Ohli24, Linkkf, Anilife)를 지원하며, 강력한 보안 우회 기능을 탑재하여 안정적인 다운로드를 보장합니다. --- ## 🚀 주요 기능 (Key Features) * **다중 사이트 지원**: Ohli24, Anilife, Linkkf 등 다양한 소스에서 영상 검색 및 다운로드. * **강력한 우회 기술 (Anti-Bot Bypass)**: * **TLS Fingerprint 변조**: `curl_cffi`를 사용하여 실제 Chrome 브라우저처럼 위장, Cloudflare 및 각종 봇 차단을 무력화합니다. * **CDN 자동 감지**: 스트리밍 서버(CDN)의 도메인이 수시로 변경되더라도 자동으로 감지하여 대응합니다. (예: 14B 가짜 파일 문제 해결) * **스마트 다운로드 큐**: `ffmpeg` 및 `yt-dlp` 기반의 큐 시스템으로 안정적인 이어받기 및 재시도를 지원합니다. * **사용자 편의성**: * **Proxy 설정**: IP 차단 시 손쉽게 우회할 수 있도록 웹 설정 UI에서 프록시 서버를 지정할 수 있습니다. * **반응형 UI**: 데스크탑과 모바일 모두에 최적화된 Glassmorphism 디자인. --- ## 📺 지원 사이트 (Supported Sites) ### 1. Ohli24 (애니24) * **특징**: 가장 강력한 보안(Cloudflare)이 적용된 사이트. * **기술**: `curl_cffi`를 이용한 Full Browser Impersonation 적용. * **기능**: 검색, 목록 조회, 자동 다운로드. ### 2. Linkkf (링크애니) * **특징**: 빠른 업데이트 속도. * **기능**: 검색 및 다운로드. ### 3. Anilife (애니라이프) * **특징**: 다양한 화질 제공. * **기술**: Playwright 등을 활용한 브라우저 에뮬레이션(필요 시). --- ## 🛠 설치 및 문제 해결 (Troubleshooting) ### 필수 요구 사항 * **Python 패키지**: `curl_cffi`, `lxml`, `requests`, `yt-dlp` * **시스템 도구**: `ffmpeg` (시스템 경로에 설치되어 있어야 함) ### 자주 묻는 질문 (FAQ) #### Q1. 설정 페이지 접근 시 404 오류가 뜹니다. * **원인**: 플러그인 초기화 파일(`plugin.py`)이 누락되었기 때문입니다. * **해결**: `plugin.py` 파일이 존재하는지 확인하고, 없다면 복구 후 서버를 재시작하세요. #### Q2. 검색 시 결과가 없거나 "Document is empty" 오류가 발생합니다. * **원인**: 사이트의 보안 정책에 의해 접속이 차단된 경우입니다. * **해결**: 1. 최신 버전으로 업데이트하세요. (`curl_cffi` 적용 버전) 2. 설정 페이지에서 **Proxy URL**을 비워두거나, 작동하는 유효한 프록시 IP를 입력하세요. #### Q3. 다운로드된 파일 용량이 매우 작습니다 (14 Byte 등). * **원인**: CDN 서버에서 봇 접근을 감지하고 가짜 파일을 보낸 것입니다. * **해결**: 플러그인 자체적으로 이를 감지하고 우회하는 패치가 적용되었습니다. 최신 버전 사용 시 자동으로 해결됩니다. --- ## ⚙️ 설정 가이드 1. **FlaskFarm 웹 > 플러그인 > Anime Downloader > 설정**으로 이동합니다. 2. **Proxy URL**: 필요한 경우 `http://IP:PORT` 형식으로 입력 (기본값: 공란). 3. **저장 경로**: 다운로드된 파일이 저장될 경로 설정. 4. **다운로드 방법**: `yt-dlp` (기본) 추천. --- ## 📝 변경 이력 (Changelog) ### v0.4.0 (2025-01-01) - **UI/UX 대규모 개편**: - 전반적인 디자인을 **"Midnight Forest"** 테마로 통일 (짙은 녹색/짙은 청색 베이스) - Linkkf 및 Ohli24 목록 페이지에 Animate.css 기반의 **Custom Delete Modal** 적용 (기존 native confirm 팝업 대체) - 페이지 좌우 여백을 5px로 축소하여 모바일/데스크탑 모두에서 컴팩트한 레이아웃 제공 - Linkkf 포스터 이미지에 에피소드 넘버 배지 추가 - **기능 개선**: - **Queue 관리 강화**: 큐 초기화(Reset) 및 완료된 항목 삭제(Delete Completed) 버튼 추가 - **이미지 로딩 최적화**: 포스터 이미지 로딩 실패 시 효율적인 Fallback 처리 적용 (placeholder 서비스 연동) - **페이지네이션 버그 수정**: Linkkf 목록 페이지에서 발생하던 undefined 페이지 오류 해결 - **시스템 안정성**: - 백그라운드 스레드 DB 작업 시 `app_context` 오류 수정 - `yt-dlp` 다운로드 프로세스 관리 개선 (좀비 프로세스 방지 및 확실한 취소 처리) ### v0.3.0 (2025-12-31) - **VideoJS 플레이리스트**: 비디오 플레이어에서 다음 에피소드 자동 재생 - **플레이리스트 UI**: 이전/다음 버튼, 에피소드 목록 토글 - **실시간 갱신**: 플레이어 열려있을 때 10초마다 새 에피소드 감지 및 알림 ### v0.2.2 (2025-12-31) - **해상도 자동 감지**: m3u8 master playlist에서 해상도(1080p/720p 등)를 파싱하여 파일명에 반영 - **Discord 알림 개선**: 큰 썸네일 이미지, Discord Blurple 색상, ISO 타임스탬프 적용 - **Queue 페이지 UI**: 좌우 여백을 다른 페이지들과 일치하도록 수정 - **Pre-commit hook**: 커밋 시 info.yaml 버전 자동 증가 (patch 버전) ### v0.2.1 (2025-12-30) - **CDN 보안 우회**: cdndania.com 쿠키 기반 인증 처리 (`curl_cffi` 세션 유지) - **CdndaniaDownloader**: 별도 프로세스 기반 HLS 세그먼트 다운로더 추가 - **프록시 지원 강화**: 세그먼트 다운로드 시 프록시 적용