Skip to main content

cli-утилита для генерации превью-изображений по данным Шикимори

Project description

Генератор превью для Shikimori

Демо

Демо

pypi

Описание

anime-pgen представляет собой cli-утилиту для генерации превью-изображений по данным Шикимори (скачивание данных включено в функциональность). В качестве фреймворка для организации cli интерфейса используется Typer

Требования и установка

  • Python ^3.9
  • pip, или, poetry или любой другой пакетный менеджер для Python
  • Приложение на Shikimori (для работы необходимо иметь APPLICATION_NAME)

Установка:

$> pip install anime-pgen

[Опционально] Подсказки для терминала:

$> pgen --install-completion

Использование

  1. Понадобится создать папку для конфигов и контента
$> mkdir previews && cd previews
  1. Далее нужно добавить конфиг-файл. Его можно взять в репозитории. Имя файла: 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
  1. Для удобства создадим папку 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
  1. В новосозданную папку 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
  1. В content так же нужно положить шрифты. Для Шикимори используются:
    • 🔗 OpenSans для заголовка и описания
    • 🔗 Tahoma для рейтинга
    • 🔗 NotoSerif_JP для Японских иероглифов

Финально папка 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

config.yaml

Рассмотрим конфигурационный файл. По дефолту он выглядит так:

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 

Путь до файла с тайлом для заднего фона. Например, дефолтный для Шикимори:

Tile

Рекоммендации:

  • Квадратный (иначе сплющится)
  • Бесшовный
  • .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 шрифты

Использование

  • Подробная документация по cli-интерфейсу: DOCS.md
  • Пример использования: Makefile

Использование состоит из двух частей:

  1. Скачиваем данные из API-Шикимори по id аниме или манги
  2. Генерируем превью по данным

Скачаем информацию об аниме "Ковбой Бибоп":

$> 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

Готово! 🥳

FAQ

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anime-pgen-1.0.1.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

anime_pgen-1.0.1-py3-none-any.whl (27.1 kB view details)

Uploaded Python 3

File details

Details for the file anime-pgen-1.0.1.tar.gz.

File metadata

  • Download URL: anime-pgen-1.0.1.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.2 Darwin/21.5.0

File hashes

Hashes for anime-pgen-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a88e12cbba63990125f38411636684e670404484995d912bb76fa601640d2b23
MD5 6bd9a3a20bccd2f65a5e7c02dbab1e04
BLAKE2b-256 a8991bb41fd04f6b8888feef478e0da89e0b0119bbb3047dbbe805f039b2ec35

See more details on using hashes here.

File details

Details for the file anime_pgen-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: anime_pgen-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 27.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.2 Darwin/21.5.0

File hashes

Hashes for anime_pgen-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a945a57cd3ecab4ccfeebd1693618be30810826259d6dfe73bca6131ce566691
MD5 c773a8ce4b10e6dea4df0db92ef56ea9
BLAKE2b-256 70219ac4c43b9871027f6fbd75305599e827bcb13b445cbb29b10fcb239d64a4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page