Skip to content
/ stash-vr Public
forked from o-fl0w/stash-vr

Watch your stash library in VR.

Notifications You must be signed in to change notification settings

Kruk2/stash-vr

 
 

Repository files navigation

Main diffrences from the original version

  1. Download exe and the source code from the Releases page.
  2. Unzip source code.
  3. Place the exe inside the unzipped folder and run.
  • Support for DeoVR passthrough (see PASSTHROUGH_TAG)
  • Detect VR projection based on filename instead of tags
  • Supports stash 0.23.0+
  • Syncing markers doesn't recreate them
  • Setup filters by name instead of id. Create file sections.txt in the same directory as exe and put one filter name per one line. Fallbacks to old logic if sections.txt is missing
  • No docker image, just exe for windows. Makes config a bit different since you have to setup env variables by yourself. I suggest creating start.bat file:
    set STASH_GRAPHQL_URL=http:127.0.0.1:9999/graphql
    ... more sets
    stash-vr-release.exe
    If you want to use stash-vr outside the PC where it's running then use your computer IP.
      set STASH_GRAPHQL_URL=http:192.168.0.10:9999/graphql

For your PC it will be different so check the IP using ipconfig command on windows.

  • Transcoding logic is removed as I found it to be useless for my needs. Defaults to direct stream only.
  • If your setup is similar to mine: all VR videos are inside folder named VR (or to be precise: if any of the parent folders is named VR) you can set VR_DETECTION setting to true. It will force flat projection for non-vr files (all files that are not inside VR folder).

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 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 studio, tags, performers, rating, favorites, markers
    • Increment o-count
    • Toggle organized flag
    • Generate categorized tags
    • Delete scenes
    • Funscript
  • DeoVR
    • Markers

Installation

Download .exe from releases page. Set envionment variables in console before running exe.

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)
  • ALLOW_SYNC_MARKERS
    • Default: false
    • Enable sync of Marker from HereSphere NOTE
  • FAVORITE_TAG
    • Default: FAVORITE
    • Name of tag in Stash to hold scenes marked as favorites (will be created if not present).
  • FILTERS
    • Default: Empty
    • 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
        • Show only filters from this list.
      • Empty
        • Show all saved filters.
  • DISABLE_HEATMAP
    • Default: false
    • Disable display of funscript heatmaps. Shown by default if available, as a small bar on the preview thumbnail.
  • 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.
  • PASSTHROUGH_TAG
    • Default: Passthrough
    • When true it will set alpha chroma key for DeoVR

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.

To tag a scene open it in HereSphere and click Video Tags above the seekbar. On any track insert a new tag and prefix it with #: i.e. #:MusicVideo. This will create the tag MusicVideo in Stash if not already present and apply it to your scene. Removing a tag in HereSphere will untag the scene in Stash.

Same workflow goes for setting studio and performers but with different prefixes according to below:

Metadata Prefix Alias
Tags #: Tag:
Studio $: Studio:
Performers @: Performer:

Markers

(Both Stash and HereSphere use the word tag but they use it differently. Tags in heresphere are akin to Markers in Stash)

Markers in Stash need a primary tag. Marker title is optional. To create a marker using HereSphere play the target scene and create a "tag" on any track using Video Tags. The naming format is:

  • <tag>:<title> will create a Marker in Stash titled <title> with the primary tag <tag>
  • <tag> will create a Marker in Stash with primary tag <tag> and no title.

Set the start time using HereSphere controls. Tags (markers) in HereSphere has support for both a start and end time. Stash currently defines Markers as having a start time only. This means the end time set in HereSphere will be ignored.

Enable sync of markers by setting ALLOW_SYNC_MARKERS=true but make sure you've also read the caveat.

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).

O-counter

Increment o-count by adding a tag named !O (case-insensitive) in Video Tags.

Current o-count is shown as O:<count>. It is also visible in the preview list on the thumbnail by the lower right heart.

Organized

Toggle organized flag by adding a tag named !Org (case-insensitive) in Video Tags.

Current state is shown as Org:<true/false>

VR

Projections are detected from filename only.

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 delete and (re)create them on updates. There currently is no support for correlating the markers (tags) in HereSphere to a Marker in Stash.

!! Any metadata, besides the primary tag and title, related to a marker will NOT be retained !!
(id, preview, secondary tags and created/updated time). If you're not using these fields anyway you probably won't notice the difference.

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.

Reflecting changes made in Stash

When the index page of Stash-VR is loaded Stash-VR will immediately respond with a cached version. At the same time Stash-VR will request the latest data and store it in the cache for the next request. This means if changes are made in Stash and the player refreshed, it will receive the cached version built during the last (previous) request. Just refresh again and the player should receive the latest changes. In other words, refresh twice.

Stash version compatibility

Stash-VR Stash
v0.7.x v0.23.x
v0.6.x v0.18.x
v0.5.x v0.17.x
v0.4.x v0.16.x

Older Stash versions

If you have issues arising from running an older version of Stash the recommended path is to upgrade Stash before attempting a fix.

About

Watch your stash library in VR.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.4%
  • HTML 3.0%
  • Dockerfile 0.6%