Skip to content

Шаблоны

Dmitrii edited this page Nov 2, 2022 · 10 revisions

Шаблоны предназначены для описания формата имени файла и структуры папок на основании информации из метаданных, содержащихся в файлах формата fb2 и epub. Новое имя файла и структура папок формируется на основании трех шаблонов:

  • шаблон имени автора, либо имен авторов, если в метаданных указано несколько авторов
  • шаблон имени переводчика, либо имен переводчиков, если в метаданных указано несколько переводчиков
  • результирующий шаблон имени файла и структуры папок

Шаблоны могут содержать простой текст, переменные, содержащие значения определенных тегов метаданных и функции. Простой текст включается в шаблон "как есть", переменные и функции ограничиваются символами {} (фигурные скобки). Например,

{title} - переменная, содержащая название книги
{lst(authors)} - обращение к функции list для формирования списка авторов книги

В шаблонах не разрешается использовать символы \ (обратная косая черта), ' (одинарная кавычка).

Переменные для имени автора и переводчика

  • {firstname} - имя
  • {middlename} - отчество
  • {lastname} - фамилия
  • {f} - инициал имени
  • {m} - инициал отчества

Переменные для имени файла

  • {title} - название книги.
  • {author} - имя автора книги, сформированное по соответствующему формату шаблона. Если авторов несколько, то содержит имя первого в списке автора.
  • {authors} - список (массив) всех авторов книги, имена которых сформированы по соответствующему шаблону.
  • {series} - Серия книги
  • {seriesindex} - Индекс книги в указанной серии
  • {abbrseries} - Аббревиатура серии книги (составляется из первых букв каждого слова серии)
  • {translator} - имя переводчика книги, сформированное по соответствующему формату шаблона. Если переводчиков несколько, то содержит имя первого в списке переводчика.
  • {translators} - список (массив) всех переводчиков книги, имена которых сформированы по соответствующему шаблону.
  • {bookid} - уникальный идентификатор книги
  • {md5} - контрольная сумма файла в формате md5

Методы для строковых переменных

Все строковые переменные представляют собой объекты, для которых доступны методы, позволяющие модифицировать значение данной переменной. Строковыми переменными являются все вышеперечисленные, за исключением {authors} и {translators}.

Для обращения к методу необходимо указать его имя через точку после имени переменной. Далее указать скобки (). Если метод требует дополнительные параметры, они указываются в скобках через запятую.

{variable.method()}
{variable.method(param1[,param2...paramN])}

Например,

{author.upper()}
{seriesindex.zfill(2)}

Доступны следующие методы:

  • capitalize() - преобразует первый символ строки к верхнему регистру, остальные символы - к нижнему
  • lower() - преобразует символы строки к нижнему регистру
  • lstrip() - обрезает ведущие пробелы слева
  • rstrip() - обрезает конечные пробелы справа
  • strip() - обрезает ведущие и конечные пробелы
  • swapcase() - Меняет местами регистры символов - символы в верхнем регистре преобразуются к нижнему регистру и наоборот
  • title() - преобразует первый символ каждого слова к верхнему регистру
  • upper() - преобразует символы строки к верхнему регистру
  • zfill(lenght) - дополняет строку ведущими нулями до указанной длины lenght. Например, {seriesindex.zfill(2)} дополнит ведущим нулем индекс серии до двух символов, типа "01", "02" и т.д.

Полный список доступных методов можно посмотреть в документации по языку программирования Python. Вы должны четко представлять, для чего вы используете методы, не описанные в настоящей документации.

Также вы можете обращаться к отельным символам строковой переменной, как элементу массиву. Например:

  • {author[0]} - вернет первый символ имени автора
  • {author[1:3]} - вернет символы со второго по четвертый
  • {author[1:]} - вернет символы со второго по последний

Функции

path

Вызов: path(path_elem1[, path_elem2,...path_elemN])

Назначение: Включает в шаблон корректную структуру папок на основании списка переданных элементов.

Например,

{path(author[0], author, series)}

для книги Азимова "Основание и Империя" из серии "Основание" вернет:

А\Азимов А\Основание\

а для книги "Сами боги" без серии:

А\Азимов А\

iif (inline if)

Вызов: iif(condition, if_value[, else_value])

Назначение: Включает в шаблон if_value, если указанное условие condition выполняется и else_value, если указанное условие не выполняется. else_value - необязательный параметр. Если он не указан, функция возвращает пустую строку при невыполнении указанного условия.

Например,

{iif(translator, "(перевод " + translator + ")")}

Для книги, где указан переводчик Сосновская, в шаблон будет включена строка "(перевод Сосновская)". Для книг, где не указан переводчик, в шаблон ничего не будет добавлено.

lst (list)

Вызов: lst(list[, delimiter])

Назначение: функция позволяет включить в шаблон элементы указанного списка, разделенных указанным разделителем delimiter. delimiter - необязательный параметр. По умолчанию список разделяется запятыми.

Например,

{lst(authors)}

Для книги братьев Стругацких (если в метаданных указано два автора отдельно) в шаблон будет включена строка "Стругацкий Аркадий, Стругацкий Борис".

Формат каждого имени зависит от указанного шаблона имени автора.

fe (first element)

Вызов: fe(list[, suffix])

Назначение: функция позволяет включить в шаблон первый элемент указанного списка. Если указано значение параметра suffix, то он добавляется в конце возвращаемого значения, при условии, что количество элементов в списке больше одного.

Например,

{fe(authors, " и др")}

Для книги Айзека Азимова включит в шаблон "Азимов А.", а для книг Азимова с соавторами - "Азимов А. и др".

Формат имени автора зависит от соответствующего шаблона.

Примеры шаблонов

Шаблоны для имени автора и переводчика

{firstname} {lastname} - Имя Фамилия

{lastname} {f} - Фамилия И

{lastname}{iif(f, " " + f)}{iif(m, ". " + m)} - Универсальный шаблон для Фамилия И. О и Фамилия И

Шаблоны для имени файла

Примеры ниже предполагают, что для имени автора используется шаблон {lastname} {f}, для имени переводчика {lastname}.

Простой шаблон

{author}. {title}
Азимов А. Основание и империя.fb2
Азимов А. Все боги.fb2

Разложить книги по авторам, сериям, внутри серий книги пронумеровать

{path(author,series)}{iif(seriesindex, seriesindex.zfill(2) + ". ")}{title}
Азимов А\Основание\04. Основание и империя.fb2
Азимов А\Все боги.fb2

Указать, что у книги несколько авторов, указать фамилию переводчика

{fe(authors, "и др")}. {title}{iif(translator, " (пер. " + translator + ")")}  
Азимов А. Основание и империя (пер. Сосновская).fb2
Шекли Р. и др. Сборник научной фантастики (пер. Гальперина).fb2

Указать всех авторов и всех переводчиков

{lst(authors)}. {title}{iif(len(translators) > 0, " (перевод " + lst(translators) + ")")}
Шекли Р., Азимов А., Брэдбери Р. Сборник научной фантастики (перевод Гальперина, Иорданский, Смирнов, Скороденко, Санин, Короткова, Корчагин, Тогоева, Черняев, Белкин).fb2

Будьте внимательны, включая всех авторов и переводчиков в имя файла - операционные системы имеют ограничения на длину имени файла!

Шаблоны, которыми пользуется автор Libro2

  • Шаблон имени автора {lastname} {f}
  • Шаблон имени переводчика {lastname}
  • Шаблон имени файла {author}. {title}{iif(translator, " (пер. " + translator + ")")}