From 95c86a3090897e8391af5285f9906d76486dae5c Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 14 Jun 2026 00:38:39 +0300 Subject: Add and use Client::get_input_video. --- telegram-bot-api/Client.cpp | 56 +++++++++++++++++++-------------------------- telegram-bot-api/Client.h | 4 ++++ 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index c761fe3..d3a57cc 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -12207,6 +12207,25 @@ td::Result> Client::get_input_audio( return make_object(std::move(input_file), std::move(input_thumbnail), duration, title, performer); } +td::Result> Client::get_input_video( + const Query *query, const td::JsonObject &object, object_ptr &&input_file, + object_ptr &&input_thumbnail) const { + TRY_RESULT(width, object.get_optional_int_field("width")); + TRY_RESULT(height, object.get_optional_int_field("height")); + TRY_RESULT(duration, object.get_optional_int_field("duration")); + TRY_RESULT(cover, object.get_optional_string_field("cover")); + TRY_RESULT(start_timestamp, object.get_optional_int_field("start_timestamp")); + TRY_RESULT(supports_streaming, object.get_optional_bool_field("supports_streaming")); + auto input_cover = get_input_file(query, td::Slice(), cover, false); + width = td::clamp(width, 0, MAX_LENGTH); + height = td::clamp(height, 0, MAX_LENGTH); + duration = td::clamp(duration, 0, MAX_DURATION); + start_timestamp = td::clamp(start_timestamp, 0, MAX_DURATION); + return make_object(std::move(input_file), std::move(input_thumbnail), std::move(input_cover), + start_timestamp, td::vector(), duration, width, height, + supports_streaming); +} + td::Result> Client::get_input_checklist_task( td::JsonValue &&input_task) const { if (input_task.type() != td::JsonValue::Type::Object) { @@ -12327,23 +12346,9 @@ td::Result> Client::get_input_me std::move(caption), show_caption_above_media, nullptr, has_spoiler); } if (type == "video") { - TRY_RESULT(width, object.get_optional_int_field("width")); - TRY_RESULT(height, object.get_optional_int_field("height")); - TRY_RESULT(duration, object.get_optional_int_field("duration")); - TRY_RESULT(cover, object.get_optional_string_field("cover")); - TRY_RESULT(start_timestamp, object.get_optional_int_field("start_timestamp")); - TRY_RESULT(supports_streaming, object.get_optional_bool_field("supports_streaming")); - auto input_cover = get_input_file(query, td::Slice(), cover, false); - width = td::clamp(width, 0, MAX_LENGTH); - height = td::clamp(height, 0, MAX_LENGTH); - duration = td::clamp(duration, 0, MAX_DURATION); - start_timestamp = td::clamp(start_timestamp, 0, MAX_DURATION); - - return make_object( - make_object(std::move(input_file), std::move(input_thumbnail), std::move(input_cover), - start_timestamp, td::vector(), duration, width, height, - supports_streaming), - std::move(caption), show_caption_above_media, nullptr, has_spoiler); + TRY_RESULT(input_video, get_input_video(query, object, std::move(input_file), std::move(input_thumbnail))); + return make_object(std::move(input_video), std::move(caption), show_caption_above_media, + nullptr, has_spoiler); } if (type == "animation") { if (for_album) { @@ -12436,21 +12441,8 @@ td::Result> Client::get_input_poll_me std::move(input_photo), nullptr, std::move(input_file), td::vector(), 0, 0)); } if (type == "video") { - TRY_RESULT(width, object.get_optional_int_field("width")); - TRY_RESULT(height, object.get_optional_int_field("height")); - TRY_RESULT(duration, object.get_optional_int_field("duration")); - TRY_RESULT(cover, object.get_optional_string_field("cover")); - TRY_RESULT(start_timestamp, object.get_optional_int_field("start_timestamp")); - TRY_RESULT(supports_streaming, object.get_optional_bool_field("supports_streaming")); - auto input_cover = get_input_file(query, td::Slice(), cover, false); - width = td::clamp(width, 0, MAX_LENGTH); - height = td::clamp(height, 0, MAX_LENGTH); - duration = td::clamp(duration, 0, MAX_DURATION); - start_timestamp = td::clamp(start_timestamp, 0, MAX_DURATION); - - return make_object(make_object( - std::move(input_file), std::move(input_thumbnail), std::move(input_cover), start_timestamp, td::vector(), - duration, width, height, supports_streaming)); + TRY_RESULT(input_video, get_input_video(query, object, std::move(input_file), std::move(input_thumbnail))); + return make_object(std::move(input_video)); } if (type == "animation") { TRY_RESULT(input_animation, get_input_animation(object, std::move(input_file), std::move(input_thumbnail))); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 76393f7..84352ab 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -681,6 +681,10 @@ class Client final : public WebhookActor::Callback { const td::JsonObject &object, object_ptr &&input_file, object_ptr &&input_thumbnail); + td::Result> get_input_video( + const Query *query, const td::JsonObject &object, object_ptr &&input_file, + object_ptr &&input_thumbnail) const; + td::Result> get_input_checklist_task(td::JsonValue &&input_task) const; td::Result>> get_input_checklist_tasks(td::JsonValue &&value) const; -- cgit v1.2.3