Skip to content

AlanHJ/qEmby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qEmby Logo

qEmby

A modern desktop client for Emby & Jellyfin media servers
Emby & Jellyfin 媒体服务器的现代桌面客户端

License: MIT Release Qt 6 C++20 Platform: Windows

English | 中文


📸 Screenshots

Home Detail

Settings Admin Dashboard

✨ Features

  • 🎬 Browse and manage your Emby / Jellyfin media library
  • ▶️ Built-in video player powered by libmpv
  • 🌗 Dark and Light theme support
  • 🌐 Internationalization support (Chinese / English)
  • 🔍 Media search with history
  • 📺 TV series and movies media types
  • ⚡ Asynchronous operations with C++20 coroutines (QCoro)
  • 🪟 Custom window frame with native look (QWindowKit)

💻 Platform Support

Platform Status
Windows 10/11 x64 ✅ Supported
Linux 🚧 Planned
macOS 🚧 Planned

📋 Roadmap

  • Emby / Jellyfin media library browsing
  • Built-in video player (libmpv)
  • Dark / Light theme
  • Internationalization (Chinese / English)
  • Media search with history
  • TV series & movies support
  • Server administration dashboard
  • Playlist support (add/remove items)
  • Media identification & metadata refresh
  • Metadata and image editing
  • Linux platform support
  • 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

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:

3. Configure and build

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

📄 License

This project is licensed under the MIT License.

🙏 Acknowledgements

  • Qt — Application framework (LGPL v3)
  • mpv — Media player engine (LGPL v2.1+)
  • QWindowKit — Custom window frame (Apache-2.0)
  • QCoro — C++20 Coroutines for Qt (MIT)
  • spdlog — Fast logging library (MIT)

📸 应用截图

首页 影片详情

设置 管理仪表盘

✨ 功能特性

  • 🎬 浏览和管理你的 Emby / Jellyfin 媒体库
  • ▶️ 内置 libmpv 驱动的视频播放器
  • 🌗 深色 / 浅色主题切换
  • 🌐 国际化支持(中文 / 英文)
  • 🔍 支持搜索历史的媒体搜索
  • 📺 当前支持电视剧、电影媒体类型
  • ⚡ 基于 C++20 协程的异步操作(QCoro)
  • 🪟 原生风格的自定义窗口边框(QWindowKit)

💻 平台支持

平台 状态
Windows 10/11 x64 ✅ 已适配
Linux 🚧 计划中
macOS 🚧 计划中

📋 开发路线图

  • Emby / Jellyfin 媒体库浏览
  • 内置视频播放器(libmpv)
  • 深色 / 浅色主题
  • 国际化支持(中文 / 英文)
  • 媒体搜索与搜索历史
  • 电视剧、电影支持
  • 服务器管理仪表盘
  • 支持添加到播放列表和从播放列表中移除
  • 支持识别来更新元数据
  • 支持修改元数据和图片
  • Linux 平台适配
  • 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. 克隆仓库

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 获取方式:

3. 配置和构建

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/             # QWindowKit(git 子模块)
└── src/
    ├── qEmbyCore/              # 核心库(API、模型、服务)
    │   ├── api/                # Emby/Jellyfin API 客户端
    │   ├── config/             # 配置管理
    │   ├── models/             # 数据模型
    │   └── services/           # 业务逻辑服务
    └── qEmbyApp/               # 桌面应用
        ├── components/         # 可复用 UI 组件
        ├── managers/           # 应用管理器
        ├── resources/          # 图标、主题、翻译
        ├── utils/              # 工具类
        └── views/              # 应用视图

📄 许可证

本项目基于 MIT 许可证 开源。

🙏 致谢

  • Qt — 应用框架 (LGPL v3)
  • mpv — 媒体播放引擎 (LGPL v2.1+)
  • QWindowKit — 自定义窗口框架 (Apache-2.0)
  • QCoro — Qt C++20 协程库 (MIT)
  • spdlog — 高性能日志库 (MIT)

About

A modern desktop client for Emby & Jellyfin media servers, built with Qt6/C++20

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages