Safari, tenga la función Marcar todas las pestañas en el menú Bookmarks
-> Add Bookmarks for these N tabs
. Estoy buscando una manera de hacer esto automáticamente con applescript en todas las ventanas abiertas de Safari.
En otras palabras, quiero
Bookmarks
->Add Bookmarks for these N tabs
Saved Tabs window1
, Saved Tabs window2
... etc.)Aquí https://gist.github.com/kshiteesh/b72e93d31d65008fcd11 hay un buen applescript (también esto podría ser un buen punto de partida para el desarrollo, pero preguntando primero aquí, tal vez alguien ya lo haya hecho). :)
¿Alguna ayuda, por favor?
Ps: motivación: la nueva política de Apple (que bloquea la compatibilidad con las extensiones heredadas de Safari), desafortunadamente provocó que una de las extensiones de Safari "imprescindibles" - Sessions - dejara de funcionar en Safari 12. Por lo tanto, busqué alguna funcionalidad propia.
Como dije en el comentario anterior, ahora estoy usando una aplicación de flujo de trabajo de automatización de desarrollo propio.
Soy un perl
desarrollador de idiomas, por lo que en el flujo de trabajo utilizo un intérprete perl instalado a medida y también muchos módulos perl; definitivamente NO es una solución para un usuario promedio (común) de mac.
Pero publicarlo, principalmente como referencia y tal vez alguien podría piratearlo para encontrar una mejor solución. Cómo funciona - cómo usarlo:
desafortunadamente, debe ejecutarse manualmente; no puedo averiguar cómo ejecutar algún flujo de trabajo de automatización (servicio o aplicación) cuando Safari recibe el quit
evento. :(
El script del automatizador (servicio) tiene dos acciones:
applescript
, Javascript
pero el javascript es más comprensible para mí): simplemente recopila todas las URL de todas las pestañas y ventanas y crea una estructura JSON, que se pasa a la siguienteHTML
archivo en la carpeta Sessions
en mi archivo Desktop
.s20190107-164908.html
por ejemplo, la cadena de fecha y hora actual.Está mucho más allá del Sessions
complemento original, pero es utilizable para mí.
El contenido completo de las acciones anteriores son:
1.) el 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);
}
y el script de 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 @_ }
'
Ejemplo de lo que ve en el vistazo rápido:
Como ya dije, NO es una solución para un usuario común. Solo lo pueden usar los desarrolladores... :(
mateo ribeiro
clt60
sello de historia
clt60
sello de historia
sello de historia
sello de historia
sello de historia
clt60