Greasemonkey ozr Tampermonkey pomoč

futuristic

geđet frik
Osebje foruma
13. jul 2007
7.900
640
113
V Chrome imam inštaliran Tampermonkey, ki naj bi bil Chrome klon GreaseMoneky-a ki je za Firefox.

No kar bi rad naredil je:
Ko pridem na stran http://www.partis.si/prijava naj počaka 2 sekundi in nat submita login formo.
Potem naj redirecta na stran http://www.partis.si/brskaj
Potem naj v meniju izbere HD-TV in klikne search gumb.

Vse to mi je ratal naredit ampak na način, ki mi ni všeč.
Moral sem narediti tri ločene skripte in vsaka se sproži na svojem urlju.

Rad bi pa, da se celotno zaporedje akcij sproži samo takrat, ko pridem na prvo stran in ne tako kot zdaj ko mi redirecta na /brskaj vsakič ko grem na home stran. In če grem na /brskaj stran mi vsakič izbere HD-TV, kar pa nočem.

No tako imam zdaj:

Koda:
// prva skripta (submita login formo)

// ==UserScript==
// @name         Partis1
// @namespace    http://your.homepage/
// @version      0.1
// @description  enter something useful
// @author       You
// @match        http://www.partis.si/prijava
// @grant        none
// ==/UserScript==

setTimeout(function(){
      document.getElementById('forma').submit()
    },2000);


//druga skripta (preusmeri na /brskaj)


// ==UserScript==
// @name         Partis2
// @namespace    http://your.homepage/
// @version      0.1
// @description  enter something useful
// @author       You
// @match        http://www.partis.si/prva
// @grant        none
// ==/UserScript==

window.location = "http://www.partis.si/brskaj";


//tretja skripta (searcha po HD-TV kategoriji)


// ==UserScript==
// @name         Partis3
// @namespace    http://your.homepage/
// @version      0.1
// @description  enter something useful
// @author       You
// @match        http://www.partis.si/brskaj
// @grant        none
// ==/UserScript==

document.getElementById('ot_chk31').click();

if(document.getElementById('loading').style.display == 'block')
{alert('Iskanje je trenutno v teku!\nPočakajte na rezultate');}
else
{new Updater('/brskaj','torrentlist','?offset=0&keyword='+getVal('search_keyword')+
'&category='+getVal('search_category')+'&option='+getVal('search_option')+'&ns=true','loading');
return false;}
 
I

Izbrisan uporabnik 3287

ne cisto off ampak, za tista tri klika se bos hebal .... dober si, da se ti da. lp
 

futuristic

geđet frik
Osebje foruma
13. jul 2007
7.900
640
113
Ja, raje enkrat nekaj sprogramiram, kot pa da bi moral vsak dan isto klikat...
 

philips

Guru
Osebje foruma
Administrator
17. avg 2007
9.857
686
113
Če pustiš sejo odprto (torej da se ne odjavljaš in da ti prijava ne poteče), potem imaš takoj en korak manj.

Za preostali del pa daj vse v eno skripto, ki se naj aktivira na vseh URLjih, nato pa daš not en IF, ELSE IF, ELSE glede na trenutni URL.
 

futuristic

geđet frik
Osebje foruma
13. jul 2007
7.900
640
113
Seja vedno poteče ker imajo očitno cookie-je nastavljene na par ur...

Tvoja rešitev sicer spravi vso kodo v en sam skript ampak to, da imam 3 skripte me ne moti (najbolj).
Problem je ker se skripte sprožijo vsakič ko npr nekaj klinem na strani ker je isti url in ne samo prvič ko pridem na stran.
Rešitev bi najbrž bila, da pogledam v document.referrer in ukrepam glede na prejšni url.

Ozr get zahtevkom dodam en x parameter npr mojaskripta=1 in potem vem ali je moja skrita naredila preusmerritev ali ne.

Bo šlo.
grin1.gif
 
Nazadnje urejeno:

philips

Guru
Osebje foruma
Administrator
17. avg 2007
9.857
686
113
Ja preko *monkey imaš dostop do vsega. Lahko gledaš cookije, vsebino strani, local/session storage... ni da ni. Nekam si boš pa že shranil svoje "stanje"
smile-1.gif


Drugače pa lahko za login narediš AJAX request, po uspešnem requestu pa ga potem preusmeriš direktno na "/brskaj". V tem primeru imaš "trigger" samo na login stran in ni potrebno delati kakršnihkoli dodatnih preverjanj. Pa še domačo stran preskočiš
wink-1.gif
 

dune

Fizikalc
26. maj 2014
1.432
39
48
Koda:
// ==UserScript==
// @name         My Fancy New Userscript
// @namespace    http://your.homepage/
// @version      0.1
// @description  enter something useful
// @author       You
// @match        http://www.partis.si/*
// @grant        none
// ==/UserScript==

if( window.location.pathname.substr(0,8)==="/prijava" ){

    var form = $(".logins form");
    var url = form.attr("action");
    var params = form.serializeArray();

    var p = {};
    $.each(params, function(i, el){ p[el.name] = el.value; });

    $.post(url,p, function(res){
        $.get("/brskaj/?offset=0&keyword=&category=31&option=&ns=true", function(res){
        window.location.href="/brskaj/?tm=1";
      } )    
    } );
}


if( window.location.pathname.substr(0,7)==="/brskaj" && window.location.search === "?tm=1" ){
    if( !$("#loading").css("display") !== "none" ){
        $("#search_category").val("31");
        new Updater('/brskaj',
                'torrentlist',
                '?offset=0'+'&keyword='+getVal('search_keyword')+'&category='+getVal('search_category')+'&option='+getVal('search_option')+'&ns=true',
                'loading');
    }else{
        console.log("Updater canceled. Loading in progress.")
    }
}

Ta koda se zanaša, da imaš v formi pofilano uporabniško ime in geslo. Če nimaš lahko tole:

Koda:
var params = form.serializeArray();

nadomestiš z :

Koda:
    var params = [
        {
            name : "user[username]",
            value: "<tvoje uporabniško ime>"
        },
        {
            name : "user[password]",
            value: "<tvoje geslo>"
        }
    ];