140 lines
3.8 KiB
Python
140 lines
3.8 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class Link(BaseModel):
|
|
title: Optional[str] = None
|
|
rel: Optional[str] = None
|
|
href: Optional[str] = None
|
|
type: Optional[str] = None
|
|
templated: Optional[bool] = None
|
|
width: Optional[int] = None
|
|
height: Optional[int] = None
|
|
|
|
|
|
class Series(BaseModel):
|
|
name: Optional[str] = None
|
|
position: Optional[int] = None
|
|
links: Optional[List[Link]] = None
|
|
|
|
|
|
class CollectionItem(BaseModel):
|
|
name: Optional[str] = None
|
|
position: Optional[int] = None
|
|
links: Optional[List[Link]] = None
|
|
|
|
|
|
class BelongsTo(BaseModel):
|
|
series: Optional[List[Series]] = None
|
|
collection: Optional[List[CollectionItem]] = None
|
|
|
|
|
|
class Rendition(BaseModel):
|
|
additionalProp1: Dict[str, Any]
|
|
additionalProp2: Dict[str, Any]
|
|
additionalProp3: Dict[str, Any]
|
|
|
|
|
|
class Metadata(BaseModel):
|
|
title: Optional[str] = None
|
|
identifier: Optional[str] = None
|
|
type: Optional[str] = None
|
|
conformsTo: Optional[str] = None
|
|
sortAs: Optional[str] = None
|
|
subtitle: Optional[str] = None
|
|
modified: Optional[str] = None
|
|
published: Optional[str] = None
|
|
language: Optional[str] = None
|
|
author: Optional[List[str]] = None
|
|
translator: Optional[List[str]] = None
|
|
editor: Optional[List[str]] = None
|
|
artist: Optional[List[str]] = None
|
|
illustrator: Optional[List[str]] = None
|
|
letterer: Optional[List[str]] = None
|
|
penciler: Optional[List[str]] = None
|
|
colorist: Optional[List[str]] = None
|
|
inker: Optional[List[str]] = None
|
|
contributor: Optional[List[str]] = None
|
|
publisher: Optional[List[str]] = None
|
|
subject: Optional[List[str]] = None
|
|
readingProgression: Optional[str] = None
|
|
description: Optional[str] = None
|
|
numberOfPages: Optional[int] = None
|
|
belongsTo: Optional[BelongsTo] = None
|
|
rendition: Optional[Rendition] = None
|
|
|
|
|
|
class Image(BaseModel):
|
|
title: Optional[str] = None
|
|
rel: Optional[str] = None
|
|
href: Optional[str] = None
|
|
type: Optional[str] = None
|
|
templated: Optional[bool] = None
|
|
width: Optional[int] = None
|
|
height: Optional[int] = None
|
|
|
|
|
|
class ReadingOrderItem(BaseModel):
|
|
title: Optional[str] = None
|
|
rel: Optional[str] = None
|
|
href: Optional[str] = None
|
|
type: Optional[str] = None
|
|
templated: Optional[bool] = None
|
|
width: Optional[int] = None
|
|
height: Optional[int] = None
|
|
|
|
|
|
class Resource(BaseModel):
|
|
title: Optional[str] = None
|
|
rel: Optional[str] = None
|
|
href: Optional[str] = None
|
|
type: Optional[str] = None
|
|
templated: Optional[bool] = None
|
|
width: Optional[int] = None
|
|
height: Optional[int] = None
|
|
|
|
|
|
class TocItem(BaseModel):
|
|
title: Optional[str] = None
|
|
rel: Optional[str] = None
|
|
href: Optional[str] = None
|
|
type: Optional[str] = None
|
|
templated: Optional[bool] = None
|
|
width: Optional[int] = None
|
|
height: Optional[int] = None
|
|
|
|
|
|
class Landmark(BaseModel):
|
|
title: Optional[str] = None
|
|
rel: Optional[str] = None
|
|
href: Optional[str] = None
|
|
type: Optional[str] = None
|
|
templated: Optional[bool] = None
|
|
width: Optional[int] = None
|
|
height: Optional[int] = None
|
|
|
|
|
|
class PageListItem(BaseModel):
|
|
title: Optional[str] = None
|
|
rel: Optional[str] = None
|
|
href: Optional[str] = None
|
|
type: Optional[str] = None
|
|
templated: Optional[bool] = None
|
|
width: Optional[int] = None
|
|
height: Optional[int] = None
|
|
|
|
|
|
class Manifest(BaseModel):
|
|
context: Optional[str] = None
|
|
metadata: Optional[Metadata] = None
|
|
links: Optional[List[Link]] = None
|
|
images: Optional[List[Image]] = None
|
|
readingOrder: Optional[List[ReadingOrderItem]] = None
|
|
resources: Optional[List[Resource]] = None
|
|
toc: Optional[List[TocItem]] = None
|
|
landmarks: Optional[List[Landmark]] = None
|
|
pageList: Optional[List[PageListItem]] = None
|