NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name kinokopilka.tv watched // @namespace derevnia // @author vk.com/derevnia // @description Создайте плейлист, добавляйте в него просмотренные фильмы, в переменную url добавьте ссылку на плейлист. Работает не очень шустро. // @version 0.3 // @include *kinokopilka.* // @updateURL https://openuserjs.org/install/derevnia/kinokopilka.tv_watched.user.js // @downloadURL https://openuserjs.org/install/derevnia/kinokopilka.tv_watched.user.js // @license MIT // @grant none // @grant GM_xmlhttpRequest // ==/UserScript== var playlist_id = "1326265"; var url = "https://www.kinokopilka.pro/playlists/" + playlist_id; var filmids = []; var filmidsend = []; document.getElementsByTagName("body")[0].innerHTML += '<style>#kop_wrapper{position:fixed;top:0;right:0;}#kop_sync{outline: none;text-decoration:none;text-align:center;padding:10px 15px;border:solid 1px #004F72;border-radius: 4px;font:18px;font-weight:bold;color:#E5FFFF;background-color:#3BA4C7; background-image: -webkit-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff;cursor:pointer}#kop_sync:active{background-image: -webkit-linear-gradient(top, #3BA4C7 0%, #075873 100%);}</style><div id="kop_wrapper"><button id="kop_sync">Обновить плейлист</button><div>Просмотрено: <span id="kop_filmcount"></span> фильмов</div><div id="kop_status"></div></div>'; if (document.getElementById("playlist")){ document.getElementById("playlist").addEventListener("change", myScript); function myScript(value){ id_addfilm = location.href.split('/movies/')[1].split('-')[0]; // console.log(document.getElementById("playlist").value); if(!localStorage.getItem('filmids')) { post(url); } else { if (document.getElementById("playlist").value == playlist_id){ var ids = localStorage.getItem('filmids'); ids = ids.split(','); if (ids.indexOf(id_addfilm) < 0) { console.log(ids.indexOf(id_addfilm)); ids.push(id_addfilm); localStorage.setItem('filmids', ids); } } } } } function getlocal(url) { if(!localStorage.getItem('filmids')) { post(url); } else { var ids = localStorage.getItem('filmids'); ids = ids.split(','); document.getElementById("kop_filmcount").innerHTML = ids.length; for (var i = 0; i < ids.length; i++) {// если переменная создана if (document.getElementById('movie_' + ids[i])) { document.getElementById('movie_' + ids[i]).style.opacity = "0.2"; console.log(document.getElementById('movie_' + ids[i])); } } } } function post(url) { GM_xmlhttpRequest({ method: "GET", url: url, synchronous: false, headers: { "User-Agent": "Mozilla/5.0", "Accept": "text/html,application/xhtml+xml,application/xml;" }, onload: function(response) { // console.log('Запущено'); document.getElementById("kop_status").innerHTML = "В процессе"; var parser = new DOMParser(); var responseDoc = parser.parseFromString(response.responseText, "text/html"); var nextPage = responseDoc.getElementsByClassName('next_page')[0]; //для страниц пагинации var answer = responseDoc.getElementsByTagName('h3'); for (var i = 0; i < answer.length; i++) { answerID = answer[i].innerHTML.split('<a href="/movies/')[1].split('-')[0]; filmids.push(answerID);//добавляем в переменную id фильмов if (document.getElementById('movie_' + answerID)) { //document.getElementById('movie_' + answerID).style = "opacity: 0.2;"; document.getElementById('movie_' + answerID).style.opacity = "0.2"; } } if (nextPage.getAttribute("href")!==null) { url = responseDoc.getElementsByClassName('next_page')[0].getAttribute("href"); post(url); }else{ localStorage.setItem('filmids', filmids); document.getElementById("kop_status").innerHTML = "Сохранено!"; // filmidsend = filmids;//создаём на последней странице переменную } } }); } //отслеживает изменения hash в строке браузера // window.addEventListener("hashchange", function() { // delete bar(); // bar(); // console.log('hashchange'); // }); function bar(r) { if (!r) getlocal(url); } if (document.getElementById('kop_sync')) { document.getElementById('kop_sync').addEventListener("click", function() { post(url); }); } bar(); var trigger = document.querySelector( '#movies' ); // console.log(trigger); var observer = new MutationObserver( function( mutations ){ mutations.forEach( function( mutation ) { console.log(mutation); if (mutation.target.id === 'movies'){ bar(); // feed(backMessage); } }); }); if (trigger){ observer.observe( trigger, { childList: true } ); }