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

Вот репозиторий 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.