UNPKG

jaidbot-desktop

Version:

Desktop manager that connects to a Jaidbot server.

7 lines 36.9 kB
#!/usr/bin/env node /*! *** jaidbot-desktop 2.1.0 *** Copyright © 2019, Jaid <jaid.jsx@gmail.com> (https://github.com/Jaid) *** @license MIT *** See https://github.com/Jaid/jaidbot-desktop !*/!function(t){var n={};function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)e.d(r,o,function(n){return t[n]}.bind(null,o));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=65)}([function(t,n,e){"use strict";e.d(n,"b",(function(){return a}));var r=e(48),o=e.n(r),i=e(49),u=e.n(i);const c=new o.a({name:"Jaidbot Desktop",version:"2.1.0",useGot:!0,configSetup:{defaults:u(),secretKeys:["vlcApiPassword","botPassword"]}}),a=c.logger;c.got,c.config,n.a=c},function(t,n,e){var r=e(33),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,n){var e=Array.isArray;t.exports=e},function(t,n){t.exports=require("@absolunet/fsp")},function(t,n,e){var r=e(93),o=e(96);t.exports=function(t,n){var e=o(t,n);return r(e)?e:void 0}},function(t,n){t.exports=require("path")},function(t,n,e){var r=e(1).Symbol;t.exports=r},function(t,n,e){var r=e(6),o=e(77),i=e(78),u=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":u&&u in Object(t)?o(t):i(t)}},function(t,n){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,n,e){var r=e(83),o=e(84),i=e(85),u=e(86),c=e(87);function a(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}a.prototype.clear=r,a.prototype.delete=o,a.prototype.get=i,a.prototype.has=u,a.prototype.set=c,t.exports=a},function(t,n,e){var r=e(23);t.exports=function(t,n){for(var e=t.length;e--;)if(r(t[e][0],n))return e;return-1}},function(t,n){t.exports=function(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}},function(t,n,e){var r=e(4)(Object,"create");t.exports=r},function(t,n,e){var r=e(105);t.exports=function(t,n){var e=t.__data__;return r(n)?e["string"==typeof n?"string":"hash"]:e.map}},function(t,n,e){var r=e(36),o=e(28);t.exports=function(t){return null!=t&&o(t.length)&&!r(t)}},function(t,n,e){var r=e(7),o=e(8);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},function(t,n,e){var r=e(15);t.exports=function(t){if("string"==typeof t||r(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(t,n){t.exports=function(t){return t}},function(t,n,e){var r=e(20);t.exports=function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),n&&r(t,n)}},function(t,n,e){var r=e(21),o=e(20),i=e(68),u=e(69);function c(n){var e="function"==typeof Map?new Map:void 0;return t.exports=c=function(t){if(null===t||!i(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return u(t,arguments,r(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),o(n,t)},c(n)}t.exports=c},function(t,n){function e(n,r){return t.exports=e=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t},e(n,r)}t.exports=e},function(t,n){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e},function(t,n,e){var r=e(76),o=e(8),i=Object.prototype,u=i.hasOwnProperty,c=i.propertyIsEnumerable,a=r(function(){return arguments}())?r:function(t){return o(t)&&u.call(t,"callee")&&!c.call(t,"callee")};t.exports=a},function(t,n){t.exports=function(t,n){return t===n||t!=t&&n!=n}},function(t,n,e){var r=e(4)(e(1),"Map");t.exports=r},function(t,n,e){var r=e(97),o=e(104),i=e(106),u=e(107),c=e(108);function a(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}a.prototype.clear=r,a.prototype.delete=o,a.prototype.get=i,a.prototype.has=u,a.prototype.set=c,t.exports=a},function(t,n,e){var r=e(125),o=e(130),i=e(14);t.exports=function(t){return i(t)?r(t):o(t)}},function(t,n){var e=/^(?:0|[1-9]\d*)$/;t.exports=function(t,n){var r=typeof t;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&e.test(t))&&t>-1&&t%1==0&&n>t}},function(t,n){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&9007199254740991>=t}},function(t,n,e){var r=e(2),o=e(15),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;t.exports=function(t,n){if(r(t))return!1;var e=typeof t;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=t&&!o(t))||u.test(t)||!i.test(t)||null!=n&&t in Object(n)}},function(t,n){t.exports=require("execa")},function(t,n,e){var r=e(66),o=e(67);t.exports=function(t,n){return!n||"object"!==r(n)&&"function"!=typeof n?o(t):n}},function(t,n){t.exports=function(t,n){for(var e=-1,r=n.length,o=t.length;++e<r;)t[o+e]=n[e];return t}},function(t,n){var e="object"==typeof global&&global&&global.Object===Object&&global;t.exports=e},function(t,n){t.exports=function(t,n){for(var e=-1,r=null==t?0:t.length,o=Array(r);++e<r;)o[e]=n(t[e],e,t);return o}},function(t,n,e){var r=e(9),o=e(88),i=e(89),u=e(90),c=e(91),a=e(92);function s(t){var n=this.__data__=new r(t);this.size=n.size}s.prototype.clear=o,s.prototype.delete=i,s.prototype.get=u,s.prototype.has=c,s.prototype.set=a,t.exports=s},function(t,n,e){var r=e(7),o=e(11);t.exports=function(t){if(!o(t))return!1;var n=r(t);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}},function(t,n){var e=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,n,e){var r=e(109),o=e(8);t.exports=function t(n,e,i,u,c){return n===e||(null==n||null==e||!o(n)&&!o(e)?n!=n&&e!=e:r(n,e,i,u,t,c))}},function(t,n,e){var r=e(110),o=e(113),i=e(114);t.exports=function(t,n,e,u,c,a){var s=1&e,f=t.length,l=n.length;if(!(f==l||s&&l>f))return!1;var p=a.get(t);if(p&&a.get(n))return p==n;var d=-1,v=!0,h=2&e?new r:void 0;for(a.set(t,n),a.set(n,t);++d<f;){var y=t[d],b=n[d];if(u)var x=s?u(b,y,d,n,t,a):u(y,b,d,t,n,a);if(void 0!==x){if(x)continue;v=!1;break}if(h){if(!o(n,(function(t,n){if(!i(h,n)&&(y===t||c(y,t,e,u,a)))return h.push(n)}))){v=!1;break}}else if(y!==b&&!c(y,b,e,u,a)){v=!1;break}}return a.delete(t),a.delete(n),v}},function(t,n,e){(function(t){var r=e(1),o=e(127),i=n&&!n.nodeType&&n,u=i&&"object"==typeof t&&t&&!t.nodeType&&t,c=u&&u.exports===i?r.Buffer:void 0,a=(c?c.isBuffer:void 0)||o;t.exports=a}).call(this,e(41)(t))},function(t,n){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,n,e){var r=e(128),o=e(43),i=e(129),u=i&&i.isTypedArray,c=u?o(u):r;t.exports=c},function(t,n){t.exports=function(t){return function(n){return t(n)}}},function(t,n,e){var r=e(11);t.exports=function(t){return t==t&&!r(t)}},function(t,n){t.exports=function(t,n){return function(e){return null!=e&&e[t]===n&&(void 0!==n||t in Object(e))}}},function(t,n,e){var r=e(47),o=e(16);t.exports=function(t,n){for(var e=0,i=(n=r(n,t)).length;null!=t&&i>e;)t=t[o(n[e++])];return e&&e==i?t:void 0}},function(t,n,e){var r=e(2),o=e(29),i=e(142),u=e(145);t.exports=function(t,n){return r(t)?t:o(t,n)?[t]:i(u(t))}},function(t,n){t.exports=require("jaid-core")},function(t,n){t.exports={botServerUrl:"localhost",vlcPath:"vlc",vlcApiUser:"",vlcApiHost:"localhost",vlcApiPort:8080,youtubeDlPath:"youtube-dl",youtubeDlCookieFile:"C:/Downloads/Videos/cookies.txt",videoDownloadFolder:"C:/Downloads/Videos"}},function(t,n){t.exports=require("interval-promise")},function(t,n){t.exports=require("emit-promise")},function(t,n){t.exports=require("has-content")},function(t,n){t.exports=require("pluralize-inclusive")},function(t,n){t.exports=require("p-queue")},function(t,n){t.exports=require("zahl")},function(t,n){t.exports=require("socket.io-client")},function(t,n){t.exports=function(t){var n=null==t?0:t.length;return n?t[n-1]:void 0}},function(t,n,e){var r=e(74),o=e(79),i=e(162),u=e(170),c=i((function(t,n){if(null==t)return[];var e=n.length;return e>1&&u(t,n[0],n[1])?n=[]:e>2&&u(n[0],n[1],n[2])&&(n=[n[0]]),o(t,r(n,1),[])}));t.exports=c},function(t,n){t.exports=require("fast-decode-uri-component")},function(t,n){t.exports=require("prevent-start")},function(t,n){t.exports=require("find-by-extension")},function(t,n){t.exports=require("filenamify-shrink")},function(t,n){t.exports=require("filesize")},function(t,n){t.exports=require("sort-keys")},function(t,n,e){"use strict";e.r(n);var r=e(18),o=e.n(r),i=(e(31),e(21),e(19)),u=e.n(i),c=e(0);function a(t,n){a=function(t,n){return new c(t,n)};var e=u()(RegExp),r=RegExp.prototype,i=new WeakMap;function c(t,n){var r=e.call(this,t);return i.set(r,n),r}function s(t,n){var e=i.get(n);return Object.keys(e).reduce((function(n,r){return n[r]=t[e[r]],n}),Object.create(null))}return o()(c,e),c.prototype.exec=function(t){var n=r.exec.call(this,t);return n&&(n.groups=s(n,this)),n},c.prototype[Symbol.replace]=function(t,n){if("string"==typeof n){var e=i.get(this);return r[Symbol.replace].call(this,t,n.replace(/\$<([^>]+)>/g,(function(t,n){return"$"+e[n]})))}if("function"==typeof n){var o=this;return r[Symbol.replace].call(this,t,(function(){var t=[];return t.push.apply(t,arguments),"object"!=typeof t[t.length-1]&&t.push(s(t,o)),n.apply(this,t)}))}return r[Symbol.replace].call(this,t,n)},a.apply(this,arguments)}(async()=>{const t={},n=e(70);for(const e of n.keys()){const{pluginName:r}=e.match(a(/[\/\\](.+?)[\/\\]index\.js$/,{pluginName:1})).groups;t[r]=n(e).default}await c.a.init(t)})()},function(t,n){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(n){return"function"==typeof Symbol&&"symbol"===e(Symbol.iterator)?t.exports=r=function(t){return e(t)}:t.exports=r=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":e(t)},r(n)}t.exports=r},function(t,n){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}},function(t,n){t.exports=function(t){return-1!==Function.toString.call(t).indexOf("[native code]")}},function(t,n,e){var r=e(20);function o(n,e,i){return function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}()?t.exports=o=Reflect.construct:t.exports=o=function(t,n,e){var o=[null];o.push.apply(o,n);var i=new(Function.bind.apply(t,o));return e&&r(i,e.prototype),i},o.apply(null,arguments)}t.exports=o},function(t,n,e){var r={"./main/index.js":71,"./socketClient/index.js":72,"./vlc/index.js":73};function o(t){var n=i(t);return e(n)}function i(t){if(!e.o(r,t)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return r[t]}o.keys=function(){return Object.keys(r)},o.resolve=i,t.exports=o,o.id=70},function(t,n,e){"use strict";e.r(n),e.d(n,"default",(function(){return y}));var r=e(0),o=e(50),i=e.n(o),u=e(51),c=e.n(u),a=e(52),s=e.n(a),f=e(53),l=e.n(f),p=e(54),d=e.n(p),v=e(55),h=e.n(v);class y{setCoreReference(t){this.core=t,this.vlc=t.plugins.vlc}async ready(){this.socket=this.core.plugins.socketClient.socket,this.downloadQueue=new d.a({concurrency:3}),this.socket.on("connect",async()=>{var t;if(this.downloadQueue.size>0)return void r.b.debug("Download queue has %s, will not be asking for new downloads",h()(this.downloadQueue,"job"));const n=await c.a.withDefaultTimeout(this.socket,"getDownloadJobs");if(t=n,s()(t)){r.b.info("%s to download",l()("video",n.length));for(const{id:t,downloadFormat:e,info:o}of n){const n=async()=>{r.b.info("Starting download of video #%s",t),o.videoId=t,o.downloadFormat=e,await this.vlc.download(o)};await this.downloadQueue.add(n)}}}),i()(()=>this.vlc.sendStatusToServer(),5e3)}}},function(t,n,e){"use strict";e.r(n);var r=e(56),o=e.n(r),i=e(0);n.default=new class{handleConfig(t){this.url=t.botServerUrl,this.password=t.botPassword}init(){this.socket=o()(this.url,{rejectUnauthorized:!1,query:{password:this.password}}),this.socket.on("connect_error",t=>{i.b.warn("Connection failed to %s: %s",this.url,t)}),this.socket.on("error",t=>{i.b.warn("Error on websocket connection to %s: %s",this.url,t)}),this.socket.on("connect",()=>{i.b.info("Connected to %s",this.url)}),this.socket.on("disconnect",()=>{i.b.info("Disconnected from %s",this.url)}),setTimeout(()=>{this.socket.connected||(i.b.warn("Did not connect to socket server %s",this.url),process.exit(1))},5e3)}}},function(t,n,e){"use strict";e.r(n);var r=e(18),o=e.n(r),i=(e(31),e(21),e(19)),u=e.n(i),c=e(57),a=e.n(c),s=e(58),f=e.n(s),l=e(5),p=e.n(l),d=e(0),v=e(59),h=e.n(v),y=e(3),b=e.n(y),x=e(60),g=e.n(x),w=e(30),_=e.n(w),j=e(61),m=e.n(j),O=e(62),S=e.n(O),k=e(63),P=e.n(k),A=e(64),E=e.n(A);function C(t,n){C=function(t,n){return new c(t,n)};var e=u()(RegExp),r=RegExp.prototype,i=new WeakMap;function c(t,n){var r=e.call(this,t);return i.set(r,n),r}function a(t,n){var e=i.get(n);return Object.keys(e).reduce((function(n,r){return n[r]=t[e[r]],n}),Object.create(null))}return o()(c,e),c.prototype.exec=function(t){var n=r.exec.call(this,t);return n&&(n.groups=a(n,this)),n},c.prototype[Symbol.replace]=function(t,n){if("string"==typeof n){var e=i.get(this);return r[Symbol.replace].call(this,t,n.replace(/\$<([^>]+)>/g,(function(t,n){return"$"+e[n]})))}if("function"==typeof n){var o=this;return r[Symbol.replace].call(this,t,(function(){var t=[];return t.push.apply(t,arguments),"object"!=typeof t[t.length-1]&&t.push(a(t,o)),n.apply(this,t)}))}return r[Symbol.replace].call(this,t,n)},C.apply(this,arguments)}n.default=new class{setCoreReference(t){this.core=t}handleConfig(t){this.host=t.vlcApiHost,this.user=t.vlcApiUser,this.password=t.vlcApiPassword,this.port=t.vlcApiPort,this.youtubeDlPath=t.youtubeDlPath,this.youtubeDlCookieFile=t.youtubeDlCookieFile,this.downloadFolder=t.videoDownloadFolder}init(){this.socket=this.core.plugins.socketClient.socket,this.got=this.core.got.extend({baseUrl:"http://".concat(this.host,"/requests"),auth:"".concat(this.user,":").concat(this.password),throwHttpErrors:!1,retry:{retries:3,errorCodes:["ETIMEDOUT"," ECONNRESET","EADDRINUSE","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"]},json:!0,port:this.port}),this.socket.on("getVlcState",async t=>{try{const n=await this.getState();return n?void t(n):void t("noVlc")}catch(n){return d.b.error("Error in getVlcState handler: %s",n),void t(!1)}}),this.socket.on("getVlcVideo",async t=>{try{const n=await this.getState();if(!n)return void t("noVlc");if(0>n.currentplid)return void t("noVideo");const e=await this.getCurrentVideoPath();if(!e)return void t("videoNotOnDisk");const r=await this.getMetaForVideo(e);if(!r)return void t("noInfoFound");const{size:o}=await b.a.stat(e);return void t({videoInfo:r,videoFile:e,videoSize:o,vlcState:n})}catch(n){return d.b.error("Error in getVlcVideo handler: %s",n),void t(!1)}}),this.socket.on("sendVlcCommand",async(t,n)=>{try{return void n(await this.sendCommand(t))}catch(t){return d.b.error("Error in sendVlcCommand handler: %s",t),void n(!1)}}),this.socket.on("queueInfo",async({videoId:t,videoInfo:n,downloadFormat:e})=>{try{n.videoId=t,n.downloadFormat=e,await this.download(n)}catch(t){d.b.error("Error in queueInfo handler: %s",t)}}),this.socket.on("fetchVideoInfo",async(t,n)=>{try{var e;const r=(e=(await _()(this.youtubeDlPath,["--no-color","--ignore-config","--netrc","--cookies",this.youtubeDlCookieFile,"--dump-single-json",t])).stdout,JSON.parse(e));return d.b.info("Successfully fetched video info for the server"),void n(r)}catch(e){return d.b.error("Tried backup method of fetching video info of %s for the server, failed.\n%s",t,e),void n(!1)}}),this.socket.on("playVideo",(t,n)=>this.handlePlayVideo(t,n)),d.b.info("VLC is initialized")}async handlePlayVideo({videoFile:t,timestamp:n},e){try{await this.got("playlist.json?command=in_play&input=file:///".concat(t)),d.b.info("Playing %s",t);const r=n-1e4;if(r>0){const t=Math.floor(r/1e3);d.b.info("Skipping to second %s",t),await this.sendCommand({command:"seek",val:"".concat(t,"s")})}return void e(!0)}catch(t){return d.b.error("Error in handlePlayVideo: %s",t),void e(!1)}}getPathsFromVideoInfo(t){const n=(r=t.title.replace(/([#$%&.])/g,""),S()(r)),e=p.a.join(this.downloadFolder,String(t.videoId));var r;return{safeTitle:n,downloadFolder:e,downloadFile:p.a.join(e,t.height?"".concat(t.height,"p"):"video"),infoFile:p.a.join(e,"info.json")}}async download(t){try{var n;const{infoFile:r,downloadFile:o,downloadFolder:i}=this.getPathsFromVideoInfo(t);var e;d.b.debug("Preparing video: %s",t.title),await b.a.pathExists(r)||(await b.a.outputJson(r,(e=t,E()(e))),this.socket.emit("setInfoFile",{infoFile:r,videoId:t.videoId}));const u=await _()(this.youtubeDlPath,["--no-color","--ignore-config","--abort-on-error","--netrc","--format",t.downloadFormat,"--cookies",this.youtubeDlCookieFile,"--mark-watched","audio-quality",1,"--load-info-json",r,"--output",o]);u.failed?d.b.error("Video download may have failed\nCommand: %s\nCode: %s\nOutput: %s",u.command,u.exitCode,u.all):d.b.info("Executed %s",u.command);const c=m()(["webm","mp4","mkv","avi","flv","mp3","flac","wav","aac","3gp"],{absolute:!0,cwd:i});if(!c)throw new Error("Could not find download file in ".concat(i));const a=(await b.a.stat(c)).size;d.b.info("Downloaded %s to %s",(n=a,P()(n)),c),this.socket.emit("videoDownloaded",{videoId:t.videoId,bytes:a,infoFile:r,videoFile:c})}catch(n){d.b.error('Failed to download #%s "%s": %s',t.videoId,t.title,n)}}async queueFile(t){await this.got("playlist.json?command=in_play&input=file:///".concat(t)),d.b.info("Playing %s",t)}async getState(){try{const{body:t}=await this.got("status.json");return t}catch(t){return d.b.error("Could not get VLC state\n%s",t),null}}async getPlaylist(){try{const{body:t}=await this.got("playlist.json");return t.children.find(({name:t})=>"Playlist"===t)}catch{return null}}async getCurrentVideo(){const t=await this.getState(),n=await this.getPlaylist();return t&&n&&n.children.find(({id:n})=>Number(n)===t.currentplid)||null}async getLastVideo(){var t;const n=await this.getState(),e=await this.getPlaylist();return n&&e&&(t=f()(e.children,"id"),a()(t))||null}async getCurrentVideoPath(){var t;const n=await this.getCurrentVideo();if(!n)return null;const e=(t=g()(n.uri,"file:///"),h()(t));return await b.a.pathExists(e)?e:null}async getMetaForVideo(t){try{if(!t&&!(t=await this.getCurrentVideoPath()))return null;const n=p.a.dirname(t),e=p.a.join(n,"info.json");return await b.a.pathExists(e)?await b.a.readJson(e):null}catch(t){d.b.warn(t)}}async sendCommand(t){try{return await this.got("status.json",{query:t}),!0}catch{return null}}async sendStatusToServer(){try{var t,n,e;if(!this.socket.connected)return;const o=await this.getState();if(!(null==o?void 0:o.length))return;let i;const u=null===(t=o.information)||void 0===t?void 0:null===(n=t.category)||void 0===n?void 0:null===(e=n.meta)||void 0===e?void 0:e.DURATION;if(u){var r;const t=null===(r=C(/([0-9]+):([0-9]+):([\.0-9]+)/,{hours:1,minutes:2,seconds:3}).exec(u))||void 0===r?void 0:r.groups;t?i=Number(t.seconds)+60*t.minutes+3600*t.hours:d.b.warn("Couldn't parse duration value %s",u)}i||(i=o.length);const c=Math.floor(1e3*i);this.socket.emit("vlcState",{durationMs:c,position:o.position,state:o.state,timestampMs:Math.floor(c*o.position),file:o.information.category.meta.filename})}catch(t){d.b.error("Could not send VLC heartbeat: %s",t)}}}},function(t,n,e){var r=e(32),o=e(75);t.exports=function t(n,e,i,u,c){var a=-1,s=n.length;for(i||(i=o),c||(c=[]);++a<s;){var f=n[a];e>0&&i(f)?e>1?t(f,e-1,i,u,c):r(c,f):u||(c[c.length]=f)}return c}},function(t,n,e){var r=e(6),o=e(22),i=e(2),u=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(u&&t&&t[u])}},function(t,n,e){var r=e(7),o=e(8);t.exports=function(t){return o(t)&&"[object Arguments]"==r(t)}},function(t,n,e){var r=e(6),o=Object.prototype,i=o.hasOwnProperty,u=o.toString,c=r?r.toStringTag:void 0;t.exports=function(t){var n=i.call(t,c),e=t[c];try{t[c]=void 0;var r=!0}catch(t){}var o=u.call(t);return r&&(n?t[c]=e:delete t[c]),o}},function(t,n){var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},function(t,n,e){var r=e(34),o=e(80),i=e(153),u=e(159),c=e(43),a=e(160),s=e(17);t.exports=function(t,n,e){var f=-1;n=r(n.length?n:[s],c(o));var l=i(t,(function(t,e,o){return{criteria:r(n,(function(n){return n(t)})),index:++f,value:t}}));return u(l,(function(t,n){return a(t,n,e)}))}},function(t,n,e){var r=e(81),o=e(140),i=e(17),u=e(2),c=e(150);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?u(t)?o(t[0],t[1]):r(t):c(t)}},function(t,n,e){var r=e(82),o=e(139),i=e(45);t.exports=function(t){var n=o(t);return 1==n.length&&n[0][2]?i(n[0][0],n[0][1]):function(e){return e===t||r(e,t,n)}}},function(t,n,e){var r=e(35),o=e(38);t.exports=function(t,n,e,i){var u=e.length,c=u,a=!i;if(null==t)return!c;for(t=Object(t);u--;){var s=e[u];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++u<c;){var f=(s=e[u])[0],l=t[f],p=s[1];if(a&&s[2]){if(void 0===l&&!(f in t))return!1}else{var d=new r;if(i)var v=i(l,p,f,t,n,d);if(!(void 0===v?o(p,l,3,i,d):v))return!1}}return!0}},function(t,n){t.exports=function(){this.__data__=[],this.size=0}},function(t,n,e){var r=e(10),o=Array.prototype.splice;t.exports=function(t){var n=this.__data__,e=r(n,t);return e>=0&&(e==n.length-1?n.pop():o.call(n,e,1),--this.size,!0)}},function(t,n,e){var r=e(10);t.exports=function(t){var n=this.__data__,e=r(n,t);return 0>e?void 0:n[e][1]}},function(t,n,e){var r=e(10);t.exports=function(t){return r(this.__data__,t)>-1}},function(t,n,e){var r=e(10);t.exports=function(t,n){var e=this.__data__,o=r(e,t);return 0>o?(++this.size,e.push([t,n])):e[o][1]=n,this}},function(t,n,e){var r=e(9);t.exports=function(){this.__data__=new r,this.size=0}},function(t,n){t.exports=function(t){var n=this.__data__,e=n.delete(t);return this.size=n.size,e}},function(t,n){t.exports=function(t){return this.__data__.get(t)}},function(t,n){t.exports=function(t){return this.__data__.has(t)}},function(t,n,e){var r=e(9),o=e(24),i=e(25);t.exports=function(t,n){var e=this.__data__;if(e instanceof r){var u=e.__data__;if(!o||199>u.length)return u.push([t,n]),this.size=++e.size,this;e=this.__data__=new i(u)}return e.set(t,n),this.size=e.size,this}},function(t,n,e){var r=e(36),o=e(94),i=e(11),u=e(37),c=Function.prototype,a=Object.prototype,s=c.toString,f=a.hasOwnProperty,l=RegExp("^"+s.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?l:/^\[object .+?Constructor\]$/).test(u(t))}},function(t,n,e){var r,o=e(95),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,n,e){var r=e(1)["__core-js_shared__"];t.exports=r},function(t,n){t.exports=function(t,n){return null==t?void 0:t[n]}},function(t,n,e){var r=e(98),o=e(9),i=e(24);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,n,e){var r=e(99),o=e(100),i=e(101),u=e(102),c=e(103);function a(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}a.prototype.clear=r,a.prototype.delete=o,a.prototype.get=i,a.prototype.has=u,a.prototype.set=c,t.exports=a},function(t,n,e){var r=e(12);t.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(t,n){t.exports=function(t){var n=this.has(t)&&delete this.__data__[t];return this.size-=n?1:0,n}},function(t,n,e){var r=e(12),o=Object.prototype.hasOwnProperty;t.exports=function(t){var n=this.__data__;if(r){var e=n[t];return"__lodash_hash_undefined__"===e?void 0:e}return o.call(n,t)?n[t]:void 0}},function(t,n,e){var r=e(12),o=Object.prototype.hasOwnProperty;t.exports=function(t){var n=this.__data__;return r?void 0!==n[t]:o.call(n,t)}},function(t,n,e){var r=e(12);t.exports=function(t,n){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=r&&void 0===n?"__lodash_hash_undefined__":n,this}},function(t,n,e){var r=e(13);t.exports=function(t){var n=r(this,t).delete(t);return this.size-=n?1:0,n}},function(t,n){t.exports=function(t){var n=typeof t;return"string"==n||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==t:null===t}},function(t,n,e){var r=e(13);t.exports=function(t){return r(this,t).get(t)}},function(t,n,e){var r=e(13);t.exports=function(t){return r(this,t).has(t)}},function(t,n,e){var r=e(13);t.exports=function(t,n){var e=r(this,t),o=e.size;return e.set(t,n),this.size+=e.size==o?0:1,this}},function(t,n,e){var r=e(35),o=e(39),i=e(115),u=e(119),c=e(134),a=e(2),s=e(40),f=e(42),l="[object Object]",p=Object.prototype.hasOwnProperty;t.exports=function(t,n,e,d,v,h){var y=a(t),b=a(n),x=y?"[object Array]":c(t),g=b?"[object Array]":c(n),w=(x="[object Arguments]"==x?l:x)==l,_=(g="[object Arguments]"==g?l:g)==l,j=x==g;if(j&&s(t)){if(!s(n))return!1;y=!0,w=!1}if(j&&!w)return h||(h=new r),y||f(t)?o(t,n,e,d,v,h):i(t,n,x,e,d,v,h);if(!(1&e)){var m=w&&p.call(t,"__wrapped__"),O=_&&p.call(n,"__wrapped__");if(m||O){var S=m?t.value():t,k=O?n.value():n;return h||(h=new r),v(S,k,e,d,h)}}return!!j&&(h||(h=new r),u(t,n,e,d,v,h))}},function(t,n,e){var r=e(25),o=e(111),i=e(112);function u(t){var n=-1,e=null==t?0:t.length;for(this.__data__=new r;++n<e;)this.add(t[n])}u.prototype.add=u.prototype.push=o,u.prototype.has=i,t.exports=u},function(t,n){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},function(t,n){t.exports=function(t){return this.__data__.has(t)}},function(t,n){t.exports=function(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(n(t[e],e,t))return!0;return!1}},function(t,n){t.exports=function(t,n){return t.has(n)}},function(t,n,e){var r=e(6),o=e(116),i=e(23),u=e(39),c=e(117),a=e(118),s=r?r.prototype:void 0,f=s?s.valueOf:void 0;t.exports=function(t,n,e,r,s,l,p){switch(e){case"[object DataView]":if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=n.byteLength||!l(new o(t),new o(n)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+n);case"[object Error]":return t.name==n.name&&t.message==n.message;case"[object RegExp]":case"[object String]":return t==n+"";case"[object Map]":var d=c;case"[object Set]":var v=1&r;if(d||(d=a),t.size!=n.size&&!v)return!1;var h=p.get(t);if(h)return h==n;r|=2,p.set(t,n);var y=u(d(t),d(n),r,s,l,p);return p.delete(t),y;case"[object Symbol]":if(f)return f.call(t)==f.call(n)}return!1}},function(t,n,e){var r=e(1).Uint8Array;t.exports=r},function(t,n){t.exports=function(t){var n=-1,e=Array(t.size);return t.forEach((function(t,r){e[++n]=[r,t]})),e}},function(t,n){t.exports=function(t){var n=-1,e=Array(t.size);return t.forEach((function(t){e[++n]=t})),e}},function(t,n,e){var r=e(120),o=Object.prototype.hasOwnProperty;t.exports=function(t,n,e,i,u,c){var a=1&e,s=r(t),f=s.length;if(f!=r(n).length&&!a)return!1;for(var l=f;l--;){var p=s[l];if(!(a?p in n:o.call(n,p)))return!1}var d=c.get(t);if(d&&c.get(n))return d==n;var v=!0;c.set(t,n),c.set(n,t);for(var h=a;++l<f;){var y=t[p=s[l]],b=n[p];if(i)var x=a?i(b,y,p,n,t,c):i(y,b,p,t,n,c);if(!(void 0===x?y===b||u(y,b,e,i,c):x)){v=!1;break}h||(h="constructor"==p)}if(v&&!h){var g=t.constructor,w=n.constructor;g!=w&&"constructor"in t&&"constructor"in n&&!("function"==typeof g&&g instanceof g&&"function"==typeof w&&w instanceof w)&&(v=!1)}return c.delete(t),c.delete(n),v}},function(t,n,e){var r=e(121),o=e(122),i=e(26);t.exports=function(t){return r(t,i,o)}},function(t,n,e){var r=e(32),o=e(2);t.exports=function(t,n,e){var i=n(t);return o(t)?i:r(i,e(t))}},function(t,n,e){var r=e(123),o=e(124),i=Object.prototype.propertyIsEnumerable,u=Object.getOwnPropertySymbols,c=u?function(t){return null==t?[]:(t=Object(t),r(u(t),(function(n){return i.call(t,n)})))}:o;t.exports=c},function(t,n){t.exports=function(t,n){for(var e=-1,r=null==t?0:t.length,o=0,i=[];++e<r;){var u=t[e];n(u,e,t)&&(i[o++]=u)}return i}},function(t,n){t.exports=function(){return[]}},function(t,n,e){var r=e(126),o=e(22),i=e(2),u=e(40),c=e(27),a=e(42),s=Object.prototype.hasOwnProperty;t.exports=function(t,n){var e=i(t),f=!e&&o(t),l=!e&&!f&&u(t),p=!e&&!f&&!l&&a(t),d=e||f||l||p,v=d?r(t.length,String):[],h=v.length;for(var y in t)!n&&!s.call(t,y)||d&&("length"==y||l&&("offset"==y||"parent"==y)||p&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||c(y,h))||v.push(y);return v}},function(t,n){t.exports=function(t,n){for(var e=-1,r=Array(t);++e<t;)r[e]=n(e);return r}},function(t,n){t.exports=function(){return!1}},function(t,n,e){var r=e(7),o=e(28),i=e(8),u={};u["[object Float32Array]"]=u["[object Float64Array]"]=u["[object Int8Array]"]=u["[object Int16Array]"]=u["[object Int32Array]"]=u["[object Uint8Array]"]=u["[object Uint8ClampedArray]"]=u["[object Uint16Array]"]=u["[object Uint32Array]"]=!0,u["[object Arguments]"]=u["[object Array]"]=u["[object ArrayBuffer]"]=u["[object Boolean]"]=u["[object DataView]"]=u["[object Date]"]=u["[object Error]"]=u["[object Function]"]=u["[object Map]"]=u["[object Number]"]=u["[object Object]"]=u["[object RegExp]"]=u["[object Set]"]=u["[object String]"]=u["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&o(t.length)&&!!u[r(t)]}},function(t,n,e){(function(t){var r=e(33),o=n&&!n.nodeType&&n,i=o&&"object"==typeof t&&t&&!t.nodeType&&t,u=i&&i.exports===o&&r.process,c=function(){try{return i&&i.require&&i.require("util").types||u&&u.binding&&u.binding("util")}catch(t){}}();t.exports=c}).call(this,e(41)(t))},function(t,n,e){var r=e(131),o=e(132),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return o(t);var n=[];for(var e in Object(t))i.call(t,e)&&"constructor"!=e&&n.push(e);return n}},function(t,n){var e=Object.prototype;t.exports=function(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||e)}},function(t,n,e){var r=e(133)(Object.keys,Object);t.exports=r},function(t,n){t.exports=function(t,n){return function(e){return t(n(e))}}},function(t,n,e){var r=e(135),o=e(24),i=e(136),u=e(137),c=e(138),a=e(7),s=e(37),f=s(r),l=s(o),p=s(i),d=s(u),v=s(c),h=a;(r&&"[object DataView]"!=h(new r(new ArrayBuffer(1)))||o&&"[object Map]"!=h(new o)||i&&"[object Promise]"!=h(i.resolve())||u&&"[object Set]"!=h(new u)||c&&"[object WeakMap]"!=h(new c))&&(h=function(t){var n=a(t),e="[object Object]"==n?t.constructor:void 0,r=e?s(e):"";if(r)switch(r){case f:return"[object DataView]";case l:return"[object Map]";case p:return"[object Promise]";case d:return"[object Set]";case v:return"[object WeakMap]"}return n}),t.exports=h},function(t,n,e){var r=e(4)(e(1),"DataView");t.exports=r},function(t,n,e){var r=e(4)(e(1),"Promise");t.exports=r},function(t,n,e){var r=e(4)(e(1),"Set");t.exports=r},function(t,n,e){var r=e(4)(e(1),"WeakMap");t.exports=r},function(t,n,e){var r=e(44),o=e(26);t.exports=function(t){for(var n=o(t),e=n.length;e--;){var i=n[e],u=t[i];n[e]=[i,u,r(u)]}return n}},function(t,n,e){var r=e(38),o=e(141),i=e(147),u=e(29),c=e(44),a=e(45),s=e(16);t.exports=function(t,n){return u(t)&&c(n)?a(s(t),n):function(e){var u=o(e,t);return void 0===u&&u===n?i(e,t):r(n,u,3)}}},function(t,n,e){var r=e(46);t.exports=function(t,n,e){var o=null==t?void 0:r(t,n);return void 0===o?e:o}},function(t,n,e){var r=e(143)((function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,(function(t,e,r,o){n.push(r?o.replace(/\\(\\)?/g,"$1"):e||t)})),n}));t.exports=r},function(t,n,e){var r=e(144);t.exports=function(t){var n=r(t,(function(t){return 500===e.size&&e.clear(),t})),e=n.cache;return n}},function(t,n,e){var r=e(25),o="Expected a function";function i(t,n){if("function"!=typeof t||null!=n&&"function"!=typeof n)throw new TypeError(o);var e=function(){var r=arguments,o=n?n.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var u=t.apply(this,r);return e.cache=i.set(o,u)||i,u};return e.cache=new(i.Cache||r),e}i.Cache=r,t.exports=i},function(t,n,e){var r=e(146);t.exports=function(t){return null==t?"":r(t)}},function(t,n,e){var r=e(6),o=e(34),i=e(2),u=e(15),c=r?r.prototype:void 0,a=c?c.toString:void 0;t.exports=function t(n){if("string"==typeof n)return n;if(i(n))return o(n,t)+"";if(u(n))return a?a.call(n):"";var e=n+"";return"0"==e&&1/n==-1/0?"-0":e}},function(t,n,e){var r=e(148),o=e(149);t.exports=function(t,n){return null!=t&&o(t,n,r)}},function(t,n){t.exports=function(t,n){return null!=t&&n in Object(t)}},function(t,n,e){var r=e(47),o=e(22),i=e(2),u=e(27),c=e(28),a=e(16);t.exports=function(t,n,e){for(var s=-1,f=(n=r(n,t)).length,l=!1;++s<f;){var p=a(n[s]);if(!(l=null!=t&&e(t,p)))break;t=t[p]}return l||++s!=f?l:!!(f=null==t?0:t.length)&&c(f)&&u(p,f)&&(i(t)||o(t))}},function(t,n,e){var r=e(151),o=e(152),i=e(29),u=e(16);t.exports=function(t){return i(t)?r(u(t)):o(t)}},function(t,n){t.exports=function(t){return function(n){return null==n?void 0:n[t]}}},function(t,n,e){var r=e(46);t.exports=function(t){return function(n){return r(n,t)}}},function(t,n,e){var r=e(154),o=e(14);t.exports=function(t,n){var e=-1,i=o(t)?Array(t.length):[];return r(t,(function(t,r,o){i[++e]=n(t,r,o)})),i}},function(t,n,e){var r=e(155),o=e(158)(r);t.exports=o},function(t,n,e){var r=e(156),o=e(26);t.exports=function(t,n){return t&&r(t,n,o)}},function(t,n,e){var r=e(157)();t.exports=r},function(t,n){t.exports=function(t){return function(n,e,r){for(var o=-1,i=Object(n),u=r(n),c=u.length;c--;){var a=u[t?c:++o];if(!1===e(i[a],a,i))break}return n}}},function(t,n,e){var r=e(14);t.exports=function(t,n){return function(e,o){if(null==e)return e;if(!r(e))return t(e,o);for(var i=e.length,u=n?i:-1,c=Object(e);(n?u--:++u<i)&&!1!==o(c[u],u,c););return e}}},function(t,n){t.exports=function(t,n){var e=t.length;for(t.sort(n);e--;)t[e]=t[e].value;return t}},function(t,n,e){var r=e(161);t.exports=function(t,n,e){for(var o=-1,i=t.criteria,u=n.criteria,c=i.length,a=e.length;++o<c;){var s=r(i[o],u[o]);if(s)return a>o?s*("desc"==e[o]?-1:1):s}return t.index-n.index}},function(t,n,e){var r=e(15);t.exports=function(t,n){if(t!==n){var e=void 0!==t,o=null===t,i=t==t,u=r(t),c=void 0!==n,a=null===n,s=n==n,f=r(n);if(!a&&!f&&!u&&t>n||u&&c&&s&&!a&&!f||o&&c&&s||!e&&s||!i)return 1;if(!o&&!u&&!f&&n>t||f&&e&&i&&!o&&!u||a&&e&&i||!c&&i||!s)return-1}return 0}},function(t,n,e){var r=e(17),o=e(163),i=e(165);t.exports=function(t,n){return i(o(t,n,r),t+"")}},function(t,n,e){var r=e(164),o=Math.max;t.exports=function(t,n,e){return n=o(void 0===n?t.length-1:n,0),function(){for(var i=arguments,u=-1,c=o(i.length-n,0),a=Array(c);++u<c;)a[u]=i[n+u];u=-1;for(var s=Array(n+1);++u<n;)s[u]=i[u];return s[n]=e(a),r(t,this,s)}}},function(t,n){t.exports=function(t,n,e){switch(e.length){case 0:return t.call(n);case 1:return t.call(n,e[0]);case 2:return t.call(n,e[0],e[1]);case 3:return t.call(n,e[0],e[1],e[2])}return t.apply(n,e)}},function(t,n,e){var r=e(166),o=e(169)(r);t.exports=o},function(t,n,e){var r=e(167),o=e(168),i=e(17),u=o?function(t,n){return o(t,"toString",{configurable:!0,enumerable:!1,value:r(n),writable:!0})}:i;t.exports=u},function(t,n){t.exports=function(t){return function(){return t}}},function(t,n,e){var r=e(4),o=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=o},function(t,n){var e=Date.now;t.exports=function(t){var n=0,r=0;return function(){var o=e(),i=16-(o-r);if(r=o,i>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(void 0,arguments)}}},function(t,n,e){var r=e(23),o=e(14),i=e(27),u=e(11);t.exports=function(t,n,e){if(!u(e))return!1;var c=typeof n;return!!("number"==c?o(e)&&i(n,e.length):"string"==c&&n in e)&&r(e[n],t)}}]);