Applescript: aggiungi tutte le schede in TUTTE LE FINESTRE in Safari

0

Safari, disponi delle Segnalibri di tutte le schede , funzione nel menu Bookmarks - > %codice%. Sto cercando un modo per farlo automaticamente con applescript in all aperto le finestre di Safari.

Con altre parole, vuoi

  1. scegli una cartella dei segnalibri, consenti "Preferiti - > Sessioni"
  2. cicla su tutte le finestre di Safari
  3. se la finestra ha solo un TAB, inseriscila semplicemente nella cartella sopra
  4. altrimenti
    • chiama Add Bookmarks for these N tabs - > Bookmarks elemento del menu
    • riempi automaticamente la finestra popup (ad esempio Add Bookmarks for these N tabs , Saved Tabs window1 ... ecc.)
  5. ripeti da 2

Qui link è un bel applescript, (anche allo stesso modo questo che potrebbe essere un buon punto di partenza per lo sviluppo, ma chiedendo prima qui - forse qualcuno lo ha già fatto.:)

Qualsiasi aiuto, per favore?

Ps - motivazione - La nuova politica di Apple, (che blocca il supporto per le estensioni legacy di Safari), sfortunatamente ha causato l'estensione Safari "must to have" - Sessioni - smette di funzionare in Safari 12. Quindi, cerca alcune funzionalità sviluppate in casa.

    
posta jm666 05.10.2018 - 17:26
fonte

1 risposta

1

Come ho detto nel commento di cui sopra, ora sto usando un'app per il flusso di lavoro auto-sviluppata per l'app.

Sono uno sviluppatore di lingue perl , quindi nel mio flusso di lavoro utilizzo un interprete perl personalizzato e molti moduli perl anche - decisamente NON una soluzione per un utente mac (comune) medio .

Ma pubblicandolo, principalmente per riferimento e forse qualcuno potrebbe hackerarlo per una soluzione migliore. Come funziona - come usarlo:

  • sfortunatamente deve essere eseguito manualmente - non riesco a capire come eseguire un flusso di lavoro di un automatore (servizio o app) quando Safari riceve l'evento quit . : (

  • Lo script del servizio di automazione ha due azioni:

    • esegui javascript (non conosco applescriptJavascript , ma il javascript è più comprensibile per me): raccoglie semplicemente tutti gli URL da tutte le schede e finestre e crea una struttura JSON, che viene passata al successivo
    • esegue uno script di shell - che esegue il mio script perl con l'interprete perl installato personalizzato
  • quando l'app viene eseguita, salva un file HTML nella cartella Sessions nel mio Desktop .
  • Il nome del file è come s20190107-164908.html e.g. la stringa di data e ora corrente.
  • è facile utilizzare la funzione di ricerca rapida del Finder (barra spaziatrice) per controllare rapidamente il contenuto del file.

È molto al di là dell'orente Sessions originale, ma è utilizzabile per me.

Ilcontenutocompletodelleazioniprecedentiè:

1.)ilJavascript

functionrun(input,parameters){vartablist=[];varSafari=Application('Safari');Safari.includeStandardAdditions=true;Safari.activate();varwindows=Safari.windows();for(letiw=0,wsize=windows.length;iw<wsize;iw++){varwintabs=[];vartabs=windows[iw].tabs();if(!tabs)continue;for(letit=0,tsize=tabs.length;it<tsize;it++){if(tabs[it].url()){wintabs.push({"name": tabs[it].name(), "url": tabs[it].url()} );
            }
        }
        if( wintabs.length ) {
            tablist.push(wintabs);
        }
    }
    return JSON.stringify(tablist);
}

e lo script della shell

export ANYENV_ROOT=/opt/anyenv
export PATH="$ANYENV_ROOT/bin:$PATH"
eval "$(anyenv init -)"

perl -MJSON -MPath::Tiny -MTime::Piece -M5.014 -w -E '
    my $jsonstr = do { local $/; <STDIN> };
    my $j = decode_json($jsonstr);
    my @lines;
    lsay("<ol>");
    for my $w (@$j) {
        lsay("<li><ul>");
        for my $t (@$w) {
            my $astr = "<li><a href=\"$t->{url}\">$t->{name}</a></li>";
            lsay($astr);
        }
        lsay("</ul></li>");
    }
    lsay("</ol>");
    my $sessdir=path( $ENV{HOME}, "Desktop/Sessions");
    $sessdir->mkpath;
    my $sessfile=$sessdir->child(localtime->strftime("s%Y%m%d-%H%M%S.html"));
    $sessfile->spew_utf8(@lines);;
    sub lsay { push @lines, $_ for @_ }
'

Esempio che cosa vedi nel quick-look:

Come ho già detto - è NON una soluzione per un utente comune. È utilizzabile solo da uno sviluppatore ...: (

    
risposta data 07.01.2019 - 17:04
fonte