Random Video Player v1.53 (Can sync with MFP and ScriptPlayer)

Btw, I have some feature requests of my own, though no worries if it’s too difficult to implement.

I’m quite an organized collector of furry animations, so on my storage drive i’ve got separate folders for every animator and such. I also have scripts for some of the videos, but i don’t like keeping the scripts in the same location as the video files. Is it possible to give the player a custom root location from where it can tree search for script files?

Example of file structure where I’d want to set the funscript search root to the Funscripts/ folder:

Furry/
├── Animations/
│   ├── Artist_name_1/
│   │   ├── Animation_title_1.mp4
│   │   ├── Animation_title_2.webm
│   │   └── ...
│   └── ...
└── Funscripts/
    ├── Artist_name_1/
    │   ├── Animation_title_1.funscript
    │   ├── Animation_title_2.funscript
    │   ├── Animation_title_2_Hismith.funscript
    │   └── ...
    └── ...

And the other request, since i’m making scripts for my Hismith fuck machine, some of my projects have a default script (master script as i call it, just a pure action-based frame-perfect script that has the same name as the animation file), and a script for my fuck machine (using my own developed converter tool) which converts the original into power level fluctuations (to replicate the same action by adjusting the machine power level). I usually add a _Hismith" to the name to tell it apart.

So the super nice thing would be to, in addition to giving it a custom path to search into for scripts, to have a filename filter option where it only picks out the scripts with a specific string in them, say “_Hismith” like in the example above. So it would have to contain both the video title and the custom string.

Other than that, this is a great project so far, and you deserve more support for reacting so quickly to all the previous feature requests on this thread! Kudos for making it happen!

1 Like

I second this request and would also like to see this feature.
Maybe specifying additional search paths for funscripts (like it is implemented in Scriptplayer and MFP) would be great.

1 Like

Hey, thanks a lot for the feedback. Depending on the Image effects, yeah I’m a bit limited in my options, as I have to use what mpv provides and build the logic around it, though I’ve implemented the fade in fade out effect currently and I think it looks pretty good, so I’ll see.

I see that a dedicated script folder would make sense, but RVP doesn’t handle the scripts at all. It only sends information about what video is currently playing, it’s playbackstate, position etc. the actual script loading and handling happens 100% in the respective software such as MFP or ScriptPlayer.

I will look up if those can handle a dedicated folder. If anything, RVP could do something like temporarily create a copy of the script from a dedicated directory right next to the file playing (and delete it afterwards) which would result in a similar behavior while mainting a different file structure. Though no matter what, I’d have to rewrite the script filter code to work with sich structure. Overall it sounds like a great idea.

Filtering for specific filenames is easy, but I’m not sure if I get what you mean. Do you mean like RVPs filter for script files should have the option to only play videos with scripts named in a specific way? Or/And automatically loading those specific scripts? The latter comes back to the previous stuff, which is that script loading is handled by the sync software. Anyways if you could give me more details, I can think more about that :slight_smile:

Yeah tbh my case is quite specific and also probably unnecessary, I could instead ensure that the script i want to be played with a video is always named the same as the video and have any other script named with different identifiers instead. I guess maybe the better question would be, how does/should the player handle when a video has multiple scripts that could be played with it?

In that situation it would be nice to give the user an option to select which one they want assuming there are multiple that contain the name of the video in their filename, but realistically that’s probably quite difficult/bothersome to handle graciously in a video player application. So no worries if that’s out of scope for this. Honestly just having the first feature request would already be great. With the caveat that (i’m guessing) there shouldn’t be two funscript files named identically but in different folders, because then the player would probably pick the first one it finds and it may not always be the one the user wants to play.

1 Like

Yeah it’s specific, but from the top of my head, I’d think of something like

  • Add script folders to a list
  • priority is local Script next to file => first folder => next folder etc.
  • select script from a drop down similar to the subtitle/audio track menu I’ve implemented

The logic could be the same for all

  • when script is selected from a different folder, create local copy with video filename so the sync software grabs it

This should work, but as it is with anything, problems arise during the actual process of coding that logic :smiley:

