Управление подгруппами книг, например «genre»

Некоторые люди хотят организовать книги в своей библиотеке в подгруппы, похожие на подпапки. Наиболее распространенной причиной является создание жанровой иерархии, но есть и многие другие. Один пользователь попросил способ организовать учебники по предмету и номеру курса. Другой хотел отслеживать подарки по предмету и получателю. Этот учебник будет использовать жанр как пример для остальной части этого сообщения.

Прежде чем продолжить, обратите внимание, что мы не говорим о папках на жестком диске. Подгруппы не являются файловыми папками. Книги не будут никуда копироваться. Это не влияет на файловую структуру библиотеки. Вместо этого мы представляем способ организации и отображения подгрупп книг в библиотеке.

Обычно для подгрупп, таких как жанры, требуются:

  • Подгруппа (например, жанр) должна содержать (указывать) книги, а не категории книг. Это то, что отличает подгруппы от пользовательских категорий calibre.

  • Книга может быть в нескольких подгруппах (жанрах). Это отличает подгруппы от физических файловых папок.

  • Подгруппы (жанры) должны образовывать иерархию; подгруппы могут содержать подгруппы.

Теги дают вам первые два. Если вы тегируете книгу жанром, вы можете использовать браузер тегов (или поиск) для поиска книг с этим жанром, с выдачей первого. Многие книги могут иметь один и тот же тег (-и), предоставляя вам второй. Проблема в том, что теги не удовлетворяют третьему требованию. Они не обеспечивают иерархию.

sgtree Функция иерархии в calibre дает вам третье - способность видеть жанры в «дереве» и возможность легко искать книги в жанре или поджанре. Например, предположим, что ваша структура жанра похожа на следующую:

Genre
    . History
    .. Japanese
    .. Military
    .. Roman
    . Mysteries
    .. English
    .. Vampire
    . Science Fiction
    .. Alternate History
    .. Military
    .. Space Opera
    . Thrillers
    .. Crime
    .. Horror
    etc.

Используя функцию иерархии, вы можете увидеть эти жанры в браузере тегов в виде дерева, как показано на изображении на экране. В этом примере внешний уровень (жанр) является настраиваемым столбцом, который содержит жанры. Жанры, содержащие поджанры, появляются с небольшим треугольником рядом с ними. Нажатие на этот треугольник откроет элемент и покажет суб-жанры, как вы можете видеть в Истории и Научной фантастике.

Нажав на жанр, вы можете искать все книги с этим жанром или потомками этого жанра. Например, нажатие на Science Fiction может дать все три дочерних жанра: Alternate History, Military и Space Opera. Нажатие на Alternate History выдаст книги в этом жанре, игнорируя те, которые находятся в Military и Space Opera . Конечно, книга может иметь несколько жанров. Если в книге есть жанры как Space Opera, так и Military, вы увидите эту книгу, если вы нажмете на любой жанр. Подробнее поиск обсуждается ниже.

Ещё одна вещь, которую вы можете видеть по изображению, состоит в том, что жанр Military появляется дважды, один раз в Истории и один раз под Научной фантастикой. Поскольку жанры находятся в иерархии, это два отдельных жанра. Книга может быть в одном, другом или (сомнительно в этом случае) и в том, и другом. Например, книга Уинстона Черчилля «Вторая мировая война» могут быть в «History.Military». Книги почёта Хэрингтона Дэвида Вебера можно найти в «Science Fiction.Military», и в этом отношении также в «Science Fiction.Space Opera».

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

Установка

К настоящему моменту ваш вопрос может быть следующим: «Как всё это настроить?» Всего три шага: 1) создать пользовательский столбец, 2) сообщить calibre, что новый столбец должен рассматриваться как иерархия, и 3) добавить жанры.

Вы создаете пользовательский столбец обычным способом, используя «Настройки»->«Добавить свои собственные столбцы». Этот пример использует «#genre» в качестве имени поиска и «Genre» в качестве заголовка столбца. Тип столбца - это «Текст с разделителями-запятыми, напр. теги, отображаемые в Браузере тегов.»

_images/sg_cc.jpg

Затем, перезапустив calibre, вы должны сказать calibre, что столбец должен рассматриваться как иерархия. Перейдите по ссылке :guilabel:«Настройки->Look & feel->Tag browser» и введите имя поиска «#genre» в «Категории с иерархическими элементами». Нажмите :guilabel:«Применить», и вы закончили настройку.

