Ich habe gerade eine Milliarde Artikel in der Leseliste von Safari und ich hätte gerne die Links zu allen.
Gibt es eine Möglichkeit, alle Elemente in Ihrer Leseliste als Links zu erhalten (vielleicht in einem Textdokument)?
Ich habe ein Python-Skript entwickelt, um die plist-Datei zu lesen, auf die in der in den Kommentaren erwähnten Fragenpatrize verwiesen wird .
#!/usr/bin/env python
import plistlib
from shutil import copy
import subprocess
import os
from tempfile import gettempdir
import sys
import atexit
BOOKMARKS_PLIST = '~/Library/Safari/Bookmarks.plist'
bookmarksFile = os.path.expanduser(BOOKMARKS_PLIST)
# Make a copy of the bookmarks and convert it from a binary plist to text
tempDirectory = gettempdir()
copy(bookmarksFile, tempDirectory)
bookmarksFileCopy = os.path.join(tempDirectory, os.path.basename(bookmarksFile))
def removeTempFile():
os.remove(bookmarksFileCopy)
atexit.register(removeTempFile) # Delete the temp file when the script finishes
converted = subprocess.call(['plutil', '-convert', 'xml1', bookmarksFileCopy])
if converted != 0:
print "Couldn't convert bookmarks plist from xml format"
sys.exit(converted)
plist = plistlib.readPlist(bookmarksFileCopy)
# There should only be one Reading List item, so take the first one
readingList = [item for item in plist['Children'] if 'Title' in item and item['Title'] == 'com.apple.ReadingList'][0]
if 'Children' in readingList:
for item in readingList['Children']:
print item['URLString']
Kopieren Sie das und fügen Sie es in eine Datei ein, nennen Sie es so etwas wie readinglisturls.py
. Machen Sie es dann ausführbar, indem Sie es chmod +x readinglisturls.py
im Terminal ausführen. Dann können Sie es im Terminal ausführen und es werden alle Leselisten-URLs gedruckt. Wenn Sie die URLs in einer Datei haben möchten, können Sie die Ausgabe in eine Datei umleiten, indem Sie sie /path/to/readinglisturls.py > myfile.txt
im Terminal ausführen.
Eine weitere Option mit dem Plist-Rubin-Edelstein:
sudo gem install plist;plutil -convert xml1 -o - ~/Library/Safari/Bookmarks.plist|ruby -rubygems -e 'require "plist";puts Plist.parse_xml(STDIN.read)["Children"].select{|e|e["Title"]=="com.apple.ReadingList"}[0]["Children"].map{|e|e["URLString"]}'
Oder wenn Sie keine anderen Lesezeichen haben:
defaults read ~/Library/Safari/Bookmarks.plist | sed -En 's/^ *URLString = "(.*)";/\1/p'
Hier ist eine Version mit der Programmiersprache Factor , die etwas einfacher ist als die bereits in diesem Beitrag beantwortete Python-Version:
: reading-list ( -- urls )
"~/Library/Safari/Bookmarks.plist" read-plist
"Children" of [ "Title" of "com.apple.ReadingList" = ] find nip
"Children" of [ "URLString" of ] map ;
Weitere Informationen finden Sie in diesem Blogbeitrag .
kein Hang
Blaues Eis
kein Hang