#ifndef BILIBILI_H_ #define BILIBILI_H_ #include #include "../utils/types.h" #include "extractor.h" #define BILIBILI_API "https://api.bilibili.com/x/player/playurl?" #define BILIBILI_BANGUMI_API "https://api.bilibili.com/pgc/player/web/playurl?" #define BILIBILI_TOKEN_API "https://api.bilibili.com/x/player/playurl/token?" typedef struct video_pages_data { int cid; char *part; int page; } Video_pages_data; typedef struct multipage_video_data { char *title; generic_array_t pages; } Multipage_video_data; typedef struct episode { int aid; char *bvid; int cid; char *title; } Episode; typedef struct multi_episode_data { int season_id; generic_array_t episodes; } Multi_episode_data; typedef struct multipage { int aid; char *bvid; generic_array_t sections; Multipage_video_data videoData; cJSON *json; } Multipage; typedef struct bilibili_options { char *url; char *html; char *api; char *cookie; bool is_bangumi; bool is_page; int aid; int cid; char *bvid; int page; char *title; } Bilibili_options; typedef struct durl { char *url; size_t size; } Durl; typedef struct dash_stream { int id; char *baseUrl; int bandwidth; char *mimeType; int codecid; char *codecs; } Dash_stream; typedef struct dash_streams { generic_array_t video; generic_array_t audio; } Dash_streams; typedef struct dash_info { int quality; str_array_t accept_description; generic_array_t accept_quality; Dash_streams dash; char *format; generic_array_t durl; } Dash_info; typedef struct dash { int code; char *message; Dash_info dashinfo; cJSON *json; } Dash; void bilibili_extract(struct options *); #endif