Baseline: WPF/Avalonia/Cli/Core + plans (BROWSER_FEATURES_PLAN v2, MOBILE_PLAN v1)
This commit is contained in:
commit
21b7c4d8bd
60 changed files with 6581 additions and 0 deletions
71
README.md
Normal file
71
README.md
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
# 비디오 다운로더 (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`)
|
||||
Loading…
Add table
Add a link
Reference in a new issue