Ho appena un miliardo di elementi nella lista di lettura di Safari e vorrei i collegamenti a tutti loro.
C'è un modo per ottenere tutti gli elementi nella tua lista di lettura come link (magari in un documento di testo)?
Ho montato uno script Python per leggere il file plist a cui si fa riferimento in domanda patrix menzionata nei commenti .
#!/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']
Copia e incolla questo in un file, chiamalo qualcosa come readinglisturls.py
. Quindi rendilo eseguibile eseguendo chmod +x readinglisturls.py
nel Terminale. Quindi è possibile eseguirlo nel terminale e stamperà qualsiasi URL dell'elenco di lettura. Se desideri gli URL in un file, puoi reindirizzare l'output a un file eseguendo /path/to/readinglisturls.py > myfile.txt
nel Terminale.
Un'altra opzione che utilizza la gemma Ruby plist:
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"]}'
O se non hai altri segnalibri:
defaults read ~/Library/Safari/Bookmarks.plist | sed -En 's/^ *URLString = "(.*)";//p'
Ecco una versione che utilizza il linguaggio di programmazione dei fattori che è un po 'più semplice della versione Python già fornita in questo post:
: reading-list ( -- urls )
"~/Library/Safari/Bookmarks.plist" read-plist
"Children" of [ "Title" of "com.apple.ReadingList" = ] find nip
"Children" of [ "URLString" of ] map ;
Ulteriori informazioni sono disponibili in questo post sul blog .
Leggi altre domande sui tag macos safari icloud reading-list