Come ottenere un elenco di URL dalla cartella di un segnalibro definito in Safari

0

Hai molti segnalibri nei Preferiti di Safari. Diciamo, abbiamo una cartella chiamata perl e contiene molti link e anche sottocampi con link, come nello screenshot:

È necessario estrarre tutti i collegamenti con segnalibri dalla cartella perl e le sue sottocartelle utilizzando SOLO la linea di comando del terminale . Per esempio. vuoi eseguire un comando nel Terminale, come:

get_my_bookmarks perl

e il risultato sarà un elenco di URL.

È possibile ottenere questo risultato con applescrit, ad es. con

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

o utilizzando alcuni strumenti ed estraendo le informazioni dei collegamenti ricercati dal% binario% co_de, ad es. il seguente

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

scarica l'intero plist (xml) - ma come estrarre facilmente solo gli URL da una cartella di segnalibri definita? Qualche idea per un modo semplice?

    
posta jm666 13.08.2016 - 01:02
fonte

1 risposta

0

Dopo alcune espressioni su google e di apprendimento XPath , la soluzione è davvero semplice:

Il seguente script di shell: lascia che il suo nome sia 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

e usandolo come

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

stamperà un elenco di URL con segnalibro, come per lo screenshot sopra stampato:

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/

Per lo script è necessario installare il comando xmlstarlet , ad esempio utilizzando Macports

sudo port install xmlstarlet
    
risposta data 13.08.2016 - 10:21
fonte

Leggi altre domande sui tag