Go to file
hehihoho3@gmail.com 8178d45209 feat(rework): speech-gap trimming + render, language override
Phase 3: remove "no-talk" gaps (Whisper-segment based, not audio silencedetect
which finds nothing under background music) and render a trimmed (+speed) video
via ffmpeg, with subtitles remapped to match.

- KeepIntervalPlanner + TimelineRemapper (pure, unit-tested): keep/remove plan
  from segments (pad/minGap) and timestamp remap f(t)=t-removedBefore(t)
- GET /{id}/trim-plan (preview: keep/remove/remapped segments/kept duration)
- POST /{id}/render (multipart: file,pad,minGap,speed) -> proxy Python /render
  (ffmpeg trim/atrim+concat+atempo) -> mp4 download; ffmpeg graph validated locally
- rework.html: export panel (speed + speech-gap trim preview + SRT/video export),
  client-side SRT from working segments, language selector (auto/ko/en/zh/ja)
- transcribeFromFile forwards optional language (Whisper auto-detect misfired -> zh)

Spec updated with the audio-silence -> speech-gap design correction.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 16:53:32 +09:00
docs/superpowers feat(rework): speech-gap trimming + render, language override 2026-06-12 16:53:32 +09:00
gradle/wrapper Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
src feat(rework): speech-gap trimming + render, language override 2026-06-12 16:53:32 +09:00
.gitignore chore(security): externalize secrets to git-ignored application-local.yml 2026-05-31 16:08:26 +09:00
build_log_final.txt Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
build_log.txt Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
build.gradle test: add unit test infrastructure and core-logic tests 2026-05-31 13:37:52 +09:00
CLAUDE.md docs: update CLAUDE.md for ChannelVideo single-master architecture 2026-05-30 19:59:38 +09:00
gradlew Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
gradlew.bat Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
README.md Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
settings.gradle Baseline before video model consolidation 2026-05-30 18:56:21 +09:00

h-lab

유튜브 데이터를 수집하고 분석하는 개인용 웹 서비스입니다. Spring Boot 4.x(3.4.0) 기반의 백엔드와 React + Vite 기반의 프론트엔드로 구성되어 있습니다.

🛠 Tech Stack

Backend

  • Framework: Spring Boot 3.4.0 (Java 21)
  • Database: H2 (Development), JPA
  • API Docs: Swagger UI (SpringDoc)
  • Architecture: Domain-Driven Design style

Frontend

  • Framework: React 18 (Vite)
  • Language: TypeScript
  • Styling: Vanilla CSS + CSS Variables (Dark Mode)
  • State: Zustand
  • Charts: Recharts

🚀 How to Run

Backend & Frontend (Integrated)

  1. backend 디렉토리로 이동
  2. ./gradlew bootRun 실행 (Windows: gradlew bootRun)
  3. 웹 서비스 접속: http://localhost:8080
    • 메인 대시보드: http://localhost:8080/
    • 채널 관리: http://localhost:8080/channels
    • Swagger UI: http://localhost:8080/swagger-ui.html

Frontend (Legacy React)

Removed in favor of Thymeleaf Server-Side Rendering

📂 Project Structure

h-lab/
├── src/main/java/com/hlab/yanalyst/
│   ├── domain/        # Domain Entities (Video, Channel...)
│   └── web/           # Web Controllers (Thymeleaf)
│
└── src/main/resources/
    ├── static/        # CSS, JS
    └── templates/     # HTML Templates (Thymeleaf)

Key Features

  • Dashboard: 전체 데이터 요약 및 시각화 (Charts)
  • Channel Management: 분석 대상 유튜브 채널 관리
  • Dark Mode: 눈이 편안한 프리미엄 다크 모드 UI