But I still think the idea is great so I will try some things out!

Yeah i think that should be quite a good solution! Only thing i’d say given you’re making temp copies is to make sure you’re always handling their deletion before exiting the control loop.

1 Like

RVP does already have that option? with when you set your Favorite folder

1 Like

The favorite function only creates a list which can be loaded.

But this was about a dedicated script folder. Usually you have the .funscripts right next to their corresponding video file which MFP/ScriptPlayer automatically load by default.

The question was, whether a dedicated/external folder can be used, that contains the scripts only, while the videofiles are somewhere else to keep things tidy.

I’ve already created the logic for it and am currently testing it. So far my approach works pretty good :slight_smile:

Some preview:

ScriptDirectoriesScreenshot

So basically you can add any directory. “local” stands for “right next to the file” which is the default behavior. You can delete the local value though and/or rearrange the directories to change their priority.

This means, that when say you have 3 different scripts in different locations for a single file, the topmost found script will be enabled by default.

I achieved this by creating a temporary copy of the script right next to the video, handling conflicts like an already existing file by doing a backup of that file first and replace it etc. The file is also named correctly, so when you have selected the script “Animation_title_2_Hismith.funscript” for the video “Animation_title_2.webm”, it will automatically copy the funscript next to the video and rename it to “Animation_title_2.funscript”.
Otherwise neither ScriptPlayer nor MFP could detect it correctly. The latter is what ultimately made me code this, as both sync tools support dedicated script directories but neither can handle filenames that aren’t an exact match.

With my approach you can name the files however you want, the important part is, that both start the same, for example if “Animation_Title_3.mp4” is your video, the script needs to be named like “Animation_Title_3Whatever_You.Want-ToBeHere_.funscript” and it will still match it correctly.

The new selection menu looks like this then:

ScriptContextMenuScreenshot2

What’s left to do for now is multi-axis script handling

1 Like

Wow that already looks perfect for my use case! Great job <3

1 Like

1

Sorry i meant “default path”
I use the “default path” as Script folder for PORN.
When i want to use HENTAI i just switch pack one Folder

1 Like

New release v1.51!

New features:

Option to Fade between image transistions when using Ken Burns effect
ListBrowser now has an option to move every file from the current list to a specified directory
New context menu to select scripts (if there are different versions available)
Option to add additional directories to search for matching scripts

UI tweaks:

Save/load list title font update

Optimization:

Added newer version of libmpv

Additional Notes:

Update via Settings => About and search for new updates or head to github releases and download the latest version.

Let me know if you encounter any issues or have new ideas!

Fade effect

You can now enable a new “Fade effect”.
When using the ken burns effect, it will fade to and out from black when transistioning between images.

Bad quality showcase :°) :

RVP-v1.51_FadeEffect_InAction_1

Move files from list

You can now move all files from the current list to a selected folder, making it easier to structurize your directories:

RVP-v1.51_MoveList_1

External script directories and script selection

You are now able to add external directories to search for compatible funscripts when playing a video.

Additionally, it can handle different file names, as long as the .funscript starts with the video filename. For example:

ExampleVideoTitle1.mp4
|===> ExampleVideoTitle1.funscript
|===> ExampleVideoTitle1_HiSmith.funscript
|===> ExampleVideoTitle1TestScript.funscript
|===> EXampleVideoTitle1-SR6Edit.funscript

Will match! This works for Multi-Axis scripts too.

Find the new settings in the “Sync” tab. “local” is the default behavior, where a .funscript file has to be located right next to a video. Add additional directories to search for videos with the “+” button or delete the entries with “-”.

You can move the directories up and down in the list, which changes the priority. The first found script from top to bottom will be the default loaded one.

If you are using Multi-Axis scripts, enable the checkbox. Leave it disabled if not, as it costs some performance when looking for those files too.

If you are using MFP exclusively, leave “Using ScriptPlayer” disabled. Enable it, if you use it. I had to implement some extra logic to force ScriptPlayer to update it’s script, when user selects a new one. MFP handles that better.

How the new script selector looks:
ScriptShowcaseFileNameOnly

Without file path:

