0 votos

Cómo obtener una lista de URLs de la carpeta de un marcador definido en Safari

Tener muchos marcadores en los Favoritos de Safari. Digamos que tiene una carpeta llamada perl y contiene muchos enlaces y también subforos con enlaces, como en la captura de pantalla:

enter image description here

Es necesario extraer todos los enlaces marcados del perl y sus subcarpetas utilizando SOLO la línea de comandos de la Terminal . Por ejemplo, quiere ejecutar algún comando en la Terminal, como:

get_my_bookmarks perl

y el resultado será una lista de URLs.

Es posible conseguirlo con applescrit, por ejemplo con

 osascript -e '... some applescript voodoo ...'

o utilizando alguna herramienta y extrayendo la información de los enlaces deseados del binario ~/Library/Safari/Bookmarks.plist Por ejemplo, lo siguiente

/usr/libexec/PlistBuddy -x -c Print ~/Library/Safari/Bookmarks.plist

vuelca todo el plist (xml) - pero ¿cómo extraer fácilmente sólo las URLs de una carpeta de marcadores definida? ¿Alguna idea de alguna forma sencilla?

0voto

jm666 Puntos 4489

Después de buscar en Google y aprender XPath expresiones, la solución es realmente sencilla:

El siguiente shell script - digamos que su nombre es dump_bookmarks.sh ,

#!/bin/bash
for foldername
do
    /usr/libexec/PlistBuddy -x -c Print ~/Library/Safari/Bookmarks.plist | \
    xmlstarlet sel --net -t -v "//key[.='Title']/following-sibling::string[.='$foldername']/parent::node()//key[.='URLString']/following-sibling::string[1]"
    echo    #print an newline after the last entry
done

y usarlo como

./print_bookmarks.sh perl  #argument is the bookmark-folder name

imprimirá una lista de URLs marcadas, como en la captura de pantalla anterior:

https://metacpan.org/pod/Path::Tiny
http://perlmaven.com/perl-based-open-source-products
http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html
https://acidcycles.wordpress.com/2010/11/24/implementing-factories-in-perl/
http://gcstar.softonic.com/
http://steffen-wendzel.blogspot.de/p/blog-page_24.html
http://continuity.tlt42.org/

Para el script necesitas instalar el xmlstarlet por ejemplo, utilizando Macports

sudo port install xmlstarlet

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X