// ==UserScript==
// @name nCore movie labeler
// @namespace ncoremovielabeler
// @include /^http(s)?://(www.)?ncore\.cc/torrents\.php.*/
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
var lang_hun = new Array();
var lang = lang_hun;
lang_hun['hidehiddenmovies'] = '[Elt\u00FCntetettek filmek elrejt\u00E9se]';
lang_hun['showhiddenmovies'] = '[Elt\u00FCntetettek filmek felfed\u00E9se]';
lang_hun['info'] = '[Inf\u00F3]';
lang_hun['numberofmovies'] = 'Adatb\u00E1zisban l\u00E9v\u0151 filmek sz\u00E1ma: ';
lang_hun['clearlist'] = '[Elt\u00FCntetett filmek list\u00E1j\u00E1nak t\u00F6rl\u00E9se]';
lang_hun['hide'] = ' -> Elt\u00FCntet';
lang_hun['show'] = ' -> L\u00E1that\u00F3v\u00E1 tesz';
lang_hun['clearconfirm'] = 'Val\u00F3ban t\u00F6r\u00F6lni akarod a list\u00E1t?';
lang_hun['ncoremovielabelerdisabled'] = 'nCore movie labeler erre az oldalra kikapcsolva';
var imgdatabase64 = "data:image/gif;base64,";
var disablencoremovielabeler = getRequestParameter('disablencoremovielabeler');
var imdbprefix = "http://hungarian.imdb.com/title/";
var showhiddenlabeldata = readCookie("showhiddenlabeldata");
if (showhiddenlabeldata==null){
showhiddenlabeldata = "";
}
var browser = xpath("//body/div/div/div/div[@id='main_all']/div/div/div[@class='lista_all']/div");
for (var i = 0; i < browser.snapshotLength; i++) {
browserdiv = browser.snapshotItem(i);
if (i==0){
browsertitle = browserdiv.innerHTML;
browserdiv.innerHTML = "";
span = document.createElement('span');
span.setAttribute("style", "float: right;margin-right:20px;");
showinfo = document.createElement('a');
showinfo.href = "javascript: ;";
showinfo.addEventListener("click", function(){ info(); }, 0);
showinfo.innerHTML = F('info');
title = document.createTextNode(browsertitle);
if (disablencoremovielabeler=='true'){
spandisabled = document.createElement('span');
spandisabled.innerHTML = '<font style="color:red;">'+F('ncoremovielabelerdisabled')+'</font> ';
span.appendChild(spandisabled);
}else{
spanavarage = document.createElement('span');
spanavarage.innerHTML = '';
clearLabelsImage = document.createElement('a');
clearLabelsImage.href = "javascript: ;";
clearLabelsImage.addEventListener("click", function(){ deleteTitles(); }, 0);
clearLabelsImage.innerHTML = F('clearlist');
showhiddens = document.createElement('a');
showhiddens.href = "javascript: ;";
showhiddens.addEventListener("click", function(){ showhiddenlabeldata=="true" ? hideHiddenTitles() : showHiddenTitles(); }, 0);
showhiddens.innerHTML = showhiddenlabeldata=="true" ? F('hidehiddenmovies') : F('showhiddenmovies');
span.appendChild(spanavarage);
span.appendChild(clearLabelsImage);
span.appendChild(showhiddens);
}
span.appendChild(showinfo);
browserdiv.appendChild(span);
browserdiv.appendChild(title);
break;
}
}
if (disablencoremovielabeler!='true'){
var allimdbs = xpath("//div/div/div/div/div/a[@class='infolink' and @target='_blank' and contains(@href,'"+imdbprefix+"')]");
var alltitles = readCookie("labeldata");
if (alltitles==null){
alltitles = "";
}
var sum = 0;
var hiddens = 0;
for (var i = 0; i < allimdbs.snapshotLength; i++) {
sum++;
imdbanchor = allimdbs.snapshotItem(i);
titlenum = getTitleNumFromIMDBAnchor(imdbanchor);
if (alltitles.indexOf(titlenum)==-1){
addHideAnchor(imdbanchor);
}else{
hiddens++;
if (showhiddenlabeldata == "true"){
addShowHiddenAnchor(imdbanchor);
}else{
hideonemovie(imdbanchor);
}
}
}
spanavarage.innerHTML = hiddens+'/'+sum+' ';
}
function getTitleNumFromIMDBAnchor(imdbanchor){
href = imdbanchor.getAttribute("href");
titlenum = href.substring(href.indexOf(imdbprefix)+imdbprefix.length);
titlenum = titlenum.substring(0,titlenum.length-1);
return titlenum;
}
function addHideAnchor(imdbanchor){
var image = document.createElement('a');
image.href = "javascript: ;";
// image.setAttribute("style","color: #FFA515;");
image.setAttribute("class","highlight");
image.setAttribute('imdbtitle', getTitleNumFromIMDBAnchor(imdbanchor));
image.addEventListener("click", function(){ appendTitle(this); }, 0);
image.innerHTML = F('hide');
imdbanchor.parentNode.insertBefore(image, imdbanchor.nextSibling);
}
function addShowHiddenAnchor(imdbanchor){
var image = document.createElement('a');
image.href = "javascript: ;";
image.setAttribute("style","color: #3399FF;");
image.setAttribute('imdbtitle',getTitleNumFromIMDBAnchor(imdbanchor));
image.addEventListener("click", function(){ removeTitle(this); }, 0);
image.innerHTML = F('show');
imdbanchor.parentNode.insertBefore(image, imdbanchor.nextSibling);
}
function hideonemovie(imdbanchor){
/* Last version
musthide = imdbanchor.parentNode.parentNode.parentNode.parentNode.parentNode;
prev = musthide.previousSibling.previousSibling;
next = musthide.nextSibling.nextSibling;
musthideParent = musthide.parentNode;
musthideParent.removeChild(musthide);
musthideParent.removeChild(prev);
musthideParent.removeChild(next);
*/
musthide = imdbanchor.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
prev = musthide.previousSibling.previousSibling;
next = musthide.nextSibling.nextSibling;
next2 = musthide.nextSibling.nextSibling.nextSibling.nextSibling;
musthideParent = musthide.parentNode;
musthideParent.removeChild(musthide);
musthideParent.removeChild(prev);
musthideParent.removeChild(next);
musthideParent.removeChild(next2);
}
function appendTitle(obj){
imdbtitle = obj.getAttribute('imdbtitle');
cookiedata = readCookie("labeldata");
if (cookiedata==null || cookiedata==""){
cookiedata = "";
}else{
cookiedata = cookiedata + '|';
}
cookiedata = cookiedata + imdbtitle;
createCookie("labeldata",cookiedata,3600);
if (showhiddenlabeldata == "true"){
var delo = xpath("//div/div/div/div/div/a[@imdbtitle='"+imdbtitle+"']");
for (var i = 0; i < delo.snapshotLength; i++) {
delobj = delo.snapshotItem(i);
addShowHiddenAnchor(delobj.previousSibling);
delobj.parentNode.removeChild(delobj);
}
}else{
hideonemovie(obj.previousSibling);
var del = xpath("//div/div/div/div/div/a[@class='infolink' and @target='_blank' and contains(@href,'"+imdbprefix+imdbtitle+"')]");
for (var i = 0; i < del.snapshotLength; i++) {
dela = del.snapshotItem(i);
hideonemovie(dela);
}
}
}
function removeTitle(obj){
imdbtitle = obj.getAttribute('imdbtitle');
cookiedata = readCookie("labeldata");
if (cookiedata==null || cookiedata==""){
cookiedata = "";
}else{
titles = cookiedata.split('|');
cookiedata = "";
for (var i=0;i<titles.length;i++){
if (titles[i] != imdbtitle){
if (cookiedata.length>0){
cookiedata = cookiedata + '|';
}
cookiedata = cookiedata + titles[i];
}
}
}
createCookie("labeldata",cookiedata,3600);
var deloa = xpath("//div/div/div/div/div/a[@imdbtitle='"+imdbtitle+"']");
for (var i = 0; i < deloa.snapshotLength; i++) {
delobja = deloa.snapshotItem(i);
addHideAnchor(delobja.previousSibling);
delobja.parentNode.removeChild(delobja);
}
}
function deleteTitles(){
if (confirm(F('clearconfirm'))){
eraseCookie("labeldata");
window.location.reload(true);
}
}
function showHiddenTitles(){
createCookie("showhiddenlabeldata","true",3600);
window.location.reload(true);
}
function hideHiddenTitles(){
createCookie("showhiddenlabeldata","false",3600);
window.location.reload(true);
}
function info(){
var current = readCookie("labeldata");
var numberofmovies = current.length-current.replace(/\|/gi,'').length+1;
alert(F('numberofmovies')+numberofmovies);
}
function createCookie(name, value, days){
if (typeof GM.setValue == "undefined"){
if (days){
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
}else var expires = "";
confirm("cookie1");
document.cookie = name + "=" + value + expires + "; path=/";
}else GM.setValue(name, value);
}
function readCookie(name){
if (typeof GM.getValue == 'undefined'){
var ca = document.cookie.split(';');
var nameEQ = name + "=";
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}else return GM.getValue(name, null);
}
function eraseCookie(name){ createCookie(name, "", -1); }
function xpath(query) {
return document.evaluate(query, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
}
function F(key){
return lang[key];
}
function getRequestParameter( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}