_images/sg_pref.png

На данный момент в столбце нет жанров. Остаётся последний шаг: как применить жанр к книге. Жанр не существует в calibre, пока он не появится, по крайней мере, в одной книге. Чтобы узнать, как применить жанр в первый раз, мы должны подробно рассказать о том, как выглядит жанр в метаданных для книги.

Иерархия «вещей» строится путем создания элемента, состоящего из фраз, разделённых точками. Продолжая пример жанра, эти предметы будут «History.Military», «Mysteries.Vampire», «Science Fiction.Space Opera» и т.д. Таким образом, чтобы создать новый жанр, вы выбираете книгу, которая должна иметь этот жанр, редактируете его метаданные и вводите новый жанр в созданный вами столбец. Продолжая наш пример, если вы хотите присвоить книге новый жанр «Комиксы» с поджанром «Супергерои», вы должны «редактировать метаданные» для этой книги (комикса), выбрать вкладку «Пользовательские метаданные», а затем ввести «Comics.Superheroes», как показано ниже (игнорируйте другие настраиваемые столбцы):

_images/sg_genre.jpg

После выполнения вышеизложенного вы увидите в Браузере тегов:

_images/sg_tb.jpg

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

Примечание

Иерархическое отображение работает только в том случае, если браузер тегов настроен на сортировку элементов по имени. Это значение по умолчанию, и его можно проверить, нажав кнопку Configure в нижней части браузера тегов.

Поиск

_images/sg_search.jpg

Простейший способ поиска жанров - использовать Браузер тегов, нажав на жанр, который вы хотите увидеть. Нажав на жанр с потомками, вы увидите книги с этим жанром и всеми жанрами-потомками. Однако это может вызвать вопрос. Просто потому, что у жанра есть потомки, это не значит, что это не собственный жанр. Например, книга может иметь жанр «History», но не «History.Military». Как вы ищете книги только с «History»?

Механизм поиска Браузера тегов знает, имеет ли элемент дочерние элементы. Если это так, щелчок по элементу циклически проходит через 5 поисковых запросов вместо обычных трёх. Первый - обычный зелёный плюс, который показывает только книги с этим жанром (например, «История»). Второй - двойной плюс (показан выше), который показывает вам книги с этим жанром и всеми суб-жанрами (например, History and History.Military). Третий - это нормальный красный минус, который показывает вам книги без этого точного жанра. Четвёртый - это удвоенный минус, который показывает вам книги без этого жанра или поджанров. Пятый возвращается к началу, без знака, что означает отсутствие поиска.

Ограничения

Если вы ищете жанр, а затем создаете сохранённый поиск, вы можете использовать поле «Ограничить», чтобы создать виртуальную библиотеку книг с этим жанром. Это полезно, если вы хотите выполнять другие поиски в жанре или управлять/обновлять метаданные для книг в жанре. Продолжая наш пример, вы можете создать сохраненный поиск с именем «History.Japanese», сначала щелкнув по жанру Japanese в браузере тегов, чтобы выполнить поиск в поле поиска, введя History.Japanese в сохраненное поле поиска, а затем нажав кнопку «Сохранить поиск» (зелёное поле с белым плюсом справа).

_images/sg_restrict.jpg

После создания сохраненного поиска вы можете использовать его как ограничение.

_images/sg_restrict2.jpg

Полезные шаблонные функции

Возможно, вы захотите использовать информацию о жанре в шаблоне, например, сохранить на диск или отправить на устройство. Тогда может возникнуть вопрос: «Как получить самое внешнее имя или имена жанра?». Функция шаблонов calibre - подпункты предоставляется как раз для того чтобы сделать это проще.

Например, предположим, что вы хотите добавить внешний уровень жанра к шаблону save-to-disk, чтобы создавать папки жанра, как в «History/The Gathering Storm - Churchill, Winston» . Для этого вы должны извлечь первый уровень иерархии и добавить его в начале вместе с слэшем (косой чертой) для указания что нужно создать папку. Ниже приведён шаблон:

{#genre:subitems(0,1)||/}{title} - {authors}

См. The template language для получения дополнительной информации о шаблонах и функции subitems().