Cómo obtener elementos de la Lista de lectura como enlaces

6

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

¿Hay alguna forma de obtener todos los elementos de su lista de lectura como enlaces (tal vez en un documento de texto)?

    
pregunta Blue Ice 14.07.2013 - 17:17

3 respuestas

9

Preparé un script de Python para leer el archivo plist al que se hace referencia en pregunta patrix mencionada 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']

Copie y pegue eso en un archivo, asígnele el nombre readinglisturls.py . Luego hazlo ejecutable ejecutando chmod +x readinglisturls.py en la Terminal. Luego puede ejecutarlo en la Terminal e imprimirá las URL de la Lista de Lectura. Si desea las URL en un archivo, puede redirigir la salida a un archivo ejecutando /path/to/readinglisturls.py > myfile.txt en la Terminal.

    
respondido por el robmathers 14.07.2013 - 19:41
2

Otra opción que usa la gema de 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 si no tienes otros marcadores:

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

    
respondido por el user495470 16.07.2013 - 12:37
1

Aquí hay una versión que usa el Factor de lenguaje de programación que es un poco más simple que la versión de Python que ya se respondió en esta publicación:

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

Hay más información disponible en esta publicación del blog .

    
respondido por el mrjbq7 16.07.2013 - 00:49

Lea otras preguntas en las etiquetas