Làm thế nào để có được các mục Danh sách đọc làm liên kết


6

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ệp plist của 'danh sách đọc' có giống với tệp plist của 'bookmark' không?
Băng xanh

Các mục nhập danh sách đọc được lưu trữ trong tệp dấu trang, vì vậy có (loại).
nohillside

Câu trả lời:


9

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.pytrong 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.txttrong Terminal.


Kịch bản này cũng có sẵn dưới dạng Gist trên Github, nếu nó hữu ích với bất kỳ ai: gist.github.com/robmathers/5995026
robmathers

2

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'


1

Đâ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 .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.