Tôi chỉ có một tỷ mục trong danh sách đọc của Safari và tôi muốn các liên kết đến tất cả chúng.
Có cách nào để lấy tất cả các mục trong danh sách đọc của bạn dưới dạng liên kết (có thể trong tài liệu văn bản) không?
Tôi chỉ có một tỷ mục trong danh sách đọc của Safari và tôi muốn các liên kết đến tất cả chúng.
Có cách nào để lấy tất cả các mục trong danh sách đọc của bạn dưới dạng liên kết (có thể trong tài liệu văn bản) không?
Câu trả lời:
Tôi đã viết một tập lệnh Python để đọc tệp plist được tham chiếu trong câu hỏi patrix được đề cập trong các bình luận .
#!/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']
Sao chép và dán nó vào một tập tin, đặt tên nó như thế nào readinglisturls.py
. Sau đó làm cho nó thực thi được bằng cách chạy chmod +x readinglisturls.py
trong Terminal. Sau đó, bạn có thể chạy nó trong Terminal và nó sẽ in ra bất kỳ URL Danh sách đọc nào. Nếu bạn muốn các URL trong một tệp, bạn có thể chuyển hướng đầu ra sang một tệp bằng cách chạy /path/to/readinglisturls.py > myfile.txt
trong Terminal.
Một tùy chọn khác sử dụng đá quý 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"]}'
Hoặc nếu bạn không có dấu trang khác:
defaults read ~/Library/Safari/Bookmarks.plist | sed -En 's/^ *URLString = "(.*)";/\1/p'
Đây là phiên bản sử dụng ngôn ngữ lập trình Factor đơn giản hơn một chút so với phiên bản Python đã trả lời trong bài đăng này:
: reading-list ( -- urls )
"~/Library/Safari/Bookmarks.plist" read-plist
"Children" of [ "Title" of "com.apple.ReadingList" = ] find nip
"Children" of [ "URLString" of ] map ;
Thêm thông tin có sẵn trong bài viết blog này .