diff options
author | Mole Shang <[email protected]> | 2023-08-06 22:18:31 +0800 |
---|---|---|
committer | Mole Shang <[email protected]> | 2023-08-06 22:18:31 +0800 |
commit | 189fba5a4b63706575f9287cd0b1760a331d636e (patch) | |
tree | 40ed29ac9a5ac711dfeb9586e82e620da11fe1ef /src/extractors | |
parent | 99eded34e119d5b88d5210a617ecc35ba7347306 (diff) | |
download | hinata-189fba5a4b63706575f9287cd0b1760a331d636e.tar.gz hinata-189fba5a4b63706575f9287cd0b1760a331d636e.tar.bz2 hinata-189fba5a4b63706575f9287cd0b1760a331d636e.zip |
process_url: initial callback support
Diffstat (limited to 'src/extractors')
-rw-r--r-- | src/extractors/bilibili.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/extractors/bilibili.c b/src/extractors/bilibili.c index 14905b0..675a035 100644 --- a/src/extractors/bilibili.c +++ b/src/extractors/bilibili.c @@ -380,6 +380,16 @@ static void dash_cleanup(Dash *dash) { free_array(&dash->dashinfo.dash.video); } +static int ffmpeg_merge(callback_struct_t *cb_struct) { + char *filename = + malloc(strlen(cb_struct->title) + strlen(cb_struct->ext) + 2); + sprintf(filename, "%s.%s", cb_struct->title, cb_struct->ext); + DEBUG_PRINT("Callback gets filename: %s\n", filename); + free_and_nullify(cb_struct->title); + free_and_nullify(filename); + return 0; +} + static int download(Bilibili_options *bilibili_options) { Dash dash = {0}; char *resp; @@ -396,20 +406,29 @@ static int download(Bilibili_options *bilibili_options) { Dash_stream *audio = get_element(&dash.dashinfo.dash.audio, 0); const char *quality_desc = id2quality_desc(video->id); + static callback_struct_t callback_struct = {0}; + callback_struct.ext = mimeType2ext(video->mimeType); + callback_struct.title = + malloc(strlen(bilibili_options->title) + strlen(quality_desc) + 3); + sprintf(callback_struct.title, "%s[%s]", bilibili_options->title, + quality_desc); + DEBUG_PRINT("Outside the callback, title: %s ext: %s\n", + callback_struct.title, callback_struct.ext); + { char fn[USHRT_MAX]; sprintf(fn, "%s[%s]-%s.%s", bilibili_options->title, quality_desc, "video", - mimeType2ext(video->mimeType)); - add_url(video->baseUrl, NULL, fn, "https://www.bilibili.com"); + callback_struct.ext); + add_url(video->baseUrl, NULL, fn, "https://www.bilibili.com", NULL, NULL); } { char fn[USHRT_MAX]; - sprintf(fn, "%s[%s]-%s.%s", bilibili_options->title, - quality_desc, "audio", mimeType2ext(audio->mimeType)); - add_url(audio->baseUrl, NULL, fn, "https://www.bilibili.com"); + sprintf(fn, "%s[%s]-%s.%s", bilibili_options->title, quality_desc, "audio", + mimeType2ext(audio->mimeType)); + add_url(audio->baseUrl, NULL, fn, "https://www.bilibili.com", &ffmpeg_merge, + &callback_struct); } - free_and_nullify(resp); dash_cleanup(&dash); return 0; |