Safari, haben die Bookmark all tabs Funktion im Menü Bookmarks
-> Add Bookmarks for these N tabs
. Ich suche nach einer Möglichkeit, dies automatisch mit Applescript in allen geöffneten Safari-Fenstern zu tun.
Mit anderen Worten, wollen
Bookmarks
-> aufAdd Bookmarks for these N tabs
Saved Tabs window1
, Saved Tabs window2
... etc.)Hier https://gist.github.com/kshiteesh/b72e93d31d65008fcd11 ist ein nettes Applescript, (auch ähnlich dieses , das ein guter Ausgangspunkt für die Entwicklung sein könnte, aber zuerst hier fragen - vielleicht hat das jemand schon gemacht. :)
Irgendwelche Hilfe, bitte?
Ps - Motivation - Die neue Richtlinie von Apple (Blockieren der Unterstützung für ältere Safari-Erweiterungen) hat leider dazu geführt, dass eine der "must-to-have" Safari-Erweiterungen - Sessions - in Safari 12 nicht mehr funktioniert. Suchen Sie also nach einer selbst entwickelten Funktionalität.
Wie ich im obigen Kommentar sagte, verwende ich jetzt eine selbst entwickelte Automator-Workflow-App.
Ich bin ein perl
Sprachentwickler, also verwende ich im Workflow einen benutzerdefinierten Perl-Interpreter und viele Perl-Module - definitiv KEINE Lösung für einen durchschnittlichen (normalen) Mac-Benutzer.
Aber es zu posten, hauptsächlich als Referenz und vielleicht könnte jemand es zu einer besseren Lösung hacken. Wie es funktioniert - wie man es benutzt:
Leider muss es manuell ausgeführt werden - ich kann nicht herausfinden, wie ein Automator-Workflow (Dienst oder App) ausgeführt wird, wenn Safari das quit
Ereignis empfängt. :(
Das Automator (Service)-Skript hat zwei Aktionen:
applescript
noch nicht Javascript
, aber das Javascript ist für mich verständlicher) - es sammelt einfach alle URL's aus allen Tabs und Fenstern und erstellt eine JSON-Struktur, die an die nächste weitergegeben wirdHTML
Datei im Ordner Sessions
in my Desktop
.s20190107-164908.html
der aktuelle Datum-Uhrzeit-String.Es ist weit über das ursprüngliche Sessions
Addon hinaus, aber es ist für mich brauchbar.
Der vollständige Inhalt der oben genannten Aktionen ist:
1.) das Javascript
function run(input, parameters) {
var tablist = [];
var Safari = Application('Safari');
Safari.includeStandardAdditions = true;
Safari.activate();
var windows = Safari.windows();
for(let iw=0, wsize=windows.length; iw<wsize; iw++) {
var wintabs = [];
var tabs = windows[iw].tabs();
if (!tabs) continue;
for(let it=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);
}
und das Shell-Skript
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 @_ }
'
Beispiel was sehen Sie im Quick-Look:
Wie ich bereits sagte - es ist KEINE Lösung für einen gewöhnlichen Benutzer. Es kann nur von Entwicklern verwendet werden ... :(
Mateus Ribeiro
clt60
Geschichtsstempel
clt60
Geschichtsstempel
Geschichtsstempel
Geschichtsstempel
Geschichtsstempel
clt60