Jak uzyskać listę adresów URL z folderu zdefiniowanej zakładki w Safari

0

Masz wiele zakładek w Ulubionych Safari. Powiedzmy, że mamy folder o nazwie perl i zawiera wiele linków, a także podświatów z linkami, jak na zrzucie ekranu:

enter image description here

Musisz wyodrębnić wszystkie linki z zakładkami perl folder i jego podfoldery przy użyciu TYLKO linii poleceń terminala . Na przykład. chcesz uruchomić jakieś polecenie w Terminalu, takie jak:

get_my_bookmarks perl

a wynikiem będzie lista adresów URL.

Jest to możliwe do osiągnięcia za pomocą applescrit, np. z

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

lub za pomocą jakiegoś narzędzia i wyodrębnienia informacji o poszukiwanych linkach z pliku binarnego ~/Library/Safari/Bookmarks.plist, np. następujące

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

zrzuca całą plist (xml) - ale jak łatwo wyodrębnić tylko adresy URL z jednego zdefiniowanego folderu zakładek? Jakiś pomysł na jakiś prosty sposób?

jm666
źródło

Odpowiedzi:

0

Po pewnym googlu i nauce XPath wyrażenia, rozwiązanie jest naprawdę proste:

Następujący skrypt powłoki - powiedzmy, że ma na imię 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

i używając go jako

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

wydrukuje listę adresów URL z zakładkami, tak jak w powyższym obrazku zostanie wydrukowany:

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/

Dla skryptu musisz zainstalować xmlstarlet polecenie, na przykład przy użyciu Macports

sudo port install xmlstarlet
jm666
źródło