Skip to content

chgc/DViewer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DViwer

DViwer 是一個可自行部署的影片資料庫應用程式,後端使用 Go、前端使用 Angular。 它會掃描本機媒體資料夾,將中繼資料儲存在 SQLite,並提供瀏覽、篩選與瀏覽器串流播放功能。

功能特色

  • 可設定路徑的媒體庫掃描
  • 支援篩選、排序、分頁與格狀/清單模式的影片瀏覽
  • 影片詳情頁與瀏覽器內播放
  • 觀看紀錄與續播功能
  • 中繼資料擷取佇列與手動擷取/搜尋
  • 基本演員/分類瀏覽與封面圖片提供
  • 從資料庫批次刪除影片

技術棧

  • 後端: Go、Gin、SQLite
  • 前端: Angular 21
  • 容器: 多階段 Docker 建置(node:22-alpine + golang:1.24-alpine
  • 媒體工具: ffmpeg(於正式映像中)

專案結構

  • backend/ – API 伺服器、掃描器、擷取器、串流模組、資料庫層
  • frontend/ – Angular 前端應用
  • data/ – 本機執行時資料(DB、封面、快取)
  • docker-compose.yml – 類正式環境的本機部署設定
  • justfile – 常用開發與服務管理指令

環境需求

本機開發需要:

  • Go 1.24+
  • Node.js 22+ 與 npm
  • just(可選,但建議)
  • air 用於後端熱重載(go install github.com/air-verse/air@latest

使用容器化部署需要:

  • Docker + Docker Compose

快速開始(本機開發)

1) 啟動後端

cd backend
air

後端預設執行於 http://localhost:28100

2) 啟動前端

cd frontend
npm install
npm start

前端執行於 http://localhost:4200

3) 開啟應用

  • 前端:http://localhost:4200
  • API 基底:http://localhost:28100/api

使用 just 快捷指令

在專案根目錄執行:

just backend
just frontend
# 或同時執行前後端
just dev

快速開始(Docker)

  1. 在專案根目錄建立 .env
PORT=28100
VIDEO_PATH=D:/path/to/your/videos
  1. 啟動服務:
just service-up
  1. 開啟:
  • http://localhost:28100

資料會持久化到 Docker volume dviewer,影片目錄會以唯讀方式從 VIDEO_PATH 掛載。

停止服務:

just service-down

查看日誌:

just service-logs

設定

後端/容器常用環境變數:

  • PORT – 後端監聽連接埠(預設 28100
  • DVIEWER_DATA_DIR – DB/快取/封面資料目錄
  • STATIC_DIR – 前端靜態建置目錄(正式環境提供)
  • LIBRARY_PATH – 初始媒體庫路徑(用於預設設定值)

媒體庫路徑也可於 UI 的 Settings 頁面修改。

API 概覽

主要路由群組位於 /api

  • /videos – 列表/詳情/更新/刪除/串流
  • /history – 觀看紀錄 CRUD
  • /library – 掃描狀態與擷取佇列
  • /scrape – 觸發擷取與搜尋
  • /settings – 應用設定(包含媒體庫路徑)
  • /actors, /categories, /covers

備註

  • 後端在正式環境會提供 Angular 靜態檔,並在 SPA 路由時回退至 index.html
  • 開發模式下前後端分開執行。
  • 本機執行時檔案會建立在 backend/data(或 DVIEWER_DATA_DIR 指定路徑)。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors