'
// СЕРВЕРЫ
var servers = {
"List": {
"0": "185.231.155.125",
"1": "94.103.86.206",
"2": "185.209.28.172",
"3": "109.172.88.237",
"4": "212.34.151.5"
},
"load": {
"0": "0",
"1": "0",
"2": "0",
"3": "0",
"4": "0"
},
"port": {
"0": "9098",
"1": "9098",
"2": "8080",
"3": "9098",
"4": "8080"
},
"alias": {
"0": "rus",
"1": "rus",
"2": "rus",
"3": "rus",
"4": "ams"
},
"min": ""
}
/*
* ФУНКЦИИ
*/
// Функция для создания наблюдателя за ошибкой сервера
function observeErrorElement() {
// Целевой узел для наблюдения (в данном случае body)
var targetNode = document.body;
// Конфигурация наблюдателя
var config = {
childList: true, // Отслеживать добавление/удаление дочерних элементов
subtree: true // Отслеживать изменения во всем поддереве
};
// Callback-функция, которая будет вызываться при изменениях
var callback = function(mutationsList) {
for (var i = 0; i < mutationsList.length; i++) {
var mutation = mutationsList[i];
// Проверяем добавленные узлы
if (mutation.addedNodes.length) {
for (var j = 0; j < mutation.addedNodes.length; j++) {
var node = mutation.addedNodes[j];
// Проверяем, является ли добавленный элемент нашим div.error
if (node.nodeType === 1 && node.className === 'error') {
// Здесь можно добавить свою логику обработки
handleErrorElement(node);
}
}
}
}
};
// Создаем наблюдателя
var observer = new MutationObserver(callback);
// Начинаем наблюдение
observer.observe(targetNode, config);
// Функция для остановки наблюдения (если нужно)
return {
disconnect: function() {
observer.disconnect();
}
};
}
// Функция обработки найденного элемента
function handleErrorElement(element) {
// Здесь можно добавить дополнительную логику, проверить текст ошибки?
Lampa.Noty.show('Меняем сервер!')
// Находим индекс проблемного сервера
var failedServer = servers.min;
var failedIndex;
for (var key in servers.List) {
if (servers.List.hasOwnProperty(key)) {
if (servers.List[key] === failedServer) {
failedIndex = key;
// Устанавливаем load = 100 для проблемного сервера
servers.load[failedIndex] = 100; //число, не строка
// показываем логи
setTimeout(function(){ $('.error__body').append($('
')
$('.torrent-list').prepend(selectedServer);
}, 1000)
}
if (Lampa.Activity.active().lampac_id == "black") {
// лечим случайный переход на неактивный балансер
setTimeout(function(){
var titleElement = $('.online-empty__title');
var textContent = titleElement.textContent || titleElement.innerText || titleElement.text();
if (titleElement && textContent.indexOf('Abcinema_bot') !== -1){
var source = document.querySelector('.torrent-filter').find('.filter--sort');
Lampa.Controller.focus(source);
Navigator.focus(source);
Lampa.Controller.enter();
setTimeout(function(){
var selectbox = document.querySelectorAll('.selectbox-item')[0];
Lampa.Controller.focus(selectbox);
Navigator.focus(selectbox);
Lampa.Controller.enter();
}, 100)
}
}, 1000)
}
}
// упрощаем ввод пароля
if (event.name == 'torrserver_login') {
Lampa.Storage.set('torrserver_password', Lampa.Storage.get('torrserver_login'));
Lampa.Settings.update();
Lampa.Controller.focus(document.querySelector('div[data-name="torrserver_password"]'));
Navigator.focus(document.querySelector('div[data-name="torrserver_password"]'));
}
});
/*
* ГОТОВИМ НАСТРОЙКИ - Задаём показатели нагрузки в меню *
*/
Lampa.Controller.listener.follow('toggle', function(e) {
if(e.name == 'select') {
setTimeout(function() {
// статистика серверов
if ($(".selectbox-item__title")[0].innerText.match(/185.231.155.125/i)) {
for (var i = 0; i <= Object.keys(servers.List).length - 1; i++) {
var elemSPAN = document.createElement('span');
if (cpuUSE) elemSPAN.innerText = JSON.parse(servers.load[i]) + '%';
else elemSPAN.innerText = JSON.parse(parseInt(100*servers.load[i]/800)) + '%';
elemSPAN.style.float = "right"
$('.selectbox-item__title')[i].appendChild(elemSPAN);
}
}
// прячем неактивные балансеры с авторизацией
if (Lampa.Activity.active().lampac_id == "black") {
var elements = document.getElementsByClassName('selectbox-item__title');
for (var i = elements.length - 1; i >= 0; i--) {
var titleElement = elements[i];
var parentElement = titleElement.parentNode;
var styleAttr = parentElement.getAttribute('style');
var textContent = titleElement.textContent || titleElement.innerText; // для кросс-браузерности
var hasMatchingText = textContent.indexOf('KinoPub') !== -1 || textContent.indexOf('Filmix') !== -1;
if ((styleAttr && styleAttr.indexOf('opacity: 0.5') !== -1) || hasMatchingText) {
parentElement.parentNode.removeChild(parentElement);
}
}
Lampa.Controller.move('up');
}
}, 30);
}
if(e.name == 'settings') {
setTimeout(function() {
$('div[data-component="add_people_server"]').insertAfter($('div[data-component="server"]'));
}, 20);
}
});
/*
* ПЕРЕКЛЮЧЕНИЕ СЕРИЙ ПУЛЬТОМ *
*/
Lampa.Keypad.listener.follow('keydown', function (e) {
var next = (e.code == 427 || e.code == 33);
var prev = (e.code == 428 || e.code == 34);
var none = !$('.panel--visible .focus').length && Lampa.Controller.enabled().name !== 'select';
if (e.code == 415 && !Lampa.Player.opened()) { // Play вызывает поиск
if (document.body.classList.contains('search--open')) Lampa.Search.close();
Lampa.Search.open({input: ''})
if (document.querySelector('.focus')) {
setTimeout(function(){
Lampa.Controller.enter();
}, 200)
}
}
if (e.code == 19 && !Lampa.Player.opened()) Lampa.Controller.enter(); // Пауза как Enter
if (Lampa.Storage.get('useRemoteTorrent') && Lampa.Activity.active().component == 'torrents' && Lampa.Player.opened()) {
if (prev && none) {
Lampa.PlayerPlaylist.prev();
}
if (next && none) {
Lampa.PlayerPlaylist.next();
}
}
});
/*
* МЕНЮ НАСТРОЕК
*/
Lampa.SettingsApi.addComponent({
component: 'add_people_server',
name: 'Народный TorrServer', //Задаём название меню
icon: ''
});
/* КОМПОНЕНТ
Lampa.Settings.listener.follow('open', function (e) {
if (e.name == 'main') {
Lampa.SettingsApi.addComponent({
component: 'add_people_server',
name: 'people_server'
});
setTimeout(function() {
$('div[data-component="add_people_server"]').remove();
}, 10);
}
});
*/
/* Головной раздел - ПАПКА
Lampa.SettingsApi.addParam({
component: 'server',
param: {
name: 'add_people_server',
type: 'static',
default: true
},
field: {
name: icon_people_server
},
onRender: function(item) {
setTimeout(function() {
if($('div[data-static="true"]').length > 1) item.hide();
$('div[data-static="true"]').insertAfter('div[data-name="torrserver_use_link"]');
}, 20);
item.on('hover:enter', function () {
Lampa.Settings.create('add_people_server');
Lampa.Controller.enabled().controller.back = function(){
Lampa.Settings.create('server');
}
});
}
});
*/
/*
* Дочерние элементы *
*/
/* ТРИГГЕР - ВКЛ и ВЫКЛ */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'usePeopleServer',
type: 'trigger',
class: 'hide',
default: false
},
field: {
name: 'Народный ТоррСервер',
description: 'Разрешить использование'
},
onChange: function(value) {
if (Lampa.Storage.get('usePeopleServer') == true) Lampa.Storage.set('torrserver_auth', true);
if (Lampa.Storage.get('usePeopleServer') == false) Lampa.Storage.set('torrserver_auth', false);
Lampa.Settings.update();
},
onRender: function (item) {//$('.settings-param__name', item).css('color','f3d900');
setTimeout(function() {
if (Lampa.Storage.get('usePeopleServer') == false) {$('div[data-name="search_button"]').hide()} else {$('div[data-name="search_button"]').show()};
if (Lampa.Storage.get('usePeopleServer') == false) {$('div[data-name="auto_manual"]').hide()} else {$('div[data-name="auto_manual"]').show()};
if (Lampa.Storage.get('usePeopleServer') == false) {$('div[data-name="torrserver_manual"]').hide()} else {$('div[data-name="torrserver_manual"]').show()};
if (Lampa.Storage.get('usePeopleServer') == false) {$('div[data-name="usePeopleServer_auto"]').hide()} else {$('div[data-name="usePeopleServer_auto"]').show()};
}, 0);
}
});
/* ЗАПРОС ДЕМО */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'torrserver_demo',
type: 'static',
default: ''
},
field: {
name: 'Запросить доступ для проверки сети',
description: 'Временный гостевой доступ, единоразово'
},
onRender: function (item) {
setTimeout(function() {
if(Lampa.Storage.get('usePeopleServer') !== true || Lampa.Storage.get('ptorrtrial')) item.hide();
$('.settings-param__name', item).css('color','f3d900');
}, 0);
item.unbind('hover:enter').bind('hover:enter', function() {
//
var network = new Lampa.Reguest();
var api = atob('aHR0cDovLzk0LjEwMy45MC4xNjcvYXBpL3RlbXAyNTAzMTYuanNvbg');
network.clear();
network.silent(api, function(result) {
Lampa.Storage.set('torrserver_login', atob(result.user), true);
Lampa.Storage.set('torrserver_password', atob(result.pass), true);
Lampa.Storage.set('ptorrtrial', true);
});
Lampa.Controller.move('up');
item.hide();
})
}
});
/* Разделитель */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'firstSeparator',
type: 'title',
},
field: {
name: 'Настройки Сервера',
description: 'не меняйте без необходимости'
},
onRender: function (item) {
setTimeout(function() {
if(Lampa.Storage.get('usePeopleServer') !== true) item.hide();
}, 0);
}
});
/* СПОСОБ ВЫБОРА СЕРВЕРА */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'auto_manual',
type: 'select',
values: {
0: 'Автовыбор',
1: 'Ручной'
},
default: 0
},
field: {
name: 'Выбор серверов',
description: 'Способ подбора сервера'
},
onChange: function (value) {
Lampa.Settings.update();
},
onRender: function (item) {
setTimeout(function() {
$('.settings-param__name', item).css('color','f3d900');
if (Lampa.Storage.get('usePeopleServer') !== true) item.hide();
if (!Lampa.Storage.field('auto_manual')) Lampa.Storage.set('auto_manual', '0');
}, 0);
},
onBack: function onBack() {
Lampa.Settings.update();
}
});
/* ПРЕДПОЧТИТЕЛЬНЫЙ СЕРВЕР */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'torrserver_manual',
type: 'select',
values: servers.List,
default: 0
},
field: {
name: 'Выбранный сервер',
description: 'Выберите предпочтительный сервер'
},
onChange: function (value) {
Lampa.Storage.set('torrserver_url', servers.List[value] + ':' + servers.port[value]);
},
onRender: function (item) {
setTimeout(function() {
$('.settings-param__name', item).css('color','f3d900');
if($('div[data-name="torrserver_manual"]').length > 1) item.hide();
if(localStorage.getItem('auto_manual') == '0') item.hide();
if (Lampa.Storage.get('usePeopleServer') !== true) item.hide();
$('div[data-name="torrserver_manual"]').insertAfter('div[data-name="auto_manual"]');
if (!localStorage.getItem('torrserver_manual')) Lampa.Storage.set('torrserver_url', servers.List[0] + ':' + servers.port[0]);
}, 0);
}
});
/* Разделитель */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'secondSeparator',
type: 'title',
},
field: {
name: 'Онлайн и плюшки',
description: ''
},
onRender: function (item) {
if (Lampa.Storage.get('usePeopleServer') !== true) item.hide();
}
});
/* ОНЛАЙН Cinema - ВКЛ и ВЫКЛ */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'useCinemaOnline',
type: 'trigger',
class: 'hide',
default: false
},
field: {
name: 'Онлайн Cinema',
description: ''
},
onChange: function(value) {
if (Lampa.Storage.get('useCinemaOnline') == true) {
callCinema();
};
if (Lampa.Storage.get('useCinemaOnline') == false) Lampa.Noty.show('Перезагрузите приложение');
Lampa.Settings.update();
},
onRender: function (item) {
setTimeout(function() {
if (typeof WebAssembly === "undefined") {
$('div[data-name="useCinemaOnline"]').hide();
}
if (Lampa.Storage.get('usePeopleServer') == false) {$('div[data-name="useCinemaOnline"]').hide()} else {$('div[data-name="useCinemaOnline"]').show()};
}, 0);
}
});
/* ОНЛАЙН Black - ВКЛ и ВЫКЛ */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'useBlackOnline',
type: 'trigger',
class: 'hide',
default: false
},
field: {
name: 'Онлайн Black',
description: ''
},
onChange: function(value) {
if (Lampa.Storage.get('useBlackOnline') == true && !document.black_started) {
callBlack();
};
if (Lampa.Storage.get('useBlackOnline') == false) Lampa.Noty.show('Перезагрузите приложение');
Lampa.Settings.update();
},
onRender: function (item) {
setTimeout(function() {
if (typeof WebAssembly === "undefined") {
$('div[data-name="useBlackOnline"]').hide();
}
if (Lampa.Storage.get('usePeopleServer') == false) {$('div[data-name="useBlackOnline"]').hide()} else {$('div[data-name="useBlackOnline"]').show()};
}, 0);
}
});
/* Разделитель */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'fourthSeparator',
type: 'title',
},
field: {
name: 'Для удобства использования',
description: ''
},
onRender: function (item) {
if (Lampa.Storage.get('usePeopleServer') !== true) item.hide();
}
});
/* ПРОКСИ - ВКЛ и ВЫКЛ */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'usePeopleProxy',
type: 'trigger',
class: 'hide',
default: false
},
field: {
name: 'Использовать прокси TMDB API',
description: ''
},
onChange: function(value) {
if (Lampa.Storage.get('usePeopleProxy') == true) {
Lampa.Storage.set('source', 'tmdb'); // основной источник
Lampa.Storage.set('proxy_tmdb', true); // использовать прокси
Lampa.TMDB.api = function(url) { // переопределяем прокси прокси API
var base = 'https://cors.nb557.workers.dev:8443/https://api.themoviedb.org/3/' + url;
return base;
};
/*
Lampa.TMDB.image = function(url) {
var base = 'https://cors.nb557.workers.dev:8443/https://image.tmdb.org/' + url;
return base;
};
*/
//Lampa.Storage.set('tmdb_proxy_image', 'img.lkpma.xyz'); //прокси картинок imagetmdb.kurwa-bober.ninja
//Lampa.Storage.set('tmdb_proxy_api', 'https://pris.cam/tmdb/api/');
};
if (Lampa.Storage.get('usePeopleProxy') == false) {
Lampa.Storage.set('proxy_tmdb', false);
localStorage.removeItem('proxy_tmdb');
localStorage.removeItem('tmdb_proxy_api');
localStorage.removeItem('tmdb_proxy_image');
Lampa.Noty.show('Перезагрузите приложение');
}
Lampa.Settings.update();
},
onRender: function (item) {
setTimeout(function() {
$('.settings-param__name', item).css('color','f3d900');
if (Lampa.Storage.get('usePeopleServer') !== true) item.hide();
}, 0);
}
});
/* ПЕРЕКЛЮЧЕНИЕ СЕРИЙ - ВКЛ и ВЫКЛ */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'useRemoteTorrent',
type: 'trigger',
class: 'hide',
default: false
},
field: {
name: 'Переключение серий пультом',
description: 'Кнопками смены каналов'
},
onChange: function(value) {
Lampa.Settings.update();
},
onRender: function (item) {
if (Lampa.Storage.get('usePeopleServer') !== true) item.hide();
}
});
/* КНОПКИ ПРОПУСКА СЕРИЙ - ВКЛ и ВЫКЛ */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'useSkipButtons',
type: 'trigger',
class: 'hide',
default: false
},
field: {
name: 'Кнопки пропуска вступления',
description: 'Для сериалов внизу встроенного плеера'
},
onChange: function(value) {
if (value){
var script = document.createElement('script');
script.src = 'http://94.103.90.167/skip';
document.head.appendChild(script);
}
Lampa.Settings.update();
},
onRender: function (item) {
if (Lampa.Storage.get('usePeopleServer') !== true) item.hide();
}
});
/* Кнопка Перезагрузки и Консоли*/
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'ReloadbuttonRe',
type: 'trigger', //доступно select,input,trigger,title,static
default: false
},
field: {
name: 'Добавить кнопку перезагрузки', //Название подпункта меню
description: 'Иконка рядом с часами' //Комментарий к подпункту
},
onChange: function(value) {
addReload();
//Lampa.Settings.update();
}
});
/* Контрастная рамка на торрентах */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'TORRENT_fixRe',
type: 'trigger', //доступно select,input,trigger,title,static
default: false
},
field: {
name: 'Контрастная рамка на торрентах', //Название подпункта меню
description: 'Улучшает восприятие при выборе торрента' //Комментарий к подпункту
},
onChange: function(value) {
torrentAround();
//Lampa.Settings.update();
}
});
/* Разделитель */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'fourthSeparator',
type: 'title',
},
field: {
name: 'Ваша учётная запись сервиса',
description: ''
},
onRender: function (item) {
if (Lampa.Storage.get('usePeopleServer') !== true) item.hide();
}
});
/* Дочерний элемент Пункты - ЛОГИН */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'torrserver_user',
type: 'static',
default: ''
},
field: {
name: 'Логин Аккаунта',
description: 'Укажите логин для доступа к серверам проекта'
},
onRender: function (item) {
setTimeout(function() {
if (Lampa.Storage.get('usePeopleServer') == false) item.hide();
var enabled = Lampa.Controller.enabled().name;
var value = Lampa.Storage.get('torrserver_login') ? Lampa.Storage.get('torrserver_login') : '';
item.on('hover:enter', function () {
Lampa.Input.edit({
title: "Укажите логин от Народного ТоррСервера",
value: value,
free: true
}, function (newValue) {
if (value !== newValue) Lampa.Storage.set('torrserver_login', newValue);
/*
else {
Lampa.Storage.set('torrserver_login', value);
Lampa.Controller.toggle('settings');
return;
}*/
Lampa.Controller.toggle(enabled);
//Lampa.Controller.toggle('settings');
}
)
})
}, 0);
}
})
/* Дочерний элемент Пункты - ПАРОЛЬ */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'torrserver_passw',
type: 'static',
default: ''
},
field: {
name: 'Выданный вам пароль',
description: 'Для доступа к серверам проекта'
},
onRender: function (item) {
setTimeout(function() {
if (Lampa.Storage.get('usePeopleServer') == false) item.hide();
var enabled = Lampa.Controller.enabled().name;
var value = Lampa.Storage.get('torrserver_password') ? Lampa.Storage.get('torrserver_password') : '';
item.on('hover:enter', function () {
Lampa.Input.edit({
title: "Укажите пароль от Народного ТоррСервера",
value: value,
free: true
}, function (newValue) {
if (value !== newValue) Lampa.Storage.set('torrserver_password', newValue);
Lampa.Controller.toggle(enabled);
/*
if (value == '') {
Lampa.Storage.set('torrserver_password', value);
Lampa.Controller.toggle('settings'); //content
return;
}*/
}
)
})
}, 0);
}
})
/* LINK
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'link',
type: 'static',
default: ''
},
field: {
name: 'Ссылка 1528',
description: ''
},
onRender: function (item) {
setTimeout(function() {
}, 0);
item.unbind('hover:enter').bind('hover:enter', function() {
qrGenerator();
})
}
});
*/
/* IPTV */
Lampa.SettingsApi.addParam({
component: 'add_people_server',
param: {
name: 'usePeopleIPTV',
type: 'trigger', //доступно select,input,trigger,title,static
default: false
},
field: {
name: 'Базовый IPTV', //Название подпункта меню
description: 'Бесплатное ТВ с архивом 14 дней' //Комментарий к подпункту
},
onChange: function(value) {
if (Lampa.Storage.get('usePeopleIPTV') == true) qrGenerator();
else {
var iptv_prefix = getNextIptvKey(); // префикс
localStorage.removeItem(iptv_prefix.prefix + '_iptv_list_url_' + iptv_prefix.toDelete);
localStorage.removeItem(iptv_prefix.prefix + '_iptv_list_name_' + iptv_prefix.toDelete);
}
//Lampa.Settings.update();
}
});
/*
* ВЫЗОВЫ ФУНКЦИЙ
*/
prepareFixer(); // чиним шаловливые ручки
checkLoad(); // первый вызов
setInterval(function(){checkLoad()}, 60000) // далее ежеминутно
addReload(); // кнопка перезагрузки
torrentAround(); // подсвечиваем торренты
observeErrorElement(); // Запускаем наблюдателя за ошибкой сервера var errorObserver = observeErrorElement()
// ставим must have плагины
callPlugin('http://cub.red/plugin/tracks', 'Плагин заменяет название аудиодорожек и субтитров в плеере, плагин работает только в торрентах.', false);
if (!window.lampa_settings.torrents_use) callPlugin('http://cub.red/plugin/etor', 'ТоррСервер и Парсер в Настройках', true);
// подрубаем парсеры, skip, fix
var injectList = [
'https://bylampa.github.io/jackett.js',
'http://193.233.134.21/fix'
];
if (Lampa.Storage.get('useSkipButtons')) injectList.push('http://94.103.90.167/skip');
if (Lampa.Storage.get('useCinemaOnline')) injectList.push('https://bylampa.github.io/cinema.js');
if (Lampa.Storage.get('useBlackOnline')) injectList.push('http://94.103.90.167/lampac_black');
injectPlugin(injectList);
// если iptv включено И плагин НЕ предустановлен, вызываем плагин, прячем пункт Дизель
if (Lampa.Storage.get('usePeopleIPTV') && getNextIptvKey().installed == false) init_IPTV();
} // закрываем функцию start
if (window.appready) start();
else {
Lampa.Listener.follow('app', function(e) {
if (e.type == 'ready') start();
})
}
})()
/* CHANGELOG
нужно ли скрывать Дизель
*/
/* TODO
удалять freetorr, мешает работе
https://iqslgbok.deploy.cx
https://cors.nb557.workers.dev:8443
модальное окно iptv
панель наблюдения
пустоты
speedtest
подсвечивать новичку
*/
/*
// if (parseInt(iptv_prefix.number) < 1 && document.querySelector('.js-diesel_iptv-menu' + iptv_prefix.number + '-title')) {
//document.querySelector('.js-diesel_iptv-menu' + iptv_prefix.number + '-title').text(Lampa.Storage.get(iptv_prefix.prefix + '_iptv_list_name_' + iptv_prefix.number))
// }
*/
/*
// Пример динамического добавления элемента для теста
setTimeout(function() {
var errorDiv = document.createElement('div');
errorDiv.className = 'error';
errorDiv.innerHTML = '' +
'
' +
'
Ошибка
' +
'
Не удалось получить HASH
' +
'
';
document.body.appendChild(errorDiv);
}, 2000);
*/
/*
Допустим Lampa.Settings.listener._listeners возвращает массив.
Допустим Lampa.Settings.listener._listeners.open[6] возвращает функцию
Lampa.Settings.listener.follow('open', function (e) {
if (e.name == 'main') {
if (e.name == 'parser') FreeJaketOpt();
}
});
внутри такой функции может быть разное содержимое, но меня интересует наличие
name == 'parser' внутри.
Я хочу перебрать все функции возвращаемые Lampa.Settings.listener._listeners,
определить те которые имеют совпадение на прослушивание события с признаками name == 'parser' или name == "parser",
и отписать эти функции от прослушивания события, чтобы они не срабатывали
*/
/*
torrents_filter
https://lampa.byskaz.ru/extensions
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/rawJSON
https://www.kinopoisk.ru/trailer/player/share/194970/
https://skaz.tv/vcdn.js
https://ass.hertebe.in/tmdb/img/ ... jpg?token=7zk5mk3M9ZnTsXXcX7QAn7CjyKTxFaDKwR5O27ldIFUSJ25csw
*/