From f841b065eabad7f9a0fbf83b74098f199022760e Mon Sep 17 00:00:00 2001 From: SuperMonster003 <30370009+SuperMonster003@users.noreply.github.com> Date: Tue, 1 Sep 2026 19:28:51 +0800 Subject: [PATCH] feat(mediainfo): expose snapshot v2 negotiation --- app/src/main/cpp/node_bridge_sources.cpp | 11 ++++++++++- .../pro-parity-suite/snippets/media-recorder.cjs | 12 ++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/main/cpp/node_bridge_sources.cpp b/app/src/main/cpp/node_bridge_sources.cpp index cd8c334b..9b0ee398 100644 --- a/app/src/main/cpp/node_bridge_sources.cpp +++ b/app/src/main/cpp/node_bridge_sources.cpp @@ -25524,12 +25524,21 @@ std::string buildEmbeddedScriptExecutionSource( return value === undefined || value === null ? "" : String(value); }); } + function capabilities(options) { + return __autojs6_call_autojs( + "mediainfo", + "capabilities", + [], + __autojs6_media_bridge_options("mediainfo", "capabilities", options, 5000) + ).then(__autojs6_media_freeze_record); + } const facade = function(path, options) { return read(path, options); }; Object.defineProperties(facade, { read: { value: read, enumerable: true }, - get: { value: get, enumerable: true } + get: { value: get, enumerable: true }, + capabilities: { value: capabilities, enumerable: true } }); __autojs6_limited_mediainfo_cache = Object.freeze(facade); return __autojs6_limited_mediainfo_cache; diff --git a/sample/nodejs/pro-parity-suite/snippets/media-recorder.cjs b/sample/nodejs/pro-parity-suite/snippets/media-recorder.cjs index eed82bab..d9cd81eb 100644 --- a/sample/nodejs/pro-parity-suite/snippets/media-recorder.cjs +++ b/sample/nodejs/pro-parity-suite/snippets/media-recorder.cjs @@ -15,8 +15,16 @@ function codeOf(error) { try { const mediainfo = require("mediainfo"); - const snapshot = await mediainfo.read("sample.mp3", { includeInform: false, timeoutMs: 1000 }); - console.log("sample.pro-parity-suite.media-recorder.mediainfo=" + snapshot.fileName); + const capabilities = await mediainfo.capabilities({ timeoutMs: 1000 }); + const v2 = "autojs6-plugin-mediainfo-snapshot-v2"; + const supportsV2 = capabilities.snapshotSchemas.includes(v2); + const snapshot = await mediainfo.read("sample.mp3", { + ...(supportsV2 ? { schema: v2 } : {}), + includeInform: false, + timeoutMs: 1000 + }); + const fileName = snapshot.schema === v2 ? snapshot.file.name : snapshot.fileName; + console.log("sample.pro-parity-suite.media-recorder.mediainfo=" + fileName); } catch (error) { console.log("sample.pro-parity-suite.media-recorder.skipped=mediainfo:" + codeOf(error)); }