GM_setValue undefined

60 views
Skip to first unread message

Tibor

unread,
Nov 26, 2017, 10:20:42 AM11/26/17
to greasemonkey-users
I wrote a script to make some changes on a webpage but can not use GM_setValue and GM_getValue. For both the code goes to the undefined section and writes to cookie instead of using GM_setValue and GM_getValue functions. Can you help?

// ==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+'&nbsp;';
}

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];
}




Cerberus

unread,
Nov 27, 2017, 2:14:09 PM11/27/17
to greasemonkey-users
All of the GM_ functions no longer work in the latest version of Greasemonkey, as forced by Mozilla's recent changes. But you can replace them with new GM. functions that should get the job done. I'm a layman myself, but you can find more information on how to do this here:
http://www.greasespot.net/
  • greasemonkey (0)
1
Reply all
Reply to author
Forward
0 new messages