Register both Paca domains on Naver Search Advisor, Google Search Console and
Bing Webmaster Tools so the site can be indexed by every major engine, add
DASH and AES-128 how-to pages to capture protocol-specific searches, and let a
finished download share a UTM-tagged landing link from the completion shelf.
Package-manager manifests (winget, Chocolatey, Scoop) now carry verified
v1.2.0 hashes and product codes instead of placeholders. All 2,757 tests pass.
💘 Generated with Crush
Assisted-by: Crush:deepseek-v4.1-flash
96 lines
5.2 KiB
Markdown
96 lines
5.2 KiB
Markdown
# Paca
|
|
|
|
**[홈페이지](https://mediabrowser.chanpaca.net/) · [다운로드](https://mediabrowser.chanpaca.net/releases.html) · [사용 안내](https://mediabrowser.chanpaca.net/guide.html)**
|
|
|
|
브라우저를 내장한 데스크톱 영상 다운로더와, 같은 엔진을 공유하는 모바일 컴패니언 앱.
|
|
|
|
앱 안의 브라우저로 사이트를 열면 재생되는 미디어(HLS `.m3u8` / DASH `.mpd` / MP4 직링크)를
|
|
자동으로 감지해 목록에 띄우고, 쿠키·Referer 를 그대로 물려 받아 내려받는다.
|
|
받은 영상은 내장 서버를 통해 같은 네트워크의 휴대폰에서 바로 재생하거나 저장할 수 있다.
|
|
|
|
## 저장소 구조
|
|
|
|
| 프로젝트 | TFM | 역할 |
|
|
|---|---|---|
|
|
| `Paca.Core` | net8.0 | **다운로드 엔진.** HLS/DASH 파싱, AES-128 복호화, 병렬·이어받기, 미디어 감지, ffmpeg 리먹스, 플랫폼 추상화 |
|
|
| `Paca.Browser` | net8.0-windows | WebView2 탭 컴포넌트 (응답 가로채기·쿠키 공급) |
|
|
| `Paca.App` | net8.0-windows | **메인 WPF 앱.** 브라우저 셸 + 다운로드 UI + 서버 호스팅 |
|
|
| `Paca.Server` | net8.0 | ASP.NET 라이브러리. App 안에서 기동되어 모바일/웹 컴패니언에 라이브러리·스트리밍 API 제공 |
|
|
| `Paca.Mobile` | net10.0-android (+ios on macOS) | MAUI 컴패니언 앱 |
|
|
| `Paca.Mobile.Core` | net8.0 | 모바일 공용 로직. UI 없이 테스트 가능하도록 분리 |
|
|
| `Paca.Avalonia` | net8.0 | macOS/Linux 크로스플랫폼 셸 (진행 중 — `docs/DEPLOYMENT_PLAN.md` Gate #1' 참고) |
|
|
| `Paca.Cli` | net8.0 | 엔진 검증용 개발 도구 (`--dashparse` 등) |
|
|
| `Paca.Tests` | net8.0-windows | xUnit 전체 테스트 (Core/App/Server/Mobile.Core + E2E) |
|
|
|
|
그 밖에:
|
|
|
|
- `build/` — 배포 스크립트. `publish.ps1`(Windows 설치자), `installer.iss`(Inno Setup), `remote/`(맥·리눅스 원격 빌드)
|
|
- `docs/` — 기획·감사 문서
|
|
- `.env.example` — 배포/원격빌드 자격 증명 템플릿. `.env` 로 복사해 채운다 (`.env` 는 커밋되지 않음)
|
|
|
|
## 개발 환경
|
|
|
|
- **.NET 8 SDK** + **.NET 10 SDK** (모바일 및 Avalonia 12 가 10 을 요구)
|
|
- Windows 11 (데스크톱 앱은 WPF + WebView2 기반이라 Windows 전용)
|
|
- **ffmpeg** — PATH 에 있으면 자동 인식. 없으면 리먹스 단계에서 실패
|
|
- 모바일 빌드 시: `dotnet workload install maui-android` (iOS 는 macOS 빌드머신에서만)
|
|
|
|
## 자주 쓰는 명령
|
|
|
|
```powershell
|
|
# 테스트 — 가장 먼저 이걸로 상태 확인 (Mobile 제외 전 영역 커버)
|
|
dotnet test Paca.Tests
|
|
|
|
# 데스크톱 앱 빌드 / 실행
|
|
dotnet build Paca.App
|
|
dotnet run --project Paca.App
|
|
|
|
# 엔진 단독 검증
|
|
dotnet run --project Paca.Cli -- --dashparse "https://.../manifest.mpd"
|
|
|
|
# 모바일 (Android 워크로드 필요)
|
|
dotnet build Paca.Mobile -f net10.0-android
|
|
```
|
|
|
|
> 솔루션 전체 빌드(`dotnet build Paca.slnx`)는 MAUI 워크로드가 설치돼 있어야 통과한다.
|
|
> 워크로드 없이 작업할 때는 프로젝트를 개별 지정한다.
|
|
|
|
## 배포
|
|
|
|
```powershell
|
|
# Windows 설치자 (x64 + arm64) → out/Paca-Setup-{arch}.exe
|
|
./build/publish.ps1 -Config Release -Version 1.0.0
|
|
|
|
# macOS / Linux 원격 빌드 (.env 의 빌드머신 자격 증명 사용) → out/remote/<rid>/
|
|
bash build/remote/build-remote.sh all
|
|
```
|
|
|
|
`out/`, `publish/` 는 산출물 디렉터리라 커밋되지 않는다.
|
|
|
|
### CI (GitHub 공개 후)
|
|
|
|
`.github/workflows/release.yml` — 태그(`v*`) 푸시 시 테스트 관문 통과 후
|
|
Windows 설치자(x64/arm64)·Linux/macOS tar.gz·Android APK 를 빌드해 **Draft Release** 로 올린다
|
|
(QA 후 수동 Publish). macOS 서명·공증(D4)과 iOS TestFlight(D5)는 Apple Developer Program
|
|
가입 + 시크릿 등록 후 활성화한다 — 상세는 `docs/DEPLOYMENT_PLAN.md` §5·§7.
|
|
|
|
Android 자동 업데이트는 [Obtainium](https://github.com/ImranR98/Obtainium) 을 지원한다:
|
|
저장소 공개 후 `build/obtainium.json` 의 `<owner>/<repo>` 를 치환하고, 폰에서
|
|
`obtainium://add/https://github.com/<owner>/<repo>` 링크 한 번으로 등록된다.
|
|
|
|
앱 내 업데이트 확인(데스크톱)은 설정 → "앱 업데이트"에 GitHub 저장소(`owner/repo`)를
|
|
넣으면 GitHub Releases 최신 태그와 비교해 릴리스 페이지를 열어 준다.
|
|
|
|
## 문서
|
|
|
|
| 문서 | 내용 |
|
|
|---|---|
|
|
| [AGENTS.md](AGENTS.md) | AI 코딩 에이전트 작업 계약 — 명령·규약·완료 기준 (사람이 읽어도 온보딩 문서) |
|
|
| [docs/HARNESS.md](docs/HARNESS.md) | 개발 하네스 운영법 — 자동 검증 게이트, 규칙/스킬 구조 |
|
|
| [docs/BROWSER_FEATURES_PLAN.md](docs/BROWSER_FEATURES_PLAN.md) | 데스크톱 브라우저 기능 계획 (v2) |
|
|
| [docs/MOBILE_PLAN.md](docs/MOBILE_PLAN.md) | 모바일 앱 + PC↔모바일 연동 계획 (v1) |
|
|
| [docs/DEPLOYMENT_PLAN.md](docs/DEPLOYMENT_PLAN.md) | Win/macOS/Linux/모바일 배포 체계 |
|
|
| [docs/IMPLEMENTATION_AUDIT.md](docs/IMPLEMENTATION_AUDIT.md) | 계획 대비 구현 감사 |
|
|
| [docs/BACKLOG.md](docs/BACKLOG.md) | 작업 이력 및 백로그 |
|
|
| [docs/GROWTH_PLAN.md](docs/GROWTH_PLAN.md) | 성장·홍보·바이럴 실행 계획 (검색/AEO/GEO 심화, 런치 시퀀스) |
|
|
| [docs/promo/](docs/promo/README.md) | 사이트 홍보 키트 — 채널별 게시문·디렉터리 제출 데이터 |
|