StashApp/Stash-Vr Enhancements - StashInteractiveTools

So I developed a plugin/forks some time back to add extra funscript support to stash. The first one is StashInteractiveTools. A plugin for stash that adds the following support

  • Adds ability to change sync offset
  • Adds ability to change the stroke length
  • Adds supports for multiple funscripts (with heatmap support)

image
image

The other is a fork of stash-vr to add support for ivdb tokens (Heresphere only). To enable all you need to do is add the ivdb video page as one of the urls ie IVDB.

For this you will need to build your own docker images but if you have docker desktop already install its pretty simple as just doing docker build . --tag stash-vr in the folder. Then running as normal ie

docker run --rm -it --name=stash-vr -p 9666:9666 -e STASH_GRAPHQL_URL=http://<stash-endpoing>/graphql -e LOG_LEVEL=trace -e STASH_API_KEY=<api_key if needed> -e FILTERS=<filter-ids-just-for-vr> stash-vr

I do plan to add this same type of support to the stash plugin itself but havn’t gotten around to it. Currently here is the roadmap of features that I would like to add

  • Add Ivdb support to Stash w/ heatmap generation (heatmap data is in ivdb api just have to figure out how it all works lol)
  • Add heatmap support for ivdb scripts in Herespehere (waiting on dev to update api to allow this)

Hopefully others will find this useful. There are a few bugs that I still need to iron out but if you find any feel free to add here or on GitHub.

15 Likes

Nice! I’ve been missing the interactive tools. But I don’t get how to install the plugin? Can’t find it in the community plugin directory in stash.

This seems really nice, I always love to see more interactive integration into stash. Do you have any plans on implementing either of these into their respective official repositories? I would think that the interactive tools plugin would fit neatly alongside the other approved stash-plugins.

2 Likes

Right now it’s a manual install. I need to see what is required to get it added to the community list.

1 Like

It tried to build your stash-vr in docker desktop but got next error:

“error writing generated code to file: open …/…/internal/ivdb/api/client.go: no such file or directory”

I managed to solve it by manually creating the missing api dir and copying the client.go file in there. After that, the build succeeded.

good stuff! I don’t suppose you would be willing to look at intiface integration? it seems that fizzled out a while ago.

I tried to test your StashInteractiveTools plugin. It nicely shows the stroke/synch settings, but they can’t be changed. I guess this is due to me using the standard stash docker. Is there a simple way to use your stash version? I can’t download or use a docker compose, it seems I need to build?

awesome work, there’s a few huge things this plugin could add:

  1. ability to stream funscript/tcode output to wirelessly connected devices. right now stash only supports intiface, but supporting OSR/SR6 via the ESP32 wireless firmware would be awesome.
  2. Support for multi-axis scripts

I’ve actually been working on this and have a fairly decent proof of concept. The biggest issue is stash doesn’t expose the multi-axis scripts, so my code currently depends on a http server serving those files.

I’m going to look at the possibility of using this plugin with mine to make things smoother.

i’m not very experienced with go nor REST APIs but it seems like it might not be that hard to get Stash to find all the other funscripts (roll/pitch/twist/surge/sway/etc)

Here is there it finds the path to the funscript

And here is where it serves the file

Probably would need to modify the first method to return a list of paths, or maybe a map of key/value pairs with keys being something like “stroke” (or maybe “primary”), “twist”, “surge” etc and the values being the paths. I’m not sure how the serving method should be changed, obviously it can be modified to server only the “primary”/“stroke” funscript but i’m not sure how to integrate multi-axis support

Yeah, it shouldn’t be too bad to add in. The modifications in this thread is the right direction.

When I was writing the code for mine, I was trying to avoid modifying Stash, and only use what they provided directly.

I have thought about trying to make more modifications to Stash and submitting a pull request, but finding the free time to do so is going to take a while.

Sorry for getting back to this late, was sick last week :face_with_thermometer:

It tried to build your stash-vr in docker desktop but got next error:

“error writing generated code to file: open …/…/internal/ivdb/api/client.go: no such file or directory”

I managed to solve it by manually creating the missing api dir and copying the client.go file in there. After that, the build succeeded.

Thanks @DirtyWanker I’ll make sure fix that, I’m new to go itself and thought completely forgot some of the steps I had to figure out lol.

I tried to test your StashInteractiveTools plugin. It nicely shows the stroke/synch settings, but they can’t be changed. I guess this is due to me using the standard stash docker. Is there a simple way to use your stash version? I can’t download or use a docker compose, it seems I need to build?

Actually you should have been able to use the most latest version of stash which is v0.27.2-37-g0621d871. As for docker its better if you get the full docker desktop https://www.docker.com/. I need to see how the original dev did the releases so people wont need to build themselves

good stuff! I don’t suppose you would be willing to look at intiface integration? it seems that fizzled out a while ago.

@kjdfhgkjsdfgkjdsfgkb I can look into , no promises

@TaakoMagnusen When I first started with this idea I made a lot of changes to the core stash code but by direction of one of the developers they pushed me to go the plugin route since it went against their direction (Sorta why only handy is supported atm). The implementation would have been cleaner if I could have gotten my go work approved but it is what it is lol. I had to piggy back their http tunnel they give plugins which required me to copy the scripts to a .temp directory within the plugin folder (duplicated data I know but only way map the file paths).

Anyway @Spunkle let me know what you need. I haven’t added any special naming for multi-axis so if you have the proper naming I can expand my file resolving logic and also say dispatch an event for you to listen to or some other hooks.

1 Like

Thank you sir/ma’am, that’s all I can reasonably ask for.

The current code hosts the single axis funscript in a pattern such as this:
https://127.0.0.1/scene/’ + id + '/funscript

If I was going to make the modification, I’d just tack on the other axes there. ex.
https://127.0.0.1/scene/69/funscript/twist
https://127.0.0.1/scene/69/funscript/sway
https://127.0.0.1/scene/69/funscript/roll
etc…

If you decide to do that, I can just point what I have at those and that would eliminate the need for an additional webserver running alongside stash. Bonus points for integrating the multple funscripts option, for cases with multiple multi-axis scripts

unfortunately, no new routes can be added to the main stash endpoint thats what I have it proxy via their plugin endpoints. I’ll see what I can come up with when I get some free time