Очистите свой переполненный список для чтения.

Вот репозиторий GitHub. со сценарием.

Если вы похожи на меня, ваш список для чтения переполнен. У меня более 1000 записей. Я использую его каждый день, чтобы быстро напомнить себе о полезных веб-сайтах, которые я нашел, но я никогда не утруждаюсь очищать его после того, как эти сайты использовали свое предназначение.

Я не хотел чистить его вручную, щелкая мышью по 1000+ элементов, это утомительно. Есть ярлык для удаления всех элементов, но перед этим я хотел экспортировать данные.

Вот как это делается.

Ваш список для чтения хранится в ~/Library/Safari/Bookmarks.plist (по крайней мере, в Mac 11.4 Big Sur). Кроме того, значки для списка чтения хранятся в ~/Library/Safari/ReadingListArchives.

Чтобы прочитать файл формата .plist в Python, проще всего использовать библиотеку plistlib:

pip install plistlib

Полный сценарий

Вот полный скрипт — объяснение ниже:



Применение

Основное использование:

  • Экспорт в CSV:
python export_reading_list.py csv reading_list.csv

запишет список для чтения в reading_list.csv.

  • Экспорт в JSON:
python export_reading_list.py json reading_list.json

запишет список для чтения в reading_list.json.

Параметры:

  • Также скопируйте значки списка чтения:
python export_reading_list.py csv reading_list.csv — dir-icons-out reading_list_icons

копирует иконки в папку reading_list_icons. Они соответствуют записям через ключ WebBookmarkUUID.

  • Укажите исходный каталог для иконок:
python export_reading_list.py csv reading_list.csv — dir-icons ~/Library/Safari/ReadingListArchives

По умолчанию ~/Library/Safari/ReadingListArchives.

  • Укажите исходный каталог для файла списка чтения .plist:
python export_reading_list.py csv reading_list.csv — fname-bookmarks ~/Library/Safari/Bookmarks.plist

По умолчанию ~/Library/Safari/Bookmarks.plist.

  • Включить кешированные данные для веб-сайтов:
python export_reading_list.py csv reading_list.csv — include-data

Данные записываются в поле Data. По умолчанию используется опция--exclude-data, которая исключает данные.

Пояснение к скрипту

Сначала скопируйте файл plist для безопасности:

Затем найдите элементы списка для чтения в этом ужасно отформатированном словаре:

Преобразуйте словари списка чтения в пользовательские объекты:

Наконец, выгрузите записи в JSON или CSV:

Последние мысли

Теперь у нас есть резервная копия списка чтения. Будущий проект может записать отредактированный файл CSV или JSON обратно в формат списка чтения plist, распознаваемый Safari.