6 votes

Comment obtenir les éléments de la liste de lecture sous forme de liens

J'ai un milliard d'articles dans la liste de lecture de Safari et j'aimerais avoir les liens vers tous ces articles.

Existe-t-il un moyen d'obtenir tous les éléments de votre liste de lecture sous forme de liens (peut-être dans un document texte) ?

9voto

Ged Byrne Points 481

J'ai créé un script Python script pour lire le fichier plist référencé dans la section question patrix mentionnée dans les commentaires .

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

Copiez et collez ces données dans un fichier, nommez-le comme suit readinglisturls.py . Ensuite, rendez-le exécutable en exécutant chmod +x readinglisturls.py dans le terminal. Vous pouvez ensuite l'exécuter dans le terminal et il imprimera toutes les URL des listes de lecture. Si vous voulez que les URLs soient dans un fichier, vous pouvez rediriger la sortie vers un fichier en lançant /path/to/readinglisturls.py > myfile.txt dans le terminal.

2voto

Une autre option consiste à utiliser la gemme 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"]}'

Ou si vous n'avez pas d'autres signets :

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

1voto

K7AAY Points 269

Voici une version utilisant le Langage de programmation Factor qui est un peu plus simple que la version Python à laquelle nous avons déjà répondu dans ce billet :

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

De plus amples informations sont disponibles dans ce document. article de blog .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X