Type Definitions
VeeDB provides comprehensive type definitions for all VNDB API entities and request/response structures.
Common Types
Query and Response Types
- class veedb.QueryRequest(filters: list | str | None = <factory>, fields: str = 'id', sort: str = 'id', reverse: bool = False, results: int = 10, page: int = 1, user: str | None = None, count: bool = False, compact_filters: bool = False, normalized_filters: bool = False)[source]
Bases:
objectCommon structure for database querying POST requests.
Request structure for querying VNDB endpoints.
Attributes:
filters(Optional[Union[List, str]]): Filter expressionfields(Optional[str]): Comma-separated list of fields to retrievesort(Optional[str]): Field to sort byreverse(bool): Whether to sort in reverse order (default: False)results(Optional[int]): Maximum number of results to returnpage(Optional[int]): Page number for paginationuser(Optional[str]): User ID for user-specific queriescount(bool): Whether to include result count (default: False)compact_filters(bool): Whether to use compact filter format (default: False)
Example:
query = QueryRequest( filters=["title", "~", "fate"], fields="id, title, rating", sort="rating", reverse=True, results=10 )
- fields: str = 'id'
- sort: str = 'id'
- reverse: bool = False
- results: int = 10
- page: int = 1
- count: bool = False
- compact_filters: bool = False
- normalized_filters: bool = False
- class veedb.apitypes.common.QueryResponse(results: List[T], more: bool, count: int | None = None, compact_filters: str | None = None, normalized_filters: list | None = None)[source]
Bases:
Generic[T]Common structure for database querying POST responses.
Response structure from VNDB query endpoints.
- results: List[T]
- more: bool
Identifier Types
- veedb.VNDBID
Type alias for VNDB entity IDs (strings starting with specific prefixes). alias of
str
- veedb.ReleaseDate
Type for release dates in VNDB format. alias of
str
Enumeration Types
- veedb.LanguageEnum
Enumeration of supported languages. alias of
Literal[‘ar’, ‘eu’, ‘be’, ‘bg’, ‘ca’, ‘ck’, ‘zh’, ‘zh-Hans’, ‘zh-Hant’, ‘hr’, ‘cs’, ‘da’, ‘nl’, ‘en’, ‘eo’, ‘fi’, ‘fr’, ‘gl’, ‘de’, ‘el’, ‘he’, ‘hi’, ‘hu’, ‘ga’, ‘id’, ‘it’, ‘iu’, ‘ja’, ‘kk’, ‘ko’, ‘la’, ‘lv’, ‘lt’, ‘mk’, ‘ms’, ‘ne’, ‘no’, ‘fa’, ‘pl’, ‘pt-br’, ‘pt-pt’, ‘ro’, ‘ru’, ‘gd’, ‘sr’, ‘sk’, ‘sl’, ‘es’, ‘sv’, ‘ta’, ‘th’, ‘tr’, ‘uk’, ‘ur’, ‘vi’]
- veedb.PlatformEnum
Enumeration of supported platforms. alias of
Literal[‘win’, ‘lin’, ‘mac’, ‘web’, ‘tdo’, ‘ios’, ‘and’, ‘bdp’, ‘dos’, ‘dvd’, ‘drc’, ‘nes’, ‘sfc’, ‘fm7’, ‘fm8’, ‘fmt’, ‘gba’, ‘gbc’, ‘msx’, ‘nds’, ‘swi’, ‘sw2’, ‘wii’, ‘wiu’, ‘n3d’, ‘p88’, ‘p98’, ‘pce’, ‘pcf’, ‘psp’, ‘ps1’, ‘ps2’, ‘ps3’, ‘ps4’, ‘ps5’, ‘psv’, ‘smd’, ‘scd’, ‘sat’, ‘vnd’, ‘x1s’, ‘x68’, ‘xb1’, ‘xb3’, ‘xbo’, ‘xxs’, ‘mob’, ‘oth’]
- veedb.StaffRoleEnum
Enumeration of staff roles. alias of
Literal[‘scenario’, ‘director’, ‘chardesign’, ‘art’, ‘music’, ‘songs’, ‘translator’, ‘editor’, ‘qa’, ‘staff’]
- veedb.TagCategoryEnum
Enumeration of tag categories. alias of
Literal[‘cont’, ‘ero’, ‘tech’]
- veedb.ProducerTypeEnum
Enumeration of producer types. alias of
Literal[‘co’, ‘in’, ‘ng’]
- veedb.DevStatusEnum
Enumeration of development status values. alias of
Literal[0, 1, 2]
Request Types
List Update Payloads
- class veedb.UlistUpdatePayload(vote: int | None = None, notes: str | None = None, started: str | None = None, finished: str | None = None, labels: List[int] | None = None, labels_set: List[int] | None = None, labels_unset: List[int] | None = None)[source]
Bases:
objectPayload for updating user visual novel lists.
Attributes:
id(str): VN ID to updatevote(Optional[int]): User rating (1-100)notes(Optional[str]): User notesstarted(Optional[str]): Date started readingfinished(Optional[str]): Date finished readinglabels(Optional[List[int]]): List label IDs
Example:
payload = UlistUpdatePayload( id="v17", vote=85, notes="Excellent sci-fi visual novel", finished="2023-06-15" )
Entity Types
Visual Novel Entities
Visual novel related entity types.
Key Classes:
VN: Main visual novel entityVNQueryItem: VN data as returned from queriesVNImage: VN cover image informationVNRelation: VN relationship informationVNAnime: Related anime informationVNLength: VN length statistics
- class veedb.apitypes.entities.vn.VNTitle(lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'], title: str, latin: str | None = None, official: bool = False, main: bool = False)[source]
Bases:
object- lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']
- __init__(lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'], title: str, latin: str | None = None, official: bool = False, main: bool = False) None
- class veedb.apitypes.entities.vn.VNImageInfo(id: str | None = None, url: str | None = None, dims: List[int] | None = None, sexual: float | None = None, violence: float | None = None, votecount: int | None = None, thumbnail: str | None = None, release: ForwardRef('VNScreenshotRelease') | None = None)[source]
Bases:
object- release: VNScreenshotRelease | None = None
- class veedb.apitypes.entities.vn.VNScreenshotRelease(id: str, title: Optional[str] = None, alttitle: Optional[str] = None, languages: List[veedb.apitypes.entities.release.ReleaseLanguageSpecific] = <factory>, platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']] = <factory>, media: List[veedb.apitypes.entities.release.ReleaseMedia] = <factory>, vns: List[veedb.apitypes.entities.release.ReleaseVNLink] = <factory>, producers: List[veedb.apitypes.entities.release.ReleaseProducerLink] = <factory>, images: List[veedb.apitypes.entities.release.ReleaseImage] = <factory>, released: Optional[str] = None, minage: Optional[int] = None, patch: bool = False, freeware: bool = False, uncensored: Optional[bool] = None, official: bool = False, has_ero: bool = False, resolution: Union[Literal['non-standard'], Tuple[int, int], NoneType] = None, engine: Optional[str] = None, voiced: Optional[Literal[1, 2, 3, 4]] = None, notes: Optional[str] = None, gtin: Optional[str] = None, catalog: Optional[str] = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]
Bases:
Release- __init__(id: str, title: str | None = None, alttitle: str | None = None, languages: List[ReleaseLanguageSpecific] = <factory>, platforms: Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, media: List[ReleaseMedia] = <factory>, vns: List[ReleaseVNLink] = <factory>, producers: List[ReleaseProducerLink] = <factory>, images: List[ReleaseImage] = <factory>, released: str | None = None, minage: int | None = None, patch: bool = False, freeware: bool = False, uncensored: bool | None = None, official: bool = False, has_ero: bool = False, resolution: Tuple[int, int] | None=None, engine: str | None = None, voiced: Literal[1, 2, 3, 4] | None=None, notes: str | None = None, gtin: str | None = None, catalog: str | None = None, extlinks: List[Extlink] = <factory>) None
- class veedb.apitypes.entities.vn.VNTagLink(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, category: Optional[Literal['cont', 'ero', 'tech']]=None, searchable: bool | None = None, applicable: bool | None = None, vn_count: int | None = None, rating: float = 0.0, spoiler: int = 0, lie: bool = False)[source]
Bases:
Tag- __init__(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, category: Literal['cont', 'ero', 'tech'] | None=None, searchable: bool | None = None, applicable: bool | None = None, vn_count: int | None = None, rating: float = 0.0, spoiler: int = 0, lie: bool = False) None
- class veedb.apitypes.entities.vn.VNDeveloper(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, type: Optional[Literal['co', 'in', 'ng']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]
Bases:
Producer- __init__(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, type: Literal['co', 'in', 'ng'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>) None
- class veedb.apitypes.entities.vn.VNEdition(eid: int, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None, name: str | None = None, official: bool | None = None)[source]
Bases:
object- lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
- __init__(eid: int, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None, name: str | None = None, official: bool | None = None) None
- class veedb.apitypes.entities.vn.VNStaffLink(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, gender: Optional[Literal['m', 'f']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>, aliases: List[veedb.apitypes.entities.staff.StaffAlias] = <factory>, role: Literal['scenario', 'director', 'chardesign', 'art', 'music', 'songs', 'translator', 'editor', 'qa', 'staff']='', note: str | None = None, eid: int | None = None)[source]
Bases:
Staff- role: Literal['scenario', 'director', 'chardesign', 'art', 'music', 'songs', 'translator', 'editor', 'qa', 'staff'] = ''
- __init__(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, gender: Literal['m', 'f'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>, aliases: List[StaffAlias] = <factory>, role: Literal['scenario', 'director', 'chardesign', 'art', 'music', 'songs', 'translator', 'editor', 'qa', 'staff']='', note: str | None = None, eid: int | None = None) None
- class veedb.apitypes.entities.vn.VNVoiceActor(note: str | None = None, staff: ForwardRef('VNVAStaff') | None = None, character: ForwardRef('VNVACharacter') | None = None)[source]
Bases:
object- character: VNVACharacter | None = None
- class veedb.apitypes.entities.vn.VNVAStaff(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, gender: Optional[Literal['m', 'f']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>, aliases: List[veedb.apitypes.entities.staff.StaffAlias] = <factory>)[source]
Bases:
Staff- __init__(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, gender: Literal['m', 'f'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>, aliases: List[StaffAlias] = <factory>) None
- class veedb.apitypes.entities.vn.VNVACharacter(id: str, name: Optional[str] = None, original: Optional[str] = None, aliases: List[str] = <factory>, description: Optional[str] = None, image: Optional[veedb.apitypes.entities.character.CharacterImageInfo] = None, blood_type: Optional[Literal['a', 'b', 'ab', 'o']] = None, height: Optional[int] = None, weight: Optional[int] = None, bust: Optional[int] = None, waist: Optional[int] = None, hips: Optional[int] = None, cup: Optional[str] = None, age: Optional[int] = None, birthday: Optional[Tuple[int, int]] = None, sex: Optional[Tuple[Optional[Literal['m', 'f', 'b', 'n']], Optional[Literal['m', 'f', 'b', 'n']]]] = None, gender: Optional[Tuple[Optional[Literal['m', 'f', 'o', 'a']], Optional[Literal['m', 'f', 'o', 'a']]]] = None, vns: List[veedb.apitypes.entities.character.CharacterVNLink] = <factory>, traits: List[veedb.apitypes.entities.character.CharacterTraitLink] = <factory>)[source]
Bases:
Character- __init__(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, description: str | None = None, image: CharacterImageInfo | None = None, blood_type: Literal['a', 'b', 'ab', 'o'] | None=None, height: int | None = None, weight: int | None = None, bust: int | None = None, waist: int | None = None, hips: int | None = None, cup: str | None = None, age: int | None = None, birthday: Tuple[int, int] | None=None, sex: Literal['m', 'f', 'b', 'n'] | None, ~typing.Literal['m', 'f', 'b', 'n'] | None] | None=None, gender: Literal['m', 'f', 'o', 'a'] | None, ~typing.Literal['m', 'f', 'o', 'a'] | None] | None=None, vns: List[CharacterVNLink] = <factory>, traits: List[CharacterTraitLink] = <factory>) None
- class veedb.apitypes.entities.vn.VN(id: str, title: str | None = None, alttitle: str | None = None, titles: List[veedb.apitypes.entities.vn.VNTitle] = <factory>, aliases: List[str] = <factory>, olang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, devstatus: Optional[Literal[0, 1, 2]]=None, released: str | None = None, languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=<factory>, platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, image: veedb.apitypes.entities.vn.VNImageInfo | None = None, length: int | None = None, length_minutes: int | None = None, length_votes: int | None = None, description: str | None = None, average: float | None = None, rating: float | None = None, votecount: int | None = None, screenshots: List[veedb.apitypes.entities.vn.VNImageInfo] = <factory>, relations: List[ForwardRef('VNRelation')] = <factory>, tags: List[veedb.apitypes.entities.vn.VNTagLink] = <factory>, developers: List[veedb.apitypes.entities.vn.VNDeveloper] = <factory>, editions: List[veedb.apitypes.entities.vn.VNEdition] = <factory>, staff: List[veedb.apitypes.entities.vn.VNStaffLink] = <factory>, va: List[veedb.apitypes.entities.vn.VNVoiceActor] = <factory>, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]
Bases:
object- olang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
- languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]
- platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]
- image: VNImageInfo | None = None
- screenshots: List[VNImageInfo]
- relations: List[VNRelation]
- developers: List[VNDeveloper]
- staff: List[VNStaffLink]
- __init__(id: str, title: str | None = None, alttitle: str | None = None, titles: List[VNTitle] = <factory>, aliases: List[str] = <factory>, olang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, devstatus: Literal[0, 1, 2] | None=None, released: str | None = None, languages: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=<factory>, platforms: Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, image: VNImageInfo | None = None, length: int | None = None, length_minutes: int | None = None, length_votes: int | None = None, description: str | None = None, average: float | None = None, rating: float | None = None, votecount: int | None = None, screenshots: List[VNImageInfo] = <factory>, relations: List[VNRelation] = <factory>, tags: List[VNTagLink] = <factory>, developers: List[VNDeveloper] = <factory>, editions: List[VNEdition] = <factory>, staff: List[VNStaffLink] = <factory>, va: List[VNVoiceActor] = <factory>, extlinks: List[Extlink] = <factory>) None
- va: List[VNVoiceActor]
- class veedb.apitypes.entities.vn.VNRelation(id: str, title: str | None = None, alttitle: str | None = None, titles: List[veedb.apitypes.entities.vn.VNTitle] = <factory>, aliases: List[str] = <factory>, olang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, devstatus: Optional[Literal[0, 1, 2]]=None, released: str | None = None, languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=<factory>, platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, image: veedb.apitypes.entities.vn.VNImageInfo | None = None, length: int | None = None, length_minutes: int | None = None, length_votes: int | None = None, description: str | None = None, average: float | None = None, rating: float | None = None, votecount: int | None = None, screenshots: List[veedb.apitypes.entities.vn.VNImageInfo] = <factory>, relations: List[ForwardRef('VNRelation')] = <factory>, tags: List[veedb.apitypes.entities.vn.VNTagLink] = <factory>, developers: List[veedb.apitypes.entities.vn.VNDeveloper] = <factory>, editions: List[veedb.apitypes.entities.vn.VNEdition] = <factory>, staff: List[veedb.apitypes.entities.vn.VNStaffLink] = <factory>, va: List[veedb.apitypes.entities.vn.VNVoiceActor] = <factory>, extlinks: List[veedb.apitypes.common.Extlink] = <factory>, relation: str = '', relation_official: bool = False)[source]
Bases:
VN- __init__(id: str, title: str | None = None, alttitle: str | None = None, titles: List[VNTitle] = <factory>, aliases: List[str] = <factory>, olang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, devstatus: Literal[0, 1, 2] | None=None, released: str | None = None, languages: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=<factory>, platforms: Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, image: VNImageInfo | None = None, length: int | None = None, length_minutes: int | None = None, length_votes: int | None = None, description: str | None = None, average: float | None = None, rating: float | None = None, votecount: int | None = None, screenshots: List[VNImageInfo] = <factory>, relations: List[VNRelation] = <factory>, tags: List[VNTagLink] = <factory>, developers: List[VNDeveloper] = <factory>, editions: List[VNEdition] = <factory>, staff: List[VNStaffLink] = <factory>, va: List[VNVoiceActor] = <factory>, extlinks: List[Extlink] = <factory>, relation: str = '', relation_official: bool = False) None
Character Entities
Character related entity types.
Key Classes:
Character: Main character entityCharacterQueryItem: Character data from queriesCharacterImage: Character image informationCharacterTrait: Character trait informationCharacterVN: Character’s VN appearances
- class veedb.apitypes.entities.character.CharacterImageInfo(id: str | None, url: str | None, dims: List[int] | None, sexual: float | None, violence: float | None, votecount: int | None)[source]
Bases:
ImageCommon
- class veedb.apitypes.entities.character.CharacterVNLink(id: str, spoiler: int | None = None, role: Literal['main', 'primary', 'side', 'appears'] | None = None, release: dict | None = None, title: str | None = None)[source]
Bases:
object
- class veedb.apitypes.entities.character.CharacterTraitLink(id: str, spoiler: int | None = None, lie: bool | None = None, name: str | None = None, group_id: str | None = None, group_name: str | None = None)[source]
Bases:
object
- class veedb.apitypes.entities.character.Character(id: str, name: Optional[str] = None, original: Optional[str] = None, aliases: List[str] = <factory>, description: Optional[str] = None, image: Optional[veedb.apitypes.entities.character.CharacterImageInfo] = None, blood_type: Optional[Literal['a', 'b', 'ab', 'o']] = None, height: Optional[int] = None, weight: Optional[int] = None, bust: Optional[int] = None, waist: Optional[int] = None, hips: Optional[int] = None, cup: Optional[str] = None, age: Optional[int] = None, birthday: Optional[Tuple[int, int]] = None, sex: Optional[Tuple[Optional[Literal['m', 'f', 'b', 'n']], Optional[Literal['m', 'f', 'b', 'n']]]] = None, gender: Optional[Tuple[Optional[Literal['m', 'f', 'o', 'a']], Optional[Literal['m', 'f', 'o', 'a']]]] = None, vns: List[veedb.apitypes.entities.character.CharacterVNLink] = <factory>, traits: List[veedb.apitypes.entities.character.CharacterTraitLink] = <factory>)[source]
Bases:
object- image: CharacterImageInfo | None = None
- gender: Tuple[Literal['m', 'f', 'o', 'a'] | None, Literal['m', 'f', 'o', 'a'] | None] | None = None
- vns: List[CharacterVNLink]
- traits: List[CharacterTraitLink]
- __init__(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, description: str | None = None, image: CharacterImageInfo | None = None, blood_type: Literal['a', 'b', 'ab', 'o'] | None=None, height: int | None = None, weight: int | None = None, bust: int | None = None, waist: int | None = None, hips: int | None = None, cup: str | None = None, age: int | None = None, birthday: Tuple[int, int] | None=None, sex: Literal['m', 'f', 'b', 'n'] | None, ~typing.Literal['m', 'f', 'b', 'n'] | None] | None=None, gender: Literal['m', 'f', 'o', 'a'] | None, ~typing.Literal['m', 'f', 'o', 'a'] | None] | None=None, vns: List[CharacterVNLink] = <factory>, traits: List[CharacterTraitLink] = <factory>) None
Producer Entities
Producer/developer related entity types.
Key Classes:
Producer: Main producer entityProducerQueryItem: Producer data from queriesProducerRelation: Producer relationship information
- class veedb.apitypes.entities.producer.Producer(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, type: Optional[Literal['co', 'in', 'ng']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]
Bases:
object- lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
- __init__(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, type: Literal['co', 'in', 'ng'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>) None
Release Entities
Release related entity types.
Key Classes:
Release: Main release entityReleaseQueryItem: Release data from queriesReleaseMedia: Release media informationReleaseProducer: Release producer information
- class veedb.apitypes.entities.release.ReleaseLanguageSpecific(lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'], title: str | None = None, latin: str | None = None, mtl: bool = False, main: bool = False)[source]
Bases:
object- lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']
- __init__(lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'], title: str | None = None, latin: str | None = None, mtl: bool = False, main: bool = False) None
- class veedb.apitypes.entities.release.ReleaseMedia(medium: str, qty: int | None = None)[source]
Bases:
object
- class veedb.apitypes.entities.release.ReleaseVNLink(id: str, rtype: Literal['trial', 'partial', 'complete'] | None = None, title: str | None = None, original_language: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None)[source]
Bases:
object- original_language: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
- __init__(id: str, rtype: Literal['trial', 'partial', 'complete'] | None = None, title: str | None = None, original_language: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None) None
- class veedb.apitypes.entities.release.ReleaseProducerLink(id: str, developer: bool | None = None, publisher: bool | None = None, name: str | None = None, original_name: str | None = None, type: Literal['co', 'in', 'ng'] | None = None)[source]
Bases:
object
- class veedb.apitypes.entities.release.ReleaseImage(id: str | None, url: str | None, dims: List[int] | None, sexual: float | None, violence: float | None, votecount: int | None, type: Literal['pkgfront', 'pkgback', 'pkgcontent', 'pkgside', 'pkgmed', 'dig'], vn: str | None = None, languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']] | None = None, photo: bool = False, thumbnail: str | None = None, thumbnail_dims: Tuple[int, int] | None = None)[source]
Bases:
ImageCommon- languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']] | None = None
- __init__(id: str | None, url: str | None, dims: List[int] | None, sexual: float | None, violence: float | None, votecount: int | None, type: Literal['pkgfront', 'pkgback', 'pkgcontent', 'pkgside', 'pkgmed', 'dig'], vn: str | None = None, languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']] | None = None, photo: bool = False, thumbnail: str | None = None, thumbnail_dims: Tuple[int, int] | None = None) None
- class veedb.apitypes.entities.release.Release(id: str, title: Optional[str] = None, alttitle: Optional[str] = None, languages: List[veedb.apitypes.entities.release.ReleaseLanguageSpecific] = <factory>, platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']] = <factory>, media: List[veedb.apitypes.entities.release.ReleaseMedia] = <factory>, vns: List[veedb.apitypes.entities.release.ReleaseVNLink] = <factory>, producers: List[veedb.apitypes.entities.release.ReleaseProducerLink] = <factory>, images: List[veedb.apitypes.entities.release.ReleaseImage] = <factory>, released: Optional[str] = None, minage: Optional[int] = None, patch: bool = False, freeware: bool = False, uncensored: Optional[bool] = None, official: bool = False, has_ero: bool = False, resolution: Union[Literal['non-standard'], Tuple[int, int], NoneType] = None, engine: Optional[str] = None, voiced: Optional[Literal[1, 2, 3, 4]] = None, notes: Optional[str] = None, gtin: Optional[str] = None, catalog: Optional[str] = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]
Bases:
object- languages: List[ReleaseLanguageSpecific]
- platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]
- media: List[ReleaseMedia]
- vns: List[ReleaseVNLink]
- producers: List[ReleaseProducerLink]
- images: List[ReleaseImage]
- __init__(id: str, title: str | None = None, alttitle: str | None = None, languages: List[ReleaseLanguageSpecific] = <factory>, platforms: Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, media: List[ReleaseMedia] = <factory>, vns: List[ReleaseVNLink] = <factory>, producers: List[ReleaseProducerLink] = <factory>, images: List[ReleaseImage] = <factory>, released: str | None = None, minage: int | None = None, patch: bool = False, freeware: bool = False, uncensored: bool | None = None, official: bool = False, has_ero: bool = False, resolution: Tuple[int, int] | None=None, engine: str | None = None, voiced: Literal[1, 2, 3, 4] | None=None, notes: str | None = None, gtin: str | None = None, catalog: str | None = None, extlinks: List[Extlink] = <factory>) None
Staff Entities
Staff related entity types.
Key Classes:
Staff: Main staff entityStaffQueryItem: Staff data from queriesStaffAlias: Staff alias information
- class veedb.apitypes.entities.staff.StaffAlias(aid: int, name: str | None = None, ismain: bool | None = None, latin: str | None = None)[source]
Bases:
object
- class veedb.apitypes.entities.staff.Staff(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, gender: Optional[Literal['m', 'f']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>, aliases: List[veedb.apitypes.entities.staff.StaffAlias] = <factory>)[source]
Bases:
object- lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
- aliases: List[StaffAlias]
- __init__(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, gender: Literal['m', 'f'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>, aliases: List[StaffAlias] = <factory>) None
Tag Entities
Tag related entity types.
Key Classes:
Tag: Main tag entityTagQueryItem: Tag data from queries
- class veedb.apitypes.entities.tag.Tag(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, category: Optional[Literal['cont', 'ero', 'tech']]=None, searchable: bool | None = None, applicable: bool | None = None, vn_count: int | None = None)[source]
Bases:
object
Trait Entities
Character trait related entity types.
Key Classes:
Trait: Main trait entityTraitQueryItem: Trait data from queries
- class veedb.apitypes.entities.trait.Trait(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, searchable: bool | None = None, applicable: bool | None = None, group_id: str | None = None, group_name: str | None = None, char_count: int | None = None)[source]
Bases:
object
Quote Entities
Quote related entity types.
Key Classes:
Quote: Main quote entityQuoteQueryItem: Quote data from queries
User List Entities
User list related entity types.
Key Classes:
Ulist: User VN list entryUlistQueryItem: User list data from queriesUlistLabels: User list label information
- class veedb.apitypes.entities.ulist.UlistReleaseInfo(id: str, list_status: Literal[0, 1, 2, 3, 4] | None = None, title: str | None = None)[source]
Bases:
object
- class veedb.apitypes.entities.ulist.UlistItem(id: str, added: int | None = None, voted: int | None = None, lastmod: int | None = None, vote: int | None = None, started: str | None = None, finished: str | None = None, notes: str | None = None, labels: List[veedb.apitypes.entities.ulist.UlistLabelInfo] = <factory>, vn: Optional[Dict[str, Any]]=<factory>, releases: List[veedb.apitypes.entities.ulist.UlistReleaseInfo] = <factory>)[source]
Bases:
object- labels: List[UlistLabelInfo]
- releases: List[UlistReleaseInfo]
- __init__(id: str, added: int | None = None, voted: int | None = None, lastmod: int | None = None, vote: int | None = None, started: str | None = None, finished: str | None = None, notes: str | None = None, labels: List[UlistLabelInfo] = <factory>, vn: Dict[str, ~typing.Any] | None=<factory>, releases: List[UlistReleaseInfo] = <factory>) None
User Entities
User related entity types.
Key Classes:
User: Main user entityUserQueryItem: User data from queriesAuthInfo: Authentication informationStats: Database statistics
- class veedb.apitypes.entities.user.User(id: str, username: str, lengthvotes: int | None = None, lengthvotes_sum: int | None = None)[source]
Bases:
objectRepresents a user object as returned by the GET /user endpoint.
- class veedb.apitypes.entities.user.AuthInfo(id: str, username: str, permissions: List[str] = <factory>)[source]
Bases:
objectRepresents the authentication information as returned by GET /authinfo.
- class veedb.apitypes.entities.user.UserStats(chars: int, producers: int, releases: int, staff: int, tags: int, traits: int, vn: int)[source]
Bases:
objectRepresents the database statistics as returned by GET /stats. Note: The API documentation calls this endpoint GET /stats, and the response fields are direct counts for various entities.
Type Usage Examples
Creating Query Requests
from veedb import QueryRequest
# Basic query
basic_query = QueryRequest(
filters=["id", "=", "v17"],
fields="title, rating"
)
# Complex query with sorting and pagination
complex_query = QueryRequest(
filters=["and", ["rating", ">", 8.0], ["released", ">", "2020-01-01"]],
fields="id, title, rating, released, description",
sort="rating",
reverse=True,
results=25,
page=1
)
# User-specific query
user_query = QueryRequest(
filters=["uid", "=", "u12345"],
fields="id, vote, notes, vn{title}",
user="u12345"
)
Working with Response Data
# Query visual novels
response = await client.vn.query(query)
# Response is typed as QueryResponse[VNQueryItem]
for vn in response.results:
print(f"Title: {vn.title}")
print(f"Rating: {vn.rating}")
print(f"Released: {vn.released}")
# Access nested data
if vn.image:
print(f"Cover: {vn.image.url}")
if vn.developers:
for dev in vn.developers:
print(f"Developer: {dev.name}")
Updating User Lists
from veedb import UlistUpdatePayload
# Create update payload
payload = UlistUpdatePayload(
id="v17",
vote=90,
notes="Amazing storyline!",
started="2023-06-01",
finished="2023-06-15",
labels=[1, 3] # Label IDs
)
# Update user list
await client.ulist.update("v17", payload)
Working with Enums
from veedb import LanguageEnum, PlatformEnum
# Query releases for specific language and platform
query = QueryRequest(
filters=[
"and",
["languages", "=", [LanguageEnum.EN]],
["platforms", "=", [PlatformEnum.WIN]]
],
fields="title, languages, platforms"
)
response = await client.release.query(query)
Type Annotations
VeeDB is fully typed and supports type checking with mypy:
from typing import List
from veedb import VNDB, QueryRequest, QueryResponse
from veedb.apitypes.entities.vn import VNQueryItem
async def get_top_vns(client: VNDB, limit: int = 10) -> List[VNQueryItem]:
query = QueryRequest(
filters=["rating", ">", 8.0],
fields="title, rating",
sort="rating",
reverse=True,
results=limit
)
response: QueryResponse[VNQueryItem] = await client.vn.query(query)
return response.results
# Usage with type checking
async def main() -> None:
async with VNDB() as client:
top_vns = await get_top_vns(client, 20)
for vn in top_vns:
# Type checker knows vn is VNQueryItem
print(f"{vn.title}: {vn.rating}")
Optional Fields
Many entity fields are optional and may be None:
async def safe_field_access():
response = await client.vn.query(query)
for vn in response.results:
# Always check optional fields
if vn.rating is not None:
print(f"Rating: {vn.rating}")
else:
print("No rating available")
# Safe access with default
description = vn.description or "No description available"
print(f"Description: {description}")
# Check nested optional fields
if vn.image and vn.image.url:
print(f"Cover image: {vn.image.url}")
Union Types
Some fields accept multiple types:
from typing import Union
# Filters can be various types
def create_filter(value: Union[str, int, List[str]]) -> List:
if isinstance(value, list):
return ["id", "=", value]
else:
return ["title", "~", str(value)]
# Use with different types
string_filter = create_filter("fate")
list_filter = create_filter(["v17", "v18"])
Generic Types
VeeDB uses generics for type safety:
from typing import TypeVar, Generic
from veedb.client import _BaseEntityClient
# Entity clients are generic
T_Entity = TypeVar('T_Entity')
T_QueryItem = TypeVar('T_QueryItem')
# This ensures type safety across different endpoints
vn_client: _BaseEntityClient[VN, VNQueryItem] = client.vn
char_client: _BaseEntityClient[Character, CharacterQueryItem] = client.character
Dataclass Features
All entity types are dataclasses with additional features:
from dataclasses import asdict, astuple
# Convert to dictionary
vn_dict = asdict(vn)
print(f"VN as dict: {vn_dict}")
# Convert to tuple
vn_tuple = astuple(vn)
# Create with partial data
from veedb.apitypes.entities.vn import VN
partial_vn = VN(
id="v17",
title="Ever17",
# Other fields will be None
)
Type Validation
VeeDB uses dacite for runtime type validation:
# Data from API is automatically validated
response = await client.vn.query(query)
# If API returns invalid data, dacite will raise an error
# This ensures type safety at runtime
Best Practices
Use Type Hints: Always use type hints for better IDE support
Check Optional Fields: Always check if optional fields are None
Use Enums: Use provided enums instead of string literals
Type Guards: Use isinstance() for union type checking
Dataclass Methods: Take advantage of dataclass features
Generic Awareness: Understand generic type parameters
Runtime Validation: Trust that VeeDB validates API responses
IDE Support
VeeDB provides excellent IDE support through:
Autocomplete: Full autocompletion for all fields and methods
Type Checking: Static type checking with mypy
Documentation: Docstrings for all public APIs
Error Detection: Catch type errors before runtime