Cómo obtener una lista de URL de una carpeta de marcadores definidos en Safari

0

Tiene muchos marcadores en los favoritos de Safari. Digamos, tenga una carpeta llamada perl y contiene muchos enlaces y también subgrupadores con enlaces, como en la captura de pantalla:

Necesita extraer todos los enlaces marcados de la carpeta perl y sus subcarpetas usando la línea de comando de ONLY Terminal . P.ej. quiero ejecutar algún comando en la Terminal, como:

get_my_bookmarks perl

y el resultado será una lista de URL.

Es posible lograr esto con applescrit, por ejemplo, con

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

o usando 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 la lista completa (xml), pero ¿cómo extraer fácilmente solo las URL de una carpeta de marcadores definida? ¿Alguna idea de alguna manera simple?

    
pregunta jm666 13.08.2016 - 01:02

1 respuesta

0

Después de algunas expresiones en Google y de XPath , la solución es realmente simple:

El siguiente script de shell: 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 usándolo como

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

imprimirá una lista de URL 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, necesita instalar el comando xmlstarlet , por ejemplo, utilizando Macports

sudo port install xmlstarlet
    
respondido por el jm666 13.08.2016 - 10:21

Lea otras preguntas en las etiquetas