Stash-VR

:red_exclamation_mark: Notice
If you are the author of this project, you can claim this topic by clicking > at the bottom of this post. Select Something Else as a reason and leave a comment explaining you want to claim the topic. Include a link to your git profile or pull request showing ownership of the project.

:placard: Summary Watch your Stash library in VR for that full immersion effect. Stash-VR bridges your Stash instance and VR video player allowing you to browse, play and manage your scenes using the video players native VR UI.
:link: Repository https://github.com/o-fl0w/stash-vr

Stash-VR

Watch your Stash library in VR for that full immersion effect.

Stash-VR bridges your Stash instance and VR video player allowing you to browse, play and manage your scenes using the video players native VR UI.

It’s lightweight, optionally configurable and has support for two-way sync.

Install Stash-VR, point it to your Stash instance and point your VR video player to Stash-VR.

(Traditional flat/2d videos as well as VR videos are supported.)

Supported video players

  • HereSphere (two-way sync)
  • DeoVR

Features

  • Browse, play and manage videos from your Stash library using the native VR UI of supported video players.
  • Customizations from your Stash front page and saved filters.
  • Heatmaps for interactive scenes generated by Stash.
  • Transcoding endpoints to your videos served by Stash
  • HereSphere
    • Two-way sync of tags, rating, markers
    • Increment o-count/play count
    • Generate categorized tags, studios, performers
    • Delete scenes
    • Funscript
    • Subtitles
  • DeoVR
    • Markers(?)

Installation

Container images available at Docker Hub.

For details or docker compose see docker_compose.yml.

After installation open your endpoint (e.g. http://localhost:9666) in a regular browser to verify your setup.

Docker

docker run --name=stash-vr -e STASH_GRAPHQL_URL=http://stash-host:9999/graphql -e STASH_API_KEY=XXX -p 9666:9666 ofl0w/stash-vr:latest

Stash-VR listens on port 9666 by default. To change local port, use docker port binding, e.g. -p 9000:9666, or set env. LISTEN_ADDRESS=:9000 to listen on port 9000 instead.

Binaries

Download and extract a binary for your platform. Run stash-vr -h to display help.

Example: Connect to Stash running on stash-host:9999 with api key XXX and set Stash-VR to listen on port 9000:

stash-vr --STASH_GRAPHQL_URL=http://stash-host:9999/graphql --STASH_API_KEY=XXX --LISTEN_ADDRESS=:9000

Configuration

  • STASH_GRAPHQL_URL
    • Required
    • Url to your Stash graphql - something like http://<stash.host>:<9999>/graphql.
  • STASH_API_KEY
    • Api key to your Stash if it’s using authentication, otherwise not required.
More (click to expand)
  • FILTERS
    • Default: Empty (show all saved filters)
    • Narrow the selection of filters to show by setting one of below values:
      • frontpage
        • Show only filters found on Stash front page.
      • Comma separated list of filter ids, e.g. 1,5,12
        • To find ids of your saved filter you can run the following graphql query in Stash playground (http://stash-host:9999/playground
        • {findSavedFilters(mode: SCENES) {id name}}
      • Empty
        • Show all saved filters.
  • FAVORITE_TAG
    • Default: FAVORITE
    • Name of tag in Stash to hold scenes marked as favorites (will be created if not present).
  • HEATMAP_HEIGHT_PX
    • Default: 0 (use height of heatmap)
    • Manually set height of all heatmaps. If not set, height of the heatmap retrieved from Stash will be used, currently 15 by default.
  • DISABLE_PLAY_COUNT
    • Default: false
    • Disable incrementing Stash play count for scenes. Will otherwise send request to Stash to increment play count when video is played in HereSphere.
  • FORCE_HTTPS
    • Default: false
    • Force Stash-VR to use HTTPS. Useful as a last resort attempt if you’re having issues with Stash-VR behind a reverse proxy.

Usage

Browse to http://<host>:9666 using a supported video player. You’ll be presented with your library within their respective native UI.

HereSphere

Two-way sync

To enable two-way sync with Stash the relevant toggles (Overwrite tags etc.) in the cogwheel at the bottom right of preview view in HereSphere needs to be on.

Manage metadata

Scene metadata is handled using Video Tags in HereSphere. Both for presentation and making changes.

  • Stash tags
    • #:<Name>
    • Adding or removing tags in this #:format in HereSphere will sync changes to Stash
      • Tag in Stash is created if necessary.
  • Studio
    • Studio:<Name>
  • Performers
    • @:<Name>
  • Groups
    • %:<Name>
  • Play count
    • Played:<Count>
    • Automatically incremented
      • To disable, set DISABLE_PLAY_COUNT=true
  • O-Count
    • O-Count:<Count>
    • To increment, add a tag /o
  • Organized
    • Organized:true
    • To set organized, add a tag /org
    • To unset organized, add a tag /org-
  • Markers
    • Everything else is treated as a marker
    • <Primary Tag Name> (empty title)
    • <Primary Tag Name>:<Title>
    • Set the start and end time using HereSphere controls.
    • Changes in HereSphere will sync to Stash

Changes reflect in HereSphere when videos are re-opened.

Favorites

When the favorite-feature of HereSphere is first used Stash-VR will create a tag in Stash named according to FAVORITE_TAG (set in docker env., defaults to FAVORITE) and apply that tag to your scene.

Tip: Create a filter using that tag, so it shows up in HereSphere for quick access to favorites.

Rating

Ratings set in HereSphere will be converted to its equivalent in Stash (4.5 stars => 90).

Known issues/Missing features

Unsupported filter types

  • Premade Filters (i.e., Recently Released Scenes etc.) from Stash front page are not supported.
    • Tip: If you really want such filters to show they can easily be recreated and saved using regular filters in Stash.

HereSphere sync of markers

When using Video Tags in HereSphere to edit markers Stash-VR will no longer delete and (re)create them on updates.
We use the rating field of a marker in HereSphere to transport the id for correlating the markers in HereSphere to a marker in Stash, hacky.

Scene count limits (More than 10.000 links generated)

DeoVR/HereSphere both seem to have limits and struggle/crash when too many videos are provided than they can handle.

  • For HereSphere the limit seems to be around 10k unique scenes.
    • Fixed in HereSphere v0.7.3?
  • Tip: If you have a VERY LARGE library and your player is struggling to load them all, try explicitly setting env. var. FILTERS with a list of filter ids such that the total amount of videos are lowered to a “reasonable” amount.

Missing thumbnail images in DeoVR

DeoVR won’t show images served through HTTP - seems they only allow HTTPS. See From DeoVR 13.17 on thumbnails are not displayed anymore · Issue #1705 · xbapps/xbvr · GitHub

Missing thumbnail images in HereSphere

HereSphere doesn’t support WEBP images, which is sometimes fetched when scraping from Stash. A workaround is to manually regenerate a cover using Stash for those scenes.

Troubleshooting

  • If your Stash requires an api key, make sure you provide it to Stash-VR
  • Make sure Stash-VR has network access to Stash
  • Make sure your VR-headset has network access to both Stash and Stash-VR
    • Try explicitly setting LISTEN_ADDRESS to the external (accessible by headset) ip:port of Stash-VR

I have it as far as I can start the Stash Server and the Stash VR Server and can also call for Heresphere, i.e. with the port :9666. But no videos are shown to me. How can I change that? And yes and right on the gear I have already clicked and activated everything. So can someone please help me?