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)?
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)?
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.
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'
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 .
Lea otras preguntas en las etiquetas macos safari icloud reading-list