tinypinglite/sakuramedia
自建JAV媒体库支持订阅女优/影片;自托管JAV媒体库,订阅影片或演员;基于Flutter与Docker
- Stars
- 1004
- Forks
- 70
- 最近推送(UTC)
- 2026年10月29日
- 项目状态
- 未归档
技术话题
使用的依赖
依赖清单 47 项
- flutter
{"sdk":"flutter"} - flutter_localizations
{"sdk":"flutter"} - go_router
^18.0.1 - flutter_riverpod
3.4.3 - hooks_riverpod
3.4.3 - flutter_hooks
^0.21.3+1 - riverpod_annotation
4.0.7 - clock
^1.1.3 - dio
^5.11.1 - expand_tap_area
^1.1.1 - window_manager
^0.5.2 - screen_retriever
^0.2.2 - intl
^0.20.3 - shared_preferences
^2.5.5 - oktoast
^3.4.0 - material_ui
^1.2.0 - cupertino_ui
^1.0.2 - cached_network_image
^4.0.0 - flutter_cache_manager
^3.4.2 - photo_view
^0.15.0 - media_kit
1.2.6 - media_kit_video
2.0.1 - media_kit_libs_video
1.0.7 - media_kit_libs_macos_video
1.1.4 - screen_brightness
^2.1.11 - multi_split_view
^3.6.2 - file_picker
^13.0.0 - http_parser
^4.1.2 - path_provider
^2.1.6 - image_gallery_saver_plus
^5.1.1 - permission_handler
^13.0.2 - volume_controller
3.7.0 - package_info_plus
^10.2.1 - flutter_secure_storage
10.3.1 - marionette_flutter
^0.6.0 - flutter_staggered_grid_view
^0.7.0 - animate_do
^5.1.0 - skeletonizer
^3.0.0 - upnp_client
^1.5.0 - url_launcher
^6.3.3 - flutter_test开发依赖
{"sdk":"flutter"} - build_runner开发依赖
^2.16.1 - flutter_lints开发依赖
^6.0.0 - fake_async开发依赖
^1.3.3 - go_router_builder开发依赖
4.5.0 - riverpod_generator开发依赖
4.0.9 - xml开发依赖
^7.0.0
所在榜单
原始 README
以下为英文项目原文快照,最新内容请访问 GitHub。
展开 / 收起项目 README
SakuraMedia logo
SakuraMedia
Turn the movies on your disks and cloud drives into a searchable, subscribable library you can pick up where you left off.
Built for people running their own media library: the backend can run on a NAS, mini PC, server, or VPS, and movies can live on local disks or in a 115 cloud drive.
Download the client · Deploy the backend · Browse the Wiki · Watch the demo
English · 简体中文
Needs an always-on host plus Docker; the client can't be used on its own.
SakuraMedia interface preview
After collecting for years, I started asking myself: what do I actually want to keep from this movie?
Why I built SakuraMedia →
Core features
From finding and downloading movies to watching and organizing them, the current release covers the following.
Finding and acquiring
- 🔍 Discovery and subscriptions: Search by movie number or look up an actor by name; browse tags, rankings, and recommendations; subscribe to an actor to keep up with new releases (her whole catalog isn't downloaded automatically).
- 📥 Automatic download and import: Once a movie is subscribed, SakuraMedia keeps looking for sources and downloads it through qBittorrent or 115 offline download; finished downloads are imported into the media library automatically, and movies with no source stay on the subscription list.
- 📦 Import and metadata: Import from a local disk or select cloud drives; the movie number is detected and the title, cast, cover, and other metadata are scraped and filled in; if detection fails you can match manually.
Watching and keeping
- 🎬 Playback and moments: The thumbnail timeline takes you straight to a frame; mark moments; cut a stretch of video into a standalone clip; variable speed, subtitles, resume, and external players.
- 🥽 VR playback: Play VR movies in an external player; multi-part sources can be merged into continuous playback; experimental support for using devices such as Pico in 2D.
- 🖼️ Image search: Use a thumbnail, a scene still, or a text description to find similar frames in other movies; results with a playable source jump straight to the matching timestamp (optional, needs a separately deployed embedding service; it only searches images already indexed in your media library).
- ❤️ Favorites and organization: Playlists, moment collections, and clip collections; use collections to group what you want to rewatch.
Moments depend on the source media; clips are standalone video files.
Regular videos (PornBox)
- 📼 Importing regular videos: In "Media import → Videos", choose a directory or video files from storage; they can join a collection right away during import. No movie number is needed, and none of the JAV subscription or download flow applies.
- 🗂️ Collections: See the members in a collection's detail view, reorder them by hand, add or remove members; "Play all" starts in the current order.
- 🔗 Collection playback: The thumbnail panel on the right stitches the keyframes of every entry into a single strip; scroll or click to jump to that movie and frame, and playback moves on to the next one automatically.
- 📌 Marking moments during playback: Right-click a thumbnail → "Add marker". Moments stay bound to a specific movie and media, so continuous playback never loses them. The same menu also saves to local storage, and once image search is enabled you can look for similar images there too.
PornBox and JAV have separate movie number, subscription, and download flows; collections only organize regular movies that are already in your media library.
Management and extensibility
- 🗂️ Media library management: Spot duplicate files, multiple versions, and dead media; fingerprint sampling reads only a few fragments to detect duplicates across libraries and storage. Migrate local movies to a cloud drive through 115 rapid upload while keeping media records and playback progress; files that don't match are skipped and the originals kept.
- 🔔 Tasks and notifications: The task center shows downloads, imports, and background jobs; notifications keep you posted, and notification channels are extensible.
- 🧩 Plugin extensions: Storage, download, rankings, subtitles, and actor metadata completion are all delivered through plugins.
- 💻 Multiple clients: Windows / macOS / Android / iOS. Desktop handles configuration and central management; mobile is for browsing and watching. The available entry points vary by platform.
Screenshots
Screenshots use demo data; covers and thumbnails are blurred. See the video below for the full demo.
Interface carousel
Overview / Discover / Details / Player / Clips / PornBox
▶ Watch the full 45-second demo
More screenshots
Overview
Overview: media assets, viewing trends, storage distribution
Discover page Movie details
Player with thumbnail timeline
Searching similar frames from a thumbnail
Right-click a thumbnail → Similar images
Thumbnail timeline demo Selecting a clip
Thumbnail timeline / Clip selection
Clips page
Clips page: browse, play, add to collections
PornBox collection details
PornBox collections: members, manual order, play all
Collection playback thumbnails and adding a marker
Collection playback: the thumbnail panel is assembled per collection; right-click → Add marker
Image search
Mobile
How to store, how to download
A NAS is optional: the backend runs on any machine that can keep Docker running long term, and where movies live is decided by the storage plugin.
| Combination | Storage | Download | Best for |
|---|---|---|---|
| 💾 Local + qBittorrent (bundled in the backend image) | Local disk | qBittorrent | You have local space and want to keep movies in your own hands |
| ☁️ 115 cloud drive + offline download | 115 cloud drive | 115 offline download | You'd rather not use local space; good for a mini PC, server, or VPS |
| ☁️ Guangyapan cloud drive + cloud add | Guangyapan cloud drive | Guangyapan cloud add | You'd rather not use local space; good for a mini PC, server, or VPS |
Storage and download both come in through plugins. The backend image ships with "Local Storage & qBittorrent"; the 115 and Guangyapan cloud drives are optional plugins you install yourself under "System settings → Plugins".
Download and install
Get the client from GitHub Releases. The Windows and macOS installers are currently unsigned, so the system may warn about an unidentified developer; once you've confirmed where the download came from, follow the system prompt to allow it.
| Platform | Installer | Notes |
|---|---|---|
| Windows | sakuramedia-windows-*-setup-unsigned.exe |
Unsigned; when SmartScreen appears, choose "More info → Run anyway" |
| macOS | sakuramedia-macos-*-unsigned.dmg |
Unsigned; on first launch, right-click → Open, or allow it under "Privacy & Security" |
| Android | sakuramedia-android-*-release-signed.apk |
Install directly; the system may warn about unknown sources |
| iOS | sakuramedia-ios-*-sidestore-ready.ipa |
Requires iOS 15.0+ and installs through SideStore or a self-signing tool; if you haven't sideloaded before, start with the desktop client |
Who it's for
A good fit: you have a NAS, mini PC, server, or VPS that can run around the clock, and you want movie discovery, downloading, importing, and watching in one place.
Not a good fit: you have no always-on machine, you expect to install an app and start watching, or you don't want to configure a backend or any plugins. SakuraMedia doesn't provide movies and bundles no source sites.
Community and support
- Found a bug or have a feature request: open an issue. Please include the client, backend, and plugin versions, the steps to reproduce, and the relevant logs; don't upload screenshots, covers, or personal information that shouldn't be public.
- Chat with other users or ask for help: join Discussions.
- If you hit connection or import problems, check connectivity for your media library, indexer, JavDB, and the embedding service under "Overview → Component diagnostics" first.
- You can also hand the Markdown files in
wiki/to an AI together with your problem and the steps you've already tried; that usually narrows things down faster. - The project is evolving quickly; check the release notes before upgrading, and upgrade the client, backend, and plugins together whenever possible.
Contributing
- Star the project so more people find it.
- Help improve the Wiki and the docs.
- Build plugins: see the plugin development guide; to list one in the plugin market, send a PR to sakuramedia-plugin-market.
- Send PRs for bug fixes or new features. The client is built with Flutter, currently on 3.47.2; after
flutter pub get, run the tests with./scripts/test.sh -j 4.
The project doesn't need donations; stars, docs, plugins, and PRs are all help.
Risks and disclaimer
- This project is for technical exchange only and provides no movies or download links.
- Everything that results from using this tool is the user's own responsibility, not the author's.
- Please learn about and follow your local laws and regulations before use; if your use would break them, don't use it.
- Commercial use of this software is prohibited.
- If you don't agree with any of the above, don't use it.
- License: PolyForm Noncommercial 1.0.0