aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2020-05-08 19:06:35 +0200
committerTeddy Wing2020-05-08 19:06:35 +0200
commita702c837daed7e0063629e82e543ba3e7a5fe20b (patch)
treee9b93e9f7323a382f090ef133f344b0859eeb9e9
parentade3c99305acb7798d727ad750bbc3b89118134f (diff)
downloadnetflix-immersive-a702c837daed7e0063629e82e543ba3e7a5fe20b.tar.bz2
Add distribution script
-rw-r--r--netflix-no-skip.user.js152
1 files changed, 152 insertions, 0 deletions
diff --git a/netflix-no-skip.user.js b/netflix-no-skip.user.js
new file mode 100644
index 0000000..c97a212
--- /dev/null
+++ b/netflix-no-skip.user.js
@@ -0,0 +1,152 @@
+// ==UserScript==
+// @name Netflix No Skip
+// @description Netflix user script providing a more immersive experience
+// @version 0.0.1
+// @namespace com.teddywing
+// @run-at document-idle
+// @match https://www.netflix.com/watch/*
+// ==/UserScript==
+
+(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var logger_1 = require("./logger");
+var controls = {
+ hide: function () {
+ logger_1.default.debug('hide():', 'Hiding controls');
+ var controls_el = document.querySelector('.PlayerControlsNeo__layout.PlayerControlsNeo__layout--active');
+ logger_1.default.debug('hide():', 'Controls:', controls_el);
+ controls_el
+ .classList
+ .replace('PlayerControlsNeo__layout--active', 'PlayerControlsNeo__layout--inactive');
+ }
+};
+exports.default = controls;
+
+},{"./logger":4}],2:[function(require,module,exports){
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var controls_1 = require("./controls");
+var wait_element_1 = require("./wait_element");
+function init_mutation_observer(player) {
+ var observer = new MutationObserver(function (mutation_list) {
+ for (var i = 0; i < mutation_list.length; i++) {
+ var mutation = mutation_list[i];
+ var player_1 = mutation.target;
+ if (player_1.classList.contains('postplay')) {
+ player_1.classList.remove('postplay');
+ // Activate player controls.
+ player_1.click();
+ controls_1.default.hide();
+ return;
+ }
+ }
+ });
+ observer.observe(player, {
+ attributeFilter: ['class'],
+ attributeOldValue: true
+ });
+}
+function init() {
+ wait_element_1.default('.NFPlayer.nf-player-container')
+ .then(function (player) {
+ init_mutation_observer(player);
+ });
+}
+exports.default = init;
+
+},{"./controls":1,"./wait_element":6}],3:[function(require,module,exports){
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var fullscreen_credits_1 = require("./fullscreen_credits");
+var styles_1 = require("./styles");
+var watch_credits_1 = require("./watch_credits");
+styles_1.styles();
+fullscreen_credits_1.default();
+watch_credits_1.default();
+
+},{"./fullscreen_credits":2,"./styles":5,"./watch_credits":7}],4:[function(require,module,exports){
+"use strict";
+var __spreadArrays = (this && this.__spreadArrays) || function () {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.default = {
+ debug: function () {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ console.debug.apply(console, __spreadArrays(['NoSkip:'], args));
+ }
+};
+
+},{}],5:[function(require,module,exports){
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function styles() {
+ var style = document.createElement('style');
+ document.head.appendChild(style);
+ var stylesheet = style.sheet;
+ stylesheet.insertRule("\n\t\t/* \"Back to Browse\" button that appears when credits are minimised. */\n\t\t.OriginalsPostPlay-BackgroundTrailer .BackToBrowse,\n\n\t\t/* Age rating. */\n\t\t.player-view-childrens,\n\n\t\t/* \"Watch Credits\" button. */\n\t\t[data-uia=\"watch-credits-seamless-button\"],\n\n\t\t/* Skip buttons. */\n\t\ta[aria-label=\"Skip Intro\"],\n\t\ta[aria-label=\"Skip Recap\"],\n\t\ta[aria-label=\"Next Episode\"],\n\t\t[data-uia=\"next-episode-seamless-button\"] {\n\t\t\tvisibility: hidden;\n\t\t}", stylesheet.cssRules.length);
+}
+exports.styles = styles;
+
+},{}],6:[function(require,module,exports){
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var logger_1 = require("./logger");
+function wait_element(selector) {
+ return new Promise(function (resolve) {
+ var interval = setInterval(function () {
+ var element = document.querySelector(selector);
+ if (element) {
+ logger_1.default.debug('wait_element():', 'found', element);
+ clearInterval(interval);
+ resolve(element);
+ }
+ }, 1000);
+ });
+}
+exports.default = wait_element;
+
+},{"./logger":4}],7:[function(require,module,exports){
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var controls_1 = require("./controls");
+var logger_1 = require("./logger");
+var wait_element_1 = require("./wait_element");
+function init_mutation_observer(controls_el) {
+ var observer = new MutationObserver(function (mutation_list) {
+ for (var i = 0; i < mutation_list.length; i++) {
+ var mutation = mutation_list[i];
+ var element = mutation.target;
+ var watch_credits_button = element.querySelector('[data-uia="watch-credits-seamless-button"]');
+ if (watch_credits_button) {
+ logger_1.default.debug('watch_credits', 'init_mutation_observer()', 'found Watch Credits button', watch_credits_button);
+ var pointer_event = new PointerEvent('pointerdown', { bubbles: true });
+ watch_credits_button.dispatchEvent(pointer_event);
+ controls_1.default.hide();
+ return;
+ }
+ }
+ });
+ observer.observe(controls_el, {
+ childList: true,
+ subtree: true
+ });
+}
+function init() {
+ wait_element_1.default('.PlayerControlsNeo__all-controls')
+ .then(function (controls_el) {
+ logger_1.default.debug('Controls element:', controls_el);
+ init_mutation_observer(controls_el);
+ });
+}
+exports.default = init;
+
+},{"./controls":1,"./logger":4,"./wait_element":6}]},{},[3]);