/flix.min.user.js Secret
// ==UserScript== | |
// @name Flix | |
// @version 2.1.4 | |
// @namespace @XOR | |
// @description User script para facilitar download de legendas e áudios na(o) Netflix | |
// @author XOR | |
// @include https://www.netflix.com/* | |
// @icon data:image/png;base64,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 | |
// @grant none | |
// @homepageURL https://gist.github.com/xor10/8f65c1e66a34386e1131f8c28ff6bf64 | |
// @downloadURL https://gist.github.com/xor10/8f65c1e66a34386e1131f8c28ff6bf64/raw/flix.min.user.js | |
// @updateURL https://gist.github.com/xor10/8f65c1e66a34386e1131f8c28ff6bf64/raw/flix.min.user.js | |
// @run-at document-start | |
// @noframes | |
// ==/UserScript== | |
/* jshint ignore:start */ | |
!(function(){'use strict';var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};$jscomp.makeIterator=function(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):$jscomp.arrayIterator(a)};$jscomp.arrayFromIterator=function(a){for(var b,d=[];!(b=a.next()).done;)d.push(b.value);return d}; | |
$jscomp.arrayFromIterable=function(a){return a instanceof Array?a:$jscomp.arrayFromIterator($jscomp.makeIterator(a))};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.objectCreate=$jscomp.ASSUME_ES5||"function"==typeof Object.create?Object.create:function(a){var b=function(){};b.prototype=a;return new b};$jscomp.underscoreProtoCanBeSet=function(){var a={a:!0},b={};try{return b.__proto__=a,b.a}catch(d){}return!1}; | |
$jscomp.setPrototypeOf="function"==typeof Object.setPrototypeOf?Object.setPrototypeOf:$jscomp.underscoreProtoCanBeSet()?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null; | |
$jscomp.inherits=function(a,b){a.prototype=$jscomp.objectCreate(b.prototype);a.prototype.constructor=a;if($jscomp.setPrototypeOf){var d=$jscomp.setPrototypeOf;d(a,b)}else for(d in b)if("prototype"!=d)if(Object.defineProperties){var g=Object.getOwnPropertyDescriptor(b,d);g&&Object.defineProperty(a,d,g)}else a[d]=b[d];a.superClass_=b.prototype};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this); | |
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,d){a!=Array.prototype&&a!=Object.prototype&&(a[b]=d.value)};$jscomp.polyfill=function(a,b,d,g){if(b){d=$jscomp.global;a=a.split(".");for(g=0;g<a.length-1;g++){var e=a[g];e in d||(d[e]={});d=d[e]}a=a[a.length-1];g=d[a];b=b(g);b!=g&&null!=b&&$jscomp.defineProperty(d,a,{configurable:!0,writable:!0,value:b})}};$jscomp.FORCE_POLYFILL_PROMISE=!1; | |
$jscomp.polyfill("Promise",function(a){function b(){this.batch_=null}function d(a){return a instanceof e?a:new e(function(b,r){b(a)})}if(a&&!$jscomp.FORCE_POLYFILL_PROMISE)return a;b.prototype.asyncExecute=function(a){if(null==this.batch_){this.batch_=[];var b=this;this.asyncExecuteFunction(function(){b.executeBatch_()})}this.batch_.push(a)};var g=$jscomp.global.setTimeout;b.prototype.asyncExecuteFunction=function(a){g(a,0)};b.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var a= | |
this.batch_;this.batch_=[];for(var b=0;b<a.length;++b){var d=a[b];a[b]=null;try{d()}catch(E){this.asyncThrow_(E)}}}this.batch_=null};b.prototype.asyncThrow_=function(a){this.asyncExecuteFunction(function(){throw a;})};var e=function(a){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];var b=this.createResolveAndReject_();try{a(b.resolve,b.reject)}catch(x){b.reject(x)}};e.prototype.createResolveAndReject_=function(){function a(a){return function(r){d||(d=!0,a.call(b,r))}}var b=this,d=!1; | |
return{resolve:a(this.resolveTo_),reject:a(this.reject_)}};e.prototype.resolveTo_=function(a){if(a===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(a instanceof e)this.settleSameAsPromise_(a);else{a:switch(typeof a){case "object":var b=null!=a;break a;case "function":b=!0;break a;default:b=!1}b?this.resolveToNonPromiseObj_(a):this.fulfill_(a)}};e.prototype.resolveToNonPromiseObj_=function(a){var b=void 0;try{b=a.then}catch(x){this.reject_(x);return}"function"==typeof b? | |
this.settleSameAsThenable_(b,a):this.fulfill_(a)};e.prototype.reject_=function(a){this.settle_(2,a)};e.prototype.fulfill_=function(a){this.settle_(1,a)};e.prototype.settle_=function(a,b){if(0!=this.state_)throw Error("Cannot settle("+a+", "+b+"): Promise already settled in state"+this.state_);this.state_=a;this.result_=b;this.executeOnSettledCallbacks_()};e.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var a=0;a<this.onSettledCallbacks_.length;++a)t.asyncExecute(this.onSettledCallbacks_[a]); | |
this.onSettledCallbacks_=null}};var t=new b;e.prototype.settleSameAsPromise_=function(a){var b=this.createResolveAndReject_();a.callWhenSettled_(b.resolve,b.reject)};e.prototype.settleSameAsThenable_=function(a,b){var d=this.createResolveAndReject_();try{a.call(b,d.resolve,d.reject)}catch(E){d.reject(E)}};e.prototype.then=function(a,b){function d(a,b){return"function"==typeof a?function(b){try{g(a(b))}catch(z){r(z)}}:b}var g,r,K=new e(function(a,b){g=a;r=b});this.callWhenSettled_(d(a,g),d(b,r));return K}; | |
e.prototype.catch=function(a){return this.then(void 0,a)};e.prototype.callWhenSettled_=function(a,b){function d(){switch(e.state_){case 1:a(e.result_);break;case 2:b(e.result_);break;default:throw Error("Unexpected state: "+e.state_);}}var e=this;null==this.onSettledCallbacks_?t.asyncExecute(d):this.onSettledCallbacks_.push(d)};e.resolve=d;e.reject=function(a){return new e(function(b,d){d(a)})};e.race=function(a){return new e(function(b,e){for(var g=$jscomp.makeIterator(a),r=g.next();!r.done;r=g.next())d(r.value).callWhenSettled_(b, | |
e)})};e.all=function(a){var b=$jscomp.makeIterator(a),g=b.next();return g.done?d([]):new e(function(a,e){function r(b){return function(d){t[b]=d;x--;0==x&&a(t)}}var t=[],x=0;do t.push(void 0),x++,d(g.value).callWhenSettled_(r(t.length-1),e),g=b.next();while(!g.done)})};return e},"es6","es3");$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)}; | |
$jscomp.SymbolClass=function(a,b){this.$jscomp$symbol$id_=a;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:b})};$jscomp.SymbolClass.prototype.toString=function(){return this.$jscomp$symbol$id_};$jscomp.Symbol=function(){function a(d){if(this instanceof a)throw new TypeError("Symbol is not a constructor");return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX+(d||"")+"_"+b++,d)}var b=0;return a}(); | |
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("Symbol.iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}});$jscomp.initSymbolIterator=function(){}}; | |
$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.asyncIterator;a||(a=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("Symbol.asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.generator={}; | |
$jscomp.generator.ensureIteratorResultIsObject_=function(a){if(!(a instanceof Object))throw new TypeError("Iterator result "+a+" is not an object");};$jscomp.generator.Context=function(){this.isRunning_=!1;this.yieldAllIterator_=null;this.yieldResult=void 0;this.nextAddress=1;this.finallyAddress_=this.catchAddress_=0;this.finallyContexts_=this.abruptCompletion_=null}; | |
$jscomp.generator.Context.prototype.start_=function(){if(this.isRunning_)throw new TypeError("Generator is already running");this.isRunning_=!0};$jscomp.generator.Context.prototype.stop_=function(){this.isRunning_=!1};$jscomp.generator.Context.prototype.jumpToErrorHandler_=function(){this.nextAddress=this.catchAddress_||this.finallyAddress_};$jscomp.generator.Context.prototype.next_=function(a){this.yieldResult=a}; | |
$jscomp.generator.Context.prototype.throw_=function(a){this.abruptCompletion_={exception:a,isException:!0};this.jumpToErrorHandler_()};$jscomp.generator.Context.prototype.return=function(a){this.abruptCompletion_={return:a};this.nextAddress=this.finallyAddress_};$jscomp.generator.Context.prototype.jumpThroughFinallyBlocks=function(a){this.abruptCompletion_={jumpTo:a};this.nextAddress=this.finallyAddress_};$jscomp.generator.Context.prototype.yield=function(a,b){this.nextAddress=b;return{value:a}}; | |
$jscomp.generator.Context.prototype.yieldAll=function(a,b){a=$jscomp.makeIterator(a);var d=a.next();$jscomp.generator.ensureIteratorResultIsObject_(d);if(d.done)this.yieldResult=d.value,this.nextAddress=b;else return this.yieldAllIterator_=a,this.yield(d.value,b)};$jscomp.generator.Context.prototype.jumpTo=function(a){this.nextAddress=a};$jscomp.generator.Context.prototype.jumpToEnd=function(){this.nextAddress=0}; | |
$jscomp.generator.Context.prototype.setCatchFinallyBlocks=function(a,b){this.catchAddress_=a;void 0!=b&&(this.finallyAddress_=b)};$jscomp.generator.Context.prototype.setFinallyBlock=function(a){this.catchAddress_=0;this.finallyAddress_=a||0};$jscomp.generator.Context.prototype.leaveTryBlock=function(a,b){this.nextAddress=a;this.catchAddress_=b||0}; | |
$jscomp.generator.Context.prototype.enterCatchBlock=function(a){this.catchAddress_=a||0;a=this.abruptCompletion_.exception;this.abruptCompletion_=null;return a};$jscomp.generator.Context.prototype.enterFinallyBlock=function(a,b,d){d?this.finallyContexts_[d]=this.abruptCompletion_:this.finallyContexts_=[this.abruptCompletion_];this.catchAddress_=a||0;this.finallyAddress_=b||0}; | |
$jscomp.generator.Context.prototype.leaveFinallyBlock=function(a,b){b=this.finallyContexts_.splice(b||0)[0];if(b=this.abruptCompletion_=this.abruptCompletion_||b){if(b.isException)return this.jumpToErrorHandler_();void 0!=b.jumpTo&&this.finallyAddress_<b.jumpTo?(this.nextAddress=b.jumpTo,this.abruptCompletion_=null):this.nextAddress=this.finallyAddress_}else this.nextAddress=a};$jscomp.generator.Context.prototype.forIn=function(a){return new $jscomp.generator.Context.PropertyIterator(a)}; | |
$jscomp.generator.Context.PropertyIterator=function(a){this.object_=a;this.properties_=[];for(var b in a)this.properties_.push(b);this.properties_.reverse()};$jscomp.generator.Context.PropertyIterator.prototype.getNext=function(){for(;0<this.properties_.length;){var a=this.properties_.pop();if(a in this.object_)return a}return null};$jscomp.generator.Engine_=function(a){this.context_=new $jscomp.generator.Context;this.program_=a}; | |
$jscomp.generator.Engine_.prototype.next_=function(a){this.context_.start_();if(this.context_.yieldAllIterator_)return this.yieldAllStep_(this.context_.yieldAllIterator_.next,a,this.context_.next_);this.context_.next_(a);return this.nextStep_()}; | |
$jscomp.generator.Engine_.prototype.return_=function(a){this.context_.start_();var b=this.context_.yieldAllIterator_;if(b)return this.yieldAllStep_("return"in b?b["return"]:function(a){return{value:a,done:!0}},a,this.context_.return);this.context_.return(a);return this.nextStep_()}; | |
$jscomp.generator.Engine_.prototype.throw_=function(a){this.context_.start_();if(this.context_.yieldAllIterator_)return this.yieldAllStep_(this.context_.yieldAllIterator_["throw"],a,this.context_.next_);this.context_.throw_(a);return this.nextStep_()}; | |
$jscomp.generator.Engine_.prototype.yieldAllStep_=function(a,b,d){try{var g=a.call(this.context_.yieldAllIterator_,b);$jscomp.generator.ensureIteratorResultIsObject_(g);if(!g.done)return this.context_.stop_(),g;var e=g.value}catch(t){return this.context_.yieldAllIterator_=null,this.context_.throw_(t),this.nextStep_()}this.context_.yieldAllIterator_=null;d.call(this.context_,e);return this.nextStep_()}; | |
$jscomp.generator.Engine_.prototype.nextStep_=function(){for(;this.context_.nextAddress;)try{var a=this.program_(this.context_);if(a)return this.context_.stop_(),{value:a.value,done:!1}}catch(b){this.context_.yieldResult=void 0,this.context_.throw_(b)}this.context_.stop_();if(this.context_.abruptCompletion_){a=this.context_.abruptCompletion_;this.context_.abruptCompletion_=null;if(a.isException)throw a.exception;return{value:a.return,done:!0}}return{value:void 0,done:!0}}; | |
$jscomp.generator.Generator_=function(a){this.next=function(b){return a.next_(b)};this.throw=function(b){return a.throw_(b)};this.return=function(b){return a.return_(b)};$jscomp.initSymbolIterator();this[Symbol.iterator]=function(){return this}};$jscomp.generator.createGenerator=function(a,b){b=new $jscomp.generator.Generator_(new $jscomp.generator.Engine_(b));$jscomp.setPrototypeOf&&$jscomp.setPrototypeOf(b,a.prototype);return b}; | |
$jscomp.asyncExecutePromiseGenerator=function(a){function b(b){return a.next(b)}function d(b){return a.throw(b)}return new Promise(function(g,e){function t(a){a.done?g(a.value):Promise.resolve(a.value).then(b,d).then(t,e)}t(a.next())})};$jscomp.asyncExecutePromiseGeneratorFunction=function(a){return $jscomp.asyncExecutePromiseGenerator(a())};$jscomp.asyncExecutePromiseGeneratorProgram=function(a){return $jscomp.asyncExecutePromiseGenerator(new $jscomp.generator.Generator_(new $jscomp.generator.Engine_(a)))}; | |
(function(a,b){function d(){return $jscomp.asyncExecutePromiseGeneratorProgram(function(a){return k?a.return(k):a.return(new Promise(function(a,c){var b=indexedDB.open("netflix.player");b.onerror=function(a){c(new G("Erro ao abrir BD",this.result))};b.onsuccess=function(b){b=b.target.result;try{var f=b.transaction(["namedatapairs"]).objectStore("namedatapairs").get("mslstore");f.onerror=function(a){c(new G("Erro ao obter objeto do BD",this.result))};f.onsuccess=function(b){k=b.target.result.data; | |
k.sequencenumber=JSON.parse(atob(k.masterTokenJSON.tokendata)).sequencenumber;a(k)}}catch(n){c(new G("Erro ao iniciar transa\u00e7\u00e3o",n))}}}))})}function g(a,b){var c={headers:{"Content-Type":"text/plain"},credentials:"include"};Object.keys(b||{}).forEach(function(a){"headers"===a?Object.keys(headers).forEach(function(a){return c.headers[a]=b.headers[a]}):c[a]=b[a]});c.method="POST";return fetch(a,c).then(function(a){return a.text()})}function e(a){var b;return $jscomp.asyncExecutePromiseGeneratorProgram(function(c){if(1== | |
c.nextAddress)return c.yield(crypto.subtle.sign({name:"HMAC"},k.hmacKey,P.encode(a)).then(function(a){return new Uint8Array(a)}),2);b=c.yieldResult;return c.return(A.fromByteArray(b))})}function t(a){var b=new Uint8Array(a);for(--a;0<=a;--a)b[a]=256*Math.random();return b}function r(a){var b,c,d;return $jscomp.asyncExecutePromiseGeneratorProgram(function(f){if(1==f.nextAddress)return b=t(16),c={keyid:k.esn+"_"+k.sequencenumber,sha256:"AA==",iv:A.fromByteArray(b)},f.yield(crypto.subtle.encrypt({name:"AES-CBC", | |
iv:b},k.encryptionKey,P.encode(a)).then(function(a){return new Uint8Array(a)}),2);d=f.yieldResult;c.ciphertext=A.fromByteArray(d);return f.return(JSON.stringify(c))})}function K(){var a;return $jscomp.asyncExecutePromiseGeneratorProgram(function(b){if(1==b.nextAddress)return b.yield(crypto.subtle.exportKey("spki",k.keyxPublicKey).then(function(a){return new Uint8Array(a)}),2);a=b.yieldResult;return b.return(A.fromByteArray(a))})}function x(a){var b,c,d,h,l,n,m;return $jscomp.asyncExecutePromiseGeneratorProgram(function(f){if(1== | |
f.nextAddress)return b=Math.random()*Math.pow(2,52),d=c={sender:k.esn,capabilities:{languages:[],compressionalgos:a&&(Array.isArray(a)?a:[a])||[]},renewable:!0,messageid:b},f.yield(K(),2);d.keyrequestdata=[{scheme:"ASYMMETRIC_WRAPPED",keydata:{publickey:f.yieldResult,mechanism:"JWK_RSA",keypairid:"rsaKeypairId"}}];if(k.userList&&k.userList.length){h=[];l=$jscomp.makeIterator(k.userList[0].serviceTokenJSONList);for(n=l.next();!n.done;n=l.next())m=n.value,h.push(m);c.useridtoken=k.userList[0].userIdTokenJSON; | |
c.servicetokens=h}return f.return({id:b,header:JSON.stringify(c)})})}function E(a){var b,c,d,h,l,n,m,H,u,Q,g,p;return $jscomp.asyncExecutePromiseGeneratorProgram(function(f){switch(f.nextAddress){case 1:return f.yield(x(),2);case 2:return b=f.yieldResult,f.yield(r(b.header),3);case 3:return c=f.yieldResult,d=k.masterTokenJSON,h=btoa(c),f.yield(e(c),4);case 4:return l={mastertoken:d,headerdata:h,signature:f.yieldResult},n=JSON.stringify(a),m=A.fromByteArray(aa.compress(n)),H={messageid:b.id,data:m, | |
compressionalgo:"LZW",sequencenumber:1,endofmsg:!0},f.yield(r(JSON.stringify(H)),5);case 5:return u=f.yieldResult,Q=btoa(u),f.yield(e(u),6);case 6:return g={payload:Q,signature:f.yieldResult},p=JSON.stringify(l)+JSON.stringify(g),f.return(p)}})}function W(a){var b,c,e,h;return $jscomp.asyncExecutePromiseGeneratorProgram(function(f){switch(f.nextAddress){case 1:return f.yield(d(),2);case 2:return b={version:2,url:"/manifest",languages:["en-US"],uiVersion:"shakti-vb45817f4",clientVersion:"6.0011.445.051", | |
params:{type:"standard",viewableId:a,profiles:"playready-h264mpl30-dash playready-h264mpl31-dash playready-h264hpl30-dash playready-h264hpl31-dash vp9-profile0-L30-dash-cenc vp9-profile0-L31-dash-cenc heaac-2-dash ddplus-2.0-dash ddplus-atmos-dash ddplus-5.1-dash dd-5.1-elem ddplus-5.1hq-dash dfxp-ls-sdh".split(" "),flavor:"STANDARD",drmType:"widevine",drmVersion:25,usePsshBox:!0,isBranching:!1,useHttpsStreams:!0,imageSubtitleHeight:1080,uiVersion:"shakti-vb45817f4",clientVersion:"6.0011.445.051", | |
supportsPreReleasePin:!0,supportsWatermark:!0,showAllSubDubTracks:!0,videoOutputInfo:[{type:"DigitalVideoOutputDescriptor",outputType:"unknown",supportedHdcpVersions:[],isHdcpEngaged:!1}],preferAssistiveAudio:!1,isNonMember:!1}},f.yield(E(b),3);case 3:return c=f.yieldResult,f.yield(g(ba.manifest,{body:c}),4);case 4:return e=f.yieldResult,f.yield(Z(X(e)),5);case 5:return h=f.yieldResult,f.return(h)}})}function Z(a){var b,c,d,h,l,n,m,H,e;return $jscomp.asyncExecutePromiseGeneratorProgram(function(f){switch(f.nextAddress){case 1:b= | |
"",c=$jscomp.makeIterator(a),d=c.next();case 2:if(d.done){f.jumpTo(4);break}h=d.value;l=JSON.parse(atob(h));n=A.toByteArray(l.iv);m=A.toByteArray(l.ciphertext);return f.yield(crypto.subtle.decrypt({name:"AES-CBC",iv:n},k.encryptionKey,m).then(function(a){return new Uint8Array(a)}),5);case 5:H=f.yieldResult;e=JSON.parse((new TextDecoder).decode(H));b+=atob(e.data);d=c.next();f.jumpTo(2);break;case 4:return f.return(JSON.parse(b))}})}function X(a){for(var b=[],c=a.indexOf('payload":"'),d;~c;)c+=10, | |
d=a.indexOf('"',c),b.push(a.slice(c,d)),c=a.indexOf('payload":"',d);return b}function Y(a){return new Promise(function(b){setTimeout(b,a)})}function F(a,b){if(a){var c=a;Array.isArray(c)?c=!0:(c=Object.prototype.toString.call(c),c="[object HTMLCollection]"===c||"[object NodeList]"===c?!0:!1);c||(a=[a]);for(c=a.length-1;0<=c;--c)a[c].style.display=b}}function z(a){F(a,"none")}function q(a,b){b=void 0===b?document:b;return b.querySelector(a)}function R(a,b){b=void 0===b?document:b;return b.querySelectorAll(a)} | |
function D(a,b){a=""+a;return"0".repeat(Math.max(0,b-a.length))+a}function ca(a){var b=function(a){var b=Math.round(~~a.substr(-8,7)/1E4);a=~~a.slice(0,-8);var c=a%60,f=Math.floor(a/60%60);return D(Math.floor(a/3600),2)+":"+D(f,2)+":"+D(c,2)+","+D(b,3)},c=(new DOMParser).parseFromString(a,"text/xml"),d=[];a=c.getElementsByTagName("style");for(var h=a.length-1;0<=h;--h){var l=a[h];"italic"===l.getAttribute("tts:fontStyle")&&d.push(l.getAttribute("xml:id"))}a=function(a,b){return~d.indexOf(b.getAttribute("style"))? | |
"<i>"+a+"</i>":a};h=/<\/i>\n<i>/g;c=c.getElementsByTagName("p");l=c.length;for(var n=[],m=0,e=0,u;m<l;){for(var g=c[m++],v=g.childNodes,p=v.length,y="",L=0;L<p;++L){var k=v[L];"br"===k.tagName?y+="\n":k.textContent&&(y="span"===k.tagName?y+a(k.textContent,k):y+k.textContent)}y&&(v=b(g.getAttribute("begin")),p=b(g.getAttribute("end")),y=a(y,g),v===u?n[e-1]+="\n"+y.replace(h,"\n"):n[e]=++e+"\n"+v+" --\x3e "+p+"\n"+y.replace(h,"\n"),u=v)}n.push("");return n.join("\n\n")}function da(a){if((a=q(".video-title > div")|| | |
q(".player-status")||q(".video-title > h4"))&&1<a.children.length){var b=a.children,c=/(\d+):.+?(\d+)$/.exec(b[1].textContent);if(c)return b[0].textContent+".S"+D(c[1],2)+"E"+D(c[2],2)}return a&&a.textContent||""}function ea(a,b){var c=URL.createObjectURL(a);a=document.createElement("a");a.style.display="none";a.download=b;a.href=c;document.body.appendChild(a);a.click();a.remove();setTimeout(function(){return URL.revokeObjectURL(c)},1E4)}function fa(a,b){for(var c=0,f=a.length;c<f;++c)a[c].addEventListener("click", | |
b)}function S(a,b){return b.includes(a)?a:b[0]}function T(a,b,d){for(var c="pt-BR"===navigator.language?"For\u00e7ada":"Forced",f={},l=0,n=a.length;l<n;f={$jscomp$loop$prop$langTrack$8:f.$jscomp$loop$prop$langTrack$8},++l){var m=a[l],e=m.language;if(e)if(b[e]||(b[e]={}),f.$jscomp$loop$prop$langTrack$8=b[e],d){e=m.streams;m="ASSISTIVE"===m.trackType?"-ad":"";for(var u={},g=e.length-1;0<=g;--g){var C=e[g],p=C.content_profile+m;u[p]=!0;C={bitrate:C.bitrate,type:"AUDIO",text:C.bitrate+"kbps",downloadUrl:C.urls[0].url}; | |
f.$jscomp$loop$prop$langTrack$8[p]||(f.$jscomp$loop$prop$langTrack$8[p]=[]);f.$jscomp$loop$prop$langTrack$8[p].push(C)}Object.keys(u).forEach(function(a){return function(b){a.$jscomp$loop$prop$langTrack$8[b].sort(function(a,b){return b.bitrate-a.bitrate})}}(f))}else"timedtext"===m.type&&(u=m.ttDownloadables,f.$jscomp$loop$prop$langTrack$8["dfxp-ls-sdh"]||(f.$jscomp$loop$prop$langTrack$8["dfxp-ls-sdh"]=[]),e="closedcaptions"===m.rawTrackType?" [CC]":"",u=u["dfxp-ls-sdh"].downloadUrls,e={isForced:m.isForcedNarrative, | |
type:"SUBTITLES",isCC:""!==e,text:m.isForcedNarrative?c+e:"Normal"+e,downloadUrl:u[Object.keys(u)[0]]},e.isForced?f.$jscomp$loop$prop$langTrack$8["dfxp-ls-sdh"].push(e):f.$jscomp$loop$prop$langTrack$8["dfxp-ls-sdh"].unshift(e))}}function ha(a){if(a.error)throw new M(a.error.detail);var c=a.result,d={};T(c.audio_tracks,d,!0);T(c.timedtexttracks,d,!1);var e={"ddplus-5.1hq-dash":0,"ddplus-5.1hq-dash-ad":1,"ddplus-atmos-dash":2,"ddplus-atmos-dash-ad":3,"dd-5.1-elem":4,"dd-5.1-elem-ad":5,"ddplus-5.1-dash":6, | |
"ddplus-5.1-dash-ad":7,"ddplus-2.0-dash":8,"ddplus-2.0-dash-ad":9,"heaac-2-dash":10,"heaac-2-dash-ad":11,"dfxp-ls-sdh":12},h=Object.keys(d),l={"ddplus-5.1hq-dash":"E-AC-3 5.1 HQ:","ddplus-atmos-dash":"E-AC-3 5.1 ATMOS:","dd-5.1-elem":"AC-3 5.1:","ddplus-5.1-dash":"E-AC-3 5.1:","ddplus-2.0-dash":"E-AC-3 2.0:","heaac-2-dash":"AAC 2.0:","dfxp-ls-sdh":"pt-BR"===navigator.language?"Legendas:":"Subtitles:"};Object.keys(l).forEach(function(a){a.startsWith("dfxp")||(l[a+"-ad"]=l[a].replace(":"," [AD]:"))}); | |
a=document.createElement("section");a.id="flix-manifest";a.setAttribute("data-movieid",c.movieId);a.innerHTML='\n <div class="flix-middle">\n <div class="flix-select">\n <select name="flix-lang" id="flix-lang">\n '+h.map(function(a){return'<option value="'+a+'">'+a+"</option>"}).join("")+'\n </select>\n </div>\n <div class="flix-select">\n <select name="flix-subtitle-type" id="flix-subtitle-type">\n <option value="SRT">SRT</option>\n <option value="DFXP">DFXP</option>\n </select>\n </div>\n <div class="flix-select">\n <select name="flix-charset" id="flix-charset">\n <option value="UTF8">UTF-8</option>\n <option value="UTF8B">UTF-8 BOM</option>\n <option value="ANSI">ANSI</option>\n </select>\n </div>\n </div>\n '+ | |
h.map(function(a){return'<div data-lang="'+a+'" class="flix-content">\n '+Object.keys(d[a]).sort(function(a,b){return e[a]-e[b]}).map(function(b){return"<ul><li>"+l[b]+"</li>\n "+d[a][b].map(function(a){return'<li><a data-type="'+a.type+'" '+("SUBTITLES"===a.type?'data-isforced="'+a.isForced+'" data-iscc="'+a.isCC+'"':"")+' href="'+a.downloadUrl+'">'+a.text+"</a></li>"}).join("")+"\n </ul>"}).join("")+"\n </div>\n "}).join("")+"\n ";var n=q("#flix-lang", | |
a),m=q("#flix-subtitle-type",a),g=q("#flix-charset",a),u=R(".flix-content",a),k=Object.create(null),v=da()||"subtitle";fa(R('a[data-type="SUBTITLES"]',a),function(a){a.preventDefault();var c="true"===this.getAttribute("data-iscc"),f="true"===this.getAttribute("data-isforced"),d=n.value,e=g.value,h=m.value;fetch(this.href).then(function(a){if(!a.ok)throw Error(a.statusText);return"DFXP"===h?a.blob():a.text()}).then(function(a){if(a instanceof Blob){var b=a;a="dfxp"}else{a=ca(a);a=a.replace(/(\r)?\n/g, | |
"\r\n");b=[];switch(e.toUpperCase()){case "ANSI":for(var h=new Uint8Array(a.length),l=0,n=a.length;l<n;++l){var m=a.charCodeAt(l);h[l]=256>m?m:37}b.push(h);break;case "UTF8B":b.push("\ufeff");default:b.push(a)}b=new Blob(b,{type:"application/octet-stream"});a="srt"}ea(b,""+v+(c?".[CC]":"")+"."+d+(f?".forced":"")+"."+a)}).catch(b.error)});m.addEventListener("change",function(){g.disabled="DFXP"===this.value?"disabled":"";localStorage.setItem("flix-subtitle-type",this.value)});g.addEventListener("change", | |
function(){localStorage.setItem("flix-charset",this.value)});n.value=localStorage.getItem("flix-lang")||"en";for(c=u.length-1;0<=c;--c)h=u[c],k[h.getAttribute("data-lang")]=h,h.style.display="none";if(c=k[n.value])c.style.display="";n.addEventListener("change",function(){localStorage.setItem("flix-lang",this.value);z(u);k[this.value].style.display=""});m.value=S(localStorage.getItem("flix-subtitle-type"),["SRT","DFXP"]);g.value=S(localStorage.getItem("flix-charset"),["UTF8","UTF8B","ANSI"]);c=new Event("change"); | |
m.dispatchEvent(c);g.dispatchEvent(c);return a}function I(a){return"none"===a.style.display}function ia(){var a,f,d,e,h,l;return $jscomp.asyncExecutePromiseGeneratorProgram(function(c){switch(c.nextAddress){case 1:if(!I(w))return z(w),c.return();if(!I(J))return U.pause(),F(w,""),c.return();a=/^\/watch\/(\d{4,})$/.exec(location.pathname);c.setCatchFinallyBlocks(2);if(!a){c.jumpTo(4);break}U.pause();f=a[1];if(B.getAttribute("data-movieid")===f)return F(w,""),c.return();B.remove();F(w,"");F(J,"");return c.yield(W([parseInt(f)]), | |
5);case 5:d=c.yieldResult,B=ha(d),N.appendChild(B);case 4:c.leaveTryBlock(3);break;case 2:e=c.enterCatchBlock(),b.error(e),h=document.createElement("section"),h.setAttribute("data-movieid","0"),h.id="flix-manifest",l=document.createElement("div"),l.className="flix-error",l.textContent=e.message,h.appendChild(l),B=h,N.appendChild(B);case 3:z(J),c.jumpToEnd()}})}function ja(){document.body.addEventListener("keydown",function(a){I(w)||a.stopPropagation();a.altKey&&a.shiftKey&&"KeyN"===a.code&&ia()}, | |
!0);document.body.addEventListener("keydown",function(a){"Escape"!==a.code||I(w)||(z(w),a.stopPropagation())},!0)}function ka(){var a=document.createElement("div");a.id="flix-overlay";a.style.display="none";a.innerHTML='\n <div id="flix-dialog">\n <div class="flix-header">\n <div class="text" title="'+O+" v"+V+'"><img src="'+la+'"></img>'+O+' <span class="small-text">v'+V+'</span></div>\n <div class="small-text author">by '+ma+'</div>\n </div>\n <hr>\n <div id="flix-loading" style="display: none"><div class="flix-bar"></div></div>\n <span id="flix-dialog-close" title="'+ | |
("pt-BR"===navigator.language?"Fechar":"Close")+'">\u00d7</span>\n <section data-movieid="-1" id="flix-manifest"></section>\n </div>\n ';document.body.appendChild(a);w=q.id("flix-overlay");J=q.id("flix-loading");B=q.id("flix-manifest");N=q.id("flix-dialog");q.id("flix-dialog-close").addEventListener("click",function(){z(w)})}if(a.top===a.self){a=b.info.script;var O=a.name,V=a.version;a=b.info.scriptMetaStr;var ma=/@author\s*(.+)/.exec(a)[1],la=/@icon\s*(.+)/.exec(a)[1],na= | |
"["+O+"]";["log","error"].forEach(function(a){b[a]=function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];console[a].apply(console,[na].concat($jscomp.arrayFromIterable(c)))}});b.log("Loading...");var ba={manifest:"https://www.netflix.com/nq/msl_v1/cadmium/pbo_manifests/^1.0.0/router"},A=function(){function a(a,c,d){for(var e=[],f=c;f<d;f+=3)c=(a[f]<<16)+(a[f+1]<<8)+a[f+2],e.push(b[c>>18&63]+b[c>>12&63]+b[c>>6&63]+b[c&63]);return e.join("")}for(var b=[],d=[],e=0;64>e;++e)b[e]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[e], | |
d["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;d[45]=62;d[95]=63;return{toByteArray:function(a){var b;var c=b=a.length;if(0<c%4)throw Error("Invalid string. Length must be a multiple of 4");c="="===a[c-2]?2:"="===a[c-1]?1:0;var f=new Uint8Array(3*b/4-c);var e=0<c?b-4:b;var h=0;for(b=0;b<e;b+=4){var g=d[a.charCodeAt(b)]<<18|d[a.charCodeAt(b+1)]<<12|d[a.charCodeAt(b+2)]<<6|d[a.charCodeAt(b+3)];f[h++]=g>>16&255;f[h++]=g>>8&255;f[h++]=g&255}2===c?(g=d[a.charCodeAt(b)]<< | |
2|d[a.charCodeAt(b+1)]>>4,f[h++]=g&255):1===c&&(g=d[a.charCodeAt(b)]<<10|d[a.charCodeAt(b+1)]<<4|d[a.charCodeAt(b+2)]>>2,f[h++]=g>>8&255,f[h++]=g&255);return f},fromByteArray:function(c){for(var d=c.length,f=d%3,e="",g=[],h=0,k=d-f;h<k;h+=16383)g.push(a(c,h,h+16383>k?k:h+16383));1===f?(c=c[d-1],e+=b[c>>2],e+=b[c<<4&63],e+="=="):2===f&&(c=(c[d-2]<<8)+c[d-1],e+=b[c>>10],e+=b[c>>4&63],e+=b[c<<2&63],e+="=");g.push(e);return g.join("")}}}(),G=function(a,b){a=Error.call(this,a);this.message=a.message;"stack"in | |
a&&(this.stack=a.stack);this._error=b};$jscomp.inherits(G,Error);$jscomp.global.Object.defineProperties(G.prototype,{error:{configurable:!0,enumerable:!0,get:function(){return this._error}}});var k,aa=function(){function a(a,b){var c=b||a.length;return a.reduce(function(a,b,d){return d<c?a+String.fromCharCode(b):a},"")}for(var b=Object.create(null),d=0;256>d;++d)b[String.fromCharCode(d)]=d;var e=new TextEncoder;return{compress:function(c){function d(a,b){for(;0<b;){if(v>=f.length)return!1;var c=a; | |
if(b>p)c>>>=b-p,f[v]|=c&255,b-=p,p=8,++v;else{c<<=p-b;c&=255;c>>>=8-p;f[v]|=c&255;p-=b;0===p&&(p=8,++v);break}}return!0}c=e.encode(c);var f=new Uint8Array(c.length),g=Object.create(null),h=c.length,k=[];for(q in b)g[q]=b[q];var q=256;var v=0,p;var r=p=8;for(var t=0;t<h;++t){var w=c[t];k.push(w);var x=a(k);if(!g[x]){k=a(k,k.length-1);if(!d(g[k],r))return null;0!==q>>r&&++r;g[x]=q++;k=[w]}}return 0<k.length&&!d(g[a(k)],r)?null:f.subarray(0,8>p?v+1:v)}}}(),P=new TextEncoder;q.id=function(a,b){b=void 0=== | |
b?document:b;return b.getElementById(a)};q.waitDOM=function(){return new Promise(function(a){"loading"!==document.readyState?a():document.addEventListener("DOMContentLoaded",a)})};var U=function(){return{pause:function(){var a;return $jscomp.asyncExecutePromiseGeneratorProgram(function(b){if(1==b.nextAddress)return b.yield(Y(1500),2);(a=q(".button-nfplayerPause")||q(".icon-player-pause"))&&a.click();b.jumpToEnd()})}}}(),M=function(a,b){a=Error.call(this,a);this.message=a.message;"stack"in a&&(this.stack= | |
a.stack);this.name="ManifestError";this._cause=b};$jscomp.inherits(M,Error);$jscomp.global.Object.defineProperties(M.prototype,{cause:{configurable:!0,enumerable:!0,get:function(){return this._cause}}});var w,J,B,N;(function(){return $jscomp.asyncExecutePromiseGeneratorProgram(function(a){if(1==a.nextAddress){var b=document.createElement("style");b.textContent='\n @font-face {\n font-family: \'eu-bold\';\n font-weight: normal;\n font-style: normal;\n src: url(\'//flixscript.github.io/font/eu.woff2\') format(\'woff2\');\n}\n#flix-overlay {\n background-color: rgba(46, 46, 46, .9);\n margin: 0;\n padding: 0;\n border: 0;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: fixed;\n overflow: hidden;\n z-index: 3000;\n}\n#flix-dialog {\n font-family: "eu-bold";\n font-size: 16px;\n background: none repeat scroll 0 0 padding-box #242223;\n box-shadow: 0 0 10px #000;\n box-sizing: border-box;\n color: #fff;\n top: 50%;\n left: 50%;\n position: absolute;\n margin: -150px 0px 0px -330px;\n padding: 7px;\n width: 580px;\n height: 350px;\n display: flex;\n flex-direction: column;\n line-height: 1;\n}\n#flix-dialog section, .flix-content ul {\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n#flix-dialog hr {\n margin-left: 0;\n margin-right: 0;\n border: 0;\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(256, 245, 254, 0.75), rgba(0, 0, 0, 0));\n height: 1px;\n}\n\n.flix-header {\n display: flex;\n line-height: 32px;\n margin: 5px 5px 0;\n}\n\n.flix-header img {\n margin-right: 6px;\n height: 26px;\n width: 26px;\n vertical-align: sub;\n}\n\n.flix-header .text {\n font-size: 23px;\n color: #bd0c0c;\n flex-grow: 1;\n text-align: center;\n}\n.flix-header .small-text {\n font-size: 9px;\n color: #746D6D;\n vertical-align: middle;\n}\n\n.flix-header .author {\n text-align: right;\n}\n\n#flix-dialog-close {\n position: absolute;\n top: 5px;\n right: 5px;\n line-height: 12px;\n text-decoration: none;\n cursor: pointer;\n}\n\n.flix-middle {\n display: flex;\n justify-content: center;\n}\n\n#flix-dialog label {\n line-height: 22px;\n font-size: 13px;\n}\n\n#flix-dialog select {\n background-color: #272525;\n border: 1px solid #120202;\n border-radius: 3px;\n color: #fff;\n cursor: pointer;\n margin-left: 3px;\n font-family: "eu-bold";\n font-size: 12px;\n outline: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n padding: 3px 24px;\n}\n\n#flix-dialog select:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n\n.flix-select {\n position: relative;\n}\n\n.flix-select:after {\n content: ">";\n color: #FFF;\n -webkit-transform: rotate(90deg);\n -moz-transform: rotate(90deg);\n transform: rotate(90deg);\n right: 11px;\n top: 5px;\n font-size: 11px;\n position: absolute;\n}\n\n#flix-dialog a {\n color: #b7a8a8;\n text-decoration: none;\n}\n\n#flix-dialog a:hover {\n color: #e93e30;\n}\n\n.flix-content {\n margin: 24px 0 0 48px;\n}\n.flix-content ul, .flix-content li {\n list-style: none;\n}\n.flix-content ul {\n display: flex;\n flex-direction: row;\n margin-top: 10px;\n}\n.flix-content li:first-child {\n width: 150px;\n}\n.flix-content li {\n margin-left: 3px;\n}\n.flix-content li:not(:nth-child(1)) + li:before {\n content: " | ";\n}\n.flix-item {\n margin-top: 5px;\n}\n#flix-loading {\n position: relative;\n margin-bottom: 5px;\n width: 100%;\n height: 12px;\n background-color: #3b3a38;\n border-radius: 4px;\n}\n.flix-bar {\n content: "";\n display: inline;\n position: absolute;\n width: 0;\n height: 100%;\n left: 50%;\n text-align: center;\n background-color: #e9250a;\n border-radius: 4px;\n animation: floading 4s linear infinite;\n}\n@keyframes floading {\n from {\n left: 50%;\n width: 0;\n }\n to {\n left: 0;\n width: 100%;\n }\n}\n\n.flix-error {\n text-align: center;\n line-height: 30px;\n background-color: brown;\n}'; | |
b.type="text/css";(document.head||document.documentElement).appendChild(b);return a.yield(q.waitDOM(),2)}ka();ja();a.jumpToEnd()})})()}})(window,"undefined"!==typeof GM&&GM||{info:GM_info});}).call(window); | |
/* jshint ignore:end */ |
After latest Chrome update not working
Tested on 98.0.4758.82 - works just fine
selling amazon 4k key (l1)
contact
email: aaawv@protonmail.com
dc: aa.#6788
Anyone else getting a message saying "JSON parse: unexpected end of data at line 1 column 1 of the JSON data"? If so, any possible fix?
10 bucks and I'll fix for ya ;)
10 bucks and I'll fix for ya ;)
I'm interested.
Don't pay scammers.
Just change this:
"https://www.netflix.com/nq/msl_v1/cadmium/pbo_manifests/^1.0.0/router"
to this:
"https://www.netflix.com/nq/msl_v1/cadmium/pbo_licenses/%5E1.0.0/router?reqName=manifest"
Don't pay scammers. Just change this:
"https://www.netflix.com/nq/msl_v1/cadmium/pbo_manifests/^1.0.0/router"
to this:"https://www.netflix.com/nq/msl_v1/cadmium/pbo_licenses/%5E1.0.0/router?reqName=manifest"
This works just fine. I have a question though. When we download subtitle before, it was showing the episode number and name with shows name, but now it just says subtitle. Any way to fix this?
Im not a scammer idiot (if I would I wanted 100$ or more like scammers do!), Ive made some small changes to improve this, like support of AAC instread poor EAC 128kbps, if you are still interested mail to pl00xer@protonmail.com
what is wrong on E-AC3?
what is wrong on E-AC3?
Nothing. He's just spinning a story ;)
thank uu!!
Looks like Netflix might've changed the "ShowAllSubDubTracks" bit cause it's not.
is this not updated anymore? The last revision of the code was in 2019, someone could take over this code and update it, it's a shame to leave it abandoned.
whoops never mind, i just tried it again and now it's working!
Hi XoR, is the script gonna be fixed? Thanks for the support.
please fix this script,, thanks
hello XOR,, can u please fix this script bro
please reply
hello, bumping again about problem. waiting for fix!
15 bucks and I'll send you fixed
Please, can somebody who understands this code can fix this?
Thanks bro
Thank you very much. You are our hero.
Thankyoouuuuuuuu
After latest Chrome update not working
up: true my bad.. working.