# 비디오 다운로더 (HLS / MP4) maccms 계열 스트리밍 사이트(tvchak208 등)의 영상을 다운로드하는 도구입니다. HLS(`.m3u8`) 분할 재생과 직접 MP4 모두 지원합니다. ## 기능 - **페이지 URL 자동 분석**: 재생페이지 URL만 넣으면 `player_aaaa` 설정 / 정규식 / iframe 플레이어에서 m3u8·mp4 주소를 자동 추출 - **HLS 완전 지원**: 마스터 재생목록(최고 화질 자동 선택), **AES-128 복호화**, **fMP4(`#EXT-X-MAP`)** 초기화 세그먼트 - **병렬 다운로드 + 이어받기**: 도중에 끊겨도 재실행 시 받은 분할은 건너뜀 - **ffmpeg 자동 리먹스**: TS / fMP4 → MP4 (`-c copy`, 무손실·빠름) - **커스텀 헤더**: `--referer` 등으로 CDN 토큰 인증 대응 ## 준비 ```bash pip install -r requirements.txt # ffmpeg 권장 (https://ffmpeg.org). PATH에 있으면 자동 인식됨. ``` ## 사용법 ### 1) 가장 간단 — 페이지 URL만 ```bash python downloader.py "https://tvchak208.com/index.php/vod/play/id/123367/sid/1/nid/1.html" -o 영상제목 ``` ### 2) m3u8 주소를 직접 넘기기 (가장 확실, 아래 참고) ```bash python downloader.py "https://cdn.example.com/.../index.m3u8" -o 영상제목 --referer "https://tvchak208.com/" ``` ### 3) 추가 헤더가 필요한 경우 ```bash python downloader.py "https://.../index.m3u8" -o 영상제목 \ --referer "https://tvchak208.com/" \ -H "Origin: https://tvchak208.com" ``` 옵션 요약 | 옵션 | 설명 | |---|---| | `-o, --output` | 출력 파일명 (확장자 생략 가능, 기본 `video`) | | `--referer` | Referer 헤더. 403/401 날 때 페이지 주소를 지정 | | `-H "K: V"` | 추가 헤더 (여러 개 가능) | | `-c, --concurrency` | 동시 연결 수 (기본 8) | | `--user-agent` | User-Agent 재정의 | | `--keep-parts` | 병합 후 분할 임시파일 유지(디버그) | --- ## 이 사이트에서 m3u8 주소 직접 구하기 (추천) 페이지 자동 추출이 안 될 때(사이트마다 난독화가 다름) 가장 확실한 방법: 1. Chrome/Edge로 재생페이지 열기 2. `F12` → **Network(네트워크)** 탭 3. 필터에 **`m3u8`** 입력 4. 영상 **재생** 버튼 클릭 5. 목록에 뜬 `.m3u8` 요청 위에서 **우클릭 → Copy → Copy link address** 6. 그 주소를 다운로더에 넘김: ```bash python downloader.py "복사한_m3u8_주소" -o 영상제목 --referer "https://tvchak208.com/" ``` > 팁: `index.m3u8`(마스터)과 `*.m3u8`(미디어)이 모두 뜰 수 있는데, 마스터를 넘겨도 **최고 화질을 자동 선택**합니다. 가장 위쪽 m3u8을 고르면 됩니다. > 403/401 에러가 나면 반드시 `--referer`로 재생페이지 주소를 지정하세요. ## 문제 해결 - **`페이지에서 영상 주소를 찾지 못했습니다`** → 위 "m3u8 주소 직접 구하기" 방법 사용 - **403/401** → `--referer "페이지 주소"` 추가 (필요시 `-H "Origin: ..."` 도 함께) - **`암호화 영상입니다. pycryptodome 필요`** → `pip install pycryptodome` - **MP4로 안 변환됨** → ffmpeg 설치 확인 (`ffmpeg -version`)