summaryrefslogtreecommitdiff
path: root/src/extractors
diff options
context:
space:
mode:
authorMole Shang <[email protected]>2023-08-06 22:18:31 +0800
committerMole Shang <[email protected]>2023-08-06 22:18:31 +0800
commit189fba5a4b63706575f9287cd0b1760a331d636e (patch)
tree40ed29ac9a5ac711dfeb9586e82e620da11fe1ef /src/extractors
parent99eded34e119d5b88d5210a617ecc35ba7347306 (diff)
downloadhinata-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.c31
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;