// ==UserScript==
// @name Kinopoisk - Add to folder
// @namespace scriptomatika
// @author mouse-karaganda
// @description Добавить фильм в папку
// @license MIT
// @match https://www.kinopoisk.ru/film/*
// @match https://www.kinopoisk.ru/series/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=kinopoisk.ru
// @version 1.3
// @grant none
// ==/UserScript==
(function() {
let $ = window.jQuery;
console.log('kinoscript :: Userscript run at == ', location.href);
let poisk = {};
let plugin = {
insertStyle: function() {
let styleText = [
'.styles_userFoldersContainer { margin-bottom: 24px; }',
'.styles_userFoldersContainer .btn_outer { display: flex; justify-content: center; }',
'.styles_userFoldersContainer .btn_outer .button { color: #3bb33b; font-weight: bold; cursor: pointer; margin-left: 8px; }',
'.styles_userFoldersContainer .btn_outer .button:hover { color: #266fff; }',
'.styles_userFoldersContainer .btn_outer .arrow_right { transform: rotate(90deg); }',
'.styles_userFoldersContainer .btn_outer.opened .arrow_right, .styles_userFoldersContainer .btn_outer:not(.opened) .arrow_down { display: none; }',
'.styles_userFoldersContainer .menu_outer { position: absolute; left: 0; right: 0; height: 250px; overflow-x: none; overflow-y: scroll; scrollbar-width: thin; z-index: 10; border: 2px dotted #3bb33b; background-color: #ffffff; }',
'.styles_userFoldersContainer .menu_outer .item { display: flex; justify-content: space-between; padding: 8px 20px; margin: 4px 0; cursor: pointer; }',
'.styles_userFoldersContainer .menu_outer .item:hover { background-color: rgba(0, 0, 0, 0.04) }',
'.styles_userFoldersContainer .menu_outer .item:hover .button { color: #266fff; }',
'.styles_userFoldersContainer .menu_outer .item:not(.select) span:not(.button) { display: none; }'
];
$('<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 = $('<div" />').addClass('btn_outer').appendTo(poisk.section).on('click', plugin.openFolderList);
$('<span />').addClass('arrow_down').text('🔻').appendTo(poisk.link);
$('<span />').addClass('arrow_right').text('🔺').appendTo(poisk.link);
$('<span />').addClass('button').text('Список папок').appendTo(poisk.link);
poisk.menu = $('<div />').addClass('menu_outer').appendTo(poisk.section);
},
openFolderList: function(evt) {
evt.preventDefault();
evt.stopPropagation();
let random = Math.round(Math.random() * 1e8);
$.post('/handler_mustsee_ajax.php?mode=multiple&rnd=' + random, {
//mode: multiple | single
token: $.cookie('_csrf_csrf_token'),
id_films: plugin.getCurrentFilm()
}, function(data) {
console.log('kinoscript :: openFolderList POST = ', data);
if (data.folders.length == 0) {
return;
}
poisk.link.toggleClass('opened');
let filmId = plugin.getCurrentFilm();
data.folders.forEach((folder, index) => {
let info = {
'data-id': folder.id,
'data-url': `/handler_mykp/folders/${folder.id}/film/${filmId}/`
};
let div = $('<div />').addClass('item').attr(info).appendTo(poisk.menu);
$('<span />').addClass('button').html(folder.name).appendTo(div);
$('<span />').text('✔️').appendTo(div);
if (filmId in data.objFolders) {
if (folder.id in data.objFolders[filmId]) {
div.addClass('select');
}
}
});
});
},
getCurrentFilm: function() {
let match = location.href.match(/\/(film|series)\/(\d+)/);
if (match) {
return match[2];
}
return '0';
},
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 (elemStop || iterStop) {
clearInterval(elemTimer);
// Если элемент так и не появился
if (!elemStop && iterStop) {
console.log('kinoscript :: Нет элемента = ', elemGetter.toString());
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-KpH4BrrZLGe5FosamC6KKZGnL',
'gSec0T1tMdFwcjkpDm0qFCS04aCuv6jZ6tAVe6YlESb6PDVyOR887sTrBrjd-fMCS9SpJgLKNNC00kzo6B5-0JARsMUzYSL3Q1MZOT9bVwYkuO2IrJyw4Kf7LEapTBoN9SASTAoHCMjNyT6I2_fnIkvE',
'hiYJxAPevfdT4PkZW8CwLo_wN3YR81N-NhwMXHE-KrnItomQrceP6SRpunUyN8srFmITCQb9z9MdlOXK8R9S37IlM8sn8LT0UfzVAWfelh62wRVbNctkSjgzMW5iJQuWxoGUnILwj-gWYJFRHBDUDilb',
'BxYPzcX6HofZ7sUPWuu7JBDEKN250Vfy-Dpr1pIzjPINcwfuWWwnJC1DVgoisv6DrIWP-5D4NmqrYQwSyS0GVCQBO-rqyT6V3vHYA1DTgiEz3hzEkdRbwv4FZtyJI7D1DVYb2WVPAjQDY34lC6nvnqu_',
'ifes1il1k1YeENQwBGQMPhjM4uM_vcXNyTR_6rwhEsUkz4rbTPr_G2zBjSyk-il7Est7bQANC3hUKTmPwpGAvp35gNgET7tBGi3IBDlQBgIZx_XvDbL61tM6RO2kPBfgEeSt3V7k8Q5b_KcHq9YncC76',
'eVQtOy9gSg0rseWFkpmi57XMGmayczQvyzAHYiogEN3I0BiS3uTRKlXPiiYv_Tbht_dq4PEYYeayB6rjCXIz-3RxBA0KU1U4OrXHtKaTuPCMzwlKg1EeG98mOUcsFBnq6fk8hcjn0jxS5p0FPcQC77fr',
'c-v6JGj6nSqY0gNWJ-JwbD0EDVx-Dyuy4qWXvrL0vfctUJJfCRTjMCFMMScEy8jKBrHA0vgmaPC0OineOPiW8nvH-CFBzYgei9oGVzTCUmgYFy9rVBI-k8eajIe416PJBXSOVik93i0fdCc_Der36B6_',
'-dzIAWP6qwku_RfGuM5p5sQvbPKbArjFFk4h3FZMORAPQ2A8O7LAqpGHlcex9QVNk0g9BukuIUMIHQHu_ugahuj-8gJc8IYWD-8L5q3Ye8nnElvQrCea9BJYDMtFbC4fPU5oES6v7JuQuY3TkPAEdZV8',
'Ky7CDydjOjAu5-_QAKPu8M4_YNe9ADbeBu-76k_66zp_9bQhrN4xQw_wZFkyOjtwTjUem8u8rL642K34NGKfSg0ZxjIxZiAlGfTt9SW-2u_eCkT3lRsUwDrEiOxM2N42TdabLK39B0kV4l5cBi8IT3Ed',
'GZfanoa5of-VzjNGt381K8MJHl0PJivM1_crocXH2BhpxqcZKN041YbaTcfbP0T_lAWn0BRaFuFnVgYfMF5NJQWuzb6xlLjKpccwbJtmDRvrLTNuIDsC5vboPbjn7NQ8Sc-eOhjuCvmt7V7AyBt41oo3',
'q_4aWjDocFIDGTdWRhsDvcyAg5m39ovwJ0yvRjcN3S8RfBEiA_HcxAe22cv_JWfKpwcc3xXuufhL-N4_ReC4J7jQDUcX31xPFAgQS04qP7Xvuq-9t_W-7DBHk0cjHPw4JHUoOB3M_uMVnMfQ8ghIxqIq',
'COsf_ZzzctzLGmPEvQS1-CNbLc9EbhA5OnJPDACXzKWukJ_2oecYZrFNDhXLGhR0JzUKwun1DoTs5fYfUPacBxnpJN-J3ljp1wVhxLU3v9UMZCD6ZFcvLB5cdTE3j9abo7Ws8I_1BEmMcRU33hsXczo7',
'OvXv9wKT4fTtHkP3uwovwTHlmNVTw8EgRdKSMar5EE0Z4HldJisJYkszBJfqtoC-n8qqyRJSvVA_K_4bBkEIIxHT0csmkv3W3wlXz4c9DfUV2ZzXRPnbDUPVpDGx8itlKM5xdDITK0xXFAi747Ssnpn8',
'kOwPYZVuOSXbLBxgBTAhy-7RP6b__OwpSeudNCLaIfGv9FfC6h5kxqcHjPwlcgbaXlUGFBRDfh46q96zkL-595zDA0G1bA8O4S8SbBghJfDCwjyF_ufTGnP9giU92ALAkNF23tUWS8CuLbb8JFos21JC',
'Ng8SUn0JG7fEh6-Hi-GD9BRcn0oMPtgEN1wEOyDcw-EpttPT6A1-3IQZEOkU_Zvbaeb6L3_OigGx2jdmKuxeQxwTKlZrLRiV4J2Jjo3IoechbrBDMjPkCx13DQUTy-HnCZrs8OgHYNOLNR7NGMOuxl_0',
'9RZi3LcQmtcaagvfQ04eLjhoTzIkk8SRtqOv_K7WJk-NTjM46AI5RCgUCOHIyymqxsf3B3TphD8P2Qf2qtNlwus_ZdCPJKnnIHsP02VyMQkKSkYxO6jrgqmeruaQxwxctXUdHsgLAV4YNQ3wzNYMhf7L',
'zwpD9Z8fHdU39I3oW8X3JmL6igG1xxtpM_pkUDkaFn5pERuD97G0gJHEsOAyRa5oEBX1OR19JyEh4u_HAJnd9e0CYd2eITDDAvmY_H_Q0RFDxq4qldYSZTfWQXkFGBt_TBMZjeGEkZ2RxK_BB06TSxcT',
'5CAjTxgzDOD_ySqm-_LtBljUvx8Q3wLapt1r-9E_Z_qxL7TdKVMR0mdTLjYadUAOJLnpnrmTqeGp1ghwqUINGv8OIX05FSDOwuoHvP_7yipFyYo1CdgG8pbaRebXFkPBuien4wdFOuxaTRAWLW9KOAWV',
'4IKsnpL4pvoLVJpwNSboBhhgPRoj49z2F5fA1tACXN-5GyDvF-Gx1UvX2yJvxLEku8cJZyLofmwZNg1OThQMicifq7ev8YjpGEGUUT8a9CY0eDo7M_fg4wmy3fb8PEvshQk8zgLkhcl32Pg_QOO6Fp71',
'KngL3nBsGjk8U146Ca_DhbSXmMON-glGiEIBO9onEmcAGTzsycUsgvHSyAtB1pUEKvg42Jr1Wv_RLXPMsQuM6xh4LP9Qaxk7HFNxGTmu-pyQuLD5ntYMQ61DMAjdIhlvLDcPz9_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.3');
})();