So erhalten Sie Elemente der Leseliste als Links

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)?

Ist die Plist-Datei „Leseliste“ dieselbe wie die Plist-Datei „Lesezeichen“?
Die Einträge in der Leseliste werden in der Lesezeichendatei gespeichert, also ja (irgendwie).

Antworten (3)

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.pyim 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.txtim Terminal ausführen.

Dieses Skript ist auch als Gist auf Github verfügbar, falls das für jemanden nützlich ist: gist.github.com/robmathers/5995026

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 .