derevnia / kinokopilka.tv watched

// ==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 } );
}