mirror of
https://github.com/LukeSmithxyz/voidrice.git
synced 2026-03-20 01:37:45 +01:00
Add files via upload
This commit is contained in:
parent
b4313215e7
commit
74f866242e
235
.config/mpv/scripts/webtorrent.js
Normal file
235
.config/mpv/scripts/webtorrent.js
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
"use strict";
|
||||||
|
var __assign = (this && this.__assign) || function () {
|
||||||
|
__assign = Object.assign || function(t) {
|
||||||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||||
|
s = arguments[i];
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||||||
|
t[p] = s[p];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
return __assign.apply(this, arguments);
|
||||||
|
};
|
||||||
|
var __read = (this && this.__read) || function (o, n) {
|
||||||
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||||||
|
if (!m) return o;
|
||||||
|
var i = m.call(o), r, ar = [], e;
|
||||||
|
try {
|
||||||
|
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||||||
|
}
|
||||||
|
catch (error) { e = { error: error }; }
|
||||||
|
finally {
|
||||||
|
try {
|
||||||
|
if (r && !r.done && (m = i["return"])) m.call(i);
|
||||||
|
}
|
||||||
|
finally { if (e) throw e.error; }
|
||||||
|
}
|
||||||
|
return ar;
|
||||||
|
};
|
||||||
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
||||||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||||||
|
if (ar || !(i in from)) {
|
||||||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||||||
|
ar[i] = from[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return to.concat(ar || Array.prototype.slice.call(from));
|
||||||
|
};
|
||||||
|
var webTorrentRunning = false;
|
||||||
|
var active = false;
|
||||||
|
var initialyActive = false;
|
||||||
|
var overlayText = '';
|
||||||
|
var playlist = [];
|
||||||
|
// Sync with options in webtorrent.node.ts
|
||||||
|
var options = {
|
||||||
|
path: './',
|
||||||
|
maxConns: 100,
|
||||||
|
port: 8888,
|
||||||
|
utp: false,
|
||||||
|
dht: true,
|
||||||
|
// Text style. from stats.lua
|
||||||
|
font: 'sans',
|
||||||
|
font_mono: 'monospace',
|
||||||
|
font_size: 8,
|
||||||
|
font_color: 'FFFFFF',
|
||||||
|
border_size: 0.8,
|
||||||
|
border_color: '262626',
|
||||||
|
shadow_x_offset: 0.0,
|
||||||
|
shadow_y_offset: 0.0,
|
||||||
|
shadow_color: '000000',
|
||||||
|
alpha: '11',
|
||||||
|
// Node
|
||||||
|
node_path: 'node'
|
||||||
|
};
|
||||||
|
mp.options.read_options(options, 'stats');
|
||||||
|
mp.options.read_options(options);
|
||||||
|
options.path = mp.command_native(['expand-path', options.path]);
|
||||||
|
function keyPressHandler() {
|
||||||
|
if (active || initialyActive) {
|
||||||
|
clearOverlay();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
showOverlay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function showOverlay() {
|
||||||
|
initialyActive = false;
|
||||||
|
active = true;
|
||||||
|
printOverlay();
|
||||||
|
}
|
||||||
|
function printOverlay() {
|
||||||
|
if (!overlayText) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (active || initialyActive) {
|
||||||
|
var expanded = mp.command_native(['expand-text', overlayText]);
|
||||||
|
mp.osd_message(expanded, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function clearOverlay() {
|
||||||
|
active = false;
|
||||||
|
initialyActive = false;
|
||||||
|
mp.osd_message('', 0);
|
||||||
|
}
|
||||||
|
function openPlaylist() {
|
||||||
|
for (var i = 0; i < playlist.length; i++) {
|
||||||
|
var item = playlist[i];
|
||||||
|
if (!item) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (i === 0) {
|
||||||
|
mp.commandv('loadfile', item);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mp.commandv('loadfile', item, 'append');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onData(_data) {
|
||||||
|
overlayText = _data;
|
||||||
|
printOverlay();
|
||||||
|
}
|
||||||
|
function onPlaylist(_playlist) {
|
||||||
|
playlist = JSON.parse(_playlist);
|
||||||
|
openPlaylist();
|
||||||
|
}
|
||||||
|
function onInfo() {
|
||||||
|
var _a;
|
||||||
|
var _info = [];
|
||||||
|
for (var _i = 0; _i < arguments.length; _i++) {
|
||||||
|
_info[_i] = arguments[_i];
|
||||||
|
}
|
||||||
|
(_a = mp.msg).info.apply(_a, __spreadArray([], __read(_info), false));
|
||||||
|
}
|
||||||
|
function onFileLoaded() {
|
||||||
|
initialyActive = false;
|
||||||
|
if (!active) {
|
||||||
|
clearOverlay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onIdleActiveChange(name, idleActive) {
|
||||||
|
if (idleActive && playlist.length) {
|
||||||
|
mp.set_property('pause', 'yes');
|
||||||
|
setTimeout(openPlaylist, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onLoadHook() {
|
||||||
|
var url = mp.get_property('stream-open-filename', '');
|
||||||
|
try {
|
||||||
|
if (/^magnet:/i.test(url)) {
|
||||||
|
runHook(url);
|
||||||
|
}
|
||||||
|
else if (/\.torrent$/i.test(url)) {
|
||||||
|
runHook(url);
|
||||||
|
}
|
||||||
|
else if (/^[0-9A-F]{40}$/i.test(url)) {
|
||||||
|
runHook(url);
|
||||||
|
}
|
||||||
|
else if (/^[0-9A-Z]{32}$/i.test(url)) {
|
||||||
|
runHook(url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (_e) {
|
||||||
|
var e = _e;
|
||||||
|
mp.msg.error(e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function runHook(url) {
|
||||||
|
mp.msg.info('Running WebTorrent hook');
|
||||||
|
mp.set_property('stream-open-filename', 'null://');
|
||||||
|
if (webTorrentRunning) {
|
||||||
|
throw new Error('WebTorrent already running. Only one instance is allowed.');
|
||||||
|
}
|
||||||
|
var socketName = getSocketName();
|
||||||
|
var scriptPath = getNodeScriptPath();
|
||||||
|
webTorrentRunning = true;
|
||||||
|
initialyActive = true;
|
||||||
|
mp.set_property('idle', 'yes');
|
||||||
|
mp.set_property('force-window', 'yes');
|
||||||
|
mp.set_property('keep-open', 'yes');
|
||||||
|
mp.register_script_message('osd-data', onData);
|
||||||
|
mp.register_script_message('playlist', onPlaylist);
|
||||||
|
mp.register_script_message('info', onInfo);
|
||||||
|
mp.register_event('file-loaded', onFileLoaded);
|
||||||
|
mp.observe_property('idle-active', 'bool', onIdleActiveChange);
|
||||||
|
var args = __assign({ torrentId: url, socketName: socketName }, options);
|
||||||
|
mp.command_native_async({
|
||||||
|
name: 'subprocess',
|
||||||
|
args: [options.node_path, scriptPath, JSON.stringify(args)],
|
||||||
|
playback_only: false,
|
||||||
|
capture_stderr: true
|
||||||
|
}, onWebTorrentExit);
|
||||||
|
mp.add_key_binding('p', 'toggle-info', keyPressHandler);
|
||||||
|
}
|
||||||
|
function getSocketName() {
|
||||||
|
var socketName = mp.get_property('input-ipc-server');
|
||||||
|
if (!socketName) {
|
||||||
|
mp.set_property('input-ipc-server', "/tmp/webtorrent-mpv-hook-socket-".concat(mp.utils.getpid(), "-").concat(Date.now()));
|
||||||
|
socketName = mp.get_property('input-ipc-server');
|
||||||
|
}
|
||||||
|
if (!socketName) {
|
||||||
|
throw new Error("Couldn't get input-ipc-server");
|
||||||
|
}
|
||||||
|
return socketName;
|
||||||
|
}
|
||||||
|
function getNodeScriptPath() {
|
||||||
|
var _a, _b;
|
||||||
|
var realPath = mp.command_native({
|
||||||
|
name: 'subprocess',
|
||||||
|
args: [options.node_path, '-p', "require('fs').realpathSync('".concat(mp.get_script_file().replace(/\\/g, '\\\\'), "')")],
|
||||||
|
playback_only: false,
|
||||||
|
capture_stdout: true
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
var scriptPath = (_b = (_a = realPath.stdout.split(/\r\n|\r|\n/)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.replace(/webtorrent\.js$/, 'webtorrent.node.js');
|
||||||
|
if (!scriptPath) {
|
||||||
|
throw new Error();
|
||||||
|
}
|
||||||
|
return scriptPath;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
throw new Error("Failed to get node script path. Possible causes are \"".concat(options.node_path, "\" not available in path or incorrect symlink."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onWebTorrentExit(success, _result) {
|
||||||
|
webTorrentRunning = false;
|
||||||
|
overlayText = '';
|
||||||
|
clearOverlay();
|
||||||
|
var result = _result;
|
||||||
|
if (!success) {
|
||||||
|
mp.msg.error('Failed to start WebTorrent');
|
||||||
|
}
|
||||||
|
else if (result.stderr) {
|
||||||
|
mp.msg.error(result.stderr);
|
||||||
|
}
|
||||||
|
else if (result.status) {
|
||||||
|
mp.msg.error('WebTorrent exited with error');
|
||||||
|
}
|
||||||
|
mp.unregister_script_message('osd-data');
|
||||||
|
mp.unregister_script_message('playlist');
|
||||||
|
mp.unregister_script_message('info');
|
||||||
|
mp.unregister_event(onFileLoaded);
|
||||||
|
mp.unobserve_property(onIdleActiveChange);
|
||||||
|
mp.remove_key_binding('toggle-info');
|
||||||
|
}
|
||||||
|
mp.add_hook('on_load', 50, onLoadHook);
|
||||||
Loading…
x
Reference in New Issue
Block a user