animedex.backends.shikimori.models

Rich Shikimori dataclasses.

ShikimoriImage

class animedex.backends.shikimori.models.ShikimoriImage(*, original: str | None = None, preview: str | None = None, x96: str | None = None, x48: str | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Image URL block used by Shikimori resources.

original: str | None
preview: str | None
x96: str | None
x48: str | None

ShikimoriEntity

class animedex.backends.shikimori.models.ShikimoriEntity(*, id: int | None = None, name: str | None = None, russian: str | None = None, image: ShikimoriImage | None = None, url: str | None = None, kind: str | None = None, entry_type: str | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Generic Shikimori entity reference.

id: int | None
name: str | None
russian: str | None
image: ShikimoriImage | None
url: str | None
kind: str | None
entry_type: str | None
source_tag: SourceTag | None

ShikimoriStudio

class animedex.backends.shikimori.models.ShikimoriStudio(*, id: int, name: str | None = None, filtered_name: str | None = None, real: bool | None = None, image: str | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Studio record.

id: int
name: str | None
filtered_name: str | None
real: bool | None
image: str | None
source_tag: SourceTag | None
to_common() Studio[source]

Project the studio onto the common studio shape.

ShikimoriPublisher

class animedex.backends.shikimori.models.ShikimoriPublisher(*, id: int, name: str | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Publisher row from /api/publishers.

id: int
name: str | None
source_tag: SourceTag | None

ShikimoriVideo

class animedex.backends.shikimori.models.ShikimoriVideo(*, id: int | None = None, url: str | None = None, image_url: str | None = None, player_url: str | None = None, name: str | None = None, kind: str | None = None, hosting: str | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Video row from /api/animes/{id}/videos.

id: int | None
url: str | None
image_url: str | None
player_url: str | None
name: str | None
kind: str | None
hosting: str | None
source_tag: SourceTag | None

ShikimoriScreenshot

class animedex.backends.shikimori.models.ShikimoriScreenshot(*, original: str | None = None, preview: str | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Screenshot row from /api/animes/{id}/screenshots.

original: str | None
preview: str | None
source_tag: SourceTag | None

ShikimoriCharacter

class animedex.backends.shikimori.models.ShikimoriCharacter(*, id: int, name: str | None = None, russian: str | None = None, image: ShikimoriImage | None = None, url: str | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Character reference from anime roles.

id: int
name: str | None
russian: str | None
image: ShikimoriImage | None
url: str | None
source_tag: SourceTag | None
to_common() Character[source]

Project this character onto the common character shape.

ShikimoriPerson

class animedex.backends.shikimori.models.ShikimoriPerson(*, id: int, name: str | None = None, russian: str | None = None, image: ShikimoriImage | None = None, url: str | None = None, japanese: str | None = None, job_title: str | None = None, birth_on: Dict[str, Any] | None = None, deceased_on: Dict[str, Any] | None = None, website: str | None = None, groupped_roles: List[List[Any]] = [], roles: List[Dict[str, Any]] = [], works: List[Dict[str, Any]] = [], topic_id: int | None = None, person_favoured: bool | None = None, producer: bool | None = None, producer_favoured: bool | None = None, mangaka: bool | None = None, mangaka_favoured: bool | None = None, seyu: bool | None = None, seyu_favoured: bool | None = None, updated_at: str | None = None, thread_id: int | None = None, birthday: Dict[str, Any] | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Person reference or top-level person record.

id: int
name: str | None
russian: str | None
image: ShikimoriImage | None
url: str | None
japanese: str | None
job_title: str | None
birth_on: Dict[str, Any] | None
deceased_on: Dict[str, Any] | None
website: str | None
groupped_roles: List[List[Any]]
roles: List[Dict[str, Any]]
works: List[Dict[str, Any]]
topic_id: int | None
person_favoured: bool | None
producer: bool | None
producer_favoured: bool | None
mangaka: bool | None
mangaka_favoured: bool | None
seyu: bool | None
seyu_favoured: bool | None
updated_at: str | None
thread_id: int | None
birthday: Dict[str, Any] | None
source_tag: SourceTag | None
to_common() Staff[source]

Project this person onto the common staff shape.

ShikimoriManga

class animedex.backends.shikimori.models.ShikimoriManga(*, id: int, name: str | None = None, russian: str | None = None, image: ShikimoriImage | None = None, url: str | None = None, kind: str | None = None, score: str | None = None, status: str | None = None, volumes: int | None = None, chapters: int | None = None, aired_on: str | None = None, released_on: str | None = None, english: List[str | None] = [], japanese: List[str | None] = [], synonyms: List[str] = [], license_name_ru: str | None = None, description: str | None = None, description_html: str | None = None, description_source: str | None = None, franchise: str | None = None, favoured: bool | None = None, anons: bool | None = None, ongoing: bool | None = None, thread_id: int | None = None, topic_id: int | None = None, myanimelist_id: int | None = None, rates_scores_stats: List[Dict[str, Any]] = [], rates_statuses_stats: List[Dict[str, Any]] = [], licensors: List[str] = [], genres: List[ShikimoriEntity] = [], publishers: List[ShikimoriPublisher] = [], user_rate: Dict[str, Any] | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Manga or ranobe record from /api/mangas and /api/ranobe.

id: int
name: str | None
russian: str | None
image: ShikimoriImage | None
url: str | None
kind: str | None
score: str | None
status: str | None
volumes: int | None
chapters: int | None
aired_on: str | None
released_on: str | None
english: List[str | None]
japanese: List[str | None]
synonyms: List[str]
license_name_ru: str | None
description: str | None
description_html: str | None
description_source: str | None
franchise: str | None
favoured: bool | None
anons: bool | None
ongoing: bool | None
thread_id: int | None
topic_id: int | None
myanimelist_id: int | None
rates_scores_stats: List[Dict[str, Any]]
rates_statuses_stats: List[Dict[str, Any]]
licensors: List[str]
genres: List[ShikimoriEntity]
publishers: List[ShikimoriPublisher]
user_rate: Dict[str, Any] | None
source_tag: SourceTag | None
to_common() Manga[source]

Project this Shikimori manga or ranobe onto the common manga shape.

ShikimoriUserImage

class animedex.backends.shikimori.models.ShikimoriUserImage(*, x160: str | None = None, x148: str | None = None, x80: str | None = None, x64: str | None = None, x48: str | None = None, x32: str | None = None, x16: str | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

User avatar URL block used by club member rows.

x160: str | None
x148: str | None
x80: str | None
x64: str | None
x48: str | None
x32: str | None
x16: str | None

ShikimoriUser

class animedex.backends.shikimori.models.ShikimoriUser(*, id: int, nickname: str | None = None, avatar: str | None = None, image: ShikimoriUserImage | None = None, last_online_at: str | None = None, url: str | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Small public user row nested inside club responses.

id: int
nickname: str | None
avatar: str | None
image: ShikimoriUserImage | None
last_online_at: str | None
url: str | None

ShikimoriClub

class animedex.backends.shikimori.models.ShikimoriClub(**extra_data: Any)[source]

Bases: BackendRichModel

Club record from /api/clubs and /api/clubs/{id}.

id: int
name: str | None
is_censored: bool | None
join_policy: str | None
comment_policy: str | None
description: str | None
description_html: str | None
mangas: List[ShikimoriEntity]
characters: List[ShikimoriCharacter]
thread_id: int | None
topic_id: int | None
user_role: str | None
style_id: int | None
members: List[ShikimoriUser]
animes: List[ShikimoriAnime]
images: List[Dict[str, Any]]
source_tag: SourceTag | None

ShikimoriRole

class animedex.backends.shikimori.models.ShikimoriRole(*, roles: List[str] = [], roles_russian: List[str] = [], character: ShikimoriCharacter | None = None, person: ShikimoriPerson | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Role row from /api/animes/{id}/roles.

roles: List[str]
roles_russian: List[str]
character: ShikimoriCharacter | None
person: ShikimoriPerson | None
source_tag: SourceTag | None

ShikimoriAnime

class animedex.backends.shikimori.models.ShikimoriAnime(*, id: int, name: str | None = None, russian: str | None = None, image: ShikimoriImage | None = None, url: str | None = None, kind: str | None = None, score: str | None = None, status: str | None = None, episodes: int | None = None, episodes_aired: int | None = None, aired_on: str | None = None, released_on: str | None = None, rating: str | None = None, english: List[str | None] = [], japanese: List[str | None] = [], synonyms: List[str] = [], duration: int | None = None, description: str | None = None, description_html: str | None = None, franchise: str | None = None, favoured: bool | None = None, anons: bool | None = None, ongoing: bool | None = None, myanimelist_id: int | None = None, rates_scores_stats: List[Dict[str, Any]] = [], rates_statuses_stats: List[Dict[str, Any]] = [], updated_at: str | None = None, next_episode_at: str | None = None, fansubbers: List[str] = [], fandubbers: List[str] = [], licensors: List[str] = [], genres: List[ShikimoriEntity] = [], studios: List[ShikimoriStudio] = [], videos: List[ShikimoriVideo] = [], screenshots: List[ShikimoriScreenshot] = [], source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Anime record from /api/animes and /api/animes/{id}.

id: int
name: str | None
russian: str | None
image: ShikimoriImage | None
url: str | None
kind: str | None
score: str | None
status: str | None
episodes: int | None
episodes_aired: int | None
aired_on: str | None
released_on: str | None
rating: str | None
english: List[str | None]
japanese: List[str | None]
synonyms: List[str]
duration: int | None
description: str | None
description_html: str | None
franchise: str | None
favoured: bool | None
anons: bool | None
ongoing: bool | None
myanimelist_id: int | None
rates_scores_stats: List[Dict[str, Any]]
rates_statuses_stats: List[Dict[str, Any]]
updated_at: str | None
next_episode_at: str | None
fansubbers: List[str]
fandubbers: List[str]
licensors: List[str]
genres: List[ShikimoriEntity]
studios: List[ShikimoriStudio]
videos: List[ShikimoriVideo]
screenshots: List[ShikimoriScreenshot]
source_tag: SourceTag | None
to_common() Anime[source]

Project this Shikimori anime onto the common anime shape.

ShikimoriCalendarEntry

class animedex.backends.shikimori.models.ShikimoriCalendarEntry(*, next_episode: int | None = None, next_episode_at: str | None = None, duration: int | None = None, anime: ShikimoriAnime | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Calendar row from /api/calendar.

next_episode: int | None
next_episode_at: str | None
duration: int | None
anime: ShikimoriAnime | None
source_tag: SourceTag | None
to_common() Anime[source]

Project the nested anime onto the common anime shape.

ShikimoriTopic

class animedex.backends.shikimori.models.ShikimoriTopic(*, id: int | None = None, topic_title: str | None = None, body: str | None = None, html_body: str | None = None, type: str | None = None, linked_id: int | None = None, linked_type: str | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Topic row from anime, manga, or global topic endpoints.

id: int | None
topic_title: str | None
body: str | None
html_body: str | None
type: str | None
linked_id: int | None
linked_type: str | None
source_tag: SourceTag | None

ShikimoriResource

class animedex.backends.shikimori.models.ShikimoriResource(*, id: Any | None = None, source_tag: SourceTag | None = None, **extra_data: Any)[source]

Bases: BackendRichModel

Generic Shikimori response row for heterogeneous endpoints.

id: Any | None
source_tag: SourceTag | None

selftest

animedex.backends.shikimori.models.selftest() bool[source]

Smoke-test the Shikimori rich models.