FunLibrary Manager - a library for your scripts and videos including toy integration and streaming server

Small update
Poll has been updated with status: poll

also:

  • API consolidated (just one api for Heresphere and MFP or others, you can also use HereSphere to playback in VR and connect to MFP to drive the toys with multiaxis scripts)

plus:

  • play in MPC-HC option
1 Like

Release is ready, links have been updated.

New Features (0.9.8 - 0.9.13)

Device Synchronization

  • Stroke Range Control: Set min/max stroke limits (0-100%) for Handy device using native /slide API
  • Intiface Central / Buttplug.io Support: Multi-device backend supporting Handy, OSR2/SR6, Kiiroo, Lovense and more
  • HSTP Calibration: Round-trip delay (RTD) latency display with color-coded indicator for Handy sync timing
  • Handy Auto-Connect: Player automatically connects to Handy on video open
  • Sync Offset Slider: Adjustable timing offset (-2000ms to +2000ms) in Settings and Player
  • Offset Visualizer: Visual display showing network latency and user offset components

Multi-Funscript Support

  • Multiple Funscripts per Video: Support for script variants (e.g., video.funscript, video.stroke.funscript)
  • Player Dropdown: Switch between funscript variants with automatic device resync
  • Set Default Button: Persist preferred funscript variant per video
  • Multi-Heatmap Tooltip: Grid view shows all funscript variants on hover
  • Multi-Funscript Badge: Grid cards display “FS×2”, “FS×3” etc.
  • Multi-Funscript Filter: Filter library by videos with 2+ funscripts

Player Enhancements

  • Fullscreen Mode: Press F for fullscreen with auto-hiding controls and cursor
  • Default Volume Setting: Configure initial player volume in Settings
  • Player Window Reuse: Opening new videos reuses existing player, preserving device connection
  • Video Loop: Automatic loop with device resync
  • Player Sections: Device Sync and Metadata controls organized in grouped sections

Library & Filtering

  • Sort by Path: New sorting option for full file path
  • Sort by Added Date: Sort by database add date with smart descending default
  • Compact Filter Sidebar: 2-column grid layout for all filter sections
  • Video Name Selection: Select and copy video names in grid view

API & Integration

  • Open in MPC-HC: Context menu option with MFP integration via streaming URL
  • Open in VLC: Context menu with automatic funscript loading via XBVR integration
  • Server Consolidation: Single HereSphere/API server (port 5000) for all XBVR-compatible endpoints
  • MultiFunPlayer Integration: Automatic funscript loading via XBVR repository

Database & Maintenance

  • Database Maintenance Dialog: Statistics, VACUUM, ANALYZE, cleanup, and integrity check
  • Automatic Maintenance: Integrity check on startup, ANALYZE on exit

UI/UX

  • RangeSlider Widget: Dual-handle slider for min/max range selection
  • SVG Icons: Custom dropdown and spinbox arrows in accent blue
  • Cross-Platform Support: Windows, macOS (Apple Silicon + Intel), and Linux builds

General

  • Various bug fixes and performance improvements
5 Likes

Came back in here to say great job. Really great work here.

1 Like

Can you add a way to manually pair scripts + videos? It seems to ignore everything that isn’t a 1:1 match and this makes using multiple scripts for one video especially difficult

1 Like

The system expects files to be aside the video.
Naming is matched as follows:
[filename]. funscript - direct pairing
[filename].[description].funscript - additional scripts
[filename].[twist,pitch,rol,…].funscript - multi-axis scripts

hope that helps. :smiley:

Sneak peek:

Yes I was hoping you could add the functionality to pair the videos to their scripts manually regardless of file names. Or at least one that makes renaming automatic via some method.

How can i use video as thumbnails automatically?

You need to run a deep scan, thumbnails are creatated (10 secs in) and heatmaps also.

I will consider it.

Well, i have use the deep search. As you can see, some have a heat map while others don’t have one. And none of them have a thumbnail.

maybe I use a wrong file path as ffmpeg path? Can you please see if it’s right one?

Please download the latest win64 build from here: https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl-shared.zip
extract it somewhere and set the pathes to the .exe files in the bin folder.
In case that doesnt help, please set to debug level logging, do a deep search and send me the log files in a DM.

It works! Thank you!

BTW, can you make it can be show as folder? I mean, I have already sort some them by artist in different folders. But in manager, they are all showed there without any categories.

im working on a metadata assignment which is checking filenames and funscript tags and optionally TPDB to assign performers and studios alongside with categories, the sidebar allows filtering on this in the future (next release)
for the moment, you can filter by path in the search box

Great work! Thanks!

It seems like i can’t detect the lovense solace pro. Any reason why? It seems you’ve added broader lovense device support recently.

I added intiface/buttplug support, no direct lovesense.
It will only work if intiface is detecting your device and you konfigure intiface as a source.
Settings → General → Device Sync → Backend → Intiface Central

1 Like

According to VirusTotal there is a trojan in the software…

  • As already mentioned, this is a false positive caused by the build process.

  • Unfortuantely most malware is using the same processes to hide themselfves.

  • Also, you checked version 0.9.0 which was a singelefile build which has been changed due to this problem.

  • The actual version 0.9.13 is not using single-file builds anymore.

  • A section regarding this situation is mentioned in the readme shipped with the app.

Here are the actual scans from virustotal for the latest release version:

EXE ONLY:

ZIP FILE:

Please pay attention tho the behaviour analysis.

Why False Positives Occur

1. Packer/Compiler Signatures

Nuitka compiles Python code into a standalone executable by bundling the Python interpreter, libraries, and your code into a single file. This “packing” behavior is similar to what malware authors do to obfuscate their code. Antivirus engines flag these generic signatures.

2. Low Prevalence / Unknown Software

Antivirus engines use reputation-based detection. A newly compiled executable has zero reputation - no one has seen it before. Low prevalence = suspicious by default.

3. Embedded Python Runtime

The bundled Python runtime (DLLs, bytecode) contains code patterns that some heuristic engines flag as suspicious, even though they’re completely legitimate.

4. Generic Heuristic Detection

Names like “Trojan.Generic”, “Malware.AI”, or “Suspicious.Packer” indicate heuristic (behavior-based) detection, not actual malware signatures. These are educated guesses, not confirmed threats.

2 Likes

I was using intiface central and set backend settings accordingly, but it still refused to connect. Can I provide anything to help troubleshoot?