Демо
anime-pgen
представляет собой cli
-утилиту для генерации превью-изображений по данным Шикимори (скачивание данных включено в функциональность). В качестве фреймворка для организации cli
интерфейса используется Typer
- Python
^3.9
pip
, или,poetry
или любой другой пакетный менеджер для Python- Приложение на Shikimori (для работы необходимо иметь
APPLICATION_NAME
)
Установка:
$> pip install anime-pgen
[Опционально] Подсказки для терминала:
$> pgen --install-completion
- Понадобится создать папку для конфигов и контента
$> mkdir previews && cd previews
- Далее нужно добавить конфиг-файл. Его можно взять в репозитории. Имя файла:
config.yaml
$> cp config.example.yaml config.yaml
$> l
total 16
drwxr-xr-x 4 user staff 128B Jun 28 19:48 .
drwxr-xr-x 23 user staff 736B Jun 28 19:43 ..
-rw-r--r-- 1 user staff 1.1K Jun 28 19:48 config.yaml
- Для удобства создадим папку
content
- в ней разместим шрифты и иконки
$> mkdir content
$> l
total 16
drwxr-xr-x 5 user staff 160B Jun 28 19:52 .
drwxr-xr-x 23 user staff 736B Jun 28 19:49 ..
-rw-r--r-- 1 user staff 1.1K Jun 28 19:48 config.yaml
drwxr-xr-x 2 user staff 64B Jun 28 19:52 content
- В новосозданную папку
content
можно сразу перенести из репозитория двусоставное лого Шикимори, иконку рейтинга и заполнение заднего фона (или можно использовать свои)
$> cp shikimori-glyph.png content/shikimori-glyph.png
$> cp shikimori-logo.png content/shikimori-logo.png
$> cp star.png content/star.png
$> cp tile.png content/tile.png
$> tree -a
.
└── previews
├── config.yaml
└── content
├── shikimori-glyph.png
├── shikimori-logo.png
├── star.png
└── tile.png
- В
content
так же нужно положить шрифты. Для Шикимори используются:
Финально папка previews
выглядит примерно так:
$> tree -a -L 4
.
└── previews
├── config.yaml
└── content
├── Noto_Serif_JP
│ ├── NotoSerifJP-Black.otf
│ ├── NotoSerifJP-Bold.otf
│ ├── NotoSerifJP-ExtraLight.otf
│ ├── NotoSerifJP-Light.otf
│ ├── NotoSerifJP-Medium.otf
│ ├── NotoSerifJP-Regular.otf
│ ├── NotoSerifJP-SemiBold.otf
│ └── OFL.txt
├── Open_Sans
│ ├── LICENSE.txt
│ ├── OpenSans-Italic-VariableFont_wdth,wght.ttf
│ ├── OpenSans-VariableFont_wdth,wght.ttf
│ ├── README.txt
│ └── static
├── Tahoma
│ ├── COPYRIGHT.txt
│ └── tahoma.ttf
├── shikimori-glyph.png
├── shikimori-logo.png
├── star.png
└── tile.png
Рассмотрим конфигурационный файл. По дефолту он выглядит так:
size: 'big'
colors:
background: '#ffffff'
text: '#343434'
year: '#555555'
rating:
active: '#4c86c8'
regular: '#cccccc'
content:
images:
background_tile: content/tile.png
star: content/star.png
logo:
glyph: content/shikimori-glyph.png
text: content/shikimori-logo.png
fonts:
text: content/Open_Sans/OpenSans-VariableFont_wdth,wght.ttf
bold_text: content/Open_Sans/static/OpenSans/OpenSans-Bold.ttf
numbers: content/Tahoma/tahoma.ttf
japanese: content/Noto_Serif_JP/NotoSerifJP-Bold.otf
size: 'big'
Возможные значения:
big
= 1200 x 630 (значение по умолчанию)small
= 600 x 315
Это размер финального изображения. Цифры являются рекоммендацией к формату превью от Facebook/Twitter/Вконтакте.
rating:
active: '#4c86c8'
regular: '#cccccc'
Цвета звёздочек рейтинга - активных и плейсхолдеров. В конфиге представлены их дефолтные значения.
colors:
background: '#ffffff'
text: '#343434'
year: '#555555'
Цвета:
- Подложки (
background
) - Всего текса (
text
) - Года выпуска (
year
)
В конфиге представлены их дефолтные значения.
Важно!
colors
и size
- опциональны.
В случае, если они не указаны в файле - будут использовать дефолтные значения (которые совпадают с дефолтным конфигом)
content
- обязательные поля
Важно2!
Для картинок нельзя использовать .svg
, только .jpeg|.jpg|.png
(ограничение библиотеки)
content:
images:
background_tile: content/tile.png
Путь до файла с тайлом для заднего фона. Например, дефолтный для Шикимори:
Рекоммендации:
- Квадратный (иначе сплющится)
- Бесшовный
.png
с альфа-каналом, если хочется красивого наложения на белый фон
content:
images:
star: content/star.png
Путь до файла со звездой рейтинга.
Требования:
- Прозрачный фон
- Фигура чёрного цвета
- Квадрат
При накладывании на превью чёрный цвет перекрашивается в rating.active
или rating.regular
logo:
glyph: content/shikimori-glyph.png
text: content/shikimori-logo.png
Двусоставное лого Шикимори - Иероглиф + "SHIKIMORI"
Требования:
- Одинаковая высота
.png
с альфа-каналом
fonts:
text: content/Open_Sans/OpenSans-VariableFont_wdth,wght.ttf
bold_text: content/Open_Sans/static/OpenSans/OpenSans-Bold.ttf
numbers: content/Tahoma/tahoma.ttf
japanese: content/Noto_Serif_JP/NotoSerifJP-Bold.otf
Путь до шрифтов:
text
- описание и подписиbold_text
- названиеnumber
- рейтинг и годjapanese
- для Иероглифов, Хираганы и Катаканы
Требования:
TrueType
шрифты
Использование состоит из двух частей:
- Скачиваем данные из API-Шикимори по
id
аниме или манги - Генерируем превью по данным
Скачаем информацию об аниме "Ковбой Бибоп":
$> pgen fetch 1 --app-name <APPLICATION_NAME_из_Шикимори>
Successfully saved to .pgen.json
$> l
total 40
drwxr-xr-x 6 vladimirlevin staff 192B Jun 28 20:36 .
drwxr-xr-x 3 vladimirlevin staff 96B Jun 28 19:56 ..
-rw-r--r-- 1 vladimirlevin staff 9.2K Jun 28 20:36 .pgen.json
-rw-r--r-- 1 vladimirlevin staff 1.1K Jun 28 19:48 config.yaml
drwxr-xr-x 9 vladimirlevin staff 288B Jun 28 20:03 content
По умолчанию данные сохраняются в .pgen.json
, путь можно изменить, передав флаг --save-path 'my_file.json'
$> pgen fetch 1 --app-name <APPLICATION_NAME_из_Шикимори> --save-path "my_file.json"
Successfully saved to my_file.json
Переходим к генерации:
$>pgen make-preview .pgen.json \
--output-folder "." \
--config "config.yaml" \
--app-name <APPLICATION_NAME_из_Шикимори>
Successfully create previews:
- 1.jpg
Готово! 🥳
Q: Как разметить много за раз?
A: С флагом -M
можно за раз скачать и разметить много Аниме/Манги:
$> pgen fetch -M "1,5,8" --app-name <APPLICATION_NAME_из_Шикимори>
Successfully saved to .pgen.json
$> pgen make-preview .pgen.json --output-folder "." --config "config.yaml" --app-name <APPLICATION_NAME_из_Шикимори>
Successfully create previews:
- 1.jpg
- 5.jpg
- 8.jpg
Q: Как разметить мангу?
A: С помощью флага -m
можно скачать Мангу. Создание превью опирается на данные, поэтому во второй команде ничего не потребуется менять
$> pgen fetch -mM "1,8" --app-name <APPLICATION_NAME_из_Шикимори>
Successfully saved to .pgen.json
$> pgen make-preview .pgen.json --output-folder "." --config "config.yaml" --app-name <APPLICATION_NAME_из_Шикимори>
Successfully create previews:
- 1.jpg
- 8.jpg