Come ottenere gli elementi dell'elenco di lettura come collegamenti

6

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

    
posta Blue Ice 14.07.2013 - 17:17
fonte

3 risposte

9

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.

    
risposta data 14.07.2013 - 19:41
fonte
2

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'

    
risposta data 16.07.2013 - 12:37
fonte
1

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 .

    
risposta data 16.07.2013 - 00:49
fonte

Leggi altre domande sui tag