summaryrefslogtreecommitdiff
path: root/src/extractors
diff options
context:
space:
mode:
authorMole Shang <[email protected]>2023-08-07 15:31:11 +0800
committerMole Shang <[email protected]>2023-08-07 15:31:45 +0800
commit51747e102ba304304a683ec93b2f62caccbead58 (patch)
tree023c64e68ad8be2f40493c505a7bbf9714fc11c7 /src/extractors
parent189fba5a4b63706575f9287cd0b1760a331d636e (diff)
downloadhinata-51747e102ba304304a683ec93b2f62caccbead58.tar.gz
hinata-51747e102ba304304a683ec93b2f62caccbead58.tar.bz2
hinata-51747e102ba304304a683ec93b2f62caccbead58.zip
extractors/bilibili: use ffmpeg to merge files once downloaded
Diffstat (limited to 'src/extractors')
-rw-r--r--src/extractors/bilibili.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/extractors/bilibili.c b/src/extractors/bilibili.c
index 675a035..fd95884 100644
--- a/src/extractors/bilibili.c
+++ b/src/extractors/bilibili.c
@@ -13,6 +13,7 @@
#include "../logger.h"
#include "../process_url.h"
#include "../utils.h"
+#include "../utils/ffmpeg.h"
#include "bilibili.h"
#include "extractor.h"
@@ -380,13 +381,13 @@ 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);
+static int bilibili_merge(callback_struct_t *cb_struct) {
+ LOG("Bilibili", "Using ffmpeg to merge downloaded files ...");
+ merge_av(cb_struct->videofn, cb_struct->audiofn, cb_struct->filename);
+ free_and_nullify(cb_struct->videofn);
+ free_and_nullify(cb_struct->audiofn);
+ free_and_nullify(cb_struct->filename);
+ append_log("All done!");
return 0;
}
@@ -407,27 +408,26 @@ static int download(Bilibili_options *bilibili_options) {
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);
+ const char *ext = mimeType2ext(video->mimeType);
+ callback_struct.filename = malloc(strlen(bilibili_options->title) +
+ strlen(quality_desc) + strlen(ext) + 1);
+ sprintf(callback_struct.filename, "%s[%s].%s", bilibili_options->title,
+ quality_desc, ext);
{
- char fn[USHRT_MAX];
- sprintf(fn, "%s[%s]-%s.%s", bilibili_options->title, quality_desc, "video",
- callback_struct.ext);
- add_url(video->baseUrl, NULL, fn, "https://www.bilibili.com", NULL, NULL);
+ callback_struct.videofn = malloc(strlen(callback_struct.filename) + 6);
+ sprintf(callback_struct.videofn, "%s[%s]-%s.%s", bilibili_options->title,
+ quality_desc, "video", ext);
+ add_url(video->baseUrl, NULL, callback_struct.videofn,
+ "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", &ffmpeg_merge,
- &callback_struct);
+ callback_struct.audiofn = malloc(strlen(callback_struct.filename) + 6);
+ sprintf(callback_struct.audiofn, "%s[%s]-%s.%s", bilibili_options->title,
+ quality_desc, "audio", mimeType2ext(audio->mimeType));
+ add_url(audio->baseUrl, NULL, callback_struct.audiofn,
+ "https://www.bilibili.com", &bilibili_merge, &callback_struct);
}
free_and_nullify(resp);
dash_cleanup(&dash);