Has anyone found a reliable way to automatically tag multi-axis scenes in stash?
I always download 2.0 spec scripts so filename based tagging is not an option.
StashInteractiveTools but it doesnβt seem to pick up and split 2.0 scripts for me
maybe iβll submit a PR for that sometime
Yeah thatβs the plugin I use as well but I guess 2.0 not supported yet
Sir.. what is this 2.0 spec you speak of.. And what is expected use case here⦠also just hit me up on discord ![]()
Iβll DM you on discord as well
Yeah I have mine setup that way, I use the auto tagging feature in stash to pull from organized folders.
I set my root folder to /path/to/xxx/Scripted/
So all my videos get auto tagged with Scripted, but I could back up a directory and pull my unscripted scenes as well and they would get auto tagged βunscriptedβ.
Right underneath Scripted I have Scripted/Multi-Axis and Scripted/Single-Axis so all my videos can be organized with these tags. From there I just started adding tags and moving videos around that I thought would be useful for filtering.
I tried not to add tags that can be pulled other ways, like len0-2, len2-5 etc. because making a plugin that queries graphql for duration of a scene and adding the corresponding tags is easy. Instead I wanted to add tags that would be hard to pull about a scene.
I also use serechops plugins/scrapers that can bulk add performers/studios and created some scripts that create text files for those bulk import plugins based on this directory.
Itβs a shitload of work initially, but not too bad to keep up with once youβre done.
Examples
/* = funscripts, videos, and supporting files
Library
βββ {Tag}
βββ {Tag}
βββ {Tag}
βββ {Franchise / Studio}
β βββ {Character / Performer}
β β βββ {Video 1}/*
β β βββ {Video 2}/*
β β βββ {Video 3}/*
β β
β βββ {Character / Performer}
β βββ {Video 1}/*
β βββ {Video 2}/*
β
βββ {Franchise / Studio}
βββ {Character / Performer}
βββ {Video 1}/*
βββ {Video 2}/*
Multi-Axis
βββ SFM
βββ Animation
βββ 3D
βββ Cyberpunk 2077
β βββ Judy Alvarez
β β βββ {Videos...}/*
β βββ V
β βββ {Videos...}/*
β
βββ Overwatch
βββ Ashe
β βββ {Videos...}/*
βββ Dva
β βββ {Videos...}/*
βββ Kiriko
β βββ {Videos...}/*
βββ Mercy
βββ {Videos...}/*
Multi-Axis
βββ VR
βββ Normal
βββ BaDoinkVR
β βββ Adria Rae
β β βββ {Video}/*
β βββ Dakota Tyler
β β βββ {Video}/*
β βββ Katrina Moreno
β βββ {Video}/*
β
βββ VRBangers
βββ Angela White
β βββ {Video}/*'
βββ Luna Star
βββ {Video}/*'
I initially wanted {tag}/{tag}/{franchise/studio}/{performer/character}/{position/scene content}/{video1}, {video2}, etc. but never got around to doing it. But if you want to try this and build from scratch, auto tagging BJ/HJ/Doggy/Missionary scenes would be helpful.
Also as a side note for StashInteractiveTools, you can customize the name of the tag for letting it pick up script variants. So I have Multi-Axis to denote scripts with multiple axes, and multi-script to denote variant single axis. It also letβs you choose which variant to serve, so as long as you get it to pick up variations, you can serve multiple 2.0 multi-axis merges.
I take advantage of this with a plugin that creates merges automatically, so a directory like this
example
--{videoTitle}/
-----videoTitle.mp4
-----videoTitle.funscript
-----videoTitle.roll.funscript
-----videoTitle.pitch.funscript
-----videoTitle.twist.funscript
-----videoTitleNOVIBES/Alternate.funscript
will wind up looking like this
--{videoTitle}/
-----videoTitle.mp4
-----videoTitle.funscript (2.0)
-----videoTitleNOVIBES/Alternate.funscript (2.0)
-----originalFunscripts/
---------------videoTitle.funscript (1.0)
---------------videoTitle.roll.funscript (1.0)
---------------videoTitle.pitch.funscript (1.0)
---------------videoTitle.twist.funscript (1.0)
---------------videoTitleNOVIBES/Alternate.funscript (1.0)
2.0 is a merge file for multi-axis funscripts where the positional data is separated by a channels object into axis specific arrays. So .roll.funscript, .pitch.funscript etc. can be merged into a single .funscript file without losing positional data or metadata.
thereβs also a 1.1 merge that adds an ID into the positional data directly, but itβs not as clean imo. The channels object really helps when you need to collapse and view a single axis.
Version 1.1 (Multi-Axis with axes array)
{
"version": "1.1",
"actions": [{ "at": 0, "pos": 50 }],
"axes": [
{ "id": "R1", "actions": [{ "at": 0, "pos": 50 }] }
]
}
Version 2.0 (Multi-Axis with channels object)
{
"version": "2.0",
"actions": [{ "at": 0, "pos": 50 }],
"channels": {
"roll": { "actions": [{ "at": 0, "pos": 50 }] }
}
}
You can read more about how they work here Eroscripts/funlib
Thanks, will give that link a look.