chore: baseline usable version

This commit is contained in:
dela
2026-06-10 11:17:51 +08:00
commit a2f82a86b6
932 changed files with 172551 additions and 0 deletions

376
README.md Normal file
View File

@@ -0,0 +1,376 @@
<p align="center">
<img src="src/qEmbyApp/resources/svg/qemby_logo.svg" width="120" alt="qEmby Logo"/>
</p>
<h1 align="center">qEmby</h1>
<p align="center">
<b>A modern desktop client for Emby & Jellyfin media servers</b><br/>
<b>Emby & Jellyfin 媒体服务器的现代桌面客户端</b>
</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"/></a>
<a href="https://github.com/AlanHJ/qEmby/releases/latest"><img src="https://img.shields.io/github/v/release/AlanHJ/qEmby?include_prereleases&label=Download" alt="Release"/></a>
<img src="https://img.shields.io/badge/Qt-6.x-green.svg" alt="Qt 6"/>
<img src="https://img.shields.io/badge/C%2B%2B-20-orange.svg" alt="C++20"/>
<img src="https://img.shields.io/badge/Platform-Windows%20|%20Linux%20|%20macOS-lightgrey.svg" alt="Platform: Windows | Linux | macOS"/>
</p>
<p align="center">
<a href="#中文">中文</a> | <a href="#english">English</a>
</p>
---
<a id="中文"></a>
## 📸 应用截图
<p align="center">
<img src="screenshots/2.png" width="45%" alt="首页"/>
<img src="screenshots/5.png" width="45%" alt="影片详情"/>
</p>
<p align="center">
<img src="screenshots/3.png" width="45%" alt="设置"/>
<img src="screenshots/4.png" width="45%" alt="管理仪表盘"/>
</p>
## 📥 下载
最新版本:**v0.0.5**
| 安装包 | 说明 |
|---|---|
| [qEmby-v0.0.5-Win-x64-Setup.exe](https://github.com/AlanHJ/qEmby/releases/download/v0.0.5/qEmby-v0.0.5-Win-x64-Setup.exe) | Windows 10/11 x64 安装包 |
| [qEmby-v0.0.5-Win-x64.zip](https://github.com/AlanHJ/qEmby/releases/download/v0.0.5/qEmby-v0.0.5-Win-x64.zip) | Windows 10/11 x64 绿色便携版 |
| [qemby-0.0.5-macos-arm64.dmg](https://github.com/AlanHJ/qEmby/releases/download/v0.0.5/qemby-0.0.5-macos-arm64.dmg) | macOS 26+ (Apple 芯片) |
旧版 Windows、Linux 和 macOS 构建可以在 [Releases](https://github.com/AlanHJ/qEmby/releases) 页面下载。
## 🚀 v0.0.5 更新内容
- 优化了剧集详情页展示,支持版本切换。
- 支持播放状态展示和切换。
- 增加了详情页的缓存,加快下一次载入速度。
- 优化了播放界面 OSD支持上一集和下一集支持连续播放。
- 优化了媒体库等上下滑动的流畅度,优化了加载图片的逻辑。
- 新增播放完成画廊,默认关闭,可以在设置中打开。
## ✨ 功能特性
- 🎬 浏览和管理你的 Emby / Jellyfin 媒体库
- ▶️ 内置 **libmpv** 驱动的视频播放器
- 💬 弹幕播放,支持搜索、匹配、缓存和原生覆盖层渲染
- 🧩 支持元数据编辑、媒体识别、图片更新和播放列表管理
- 📥 下载管理器
- 🌗 深色 / 浅色主题切换
- 🌐 国际化支持(中文 / 英文 / 法语)
- 🔍 支持搜索历史的媒体搜索
- 📺 当前支持电视剧、电影媒体类型
- 📦 提供 Windows 安装包 / 绿色版,以及 Linux AppImage / deb 包
- ⚡ 基于 C++20 协程的异步操作QCoro
- 🪟 原生风格的自定义窗口边框QWindowKit
## 💻 平台支持
| 平台 | 状态 |
|---|---|
| Windows 10/11 x64 | ✅ 已适配 |
| Linux x64 (AppImage / deb) | ✅ 已适配 |
| macOS 26+ (Apple Silicon) | ✅ 已适配 |
## 📋 开发路线图
- [x] Emby / Jellyfin 媒体库浏览
- [x] 内置视频播放器libmpv
- [x] 深色 / 浅色主题
- [x] 国际化支持(中文 / 英文)
- [x] 媒体搜索与搜索历史
- [x] 电视剧、电影支持
- [x] 服务器管理仪表盘
- [x] 支持添加到播放列表和从播放列表中移除
- [x] 支持识别来更新元数据
- [x] 支持修改元数据和图片
- [x] 弹幕系统(搜索、匹配、设置、渲染)
- [x] 下载管理器
- [ ] AI 字幕生成
- [x] Linux 平台适配
- [x] macOS 平台适配
> 本项目为个人兴趣开发,欢迎贡献和反馈!
## 🛠️ 技术栈
| 组件 | 技术 |
|---|---|
| 框架 | Qt 6.x (Widgets) |
| 语言 | C++20 |
| 视频播放 | libmpv |
| 异步 | QCoro (Qt C++20 协程) |
| 日志 | spdlog |
| 窗口框架 | QWindowKit |
| 构建系统 | CMake |
## 📦 环境要求
- **Qt 6.x**(包含 Widgets、Core、Network、Concurrent、OpenGLWidgets、LinguistTools、WebSockets 模块)
- **CMake** ≥ 3.16
- 支持 **C++20** 的编译器(推荐 MSVC 2022
- **libmpv** 开发文件(见下方说明)
- **Git**(用于克隆子模块)
## 🚀 构建指南
### 1. 克隆仓库
```bash
git clone --recursive https://github.com/AlanHJ/qEmby.git
cd qEmby
```
### 2. 获取 libmpv
下载 libmpv 开发包,并放置到 `libs/libmpv/` 目录下,结构如下:
```
libs/libmpv/
├── bin/
│ └── libmpv-2.dll
├── include/
│ └── mpv/
│ ├── client.h
│ └── render.h (等)
└── lib/
└── libmpv.dll.a
```
libmpv 获取方式:
- [shinchiro/mpv-winbuild-cmake](https://github.com/shinchiro/mpv-winbuild-cmake/releases)Windows 预编译版本)
- [mpv-player/mpv](https://github.com/mpv-player/mpv)(从源码编译)
### 3. 配置和构建
```bash
cmake -B build -DCMAKE_PREFIX_PATH="/path/to/Qt6/lib/cmake"
cmake --build build --config Release
```
> **提示:** 在 Windows 上使用 MSVC 时,也可以直接在 Qt Creator 或 Visual Studio 中打开 CMake 项目。
## 📁 项目结构
```
qEmby/
├── CMakeLists.txt # 根 CMake 配置
├── libs/
│ ├── libmpv/ # libmpv SDK未纳入版本控制见构建指南
│ └── qwindowkit/ # QWindowKitgit 子模块)
└── src/
├── qEmbyCore/ # 核心库API、模型、服务
│ ├── api/ # Emby/Jellyfin API 客户端
│ ├── config/ # 配置管理
│ ├── models/ # 数据模型
│ └── services/ # 业务逻辑服务
└── qEmbyApp/ # 桌面应用
├── components/ # 可复用 UI 组件
├── managers/ # 应用管理器
├── resources/ # 图标、主题、翻译
├── utils/ # 工具类
└── views/ # 应用视图
```
## 💬 交流社区
加入 Telegram 交流群:[https://t.me/+qXQ-zU56z9gxOWNl](https://t.me/+qXQ-zU56z9gxOWNl)
> **注意:** 本项目是为爱发电项目,测试覆盖不全,敬请谅解。如有问题请通过 [GitHub Issues](https://github.com/AlanHJ/qEmby/issues) 反馈。
## 📄 许可证
本项目基于 [MIT 许可证](LICENSE) 开源。
## 🙏 致谢
- [Qt](https://www.qt.io/) — 应用框架 (LGPL v3)
- [mpv](https://mpv.io/) — 媒体播放引擎 (LGPL v2.1+)
- [QWindowKit](https://github.com/stdware/qwindowkit) — 自定义窗口框架 (Apache-2.0)
- [QCoro](https://github.com/danvratil/qcoro) — Qt C++20 协程库 (MIT)
- [spdlog](https://github.com/gabime/spdlog) — 高性能日志库 (MIT)
---
<a id="english"></a>
## 📸 Screenshots
<p align="center">
<img src="screenshots/2.png" width="45%" alt="Home"/>
<img src="screenshots/5.png" width="45%" alt="Detail"/>
</p>
<p align="center">
<img src="screenshots/3.png" width="45%" alt="Settings"/>
<img src="screenshots/4.png" width="45%" alt="Admin Dashboard"/>
</p>
## 📥 Download
Latest release: **v0.0.5**
| Package | Description |
|---|---|
| [qEmby-v0.0.5-Win-x64-Setup.exe](https://github.com/AlanHJ/qEmby/releases/download/v0.0.5/qEmby-v0.0.5-Win-x64-Setup.exe) | Windows 10/11 x64 installer |
| [qEmby-v0.0.5-Win-x64.zip](https://github.com/AlanHJ/qEmby/releases/download/v0.0.5/qEmby-v0.0.5-Win-x64.zip) | Windows 10/11 x64 portable package |
| [qemby-0.0.5-macos-arm64.dmg](https://github.com/AlanHJ/qEmby/releases/download/v0.0.5/qemby-0.0.5-macos-arm64.dmg) | macOS 26+ (Apple Silicon) |
Older Windows, Linux and macOS builds are available on the [Releases](https://github.com/AlanHJ/qEmby/releases) page.
## 🚀 What's New in v0.0.5
- Optimized episode detail page display with version switching support.
- Added playback status display and switching.
- Added detail page caching for faster subsequent loading.
- Enhanced player OSD with previous/next episode and continuous playback.
- Improved scrolling smoothness in media library views and optimized image loading logic.
- Added post-playback gallery (disabled by default, configurable in settings).
## ✨ Features
- 🎬 Browse and manage your Emby / Jellyfin media library
- ▶️ Built-in video player powered by **libmpv**
- 💬 Danmaku playback with search, matching, cache and native overlay rendering
- 🧩 Metadata editing, media identification, image updates and playlist tools
- 📥 Download manager
- 🌗 Dark and Light theme support
- 🌐 Internationalization support (Chinese / English)
- 🔍 Media search with history
- 📺 TV series and movies media types
- 📦 Windows installer / portable packages and Linux AppImage / deb packages
- ⚡ Asynchronous operations with C++20 coroutines (QCoro)
- 🪟 Custom window frame with native look (QWindowKit)
## 💻 Platform Support
| Platform | Status |
|---|---|
| Windows 10/11 x64 | ✅ Supported |
| Linux x64 (AppImage / deb) | ✅ Supported |
| macOS 26+ (Apple Silicon) | ✅ Supported |
## 📋 Roadmap
- [x] Emby / Jellyfin media library browsing
- [x] Built-in video player (libmpv)
- [x] Dark / Light theme
- [x] Internationalization (Chinese / English)
- [x] Media search with history
- [x] TV series & movies support
- [x] Server administration dashboard
- [x] Playlist support (add/remove items)
- [x] Media identification & metadata refresh
- [x] Metadata and image editing
- [x] Danmaku (bullet comments) system
- [x] Download manager
- [ ] AI-powered subtitle generation
- [x] Linux platform support
- [x] macOS platform support
> This is a personal hobby project, developed out of interest. Contributions and feedback are welcome!
## 🛠️ Tech Stack
| Component | Technology |
|---|---|
| Framework | Qt 6.x (Widgets) |
| Language | C++20 |
| Video Player | libmpv |
| Async | QCoro (C++20 Coroutines for Qt) |
| Logging | spdlog |
| Window Kit | QWindowKit |
| Build System | CMake |
## 📦 Prerequisites
- **Qt 6.x** (with Widgets, Core, Network, Concurrent, OpenGLWidgets, LinguistTools, WebSockets)
- **CMake** ≥ 3.16
- **C++20** compatible compiler (MSVC 2022 recommended)
- **libmpv** development files (see below)
- **Git** (for cloning submodules)
## 🚀 Build
### 1. Clone the repository
```bash
git clone --recursive https://github.com/AlanHJ/qEmby.git
cd qEmby
```
### 2. Get libmpv
Download the libmpv development package and place it in `libs/libmpv/` with the following structure:
```
libs/libmpv/
├── bin/
│ └── libmpv-2.dll
├── include/
│ └── mpv/
│ ├── client.h
│ └── render.h (etc.)
└── lib/
└── libmpv.dll.a
```
You can get libmpv from:
- [shinchiro/mpv-winbuild-cmake](https://github.com/shinchiro/mpv-winbuild-cmake/releases) (Windows builds)
- [mpv-player/mpv](https://github.com/mpv-player/mpv) (build from source)
### 3. Configure and build
```bash
cmake -B build -DCMAKE_PREFIX_PATH="/path/to/Qt6/lib/cmake"
cmake --build build --config Release
```
> **Tip:** On Windows with MSVC, you can also open the project in Qt Creator or Visual Studio with CMake support.
## 📁 Project Structure
```
qEmby/
├── CMakeLists.txt # Root CMake configuration
├── libs/
│ ├── libmpv/ # libmpv SDK (not tracked, see Build section)
│ └── qwindowkit/ # QWindowKit (git submodule)
└── src/
├── qEmbyCore/ # Core library (API, models, services)
│ ├── api/ # Emby/Jellyfin API client
│ ├── config/ # Configuration management
│ ├── models/ # Data models
│ └── services/ # Business logic services
└── qEmbyApp/ # Desktop application
├── components/ # Reusable UI components
├── managers/ # Application managers
├── resources/ # Icons, themes, translations
├── utils/ # Utility classes
└── views/ # Application views
```
## 💬 Community
Join our Telegram group: [https://t.me/+qXQ-zU56z9gxOWNl](https://t.me/+qXQ-zU56z9gxOWNl)
> **Note:** This is a passion project with limited testing. Your understanding is appreciated. Please report any issues via [GitHub Issues](https://github.com/AlanHJ/qEmby/issues).
## 📄 License
This project is licensed under the [MIT License](LICENSE).
## 🙏 Acknowledgements
- [Qt](https://www.qt.io/) — Application framework (LGPL v3)
- [mpv](https://mpv.io/) — Media player engine (LGPL v2.1+)
- [QWindowKit](https://github.com/stdware/qwindowkit) — Custom window frame (Apache-2.0)
- [QCoro](https://github.com/danvratil/qcoro) — C++20 Coroutines for Qt (MIT)
- [spdlog](https://github.com/gabime/spdlog) — Fast logging library (MIT)