From dc29271987c1dddccc8b19cb17950b27cd81498d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Wed, 6 Sep 2023 15:48:39 +0800 Subject: [PATCH] Media: add JSON format support --- src/modules/media/media.c | 19 ++++++++++++++++++- src/modules/media/media.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/modules/media/media.c b/src/modules/media/media.c index ef227cb9f..7a0e01e77 100644 --- a/src/modules/media/media.c +++ b/src/modules/media/media.c @@ -107,7 +107,7 @@ void ffPrintMedia(FFMediaOptions* options) void ffInitMediaOptions(FFMediaOptions* options) { - ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_MEDIA_MODULE_NAME, ffParseMediaCommandOptions, ffParseMediaJsonObject, ffPrintMedia, NULL); + ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_MEDIA_MODULE_NAME, ffParseMediaCommandOptions, ffParseMediaJsonObject, ffPrintMedia, ffGenerateMediaJson); ffOptionInitModuleArg(&options->moduleArgs); } @@ -142,3 +142,20 @@ void ffParseMediaJsonObject(FFMediaOptions* options, yyjson_val* module) ffPrintError(FF_MEDIA_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); } } + +void ffGenerateMediaJson(FF_MAYBE_UNUSED FFMediaOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +{ + const FFMediaResult* media = ffDetectMedia(); + + if(media->error.length > 0) + { + yyjson_mut_obj_add_strbuf(doc, module, "error", &media->error); + return; + } + + yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result"); + yyjson_mut_obj_add_strbuf(doc, obj, "song", &media->song); + yyjson_mut_obj_add_strbuf(doc, obj, "artist", &media->artist); + yyjson_mut_obj_add_strbuf(doc, obj, "album", &media->album); + yyjson_mut_obj_add_strbuf(doc, obj, "status", &media->status); +} diff --git a/src/modules/media/media.h b/src/modules/media/media.h index f5267e579..853814d7e 100644 --- a/src/modules/media/media.h +++ b/src/modules/media/media.h @@ -9,3 +9,4 @@ void ffInitMediaOptions(FFMediaOptions* options); bool ffParseMediaCommandOptions(FFMediaOptions* options, const char* key, const char* value); void ffDestroyMediaOptions(FFMediaOptions* options); void ffParseMediaJsonObject(FFMediaOptions* options, yyjson_val* module); +void ffGenerateMediaJson(FFMediaOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module);