UNPKG

@animepaste/bangumi

Version:
174 lines (170 loc) 3.7 kB
import { Language } from 'bangumi-data'; interface InfoBox { key: string; value: string | Array<{ k?: string; v: string; }>; } interface Images { large: string; common: string; medium: string; small: string; grid: string; } interface Count { '1': number; '2': number; '3': number; '4': number; '5': number; '6': number; '7': number; '8': number; '9': number; '10': number; } interface Rating { rank: number; total: number; count: Count; score: number; } interface Collection { wish: number; collect: number; doing: number; onHold: number; dropped: number; } interface Tag { name: string; count: number; } interface CharacterDetail { id: number; name: string; type: number; images: { large: string; medium: string; small: string; grid: string; }; summary: string; locked: boolean; infobox: InfoBox[]; gender: string; blooType: number; birthYear: number; birthMon: number; birthDay: number; stat: { comments: number; collects: number; }; } /** * See SubjectSmall in https://bangumi.github.io/api/#model-SubjectSmall */ interface OverviewSubject { id: number; url: string; type: 1 | 2 | 3 | 4 | 6; name: string; name_cn: string; summary: string; air_date: string; air_weekday: string; images: Images; eps: number; eps_count: number; rating: Rating; rank: number; collection: Collection; } /** * See Subject in https://bangumi.github.io/api/#model-Subject */ interface Subject { id: number; type: 1 | 2 | 3 | 4 | 6; name: string; name_cn: string; summary: string; nsfw: boolean; locked: boolean; date: string; platform: string; images: Images; infobox: InfoBox[]; volumes: number; eps: number; total_episodes: number; rating: Rating; collection: Collection; tags: Tag[]; } interface RawCalendar { weekday: { en: string; cn: string; ja: string; id: number; }; items: OverviewSubject[]; } type BangumiType = 'tv' | 'web' | 'movie' | 'ova'; interface BaseBangumi { bgmId: string; title: string; type: BangumiType; } interface ExtendBangumi { titleCN: string; titleTranslate: Record<Language, string[]>; lang: Language; officialSite: string; /** * tv/web: 番组开始时间; * movie: 上映日期; * ova: 首话发售时间. */ begin: string; /** * tv/web: 番组完结时间; * movie: 无意义; * ova: 则为最终话发售时间(未确定则置空). */ end?: string; comment?: string; dmhy?: string; } interface ExtendBangumiSubject { bgm: BangumiSubject; } interface BangumiSubject { summary: string; images: Images; eps: number; rating: Rating; subject?: { infobox: InfoBox[]; tags: Tag[]; }; } interface RawExportData { compress: boolean; bangumis: Array<BaseBangumi & Partial<ExtendBangumi>>; } interface Calendar<T extends BaseBangumi = BaseBangumi & Pick<ExtendBangumi, 'titleCN' | 'begin'>> { weekday: { en: string; cn: string; ja: string; id: number; }; bangumis: Array<T & ExtendBangumiSubject>; } export { BaseBangumi as B, Calendar as C, ExtendBangumi as E, InfoBox as I, OverviewSubject as O, RawExportData as R, Subject as S, Tag as T, BangumiType as a, ExtendBangumiSubject as b, BangumiSubject as c, RawCalendar as d, Images as e, Rating as f, Collection as g, CharacterDetail as h };