FunscriptToolbox (FSTB?) is a command line tool that contains multiple features that can analyze and/or transform .funscript files.
Installation verb
installation
When starting --FSTB-Installation.bat in FunscriptToolbox folder will call this verb and it will install the OFS plugin and creates some use-case folder for the others verbs bellow.
AudioSync verbs
audiosync.createaudiosignature
audiosync.createfunscript
audiosync.verifyfunscript
Allow the synchronization of a .funscript to a video different than the one used by the scripter.
Use the application --help argument to see the application documentation.
See below, in the comments, for some use cases.
MotionVectors verbs
motionvectors.prepare: Prepare a video for others motionvectors verb
motionvectors.ofspluginserver: Starts a server to respond to plugin request.
Every .funscript file that the tool creates or overrides is saved in a “vault”, found in “%appdata%\FunscriptToolbox\Vault”. If you ever make a mistake and override the wrong file or something, check this folder for your old file.
The tool also keeps log files of the last 10 executions in the folder “%appdata%\FunscriptToolbox\Logs”.
Binaries and Sources
FunscriptToolbox is fully open source over at github.
The tool should be useful for some old scenes that have been altered after a script has been created. For example, NaughtyAmericaVR has a bad habit of altering their intro or even changing some parts of the scene (see Wake and Bake).
I know that @JohnSilverGold has been able to re-synchronize a few of his NA videos with this tool.
It should also be useful for 2D scripts that are often based on videos from free site (pornhub, etc), which can also change their video without notice.
So far, I haven’t found an application (OFS, scriptplayer, etc) that wasn’t able to read a .funscript with an embedded signature. Let me know if you find an application that is not able to read the file.
Fixed a stupid bug where I moved files, instead of copying, to the %appdata% vault.
So, when generating a file, the file was created and then moved immediately to the vault. So, it seems to disappear.
Oups. Fixed in 1.0.1.
Download & extract the tool somewhere (for example, C:\Tools\FunscriptToolbox)
Double-click on --FSTB-Installation.bat.
This will also create a few ‘use-case’ folders.
The one that is needed for this use case is “FSTB-PrepareScriptForRelease".
You can leave the folders there, or move them somewhere else, the script inside will still work if they are moved.
Notes:
If there is interest, I might expand the tool with commands that could be added to the PrepareForRelease batch file, like adding your default metadata, creating the heatmap image, downloading all images found on the video url, etc).
The tool might not work well with video with music since it’s trying to match similar audio sections. With music, there might be a lot of sections with almost identical audio.
After that, each time you create a script
Move new-scene.mp4 and new-scene.funscript to the folder ScriptToRelease.
Start “–FSTB-PrepareScriptForRelease.1.0.bat”.
Wait for the application to inject the audio signature.
Release your .funscript, with an embedded audio signature.
Your job is done.
In theory, you should not have to synchronize your script with all versions that exist on the internet.
“Consumers” should be able to do that themselves.
Download & extract the tool somewhere (for example, C:\Tools\FunscriptToolbox)
Double-click on --FSTB-Installation.bat.
This will also create a few ‘use-case’ folders.
The one that is needed for this use case is “FSTB-VerifyDownloadedScripts".
You can leave the folders there, or move them somewhere else, the script inside will still work if they are moved.
After that, each time you have to synchronize a script to your own video version
Move scene.funscript, scene.asig (if .funscript doesn’t include audiosignature) and scene.mp4 to the folder ScriptsToValidate.
Download & extract the tool somewhere (for example, C:\Tools\FunscriptToolbox). Link to download
Double-click on --FSTB-Installation.bat.
This will also create a few ‘use-case’ folders.
The one that is needed for this use case is “FSTB-VerifyDownloadedScripts".
You can leave the folders there, or move them somewhere else, the script inside will still work if they are moved.
How to create synchronized .funscript for a remastered video
If you have access to scene.funscript, scene.mp4 and new-remastered-scene.mp4 (and scene.asig, if the scene.funscript doesn’t include an audio signature), the easiest way to create a synchronized funscript for the remastered scene is to:
Move all the files to the folder “FSTB-VerifyDownloadedScripts".
Start “–FSTB-GenericCmd.1.1.bat”. This will open a ‘command prompt’.
In the command prompt type: FunscriptToolbox.exe as.cfs -i scene.funscript -o new-remastered-scene.mp4
It can also synchronize from one video to multiple videos (or vice versa). For example, if you want to synchronize a JAV scene then you can place wildcard ‘*’ in the name of the files (input and/or output).
The following command would take the funscript from a scene in a single video and synchronize it to multiple segmented videos (i.e. Segmented-SIVR-100-A.mp4, Segmented-SIVR-100-B.mp4, …). FunscriptToolbox.exe as.cfs -i FullJAV-SIVR-100.funscript -o Segmented-SIVR-100-*.mp4
For the last few weeks, I have been working on an OFS plugin to speed up scripting, tied to new features in FunscriptToolbox. It should be finished in a week or two but it’s already usable.
Fixed some verbs that didn’t download ffmpeg (ex. as.cfs). If you tried that verb first after installation, it would fail with an error “cannot find ffmpeg”.
Fixed script “–FSTB-GenericCmd.1.1.bat” (which contained my local path, instead of the path on your machine).
AudioSync verbs: Rewrote “audiosync.createfunscript” verb to be more flexible. You can now use multiple inputs and/or multiple outputs. The tool will “virtually” merge the inputs and output for the comparison and then unmerge them to create the final funscript/srt file. It also synchronizes all .funscript / .srt linked to the file (ex. .funscript, .roll.funscript, .pitch.funscript, .srt, .jp.srt, etc).
For example, you can use a pattern * in the filename like this: FunscriptToolbox as.cfs -i 3DSVR-0628-*.mp4 -o 19512.mp4
This will load and merge all .funscript / .srt linked to files “3DSVR-0628-A.mp4”, “3DSVR-0628->B.mp4”, etc and create .funscript / .srt synced to the file 19512.mp4.
It also works with one input and multiple outputs, or with multiple inputs and outputs.
The files can also be listed individually, separated by “;”.
For example, FunscriptToolbox as.cfs -i 3DSVR-0628-A.mp4;3DSVR-0628-B.mp4;3DSVR-0628-C.mp4 -o 19512.mp4
If it helps, I just created a new version. I added a parameter in the .exe.config file to specify the ‘AppDataFolder’ (1.2.6).
You might have to let FunscriptToolbox download a version of ffmpeg (and fail if it’s not compatible on your platform), replace ffmpeg.exe with a version that works on your platform, and re-run.