// ==UserScript==
// @name Kinopoisk - Add to folder
// @namespace scriptomatika
// @author mouse-karaganda
// @description Добавить фильм в папку
// @license MIT
// @match https://www.kinopoisk.ru/film/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=kinopoisk.ru
// @version 1.1
// @grant none
// ==/UserScript==
(function() {
let $$ = unsafeWindow.__krokodil;
let $ = window.jQuery;
console.log('kinoscript :: Userscript run at == ', location.href);
let poisk = {};
let plugin = {
insertStyle: function() {
let styleText = [
'.styles_userFoldersContainer { text-align: center; margin-bottom: 24px; }',
'.styles_userFoldersContainer a { color: #3bb33b; text-align: center; text-decoration: none; font-weight: bold; }',
'.styles_userFoldersContainer a:hover { color: #266fff; }',
'.styles_userFoldersContainer iframe { width: 0; height: 0; border: 0; w_display: none; }',
'.styles_userFoldersContainer iframe { width: 280px; height: 280px; }'
];
$('<style type="text/css">').appendTo(document.head)
.text(styleText.join('\n'));
},
createFolders: function() {
let foldersMenu = $('div[class*=styles_foldersMenu]').parents('div[class*=styles_userControlsContainer]');
console.log('kinoscript :: foldersMenu = ', foldersMenu);
if (foldersMenu.length == 0) {
return;
}
poisk.section = $('<div />').insertBefore(foldersMenu).addClass('styles_userFoldersContainer styles_section');
poisk.link = $('<a href="#" />').appendTo(poisk.section).text('🔻 Список папок')
.on('click', plugin.openFolderList);
poisk.frame = $('<iframe />').appendTo(poisk.section);
},
openFolderList: function(evt) {
evt.preventDefault();
evt.stopPropagation();
$.get('/mykp/movies/', function(data) {
let ifrm = poisk.frame[0];
poisk.doc = (ifrm.contentWindow) ? ifrm.contentWindow.document : ifrm.contentDocument;
poisk.doc.open();
poisk.doc.write(data);
poisk.doc.close();
window.pok = poisk;
console.log('kinoscript :: openFolderList doc = ', poisk.doc);
let frameGetter = () => poisk.frame.contents().find("ul#folderList li");
let frameReader = (list) => {
console.log('kinoscript :: openFolderList ul = ', list);
let mapList = list.map((index, item) => {
let elem = $(item);
let result = {
id: elem.data('id'),
name: elem.find('a').text(),
raw: item
};
if (result.name == '') {
let match = elem.find('.nameAndNum').text().trim().match(/(.+) \(\d+\)/);
if (match) {
result.name = match[1];
}
}
return result;
});
console.log('kinoscript :: openFolderList map = ', mapList);
};
plugin.missingElement(frameGetter, frameReader);
});
},
missingElement: function(elemGetter, callback) {
// Итерации 10 раз в секунду
let missingOne = 100;
// Ограничим количество попыток разумными пределами
let maxIterCount = 3000;
let elemTimer;
let iterCount = 0;
let missingHandler = () => {
let elemList = elemGetter();
// Определим, что вышел элемент
let elemStop = (elemList.length > 0);
// Определим, что кончилось количество попыток
let iterStop = (iterCount >= maxIterCount);
if (elementStop || iterStop) {
clearInterval(elemTimer);
// Если элемент так и не появился
if (!elementStop && iterStop) {
alert('Нет элемента');
return;
}
if (elemList.length == 1) {
elemList = elemList.eq(0);
}
callback.call(window, elemList);
}
iterCount++;
};
elemTimer = setInterval(missingHandler, missingOne);
},
checkLibrary: function () {
if ($) {
plugin.afterLoad();
} else {
let tagJS = document.createElement('script');
tagJS.src = [
'https://kinopoisk-ru.clstorage.net/y14jW9200/2e7f125Abj/j-wGvp0kfqLwDa29G0MN_FJDWTAcbisVPvX4ta-ytMC3jApXxnNGOpsuEQMMaHvj5JQK57-KpH4BrrZLGe5FosamC6KKZG',
'nLgSec0T1tMdFwcjkpDm0qFCS04aCuv6jZ6tAVe6YlESb6PDVyOR887sTrBrjd-fMCS9SpJgLKNNC00kzo6B5-0JARsMUzYSL3Q1MZOT9bVwYkuO2IrJyw4Kf7LEapTBoN9SASTAoHCMjNyT6I2_fn',
'IkvEhiYJxAPevfdT4PkZW8CwLo_wN3YR81N-NhwMXHE-KrnItomQrceP6SRpunUyN8srFmITCQb9z9MdlOXK8R9S37IlM8sn8LT0UfzVAWfelh62wRVbNctkSjgzMW5iJQuWxoGUnILwj-gWYJFRHB',
'DUDilbBxYPzcX6HofZ7sUPWuu7JBDEKN250Vfy-Dpr1pIzjPINcwfuWWwnJC1DVgoisv6DrIWP-5D4NmqrYQwSyS0GVCQBO-rqyT6V3vHYA1DTgiEz3hzEkdRbwv4FZtyJI7D1DVYb2WVPAjQDY34l',
'C6nvnqu_ifes1il1k1YeENQwBGQMPhjM4uM_vcXNyTR_6rwhEsUkz4rbTPr_G2zBjSyk-il7Est7bQANC3hUKTmPwpGAvp35gNgET7tBGi3IBDlQBgIZx_XvDbL61tM6RO2kPBfgEeSt3V7k8Q5b_K',
'cHq9YncC76eVQtOy9gSg0rseWFkpmi57XMGmayczQvyzAHYiogEN3I0BiS3uTRKlXPiiYv_Tbht_dq4PEYYeayB6rjCXIz-3RxBA0KU1U4OrXHtKaTuPCMzwlKg1EeG98mOUcsFBnq6fk8hcjn0jxS',
'5p0FPcQC77frc-v6JGj6nSqY0gNWJ-JwbD0EDVx-Dyuy4qWXvrL0vfctUJJfCRTjMCFMMScEy8jKBrHA0vgmaPC0OineOPiW8nvH-CFBzYgei9oGVzTCUmgYFy9rVBI-k8eajIe416PJBXSOVik93i',
'0fdCc_Der36B6_-dzIAWP6qwku_RfGuM5p5sQvbPKbArjFFk4h3FZMORAPQ2A8O7LAqpGHlcex9QVNk0g9BukuIUMIHQHu_ugahuj-8gJc8IYWD-8L5q3Ye8nnElvQrCea9BJYDMtFbC4fPU5oES6v',
'7JuQuY3TkPAEdZV8Ky7CDydjOjAu5-_QAKPu8M4_YNe9ADbeBu-76k_66zp_9bQhrN4xQw_wZFkyOjtwTjUem8u8rL642K34NGKfSg0ZxjIxZiAlGfTt9SW-2u_eCkT3lRsUwDrEiOxM2N42TdabLK',
'39B0kV4l5cBi8IT3EdGZfanoa5of-VzjNGt381K8MJHl0PJivM1_crocXH2BhpxqcZKN041YbaTcfbP0T_lAWn0BRaFuFnVgYfMF5NJQWuzb6xlLjKpccwbJtmDRvrLTNuIDsC5vboPbjn7NQ8Sc-e',
'OhjuCvmt7V7AyBt41oo3q_4aWjDocFIDGTdWRhsDvcyAg5m39ovwJ0yvRjcN3S8RfBEiA_HcxAe22cv_JWfKpwcc3xXuufhL-N4_ReC4J7jQDUcX31xPFAgQS04qP7Xvuq-9t_W-7DBHk0cjHPw4JH',
'UoOB3M_uMVnMfQ8ghIxqIqCOsf_ZzzctzLGmPEvQS1-CNbLc9EbhA5OnJPDACXzKWukJ_2oecYZrFNDhXLGhR0JzUKwun1DoTs5fYfUPacBxnpJN-J3ljp1wVhxLU3v9UMZCD6ZFcvLB5cdTE3j9ab',
'o7Ws8I_1BEmMcRU33hsXczo7OvXv9wKT4fTtHkP3uwovwTHlmNVTw8EgRdKSMar5EE0Z4HldJisJYkszBJfqtoC-n8qqyRJSvVA_K_4bBkEIIxHT0csmkv3W3wlXz4c9DfUV2ZzXRPnbDUPVpDGx8i',
'tlKM5xdDITK0xXFAi747Ssnpn8kOwPYZVuOSXbLBxgBTAhy-7RP6b__OwpSeudNCLaIfGv9FfC6h5kxqcHjPwlcgbaXlUGFBRDfh46q96zkL-595zDA0G1bA8O4S8SbBghJfDCwjyF_ufTGnP9giU9',
'2ALAkNF23tUWS8CuLbb8JFos21JCNg8SUn0JG7fEh6-Hi-GD9BRcn0oMPtgEN1wEOyDcw-EpttPT6A1-3IQZEOkU_Zvbaeb6L3_OigGx2jdmKuxeQxwTKlZrLRiV4J2Jjo3IoechbrBDMjPkCx13DQ',
'UTy-HnCZrs8OgHYNOLNR7NGMOuxl_09RZi3LcQmtcaagvfQ04eLjhoTzIkk8SRtqOv_K7WJk-NTjM46AI5RCgUCOHIyymqxsf3B3TphD8P2Qf2qtNlwus_ZdCPJKnnIHsP02VyMQkKSkYxO6jrgqme',
'ruaQxwxctXUdHsgLAV4YNQ3wzNYMhf7LzwpD9Z8fHdU39I3oW8X3JmL6igG1xxtpM_pkUDkaFn5pERuD97G0gJHEsOAyRa5oEBX1OR19JyEh4u_HAJnd9e0CYd2eITDDAvmY_H_Q0RFDxq4qldYSZT',
'fWQXkFGBt_TBMZjeGEkZ2RxK_BB06TSxcT5CAjTxgzDOD_ySqm-_LtBljUvx8Q3wLapt1r-9E_Z_qxL7TdKVMR0mdTLjYadUAOJLnpnrmTqeGp1ghwqUINGv8OIX05FSDOwuoHvP_7yipFyYo1CdgG',
'8pbaRebXFkPBuien4wdFOuxaTRAWLW9KOAWV4IKsnpL4pvoLVJpwNSboBhhgPRoj49z2F5fA1tACXN-5GyDvF-Gx1UvX2yJvxLEku8cJZyLofmwZNg1OThQMicifq7ev8YjpGEGUUT8a9CY0eDo7M_',
'fg4wmy3fb8PEvshQk8zgLkhcl32Pg_QOO6Fp71KngL3nBsGjk8U146Ca_DhbSXmMON-glGiEIBO9onEmcAGTzsycUsgvHSyAtB1pUEKvg42Jr1Wv_RLXPMsQuM6xh4LP9Qaxk7HFNxGTmu-pyQuLD5',
'ntYMQ61DMAjdIhlvLDcPz9_QJrno-dQDfeo'
].join();
tagJS.onload = plugin.afterLoad;
document.body.append(tagJS);
}
},
afterLoad: function () {
//window.jQuery.noConflict();
$ = window.jQuery;
console.log('kinoscript :: jQuery = ', $);
plugin.insertStyle();
plugin.createFolders();
},
start: function() {
plugin.checkLibrary();
}
};
plugin.start();
console.log('Kinopoisk - Add to folder 💬 1.1');
})();