6 votos

Cómo obtener la Lectura de los elementos de la Lista como enlaces

Acabo de tener mil millones de elementos en la lista de lectura de Safari y me gustaría que los enlaces a todos ellos.

Es allí una manera de conseguir todos los elementos en su lista de lectura como los vínculos (tal vez en un documento de texto)?

9voto

Ged Byrne Puntos 481

Me azotó una secuencia de comandos de Python para leer el archivo plist que se hace referencia en la pregunta patrix se menciona en los comentarios.

#!/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']

Copiar y pegar en un archivo, el nombre de algo como readinglisturls.py. A continuación, hacer que sea ejecutable por ejecutar chmod +x readinglisturls.py en el Terminal. A continuación, puede ejecutar en el Terminal y se va a imprimir cualquier Lectura de la Lista de direcciones Url. Si desea que la Url en un archivo, puede redirigir la salida a un archivo por ejecutar /path/to/readinglisturls.py > myfile.txt en el Terminal.

2voto

Otra opción de usar el plist gema de Ruby:

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 si usted no tiene otros marcadores:

defaults read ~/Library/Safari/Bookmarks.plist | sed -En 's/^ *URLString = "(.*)";/\1/p'

1voto

K7AAY Puntos 145

He aquí una versión que utiliza el Factor de lenguaje de programación que es un poco más sencillo que el de la versión de Python contestado ya en este post:

: reading-list ( -- urls )
    "~/Library/Safari/Bookmarks.plist" read-plist
    "Children" of [ "Title" of "com.apple.ReadingList" = ] find nip
    "Children" of [ "URLString" of ] map ;

Más información está disponible en este blog.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X