Web Funscript Player - Enjoy Funscript Videos on iOS, Android, Web

In my opinion I’d say noise between the two is quite similar albeit I would agree Keon being a tad quieter. Since getting the Handy I have not used the Keon or Lovense (forgot I had the Lovense, used it once, hated it, too loud and just sucks in general), I think phone volume on Spotify alone will mask nicely.

Defo would be awesome if there was a ready-to-buy strap / holster to put the Handy in place rather than some DIY methods on reddit. In regards to the one size fits all my fella is just shy of 6’ by 0.5cm or so from memory, don’t know girth measurement but I’d say it falls in the averge for a typical fella. My experience with the handy has been great, if I could choose one out of the 3 and be banished from the rest it’d be the handy hands down :stuck_out_tongue:

Hey, the site checks for .funscript file extension.

Both .funscript and .json are valid funscript files since a funscript file is a valid JSON so I will look into also allowing .json files and .txt just for convenience sake, then just need to make sure its a valid JSON and works, if not show error that the file couldn’t be processed.

What you can do right now is given the file is a valid JSON (fingers crossed) all you need to do is rename the file extension from .txt to .funscript. Assuming you’re on Windows, double-click the file to open it with Notepad, then do Ctrl+Shift+S for the ‘Save As’ function.

Then just make sure it looks like this and click save;
File name: should end with .funscript rather than .txt
Save as type: All Files
b

1 Like

That did it. Thanks a lot.

So is this working for the handy or not so much?

Yeah it does in Bluetooth mode. I’ve tried it before with my Handy, you’ll need to put your Handy in Bluetooth mode and it should come up when you search for devices, granted I think it requires Handy firmware V3. I updated mine the day I got it from V2 to V3, it’s a relatively straightforward process.

I got that working on my PC before but it doesn’t seem to be able to find it on my phone … ¯_(ツ)_/¯

Hello!
Trying to use Intiface Desktop and a toy on a Mac (a Lovense toy).
I can select the toy and pair it but when running the video it “do” anything.
Any suggestions or is it a bug?

Any way to use pornhub links?

@amango134 I was able to find the issue with Lovense vibration toys not working.
A different command needs to be used for it.
I forked the project and working on a fix. Also trying to upgrade the buttplug library to support newer toys - there is a bug with newer versions.

I will be happy to contribute back to the main branch and see the fix in the production app.
Are you still maintaining it? Should I do a PR once I have a normal working fix?

Righto, I see your fork. Yep as you see just sending linear command, a lightbulb just went off when you mentioned calling the vibrate function, completely forgot I’ve only been calling linear and other commands are available.

Yes it’s still being maintained, got an update in the works, implemented your request tonight. Will have the ability to select which command to send, can be either linear or vibrate. Also working on improving the way actions are sent to make it more real-time / synced.

Unfortunately not. Video URL accepts either HLS stream or mp4 file.

Hmm, I’ll have to give it a shot on my iPad and see what happens then,

Very cool and glad to hear!
I haven’t tested it yet but according to the documentation there should a way to select vibration vs liner automatically.
I will test it tomorrow and upload the code to the forked project.
A nice addition can be ability to invert the pulse - mostly used by vibration toys and ability to define min/max power.

In my view the most important thing that I wasn’t able to get to work yet is to update the version of ‘buttplug’ library. Some of the newer toys are not working without it (not connecting to Bluetooth)
There seems to be a bug with it versions newer than 1.0.14, I’m trying to get help in the discord channel to get it to work or compile a custom version.

Yeah I’m very hesitant updating the buttplug library, other attempts months prior had issues. I think even upgrading Angular from 11 to 13 caused issues.

I just pushed a new update out, one of the new features is this device command select. I don’t have a vibrating device so no way to test it, please if you could test it and let me know.

I looked at your fork and implemented the change you did for vibrating devices blindly (no way to test for me, no vibrating devices)

I’m still not happy with the playback though. Feels very jagged especially when there are many actions close together. Still is rough, need to sit down and really think on how to improve it.

1 Like

Hi, I’ve got a Kiiroo Octopus Pulse Solo Interactive but when I try discover it nothing is coming up, is it supported or am I doing something wrong?

I’m using Google Chrome on a Pixel 6 with Android if that makes any difference.

Hi, I believe this is because the Buttplug library were using is a bit out of date, the latest version should support your toy but it’s got a build error unfortunately, will see if I can do anything about it if it’s not getting fixed any time soon.

@amango134 - I had an idea - video JS has a built in caption system that can trigger programatic actions.
So if you turn the funscript into a WebVTT format (a caption format) it can trigger the toy activation in a perfectly synced way and the “captions” can be hidden from view.
Se - chapter- Doing something when a cue becomes active in https://docs.videojs.com/docs/guides/text-tracks.html

The major downsides of it as I see it are

  1. Doing the actual conversion- Need to find a good library for it and there needs to be fake timing since funscript time is a single event and WebVTT is a range
  2. Any time shifting will require rebuilding the captions (doesn’t sound like a deal breaker to me)

Did you try / thought about this approach?

Did u try on samsung internet browser? It works flawlessly for me

Hey, apologies for the late reply.

High level overview of current method is there is a number variable storing the current time of the video. When a user pauses or seeks, this value is updated. Also, when the video is paused / played, this number stops / starts.

Every 50 ms, this variable adds 50 ms to itself when it’s running and then checks for any close by points in the Funscript file in a plus / minus range of say 100-150 ms apart, if one does come close by, the point is sent to the device.

It needs to be finely tuned, need to experiment with the window for a close by point, for example say 500 ms. That is something I could investigate, but what I’m more so interested in doing right now is implementing device-specific SDKs, for example the Handy SDK as some scripts for example from NaughtyAmerica, are token-based requiring the SDK to facilitate preparing the script for the device.

Unfortunately, your suggestion will probably not solve this as the issue seems to be the latency between crossing a point suitable for playing, executing some logic, then sending out that event to the device, then the device itself needs to actually do the action.

Fundamentally, the current method is reacting to available points as they become available but as we can see it’s just not fast enough. As I said, could try stretching the window, though if I recall correctly, it used to be a larger window but still wasn’t that good, will need to give it another shot.

One thing that I plan to release is Handy SDK integration. When a user adds a Funscript file, it’ll be sent to the Handy device itself. Then all I have to do to orchestrate syncing is hook in the video players play and pause events to the Handy SDK play pause function and voila. If it works well (which hopefully it does), I’ll look into the Lovense SDK as for example, you’re mentioned you’re using a Lovense toy.