1 Like

Ok, first time trying the new script directories feature and i noticed some things you might want to check out:

  1. It doesn’t search sub-directories of specified script folders. That could be a nice user option to have (since it will probably cost extra resources much like the other couple options you added there). It’s not a deal breaker either way, just would be more work to add all the paths i have lol since i separate the scripts per artist also.
  2. For some reason, the app won’t let me click on the script toolbar button at all, doesn’t matter if there are none, one or more scripts available for a video. But (when pointed to the right directory) it does correctly identify the first script and copies it to the video’s location as it should. So i’m guessing there’s some kind of bug in there somewhere.
  3. The script identification feature doesn’t seem to trigger when starting a video directly using RVP with the Windows context menu option. Only after the player has started and i load another video in does it start checking. It works when drag/dropping though which is nice. (also just checked, when going back and forth in a playlist with left/right arrow keys it also doesn’t load the script back. So seems there are multiple contexts when the directory search doesn’t run)

I haven’t had the chance to connect the whole system together with MFP and the machine yet but i imagine it would work out fine since you added MFP support a while ago. Thanks a lot for adding this feature anyway <3

Edit: For 2) see this as example:

1 Like
  1. Yes that’s true. My file method uses top directory only for some reasons. But yeah an option to enable searching all subdirectories is a good idea :slight_smile:

  2. Do you have the timecode server active? It actually doesn’t load without it (since it wouldn’t make sense) Funny enough if it still auto loads the scripts regardless, there is another bug. :smiley:

  3. I will take a look, might’ve missed something.

Thanks for the feedback! <3

aah ok so it’s supposed to only load them when it’s connected, that makes sense yeah. Then maybe the third point is also a fluke in that i wasn’t even using it the right way.

1 Like

Ya, well it’s not really a “connection”. RVP will create a little webserver that shares file information. MFP/ScriptPlayer set to MPC-HC will look for that server and grab the data. If you head to “http://127.0.0.1:13579/variables.html” in your browser while timecode server is active, you will see all the data :smiley:

I figure the behaviour is not that intuitive though, but searching for scripts for each video while not actually trying to sync etc. is pretty unnecessary as it will slow down the application

First I’d like to thank you for this player and all the features you are implementing for us. I’ve only noticed this player a week ago.

I really appreciate the latest changes so that we can specify additional script directories. But I’ve noticed that when using the filter “Play only videos that have a funscript available” it only selects/plays videos where the funscript is in the same directory as the video. It doesn’t look in the additional script directories for funscripts it seems. Is this intended or a bug?

1 Like

New release v1.52!

New features:

  • Option to include subdirectories for set script directories

UI tweaks:

  • Enable/Disable Time code server/script graph from script drop down menu

Bug fixes:

  • Weird script loading behavior when playing a dropped file
  • Script filter not detecting files from external directories

Additional Notes:

Update via Settings => About and search for new updates or head to github releases and download the latest version.

The new context menu:
ScriptContextMenu

I think this is a much better way to handle it. Let me know if you find other issues :slight_smile:

1 Like

Thank you so much for quickly fixing the script filter not detecting files from external directories :+1:

And I’d like to ask for an additional option to enable a random starting point in the “Switch playback behaviour” settings when “automatic next after x (to y) seconds” is selected - so that the random play doesn’t always start from the beginning.
The reason for asking this is if you want to use the random play together with ScriptPlayer sync and a stroker toy it happens very often - especially with cock hero videos - that there is no movement in the first 1-5 minutes. And if you choose a starting point within the video randomly that would solve that problem.

1 Like

That’s why I use RVP with MediaPlayerClassic, Intiface and MFP. Scripts work instantly this way

1 Like

This is actually great advice! I was not aware of Intiface. How exactly does the setup work though?

@lr_x3

At least with script player, you can enable auto gap skip there and it will stay in sync with RVP.

Hm, besides an absolute starting point would always be hit or miss as the gaps would vary a lot and I had the auto next more in mind for images in general.

But actually, since I’m loading funscript data anyways due my graph rendering thing, I could theoretically try to implement an auto gap skip myself. :+1: