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
applescript
né Javascript
, 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 ...: (