javascriptjwplayertampermonkey

How to manipulate JWPLAYER with Tampermonkey?


I've been trying to manipulate a JWPlayer externally, using tampermonkey.

The problem I get is that "JWPlayer" is not Defined.

var player = jwplayer("myVideo");

Simply declaring a player as a jwplayer is not possible. To fix I've been to "import" the jwplayer.js:

// @require      https://vidstreaming.io/js/jw8.9/jwplayer.js

Which didn't work...


My objective: is to to the following through tampermonkey

When I'm at browser, using developer tools I can use

getPosition() to get the current playtime of the video

then seek() to play from there..

jwplayer().getPosition()
jwplayer().seek(X)

Any idea how to "import" jwpalyer.js into Tampermonkey script?


Solution

  • If this works for you from dev tools:

    jwplayer().getPosition()
    

    then what you want is to access window.jwplayer global variable. If you are not using any GM specific features, all you need is to make sure your script starts after the player is loaded. Eg. this should be late enough:

    // @run-at      document-idle
    

    If you're using some @grant privileges, it is still possible, via unsafe window permission:

    @grant unsafeWindow
    

    Then, this is what you run:

    unsafeWindow.jwplayer().getPosition()
    

    Please pay attention to the warning:

    This command can open certain security holes in your user script, and it is recommended to use this command sparingly.

    Please be sure to read the entire article and understand it before using it in a script.

    So make sure to read the article and understand not to expose any greasemonkey functions to the outside webpages. Never use it with #include *.