Я человек, который глубоко полагается на приложение Notes, в основном я использую Bear Note для заметок для технических книг или курсов. Когда записка стала огромной и включена огромные темы и заголовки внутри, TOC (оглавление) будет очень полезен для эффективного поиска. Поэтому я создал этот простой инструмент для генерации TOC в Neight Note.
Пользовательский интерфейс
Потому что это просто простой инструмент, я быстро построил пользовательский интерфейс с простыми настройками в Qtdesigner без каких-либо дополнительных редактирования.
DEV Workflow
Шаг1: Идентификатор экземпляра и HTML страницы этого примечания. [Операции внутри медведя Note]
Ссылка на Near Note API Документ API, мы определяем способ генерирования TOC с действительными скачками внутри медведя. Ref: https://bear.app/faq/x-callback-url%20scheme%20documentation/
def textFormat(self, aster, insert, factor): return '\t' * factor+aster+' '+'[' + insert + ']' + '(' + self.bearNoteUrl(insert) + ')\n'
Шаг 2: Нажмите кнопку «RUN», чтобы вызвать процесс соскабливания
Используйте BeautifulSoup для извлечения заголовков из HTML -файла:
- Причина, причина, который экспортируется HTML-код, экспортируется из медведя, очень чистый, поэтому HTML.Parser достаточно, чтобы достичь нашей цели, и не нужно импортировать дополнительную библиотеку модулей, таких как «LXML»
- Поиск всех строк HTML-кода и генерируйте соответствующие ссылки, которые сопоставляются с условиями (Здесь условия все виды заголовков, from j1’to’h5 ‘)
def scraping(self): self.ui.textBrowser.clear() self.scrapResult = '' self.asteriskAdd() if self.htmlFilePath[0] != '' and len(self.ui.identifier.text()) != 0: url = open(self.htmlFilePath[0], encoding='utf-8', errors='ignore') bs = BeautifulSoup(url, 'html.parser') self.collectList = bs.find_all(['h1', 'h2', 'h3', 'h4']) self.scrapResult = "# Table of Contents\n" for i in self.collectList: if i.name == 'h1': insert = i.get_text() self.scrapResult+=self.textFormat(self.aster1,insert,0) elif i.name == 'h2': insert = i.get_text() self.scrapResult+=self.textFormat(self.aster2,insert,1) elif i.name == 'h3': insert = i.get_text() self.scrapResult+=self.textFormat(self.aster3,insert,2) elif i.name == 'h4': insert = i.get_text() self.scrapResult+=self.textFormat(self.aster4,insert,3) elif i.name == 'h5': insert = i.get_text() self.scrapResult+=self.textFormat(self.aster5,insert,4) self.scrapResult += '***\n' self.ui.textBrowser.append(self.scrapResult) else: QMessageBox.warning(self, 'Warning', 'identifier or html file needed!')
Шаг 3: Тексты Markdown TOC будут показаны в текстовом браузере внизу, а затем пользователи могут копировать и вставить их в Bear Note
Эксплуатация скриншота
Полученные результаты
Образец сгенерированного TOC в ноте медведя
Развертывание
Я использую Pyinstaller для создания распределенного файла .exe для пользователей Windows и .APP для пользователей Mac (найдите их в папке «dist»). Но есть одно, что нам нужно обратить внимание: настройка по умолчанию .spec, сгенерированная из Pyinstaller, приведет к рендурингу с низким разрешением в сетчатке Mac. Нам нужно добавить еще одну строку в файл .spec, чтобы решить эту проблему. Ссылка: https://pyinstaller.readthedocs.io/en/stable/spec-files.html.
info_plist={'NSHighResolutionCapable': 'True'}
Ссылка проекта
Вы можете найти исходный код и исполняемые файлы здесь: https://github.com/monkeyapple/toc-generator-for-bear-note.
Что дальше
- Предоставьте больше вариантов настройки, таких как: Заказанные списки
- Ищите лучшее решение для упаковки: Pyinstaller сгенерировал 70 -метровый исполняемый файл для Mac, кажется слишком большим, сравните с версией Windows, которая составляет 33 м.
Оригинал: “https://dev.to/effylh/toc-generator-of-bear-note-4g6h”