Начиная с версии Zebroid 6.4.0 в программу добавлена поддержка Python плагинов. Это мощный инструмент расширения функционала программы самописними пользовательскими скриптами. Широкий выбор говотых Python модулей позволяет существенно увеличить возможности Zebroid.
Скрипты
Скрипты для плагинов Зеброида выполняются на стороне интерпретатора Python, а это значит, что на них действуют те же правила, что и для любых других скриптов на языке Python. Зеброид лишь предоставляет дополнительные функции для доступа к данным проекта и их управлением.
Для управления проектом необходимо импортировать специальный модуль zebroid. В этом модуле есть следующие объекты:
- plugin — Объект взаимодействия с этим плагином Зеброида
- records — Объект класса TZebroidRecords (для работы со списком записей проекта)
- inputs — словарь входящих параметров скрипта
- progressbar — объект класса TPluginProgressBar (для управление полосой прогресса)
- project — объект класса TZebroidProject (для управлением проектом)
zebroid.plugin
import zebroid
# Булевое значение, которое возвращает состояние работы плагина.
# Если True - значит пользователь прервал работу плагина и нужно
# завершать работу
if zebroid.plugin.terminated:
quit()
# Функция ожидания, которая при необходимости прерывается,
# если пользователь нажал кнопку "Прервать"
# sec - количество секунд ожидания
zebroid.plugin.sleep(10)
# Добавление папки в область видимости для импорта.
# Например: если есть общая папка для нескольких плагинов с
# файлами для импорта или если хотим импортировать файлы
# другого плагина
zebroid.plugin.append_folder('../__shared_files__')
from some_file import some_method
zebroid.records
import zebroid
# Создать новую записи (в дереве Блог) и возвращает её (объект класса TZebroidRecord). Параметры:
# title - название новой записи
# parent - родитель (объект класса TZebroidRecord)
zebroid.records.add('New record', None)
# Создать статическую страницу и возвращает её (объект класса TZebroidRecord). Параметры:
# title - название страницы
zebroid.records.add_static('New static page')
# Возвращает запись (объект класса TZebroidRecord) с искомым id либо None (если не найдено). Параметры:
# id - идентификатор искомой записи
zebroid.records.find(1)
# Возвращает количество записей (int). Параметры:
# checked_only - учитывать только отмеченные записи (True/False)
zebroid.records.count(True)
# Возвращает первую запись (объект класса TZebroidRecord) в дереве проекта либо None (если не найдено). Параметры:
# checked_only - учитывать только отмеченные записи (True/False)
zebroid.records.get_first(True)
# Возвращает следующую запись (объект класса TZebroidRecord) в дереве проекта либо None (если не найдено). Если не передать параметр record - тогда будет работать как get_first. Параметры:
# record - запись от которой нужно отталкиваться (объект типа TZebroidRecord)
# checked_only - учитывать только отмеченные записи (True/False)
zebroid.records.get_next(record, True)
# Возвращает предыдущую запись (объект класса TZebroidRecord) в дереве проекта либо None (если не найдено). Параметры:
# record - запись от которой нужно отталкиваться (объект типа TZebroidRecord)
# checked_only - учитывать только отмеченные записи (True/False)
zebroid.records.get_prev(record, True)
Объект класса TZebroidRecord
# === Свойства ===
record.id # Идентификатор записи (int)
record.parent_id # Идентификатор родителя (int)
record.title # Название записи (string)
record.alt_name # alt_name записи (string)
record.keywords # meta keywords (string)
record.description # meta description (string)
record.text # текст записи (string)
record.tags # метки записи (string)
record.date # дата публикации записи
record.is_checked # признак отметки записи (bool)
record.is_static_page # признак статической страницы (bool)
record.is_draft # признак черновика (bool)
record.tree_level # уровень вложенности записи в дереве проекта (int)
# === Методы ===
# Удаление записи
record.delete()
# Перемещение записи. Параметры:
# parent - новый родитель (объект типа TZebroidRecord)
record.move(parent)
# Возвращает количество дочерних записей (int). Возвращает количество всех дочерних записей вне зависимости от того отмечены они или нет
record.children_count()
# Возвращает тип записи (строки: 'category', 'post', 'comment', 'static_page', 'unknown')
record.get_record_type()
# Возвращает значение доп. поля (string). Параметры:
# name - название доп. поля (string). Если передать строку 'ZEBR_AUTHOR' - вернет автора записи
record.get_addit_field('ZEBR_AUTHOR')
# Устанавливает значение доп. поля (string). Параметры:
# name - название доп. поля (string). Если передать строку 'ZEBR_AUTHOR' - запишет автора записи
# value - значение доп. поля (string). Если передать пустую строку - доп. поле будет удалено
record.set_addit_field('ZEBR_AUTHOR', 'admin')
zebroid.inputs
# Пример получение значения входного параметра с именем 'var_name'
print(zebroid.inputs['var_name'])
zebroid.progressbar
# === Свойства ===
zebroid.progressbar.position # Текущая позиция полосы прогресса
zebroid.progressbar.max # Максимальное значение полосы прогресса (по-умолчению равно zebroid.records.count(True))
# === Методы ===
# Двигает полосу прогресса на указанное значение. Параметры:
# value - значение для сдвига полосы (double)
zebroid.progressbar.move(1)
zebroid.project
# Подготавливает текст к экспорту (заменяет внутренние ссылки, картинки и т.д.). Параметры:
# record - запись текст которой обрабатываем (объект типа TZebroidRecord)
# text - текст (string) который нужно обработать
zebroid.project.export_text(record, record.text)
# Возвращает название проекта (string)
zebroid.project.project_name()
# Добавляет в проект картинку и возвращает её адрес (значение атрибута src для тега img). Параметры:
# path - путь к файлу картинки
zebroid.project.image_add('C\\images\\img1.png')
# Сохраняет все картинки, что были использованы в текстах для экспорта в указанную папку. Параметры:
# path - путь к папке для сохранения
zebroid.project.save_images('C\\images\\')
Интерпретатор Python
Zebroid поставляется вместе со своим интерпретатором Python версии 3.11. Файлы можно найти в папке «Zebroid\Core\Python Server\default». Для того, чтобы иметь возможность загружать пакеты через пакетный менеджер pip его нужно установить запустив следующую команду в консоли:
PS> .\python.exe get-pip.py
После этого можно получить список пакетов либо доустановить необходимые пакеты. Например:
PS> .\Scripts\pip.exe list
Package Version
---------- -------
pip 22.3.1
setuptools 66.0.0
wheel 0.38.4
PS> .\Scripts\pip.exe install numpy
Collecting numpy
Downloading numpy-1.24.1-cp311-cp311-win_amd64.whl (14.8 MB)
---------------------------------------- 14.8/14.8 MB 11.9 MB/s eta 0:00:00
Installing collected packages: numpy
WARNING: The script f2py.exe is installed in 'C:\Users\xxxx\Downloads\python-3.11.1-embed-amd64\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed numpy-1.24.1
PS> .\python.exe -c 'import numpy; print(numpy.__version__)'
1.24.1
Часть пакетов, необходимых для работы плагинов, что идёт в комплекте с программой, уже установлена и поставляется вместе с Zebroid.
Установка пользовательских версий Python
Для того, чтобы установить другие версии Python, необходимо их
скачать на официальном сайте (Windows embeddable package (32-bit)) и разархивировать в папку «Zebroid\Core\Python Server\». Называть папки со своими серверами можно как угодно, Зеброид сам распознает установленную в них версию Python. Дополнительные пакеты можно установить таким же способом, как описано выше.
Выбрать версию интерпретатора можно в выпадающему списку в Менеджере плагинов.