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

i will send you a dm

I have the same setup, I assumed it was because the solace pro is not supported? it would be cool if it was supported though.

as long as a device is supported in intiface and is able to do linear motion it was supposed to work.
i need to investigate that with you as i do not own a solace
a workaround could be using the MFP integration through the api

ok what do you need me to do?

please set your app to debug level in the settings and send me the logfiles via an dm here

Would it be possible to fetch metadata for series (here example Hentai) like Jellyfin does? Maybe a page dedicated for series with Posters.

That would be a gamechanger as i can ditch jellyfin and go full on FunLibrary


i will check whats needed for that

1 Like

I started the investigation on the solace problem, could take some time

Oh btw, this was the database i gained the metadata from:

Jellyfin/Emby or other Multimedia systems have plugins which can collect metadata from this page

Edit:
This is the inside of a series when clicked:

found the problem, solace is registered as “oscilator” not as “linear” this was also hitting some other devices which should now work as well
fix will be in the next release

I already have all of my videos organized and linked with scripts in XBVR. Can I use this just as a way to browse and play vids from my XBVR server?

No, FLM is not able to act as an frontend for XBVR.

I’m prepairing the new release, should be out this weekend.

1 Like

Release is live, links have been updated.

Version 0.9.14 - Key Features & Changes

New Features

Watch Later

  • Mark videos to watch later with dedicated UI and filtering
  • Watch Later toggle button in filter sidebar with clock icon
  • Watch Later column in table view (clickable clock icon)
  • Watch Later button on grid cards (top-right)
  • Filter videos by Watch Later status (All / Watch Later only)
  • HereSphere integration: Watch Later as category with tag-based toggle

Metadata Enrichment Widget

  • New widget for automatic category suggestions
  • Multi-source analysis: Funscript metadata, filename patterns, TPDB API
  • Tag types: Categories, Performers (:bust_in_silhouette: prefix), Studios (:clapper_board: prefix)
  • Streaming results with live UI updates during scan
  • Paginated queue with configurable items per page
  • Diagnose dialog for videos without suggestions

Filename Pattern Matching

  • 30+ regex patterns for common naming conventions
  • VR studio formats (StudioVR - Performer - Title)
  • JAV codes (KAVR-332, 3DSVR-0570, etc.)
  • Game character formats (ZZZ-Character-Creator)
  • Performer name formats (Firstname Lastname - Title)

Funscript Metadata Parsing

  • Extract tags, performers, studio from funscript JSON metadata

TPDB Integration

  • Optional ThePornDB API lookup for scene metadata

Oscillator Device Support (Lovense Solace, etc.)

  • Support for two device types via Buttplug/Intiface:
    • Linear devices (LinearCmd): The Handy, OSR2/SR6, Kiiroo Keon/TITAN, Launch
    • Oscillator devices (ScalarCmd/Oscillate): Lovense Solace/Solace Pro
  • Automatic device type detection
  • Position-to-speed conversion for oscillators (funscript movements → oscillation speed)
  • Improved device capability logging for debugging

Buttplug Backend Enhancements

  • Sync offset support: Timing adjustment in milliseconds (same as Handy API)
  • Stroke range control: Positions scaled to fit configured range (0-100%)
  • Multiple capability detection methods for better device compatibility
  • Detailed error messages when devices are not compatible

Funscript Tooltip Stats: ScriptAxis-style statistics in library tooltips

  • Shows Max Speed, Average Speed, Action Count
  • EroScripts-style waveform layout with right-aligned metrics

Player

  • Axis Funscript Filtering: Secondary axis funscripts (L1, L2, R0-R2, V0-V2) are filtered from player dropdown
    • Main stroke (L0) always shown, axis scripts hidden unless explicitly needed
  • Average Speed Display: Funscript tooltips and player dropdown now show average speed

Bug Fixes

  • various bugfixes and performance enhancements
1 Like

If you still have problems with the Intiface connection, pleaase send me a DM with full debug logs.
Unfortunately i do not own a solace or similar, so testing is not so easy for that devices.

Can you explain how to watch VR content? I’m supposed to copy the url link and what’s next?

Just a user here, but I connected it to Multifunplayer via the XBVR connection using the IP address FunLibrary Manager gives in the readme file.

1 Like

When you enable the api, there is a popup that explains the connection.
Basically you open up Heresphere, click on Web Browser on the left side,
enter the url.
Then klick on the “grid-play” icon directly left of the url field.

If your devices are in the same network, all good, if you have wifi with multiple accesspoints it could be that you need to enforce both devices to be associated to the same acces-point (edge case)

New release, links have been updated!

New Features since 0.9.14

Library Widget

  • Custom Thumbnails: Automatic detection of image files with same base name as video (e.g., video.jpg next to video.mp4) - no manual action needed
  • Filterable Combo Boxes: Searchable dropdowns with live filtering in dialogs

Funscript Doctor

Layout:

  • Two-panel design with horizontal splitter (60% results, 40% detail)

Toolbar:

  • Folder menu with library paths, database subfolders, “Scan all” option
  • Browse for custom folder
  • Scan/Cancel buttons

Results Table:

  • Columns: Filename, Actions, Max Speed, Device compatibility columns
  • Device columns toggleable via header context menu
  • Compatibility indicators: ✓ (OK), :warning: (Warning), ✗ (Bad) with tooltips

Filtering:

  • Text search for filename/path
  • Filter dropdown: All / Issues / OK
  • Result count display

Detail Panel:

  • Heatmap visualization
  • Statistics: Actions, Duration, Max/Avg Speed (color-coded)
  • Device compatibility with percentage of too-fast actions
  • Issues list grouped by severity
  • Action buttons: Compress, Optimize, Sync, Speed/Intensity Transform, Explorer

Context Menu:

  • Compress funscript (with backup)
  • Optimize for device (presets + custom)
  • Transform → Speed / Intensity
  • Sync with video
  • Show in explorer
  • Bulk compression for multiple selection

Funscript Sync Dialog

Left Column - Video:

  • VLC player with play/pause, seek, time display
  • Frame-by-frame navigation
  • Auto-detection of matching video
  • Video marker button

Right Column - Controls:

  • Shiftable timeline with heatmap
  • Offset slider with undo/redo (50 steps)
  • Script marker button (also via right-click on timeline)
  • Auto-calculate offset from markers
  • Device visualizer showing interpolated position (0-100)
  • Multi-axis support (auto-detects related .pitch, .roll etc.)

Save Options:

  • Filename suggestions
  • Backup option
  • Shift all axes together option

Funscript Optimizer Dialog

  • Speed/Intensity transform with live preview
  • Original vs. transformed heatmap comparison
  • Device preset optimization
  • Compression with backup

Enrichment Widget

  • StashDB Enricher: Metadata from StashDB via GraphQL API with OShash/Phash fingerprinting
  • Tri-State Toggles: Neutral (undecided) / Selected (accept) / Rejected (lock) states for suggestions

Device Manager

  • Device-Specific Settings: Stroke range (min/max), sync offset
  • Intiface Processing Modes: Smooth (speed-limited) vs. Raw (unchanged commands)
  • Acsen V0/V1 Vibration Axis Support: Full support for vibration axes in funscripts

Database

  • Purge Unlisted Folders: Remove entries for folders no longer in library paths
  • Duplicate Path Cleanup: Remove duplicate database entries

Bugfixes

  • Various stability improvements and minor bug fixes
2 Likes

For those who want to update to Intiface 3
Intiface changed the api format and the python library i was using is not capable of connecting to the new version.
I had to implement a fix by using a different package:
link updated:

A new release will come soon.

2 Likes