karin-plugin-kkk 2.24.0 → 2.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/lib/apps/admin.js +3 -3
- package/lib/apps/help.js +3 -3
- package/lib/apps/push.js +3 -3
- package/lib/apps/qrlogin.js +3 -3
- package/lib/apps/statistics.js +3 -3
- package/lib/apps/tools.js +3 -3
- package/lib/apps/update.js +3 -3
- package/lib/build-metadata.json +5 -5
- package/lib/core_chunk/{main-1eljaHiz.js → main-DjlCg9e5.js} +266 -51
- package/lib/core_chunk/{template-DekmxKd7.js → template-CsOboAFj.js} +1 -1
- package/lib/core_chunk/template.js +2 -2
- package/lib/core_chunk/{vendor-DxfKHvj-.js → vendor-9pKTNH6x.js} +0 -4
- package/lib/index.js +3 -3
- package/lib/root.js +1 -1
- package/lib/web.config.js +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog
|
|
4
4
|
|
|
5
|
+
## [2.25.0](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.24.0...v2.25.0) (2026-03-11)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### ✨ 新功能
|
|
9
|
+
|
|
10
|
+
* **core:** 解析动图作品时,实验性将合并转发消息中的静态图片魔改成 Google Motion 标准的 Live Photo ([5e789e3](https://github.com/ikenxuan/karin-plugin-kkk/commit/5e789e351eebfaca84e26c326ddf7c16e253a20f))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### 🐛 错误修复
|
|
14
|
+
|
|
15
|
+
* 取消注释 ([921bf95](https://github.com/ikenxuan/karin-plugin-kkk/commit/921bf95ad05d8ac17a2540ac9aa3014beed3b6e5))
|
|
16
|
+
|
|
5
17
|
## [2.24.0](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.23.2...v2.24.0) (2026-03-10)
|
|
6
18
|
|
|
7
19
|
|
package/lib/apps/admin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { C as biLogin, E as task, T as removeOldFiles, w as dylogin } from "../core_chunk/main-
|
|
3
|
-
import "../core_chunk/vendor-
|
|
4
|
-
import "../core_chunk/template-
|
|
2
|
+
import { C as biLogin, E as task, T as removeOldFiles, w as dylogin } from "../core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "../core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "../core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export { biLogin, dylogin, removeOldFiles, task };
|
package/lib/apps/help.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { S as version, x as help } from "../core_chunk/main-
|
|
3
|
-
import "../core_chunk/vendor-
|
|
4
|
-
import "../core_chunk/template-
|
|
2
|
+
import { S as version, x as help } from "../core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "../core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "../core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export { help, version };
|
package/lib/apps/push.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { _ as forcePush, b as testDouyinPush, f as bilibiliPush, g as douyinPushList, h as douyinPush, m as changeBotID, p as bilibiliPushList, v as setbiliPush, y as setdyPush } from "../core_chunk/main-
|
|
3
|
-
import "../core_chunk/vendor-
|
|
4
|
-
import "../core_chunk/template-
|
|
2
|
+
import { _ as forcePush, b as testDouyinPush, f as bilibiliPush, g as douyinPushList, h as douyinPush, m as changeBotID, p as bilibiliPushList, v as setbiliPush, y as setdyPush } from "../core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "../core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "../core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export { bilibiliPush, bilibiliPushList, changeBotID, douyinPush, douyinPushList, forcePush, setbiliPush, setdyPush, testDouyinPush };
|
package/lib/apps/qrlogin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { d as qrLogin } from "../core_chunk/main-
|
|
3
|
-
import "../core_chunk/vendor-
|
|
4
|
-
import "../core_chunk/template-
|
|
2
|
+
import { d as qrLogin } from "../core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "../core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "../core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export { qrLogin };
|
package/lib/apps/statistics.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { l as globalStatistics, u as groupStatistics } from "../core_chunk/main-
|
|
3
|
-
import "../core_chunk/vendor-
|
|
4
|
-
import "../core_chunk/template-
|
|
2
|
+
import { l as globalStatistics, u as groupStatistics } from "../core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "../core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "../core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export { globalStatistics, groupStatistics };
|
package/lib/apps/tools.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { a as douyinAPP, c as xiaohongshuAPP, i as bilibiliAPP, o as kuaishouAPP, s as prefix } from "../core_chunk/main-
|
|
3
|
-
import "../core_chunk/vendor-
|
|
4
|
-
import "../core_chunk/template-
|
|
2
|
+
import { a as douyinAPP, c as xiaohongshuAPP, i as bilibiliAPP, o as kuaishouAPP, s as prefix } from "../core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "../core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "../core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export { bilibiliAPP, douyinAPP, kuaishouAPP, prefix, xiaohongshuAPP };
|
package/lib/apps/update.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { n as kkkUpdateCommand, r as update, t as kkkUpdate } from "../core_chunk/main-
|
|
3
|
-
import "../core_chunk/vendor-
|
|
4
|
-
import "../core_chunk/template-
|
|
2
|
+
import { n as kkkUpdateCommand, r as update, t as kkkUpdate } from "../core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "../core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "../core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export { kkkUpdate, kkkUpdateCommand, update };
|
package/lib/build-metadata.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2.
|
|
3
|
-
"buildTime": "2026-03-
|
|
4
|
-
"buildTimestamp":
|
|
2
|
+
"version": "2.25.0",
|
|
3
|
+
"buildTime": "2026-03-11T00:26:59.339Z",
|
|
4
|
+
"buildTimestamp": 1773188819339,
|
|
5
5
|
"name": "karin-plugin-kkk",
|
|
6
6
|
"description": "Karin 的「抖音」「B 站」视频解析/动态推送插件",
|
|
7
7
|
"homepage": "https://github.com/ikenxuan/karin-plugin-kkk",
|
|
8
|
-
"commitHash": "
|
|
9
|
-
"shortCommitHash": "
|
|
8
|
+
"commitHash": "4b896c643cd81be8e8e0b46dc398af4b168de084",
|
|
9
|
+
"shortCommitHash": "4b896c64"
|
|
10
10
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __esmMin, o as __toESM, r as __export } from "./rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { A as init_locale, An as init_zod, Cn as Chalk, Dn as axios_default, En as init_axios, On as Xhshow, Sn as require_protobufjs, Tn as AxiosError$1, _n as require_png, a as Window, bn as require_heic_decode, dt as init_date_fns, ft as fromUnixTime, ht as differenceInSeconds, i as init_lib, j as zhCN, jn as zod_default, kn as init_dist, mt as format, n as require_lib, pt as formatDistanceToNow, r as require_qr_code_styling, t as require_dist, vn as require_jsQR, wn as init_source, xn as require_express, yn as require_jpeg_js } from "./vendor-
|
|
3
|
-
import { n as init_client, r as reactServerRender } from "./template-
|
|
2
|
+
import { A as init_locale, An as init_zod, Cn as Chalk, Dn as axios_default, En as init_axios, On as Xhshow, Sn as require_protobufjs, Tn as AxiosError$1, _n as require_png, a as Window, bn as require_heic_decode, dt as init_date_fns, ft as fromUnixTime, ht as differenceInSeconds, i as init_lib, j as zhCN, jn as zod_default, kn as init_dist, mt as format, n as require_lib, pt as formatDistanceToNow, r as require_qr_code_styling, t as require_dist, vn as require_jsQR, wn as init_source, xn as require_express, yn as require_jpeg_js } from "./vendor-9pKTNH6x.js";
|
|
3
|
+
import { n as init_client, r as reactServerRender } from "./template-CsOboAFj.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import karin$1, { BOT_CONNECT, app, authMiddleware, checkPkgUpdate, checkPort, common, components, config, copyConfigSync, createBadRequestResponse, createNotFoundResponse, createServerErrorResponse, createSuccessResponse, db, defineConfig, ffmpeg, ffprobe, filesByExt, getBot, hooks, karin, karinPathHtml, karinPathTemp, logger, logs, mkdirSync, range, render, requireFileSync, restart, segment, updatePkg, watch } from "node-karin";
|
|
6
6
|
import fs from "node:fs";
|
|
@@ -7123,7 +7123,7 @@ async function getMediaDuration(path$1) {
|
|
|
7123
7123
|
}
|
|
7124
7124
|
async function mergeVideoAudio(videoPath, audioPath, resultPath) {
|
|
7125
7125
|
const result = await ffmpeg(`-y -i "${videoPath}" -i "${audioPath}" -c copy "${resultPath}"`);
|
|
7126
|
-
if (result.status) logger.
|
|
7126
|
+
if (result.status) logger.debug(`视频合成成功: ${resultPath}`);
|
|
7127
7127
|
else logger.error("视频合成失败", result);
|
|
7128
7128
|
return result.status;
|
|
7129
7129
|
}
|
|
@@ -7131,12 +7131,12 @@ async function compressVideo(options) {
|
|
|
7131
7131
|
const { inputPath, outputPath, targetBitrate, maxRate = targetBitrate * 1.5, bufSize = targetBitrate * 2, crf = 35, removeSource = true } = options;
|
|
7132
7132
|
const result = await ffmpeg(`-y -i "${inputPath}" -b:v ${targetBitrate}k -maxrate ${maxRate}k -bufsize ${bufSize}k -crf ${crf} -preset medium -c:v libx264 -vf "scale='if(gte(iw/ih,16/9),1280,-1)':'if(gte(iw/ih,16/9),-1,720)',scale=ceil(iw/2)*2:ceil(ih/2)*2" "${outputPath}"`);
|
|
7133
7133
|
if (result.status) {
|
|
7134
|
-
logger.
|
|
7134
|
+
logger.debug(`视频压缩成功: ${outputPath}`);
|
|
7135
7135
|
if (removeSource) Common.removeFile(inputPath);
|
|
7136
7136
|
} else logger.error(`视频压缩失败: ${inputPath}`, result);
|
|
7137
7137
|
return result.status;
|
|
7138
7138
|
}
|
|
7139
|
-
var getMediaFrameRate, loopVideoWithTransition;
|
|
7139
|
+
var getMediaFrameRate, loopVideoWithTransition, xmpHeaderBuffer, isJpegBuffer, buildMotionPhotoXmp, injectXmpToJpeg, readOrConvertToJpeg, buildGoogleMotionPhoto;
|
|
7140
7140
|
var init_FFmpeg = __esmMin(async () => {
|
|
7141
7141
|
await init_utils$1();
|
|
7142
7142
|
getMediaFrameRate = async (path$1) => {
|
|
@@ -7214,7 +7214,7 @@ var init_FFmpeg = __esmMin(async () => {
|
|
|
7214
7214
|
else bgmInputArgs = `-stream_loop ${Math.ceil(totalDuration / baseContext.bgmDuration) + 1} -ss ${bgmStartTime} -i "${bgmPath}"`;
|
|
7215
7215
|
} else if (bgmNeedLoop) bgmInputArgs = `-stream_loop ${Math.max(0, Math.ceil(totalDuration / baseContext.bgmDuration) - 1)} -i "${bgmPath}"`;
|
|
7216
7216
|
const result$1 = await ffmpeg(`-y ${inputArgs} ${bgmInputArgs} -filter_complex "${filterComplex};[0:a][${bgmInputIndex}:a]amix=inputs=2:duration=longest:dropout_transition=3[aout]" -map "[outv]" -map "[aout]" -c:v libx264 -c:a aac -b:a 192k -pix_fmt yuv420p -shortest "${outputPath}"`);
|
|
7217
|
-
if (result$1.status) logger.
|
|
7217
|
+
if (result$1.status) logger.debug(`Live Photo 效果视频重放成功: ${outputPath}`);
|
|
7218
7218
|
else logger.error("Live Photo 效果视频重放失败", result$1);
|
|
7219
7219
|
if (mergeMode === "continuous") {
|
|
7220
7220
|
const outputDuration = result$1.status ? await getMediaDuration(outputPath) : totalDuration;
|
|
@@ -7230,10 +7230,75 @@ var init_FFmpeg = __esmMin(async () => {
|
|
|
7230
7230
|
};
|
|
7231
7231
|
}
|
|
7232
7232
|
const result = await ffmpeg(`-y ${inputArgs} -filter_complex "${filterComplex}" -map "[outv]" -c:v libx264 -pix_fmt yuv420p "${outputPath}"`);
|
|
7233
|
-
if (result.status) logger.
|
|
7233
|
+
if (result.status) logger.debug(`Live Photo 效果视频重放成功: ${outputPath}`);
|
|
7234
7234
|
else logger.error("Live Photo 效果视频重放失败", result);
|
|
7235
7235
|
return { success: result.status };
|
|
7236
7236
|
};
|
|
7237
|
+
xmpHeaderBuffer = Buffer.from("http://ns.adobe.com/xap/1.0/\0", "utf8");
|
|
7238
|
+
isJpegBuffer = (fileBuffer) => fileBuffer.length > 2 && fileBuffer[0] === 255 && fileBuffer[1] === 216;
|
|
7239
|
+
buildMotionPhotoXmp = (videoLength, presentationTimestampUs) => `<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.1.0-jc003"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" ${[
|
|
7240
|
+
"xmlns:GCamera=\"http://ns.google.com/photos/1.0/camera/\"",
|
|
7241
|
+
"xmlns:MiCamera=\"http://ns.xiaomi.com/photos/1.0/camera/\"",
|
|
7242
|
+
"xmlns:Container=\"http://ns.google.com/photos/1.0/container/\"",
|
|
7243
|
+
"xmlns:Item=\"http://ns.google.com/photos/1.0/container/item/\"",
|
|
7244
|
+
`GCamera:MotionPhoto="1" GCamera:MotionPhotoVersion="1" GCamera:MotionPhotoPresentationTimestampUs="${presentationTimestampUs}"`,
|
|
7245
|
+
`GCamera:MicroVideo="1" GCamera:MicroVideoVersion="1" GCamera:MicroVideoOffset="${videoLength}"`,
|
|
7246
|
+
`GCamera:MicroVideoPresentationTimestampUs="${presentationTimestampUs}"`,
|
|
7247
|
+
"MiCamera:XMPMeta=\"<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>\"",
|
|
7248
|
+
"xmlns:OpCamera=\"http://ns.oplus.com/photos/1.0/camera/\"",
|
|
7249
|
+
`OpCamera:MotionPhotoPrimaryPresentationTimestampUs="${presentationTimestampUs}"`,
|
|
7250
|
+
"OpCamera:MotionPhotoOwner=\"oplus\"",
|
|
7251
|
+
"OpCamera:OLivePhotoVersion=\"2\"",
|
|
7252
|
+
`OpCamera:VideoLength="${videoLength}"`
|
|
7253
|
+
].join(" ")}><Container:Directory><rdf:Seq><rdf:li rdf:parseType="Resource"><Container:Item Item:Mime="image/jpeg" Item:Semantic="Primary" Item:Length="0" Item:Padding="0" /></rdf:li><rdf:li rdf:parseType="Resource"><Container:Item Item:Mime="video/mp4" Item:Semantic="MotionPhoto" Item:Length="${videoLength}" Item:Padding="0" /></rdf:li></rdf:Seq></Container:Directory></rdf:Description></rdf:RDF></x:xmpmeta>`;
|
|
7254
|
+
injectXmpToJpeg = (jpegBuffer, xmpPacket) => {
|
|
7255
|
+
if (!isJpegBuffer(jpegBuffer)) throw new Error("输入图片不是 JPEG 格式");
|
|
7256
|
+
const xmpPayload = Buffer.concat([xmpHeaderBuffer, Buffer.from(xmpPacket, "utf8")]);
|
|
7257
|
+
const app1Length = xmpPayload.length + 2;
|
|
7258
|
+
if (app1Length > 65535) throw new Error("XMP 数据过大,无法写入 JPEG APP1");
|
|
7259
|
+
const app1Segment = Buffer.alloc(4);
|
|
7260
|
+
app1Segment[0] = 255;
|
|
7261
|
+
app1Segment[1] = 225;
|
|
7262
|
+
app1Segment.writeUInt16BE(app1Length, 2);
|
|
7263
|
+
return Buffer.concat([
|
|
7264
|
+
jpegBuffer.subarray(0, 2),
|
|
7265
|
+
app1Segment,
|
|
7266
|
+
xmpPayload,
|
|
7267
|
+
jpegBuffer.subarray(2)
|
|
7268
|
+
]);
|
|
7269
|
+
};
|
|
7270
|
+
readOrConvertToJpeg = async (imagePath) => {
|
|
7271
|
+
const sourceBuffer = fs.readFileSync(imagePath);
|
|
7272
|
+
if (isJpegBuffer(sourceBuffer)) return sourceBuffer;
|
|
7273
|
+
const tempJpegPath = path.join(Common.tempDri.images, `MotionPhoto_${Date.now()}_${Math.random().toString(36).slice(2)}.jpg`);
|
|
7274
|
+
if (!(await ffmpeg(`-y -i "${imagePath}" -frames:v 1 -q:v 2 "${tempJpegPath}"`)).status) throw new Error(`图片转换 JPEG 失败: ${imagePath}`);
|
|
7275
|
+
try {
|
|
7276
|
+
return fs.readFileSync(tempJpegPath);
|
|
7277
|
+
} finally {
|
|
7278
|
+
fs.rmSync(tempJpegPath, { force: true });
|
|
7279
|
+
}
|
|
7280
|
+
};
|
|
7281
|
+
buildGoogleMotionPhoto = async (options) => {
|
|
7282
|
+
const { imagePath, videoPath, outputPath, presentationTimestampUs } = options;
|
|
7283
|
+
try {
|
|
7284
|
+
const imageBuffer = await readOrConvertToJpeg(imagePath);
|
|
7285
|
+
const videoBuffer = fs.readFileSync(videoPath);
|
|
7286
|
+
let resolvedPresentationTimestampUs = presentationTimestampUs;
|
|
7287
|
+
if (resolvedPresentationTimestampUs === void 0 || resolvedPresentationTimestampUs < 0) {
|
|
7288
|
+
const videoDurationSeconds = await getMediaDuration(videoPath);
|
|
7289
|
+
if (Number.isFinite(videoDurationSeconds) && videoDurationSeconds > 0) resolvedPresentationTimestampUs = Math.round(videoDurationSeconds * 5e5);
|
|
7290
|
+
else resolvedPresentationTimestampUs = 15e5;
|
|
7291
|
+
}
|
|
7292
|
+
const jpegWithXmp = injectXmpToJpeg(imageBuffer, buildMotionPhotoXmp(videoBuffer.length, resolvedPresentationTimestampUs));
|
|
7293
|
+
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
7294
|
+
fs.writeFileSync(outputPath, Buffer.concat([jpegWithXmp, videoBuffer]));
|
|
7295
|
+
logger.debug(`Google Motion Photo 封面生成成功: ${outputPath}`);
|
|
7296
|
+
return true;
|
|
7297
|
+
} catch (error) {
|
|
7298
|
+
logger.error("Google Motion Photo 封面生成失败", error);
|
|
7299
|
+
return false;
|
|
7300
|
+
}
|
|
7301
|
+
};
|
|
7237
7302
|
});
|
|
7238
7303
|
var ERROR_CODE_MAP, RECOVERABLE_ERROR_CODES, RECOVERABLE_KEYWORDS, BASE_HEADERS;
|
|
7239
7304
|
var init_constants = __esmMin(() => {
|
|
@@ -15792,6 +15857,10 @@ var Bilibili = class extends Base {
|
|
|
15792
15857
|
headers: BASE_HEADERS,
|
|
15793
15858
|
filepath: Common.tempDri.images + `Bilibili_static_${Date.now()}_${index}.jpg`
|
|
15794
15859
|
});
|
|
15860
|
+
if (staticImg.filepath) temp.push({
|
|
15861
|
+
filepath: staticImg.filepath,
|
|
15862
|
+
totalBytes: 0
|
|
15863
|
+
});
|
|
15795
15864
|
const loopCount = 3;
|
|
15796
15865
|
if (!staticImg.filepath) {
|
|
15797
15866
|
await Common.removeFile(livePhoto.filepath, true);
|
|
@@ -15808,16 +15877,35 @@ var Bilibili = class extends Base {
|
|
|
15808
15877
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
15809
15878
|
fs.renameSync(outputPath, filePath);
|
|
15810
15879
|
logger.mark(`视频文件重命名完成: ${outputPath.split("/").pop()} -> ${filePath.split("/").pop()}`);
|
|
15811
|
-
logger.mark("正在尝试删除缓存文件");
|
|
15812
|
-
await Common.removeFile(livePhoto.filepath, true);
|
|
15813
15880
|
temp.push({
|
|
15814
15881
|
filepath: filePath,
|
|
15815
15882
|
totalBytes: 0
|
|
15816
15883
|
});
|
|
15817
15884
|
const videoPath = Config.upload.videoSendMode === "base64" ? `base64://${fs.readFileSync(filePath).toString("base64")}` : `file://${filePath}`;
|
|
15818
15885
|
imgArray.push(segment.video(videoPath));
|
|
15819
|
-
|
|
15820
|
-
|
|
15886
|
+
let hasPushedMotionPhotoCover = false;
|
|
15887
|
+
if (staticImg.filepath) {
|
|
15888
|
+
const motionPhotoCoverPath = Common.tempDri.images + `MVIMG_${format(/* @__PURE__ */ new Date(), "yyyyMMdd_HHmmss_SSS")}_${index}.jpg`;
|
|
15889
|
+
if (await buildGoogleMotionPhoto({
|
|
15890
|
+
imagePath: staticImg.filepath,
|
|
15891
|
+
videoPath: livePhoto.filepath,
|
|
15892
|
+
outputPath: motionPhotoCoverPath
|
|
15893
|
+
})) {
|
|
15894
|
+
temp.push({
|
|
15895
|
+
filepath: motionPhotoCoverPath,
|
|
15896
|
+
totalBytes: 0
|
|
15897
|
+
});
|
|
15898
|
+
const motionPhotoCover = Config.upload.imageSendMode === "base64" ? `base64://${fs.readFileSync(motionPhotoCoverPath).toString("base64")}` : `file://${motionPhotoCoverPath}`;
|
|
15899
|
+
imgArray.push(segment.image(motionPhotoCover));
|
|
15900
|
+
hasPushedMotionPhotoCover = true;
|
|
15901
|
+
}
|
|
15902
|
+
}
|
|
15903
|
+
if (!hasPushedMotionPhotoCover) {
|
|
15904
|
+
const imageUrl = await processImageUrl(img$2.url, title, index);
|
|
15905
|
+
imgArray.push(segment.image(imageUrl));
|
|
15906
|
+
}
|
|
15907
|
+
logger.mark("正在尝试删除缓存文件");
|
|
15908
|
+
await Common.removeFile(livePhoto.filepath, true);
|
|
15821
15909
|
} else await Common.removeFile(livePhoto.filepath, true);
|
|
15822
15910
|
}
|
|
15823
15911
|
} else {
|
|
@@ -17602,6 +17690,10 @@ var Bilibilipush = class extends Base {
|
|
|
17602
17690
|
headers: bilibiliBaseHeaders,
|
|
17603
17691
|
filepath: Common.tempDri.images + `Bilibili_static_${Date.now()}_${index}.jpg`
|
|
17604
17692
|
});
|
|
17693
|
+
if (staticImg.filepath) temp.push({
|
|
17694
|
+
filepath: staticImg.filepath,
|
|
17695
|
+
totalBytes: 0
|
|
17696
|
+
});
|
|
17605
17697
|
const loopCount = 3;
|
|
17606
17698
|
if (!staticImg.filepath) {
|
|
17607
17699
|
await Common.removeFile(livePhoto.filepath, true);
|
|
@@ -17617,16 +17709,35 @@ var Bilibilipush = class extends Base {
|
|
|
17617
17709
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
17618
17710
|
fs.renameSync(outputPath, filePath);
|
|
17619
17711
|
logger.mark(`视频文件重命名完成: ${outputPath.split("/").pop()} -> ${filePath.split("/").pop()}`);
|
|
17620
|
-
logger.mark("正在尝试删除缓存文件");
|
|
17621
|
-
await Common.removeFile(staticImg.filepath, true);
|
|
17622
17712
|
temp.push({
|
|
17623
17713
|
filepath: filePath,
|
|
17624
17714
|
totalBytes: 0
|
|
17625
17715
|
});
|
|
17626
17716
|
const videoPath = Config.upload.videoSendMode === "base64" ? `base64://${fs.readFileSync(filePath).toString("base64")}` : `file://${filePath}`;
|
|
17627
17717
|
imgArray.push(segment.video(videoPath));
|
|
17628
|
-
|
|
17629
|
-
|
|
17718
|
+
let hasPushedMotionPhotoCover = false;
|
|
17719
|
+
if (staticImg.filepath) {
|
|
17720
|
+
const motionPhotoCoverPath = Common.tempDri.images + `MVIMG_${Date.now()}_${index}.jpg`;
|
|
17721
|
+
if (await buildGoogleMotionPhoto({
|
|
17722
|
+
imagePath: staticImg.filepath,
|
|
17723
|
+
videoPath: livePhoto.filepath,
|
|
17724
|
+
outputPath: motionPhotoCoverPath
|
|
17725
|
+
})) {
|
|
17726
|
+
temp.push({
|
|
17727
|
+
filepath: motionPhotoCoverPath,
|
|
17728
|
+
totalBytes: 0
|
|
17729
|
+
});
|
|
17730
|
+
const motionPhotoCover = Config.upload.imageSendMode === "base64" ? `base64://${fs.readFileSync(motionPhotoCoverPath).toString("base64")}` : `file://${motionPhotoCoverPath}`;
|
|
17731
|
+
imgArray.push(segment.image(motionPhotoCover));
|
|
17732
|
+
hasPushedMotionPhotoCover = true;
|
|
17733
|
+
}
|
|
17734
|
+
}
|
|
17735
|
+
if (!hasPushedMotionPhotoCover) {
|
|
17736
|
+
const imageUrl = await processImageUrl(imageSrc, title, index);
|
|
17737
|
+
imgArray.push(segment.image(imageUrl));
|
|
17738
|
+
}
|
|
17739
|
+
logger.mark("正在尝试删除缓存文件");
|
|
17740
|
+
await Common.removeFile(livePhoto.filepath, true);
|
|
17630
17741
|
continue;
|
|
17631
17742
|
}
|
|
17632
17743
|
await Common.removeFile(livePhoto.filepath, true);
|
|
@@ -18498,11 +18609,18 @@ var DouYin = class extends Base {
|
|
|
18498
18609
|
const outputPath = Common.tempDri.video + `Douyin_Result_${Date.now()}.mp4`;
|
|
18499
18610
|
const loopCount = imageItem.clip_type === 4 ? 1 : 3;
|
|
18500
18611
|
let staticImgPath = "";
|
|
18501
|
-
if (imageItem.url_list?.[0])
|
|
18502
|
-
|
|
18503
|
-
|
|
18504
|
-
|
|
18505
|
-
|
|
18612
|
+
if (imageItem.url_list?.[0]) {
|
|
18613
|
+
const staticImg = await downloadFile(imageItem.url_list[0], {
|
|
18614
|
+
title: `Douyin_static_${Date.now()}_${index}.jpg`,
|
|
18615
|
+
headers: this.headers,
|
|
18616
|
+
filepath: Common.tempDri.images + `Douyin_static_${Date.now()}_${index}.jpg`
|
|
18617
|
+
});
|
|
18618
|
+
temp.push({
|
|
18619
|
+
filepath: staticImg.filepath,
|
|
18620
|
+
totalBytes: 0
|
|
18621
|
+
});
|
|
18622
|
+
staticImgPath = staticImg.filepath ?? "";
|
|
18623
|
+
}
|
|
18506
18624
|
const transitionEnabled = loopCount > 1 && Boolean(staticImgPath);
|
|
18507
18625
|
const safeStaticPath = staticImgPath || liveimg.filepath;
|
|
18508
18626
|
const result = await loopVideoWithTransition({
|
|
@@ -18521,8 +18639,6 @@ var DouYin = class extends Base {
|
|
|
18521
18639
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
18522
18640
|
fs.renameSync(outputPath, filePath);
|
|
18523
18641
|
logger.mark(`视频文件重命名完成: ${outputPath.split("/").pop()} -> ${filePath.split("/").pop()}`);
|
|
18524
|
-
logger.mark("正在尝试删除缓存文件");
|
|
18525
|
-
await Common.removeFile(liveimg.filepath, true);
|
|
18526
18642
|
temp.push({
|
|
18527
18643
|
filepath: filePath,
|
|
18528
18644
|
totalBytes: 0
|
|
@@ -18530,9 +18646,30 @@ var DouYin = class extends Base {
|
|
|
18530
18646
|
const videoPath = Config.upload.videoSendMode === "base64" ? `base64://${fs.readFileSync(filePath).toString("base64")}` : `file://${filePath}`;
|
|
18531
18647
|
processedImages.push(segment.video(videoPath));
|
|
18532
18648
|
if (imageItem.clip_type === 5 && imageItem.url_list?.[0]) {
|
|
18533
|
-
|
|
18534
|
-
|
|
18649
|
+
let hasPushedMotionPhotoCover = false;
|
|
18650
|
+
if (staticImgPath) {
|
|
18651
|
+
const motionPhotoCoverPath = Common.tempDri.images + `MVIMG_${format(/* @__PURE__ */ new Date(), "yyyyMMdd_HHmmss_SSS")}_${index}.jpg`;
|
|
18652
|
+
if (await buildGoogleMotionPhoto({
|
|
18653
|
+
imagePath: staticImgPath,
|
|
18654
|
+
videoPath: liveimg.filepath,
|
|
18655
|
+
outputPath: motionPhotoCoverPath
|
|
18656
|
+
})) {
|
|
18657
|
+
temp.push({
|
|
18658
|
+
filepath: motionPhotoCoverPath,
|
|
18659
|
+
totalBytes: 0
|
|
18660
|
+
});
|
|
18661
|
+
const motionPhotoCover = Config.upload.imageSendMode === "base64" ? `base64://${fs.readFileSync(motionPhotoCoverPath).toString("base64")}` : `file://${motionPhotoCoverPath}`;
|
|
18662
|
+
processedImages.push(segment.image(motionPhotoCover));
|
|
18663
|
+
hasPushedMotionPhotoCover = true;
|
|
18664
|
+
}
|
|
18665
|
+
}
|
|
18666
|
+
if (!hasPushedMotionPhotoCover) {
|
|
18667
|
+
const imageUrl = await processImageUrl(imageItem.url_list[0], g_title, index);
|
|
18668
|
+
processedImages.push(segment.image(imageUrl));
|
|
18669
|
+
}
|
|
18535
18670
|
}
|
|
18671
|
+
logger.mark("正在尝试删除缓存文件");
|
|
18672
|
+
await Common.removeFile(liveimg.filepath, true);
|
|
18536
18673
|
} else await Common.removeFile(liveimg.filepath, true);
|
|
18537
18674
|
}
|
|
18538
18675
|
}
|
|
@@ -18612,11 +18749,18 @@ var DouYin = class extends Base {
|
|
|
18612
18749
|
const outputPath = Common.tempDri.video + `Douyin_Result_${Date.now()}.mp4`;
|
|
18613
18750
|
const loopCount = item.clip_type === 4 ? 1 : 3;
|
|
18614
18751
|
let staticImgPath = "";
|
|
18615
|
-
if (item.url_list?.[0])
|
|
18616
|
-
|
|
18617
|
-
|
|
18618
|
-
|
|
18619
|
-
|
|
18752
|
+
if (item.url_list?.[0]) {
|
|
18753
|
+
const staticImg = await downloadFile(item.url_list[0], {
|
|
18754
|
+
title: `Douyin_static_${Date.now()}_${index}.jpg`,
|
|
18755
|
+
headers: this.headers,
|
|
18756
|
+
filepath: Common.tempDri.images + `Douyin_static_${Date.now()}_${index}.jpg`
|
|
18757
|
+
});
|
|
18758
|
+
temp.push({
|
|
18759
|
+
filepath: staticImg.filepath,
|
|
18760
|
+
totalBytes: 0
|
|
18761
|
+
});
|
|
18762
|
+
staticImgPath = staticImg.filepath ?? "";
|
|
18763
|
+
}
|
|
18620
18764
|
const transitionEnabled = loopCount > 1 && Boolean(staticImgPath);
|
|
18621
18765
|
const safeStaticPath = staticImgPath || livePhoto.filepath;
|
|
18622
18766
|
const result = await loopVideoWithTransition({
|
|
@@ -18635,8 +18779,6 @@ var DouYin = class extends Base {
|
|
|
18635
18779
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
18636
18780
|
fs.renameSync(outputPath, filePath);
|
|
18637
18781
|
logger.mark(`视频文件重命名完成: ${outputPath.split("/").pop()} -> ${filePath.split("/").pop()}`);
|
|
18638
|
-
logger.mark("正在尝试删除缓存文件");
|
|
18639
|
-
await Common.removeFile(livePhoto.filepath, true);
|
|
18640
18782
|
temp.push({
|
|
18641
18783
|
filepath: filePath,
|
|
18642
18784
|
totalBytes: 0
|
|
@@ -18644,9 +18786,30 @@ var DouYin = class extends Base {
|
|
|
18644
18786
|
const videoPath = Config.upload.videoSendMode === "base64" ? `base64://${fs.readFileSync(filePath).toString("base64")}` : `file://${filePath}`;
|
|
18645
18787
|
images.push(segment.video(videoPath));
|
|
18646
18788
|
if (item.clip_type === 5 && item.url_list?.[0]) {
|
|
18647
|
-
|
|
18648
|
-
|
|
18789
|
+
let hasPushedMotionPhotoCover = false;
|
|
18790
|
+
if (staticImgPath) {
|
|
18791
|
+
const motionPhotoCoverPath = Common.tempDri.images + `MVIMG_${format(/* @__PURE__ */ new Date(), "yyyyMMdd_HHmmss_SSS")}_${index}.jpg`;
|
|
18792
|
+
if (await buildGoogleMotionPhoto({
|
|
18793
|
+
imagePath: staticImgPath,
|
|
18794
|
+
videoPath: livePhoto.filepath,
|
|
18795
|
+
outputPath: motionPhotoCoverPath
|
|
18796
|
+
})) {
|
|
18797
|
+
temp.push({
|
|
18798
|
+
filepath: motionPhotoCoverPath,
|
|
18799
|
+
totalBytes: 0
|
|
18800
|
+
});
|
|
18801
|
+
const motionPhotoCover = Config.upload.imageSendMode === "base64" ? `base64://${fs.readFileSync(motionPhotoCoverPath).toString("base64")}` : `file://${motionPhotoCoverPath}`;
|
|
18802
|
+
images.push(segment.image(motionPhotoCover));
|
|
18803
|
+
hasPushedMotionPhotoCover = true;
|
|
18804
|
+
}
|
|
18805
|
+
}
|
|
18806
|
+
if (!hasPushedMotionPhotoCover) {
|
|
18807
|
+
const imageUrl = await processImageUrl(item.url_list[0], g_title, index);
|
|
18808
|
+
images.push(segment.image(imageUrl));
|
|
18809
|
+
}
|
|
18649
18810
|
}
|
|
18811
|
+
logger.mark("正在尝试删除缓存文件");
|
|
18812
|
+
await Common.removeFile(livePhoto.filepath, true);
|
|
18650
18813
|
} else await Common.removeFile(livePhoto.filepath, true);
|
|
18651
18814
|
}
|
|
18652
18815
|
}
|
|
@@ -19739,11 +19902,18 @@ var DouYinpush = class extends Base {
|
|
|
19739
19902
|
const outputPath = Common.tempDri.video + `Douyin_Result_${Date.now()}.mp4`;
|
|
19740
19903
|
const loopCount = item.clip_type === 4 ? 1 : 3;
|
|
19741
19904
|
let staticImgPath = "";
|
|
19742
|
-
if (item.url_list?.[0])
|
|
19743
|
-
|
|
19744
|
-
|
|
19745
|
-
|
|
19746
|
-
|
|
19905
|
+
if (item.url_list?.[0]) {
|
|
19906
|
+
const staticImg = await downloadFile(item.url_list[0], {
|
|
19907
|
+
title: `Douyin_static_${Date.now()}_${index}.jpg`,
|
|
19908
|
+
headers: douyinBaseHeaders,
|
|
19909
|
+
filepath: Common.tempDri.images + `Douyin_static_${Date.now()}_${index}.jpg`
|
|
19910
|
+
});
|
|
19911
|
+
if (staticImg.filepath) temp.push({
|
|
19912
|
+
filepath: staticImg.filepath,
|
|
19913
|
+
totalBytes: 0
|
|
19914
|
+
});
|
|
19915
|
+
staticImgPath = staticImg.filepath ?? "";
|
|
19916
|
+
}
|
|
19747
19917
|
const transitionEnabled = loopCount > 1 && Boolean(staticImgPath);
|
|
19748
19918
|
const safeStaticPath = staticImgPath || liveimg.filepath;
|
|
19749
19919
|
const result = await loopVideoWithTransition({
|
|
@@ -19762,8 +19932,6 @@ var DouYinpush = class extends Base {
|
|
|
19762
19932
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
19763
19933
|
fs.renameSync(outputPath, filePath);
|
|
19764
19934
|
logger.mark(`视频文件重命名完成: ${outputPath.split("/").pop()} -> ${filePath.split("/").pop()}`);
|
|
19765
|
-
logger.mark("正在尝试删除缓存文件");
|
|
19766
|
-
await Common.removeFile(liveimg.filepath, true);
|
|
19767
19935
|
temp.push({
|
|
19768
19936
|
filepath: filePath,
|
|
19769
19937
|
totalBytes: 0
|
|
@@ -19771,9 +19939,30 @@ var DouYinpush = class extends Base {
|
|
|
19771
19939
|
const videoPath = Config.upload.videoSendMode === "base64" ? `base64://${fs.readFileSync(filePath).toString("base64")}` : `file://${filePath}`;
|
|
19772
19940
|
images.push(segment.video(videoPath));
|
|
19773
19941
|
if (item.clip_type === 5 && item.url_list?.[0]) {
|
|
19774
|
-
|
|
19775
|
-
|
|
19942
|
+
let hasPushedMotionPhotoCover = false;
|
|
19943
|
+
if (staticImgPath) {
|
|
19944
|
+
const motionPhotoCoverPath = Common.tempDri.images + `MVIMG_${format(/* @__PURE__ */ new Date(), "yyyyMMdd_HHmmss_SSS")}_${index}.jpg`;
|
|
19945
|
+
if (await buildGoogleMotionPhoto({
|
|
19946
|
+
imagePath: staticImgPath,
|
|
19947
|
+
videoPath: liveimg.filepath,
|
|
19948
|
+
outputPath: motionPhotoCoverPath
|
|
19949
|
+
})) {
|
|
19950
|
+
temp.push({
|
|
19951
|
+
filepath: motionPhotoCoverPath,
|
|
19952
|
+
totalBytes: 0
|
|
19953
|
+
});
|
|
19954
|
+
const motionPhotoCover = Config.upload.imageSendMode === "base64" ? `base64://${fs.readFileSync(motionPhotoCoverPath).toString("base64")}` : `file://${motionPhotoCoverPath}`;
|
|
19955
|
+
images.push(segment.image(motionPhotoCover));
|
|
19956
|
+
hasPushedMotionPhotoCover = true;
|
|
19957
|
+
}
|
|
19958
|
+
}
|
|
19959
|
+
if (!hasPushedMotionPhotoCover) {
|
|
19960
|
+
const imageUrl = await processImageUrl(item.url_list[0], Detail_Data.desc, index);
|
|
19961
|
+
images.push(segment.image(imageUrl));
|
|
19962
|
+
}
|
|
19776
19963
|
}
|
|
19964
|
+
logger.mark("正在尝试删除缓存文件");
|
|
19965
|
+
await Common.removeFile(liveimg.filepath, true);
|
|
19777
19966
|
} else await Common.removeFile(liveimg.filepath, true);
|
|
19778
19967
|
}
|
|
19779
19968
|
}
|
|
@@ -19821,11 +20010,18 @@ var DouYinpush = class extends Base {
|
|
|
19821
20010
|
const outputPath = Common.tempDri.video + `Douyin_Result_${Date.now()}.mp4`;
|
|
19822
20011
|
const loopCount = item.clip_type === 4 ? 1 : 3;
|
|
19823
20012
|
let staticImgPath = "";
|
|
19824
|
-
if (item.url_list?.[0])
|
|
19825
|
-
|
|
19826
|
-
|
|
19827
|
-
|
|
19828
|
-
|
|
20013
|
+
if (item.url_list?.[0]) {
|
|
20014
|
+
const staticImg = await downloadFile(item.url_list[0], {
|
|
20015
|
+
title: `Douyin_static_${Date.now()}_${index}.jpg`,
|
|
20016
|
+
headers: douyinBaseHeaders,
|
|
20017
|
+
filepath: Common.tempDri.images + `Douyin_static_${Date.now()}_${index}.jpg`
|
|
20018
|
+
});
|
|
20019
|
+
if (staticImg.filepath) temp.push({
|
|
20020
|
+
filepath: staticImg.filepath,
|
|
20021
|
+
totalBytes: 0
|
|
20022
|
+
});
|
|
20023
|
+
staticImgPath = staticImg.filepath ?? "";
|
|
20024
|
+
}
|
|
19829
20025
|
const transitionEnabled = loopCount > 1 && Boolean(staticImgPath);
|
|
19830
20026
|
const safeStaticPath = staticImgPath || liveimg.filepath;
|
|
19831
20027
|
const result = await loopVideoWithTransition({
|
|
@@ -19844,8 +20040,6 @@ var DouYinpush = class extends Base {
|
|
|
19844
20040
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
19845
20041
|
fs.renameSync(outputPath, filePath);
|
|
19846
20042
|
logger.mark(`视频文件重命名完成: ${outputPath.split("/").pop()} -> ${filePath.split("/").pop()}`);
|
|
19847
|
-
logger.mark("正在尝试删除缓存文件");
|
|
19848
|
-
await Common.removeFile(liveimg.filepath, true);
|
|
19849
20043
|
temp.push({
|
|
19850
20044
|
filepath: filePath,
|
|
19851
20045
|
totalBytes: 0
|
|
@@ -19853,9 +20047,30 @@ var DouYinpush = class extends Base {
|
|
|
19853
20047
|
const videoPath = Config.upload.videoSendMode === "base64" ? `base64://${fs.readFileSync(filePath).toString("base64")}` : `file://${filePath}`;
|
|
19854
20048
|
processedImages.push(segment.video(videoPath));
|
|
19855
20049
|
if (item.clip_type === 5 && item.url_list?.[0]) {
|
|
19856
|
-
|
|
19857
|
-
|
|
20050
|
+
let hasPushedMotionPhotoCover = false;
|
|
20051
|
+
if (staticImgPath) {
|
|
20052
|
+
const motionPhotoCoverPath = Common.tempDri.images + `MVIMG_${format(/* @__PURE__ */ new Date(), "yyyyMMdd_HHmmss_SSS")}_${index}.jpg`;
|
|
20053
|
+
if (await buildGoogleMotionPhoto({
|
|
20054
|
+
imagePath: staticImgPath,
|
|
20055
|
+
videoPath: liveimg.filepath,
|
|
20056
|
+
outputPath: motionPhotoCoverPath
|
|
20057
|
+
})) {
|
|
20058
|
+
temp.push({
|
|
20059
|
+
filepath: motionPhotoCoverPath,
|
|
20060
|
+
totalBytes: 0
|
|
20061
|
+
});
|
|
20062
|
+
const motionPhotoCover = Config.upload.imageSendMode === "base64" ? `base64://${fs.readFileSync(motionPhotoCoverPath).toString("base64")}` : `file://${motionPhotoCoverPath}`;
|
|
20063
|
+
processedImages.push(segment.image(motionPhotoCover));
|
|
20064
|
+
hasPushedMotionPhotoCover = true;
|
|
20065
|
+
}
|
|
20066
|
+
}
|
|
20067
|
+
if (!hasPushedMotionPhotoCover) {
|
|
20068
|
+
const imageUrl = await processImageUrl(item.url_list[0], Detail_Data.desc, index);
|
|
20069
|
+
processedImages.push(segment.image(imageUrl));
|
|
20070
|
+
}
|
|
19858
20071
|
}
|
|
20072
|
+
logger.mark("正在尝试删除缓存文件");
|
|
20073
|
+
await Common.removeFile(liveimg.filepath, true);
|
|
19859
20074
|
} else await Common.removeFile(liveimg.filepath, true);
|
|
19860
20075
|
}
|
|
19861
20076
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __esmMin, o as __toESM, r as __export } from "./rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { $ as RiStarFill, $t as ExternalLink, A as init_locale, At as ThumbsUp, B as RiLineChartFill, Bt as QrCode, C as init_hi, Ct as init_io5, D as AiFillHeart, Dt as User, E as init_fa6, Et as Users, F as RiGroupLine, Ft as ShieldCheck, G as RiMessage3Fill, Gt as MapPin, H as RiListCheck2, Ht as Play, I as RiHashtag, It as Share2, J as RiRefreshLine, Jt as Hash, K as RiPieChart2Fill, Kt as Info, L as RiHeart2Line, Lt as ScanLine, M as RiArrowRightFill, Mt as Star, N as RiBarChartFill, Nt as Smartphone, O as AiFillStar, Ot as UserPlus, P as RiBellFill, Pt as Shield, Q as RiSparkling2Fill, Qt as Eye, R as RiHeart3Fill, Rt as Radio, S as HiOutlineMenuAlt2, St as IoSearch, T as FaCommentDots, Tt as Zap, U as RiLiveLine, Ut as Music, V as RiLinkM, Vt as Plug2, W as RiLoginCircleFill, Wt as MessageCircle, X as RiSendPlaneFill, Xt as Gamepad2, Y as RiRobot2Fill, Yt as Gift, Z as RiShareForwardFill, Zt as FileText, _ as init_md, _t as code_default, an as CircleEllipsis, at as RiVideoLine, b as TbScan, bt as HeroUIProvider, c as VictoryPie, cn as ChartColumn, ct as Markdown, d as VictoryAxis, dn as BookOpen, dt as init_date_fns, en as Crown, et as RiStarLine, f as VictoryLabel, fn as Bell, g as MdAccessTime, gn as require_react, gt as init_dist, h as rehypeHighlight, hn as require_server_node, in as CircleFadingArrowUp, it as RiUserFollowLine, j as zhCN, jt as Terminal, k as init_ai, kt as TriangleAlert, l as VictoryLine, ln as Calendar, lt as LuFullscreen, m as init_rehype_highlight, mn as init_clsx, mt as format, nn as Coins, nt as RiTiktokFill, o as init_es, on as CircleCheckBig, ot as init_ri, p as VictoryTheme, pn as clsx_default, pt as formatDistanceToNow, q as RiQuestionFill, qt as Heart, rn as Clock, rt as RiTrophyFill, s as VictoryScatter, sn as CircleAlert, st as init_react_markdown, tn as CornerDownLeft, tt as RiThumbUpFill, u as VictoryChart, un as Bookmark, ut as init_lu, v as SiBilibili, vt as chip_default, w as FaCodeBranch, wt as init_lucide_react, x as init_tb, xt as require_jsx_runtime, y as init_si, yt as button_default, z as RiHeart3Line, zt as Quote } from "./vendor-
|
|
2
|
+
import { $ as RiStarFill, $t as ExternalLink, A as init_locale, At as ThumbsUp, B as RiLineChartFill, Bt as QrCode, C as init_hi, Ct as init_io5, D as AiFillHeart, Dt as User, E as init_fa6, Et as Users, F as RiGroupLine, Ft as ShieldCheck, G as RiMessage3Fill, Gt as MapPin, H as RiListCheck2, Ht as Play, I as RiHashtag, It as Share2, J as RiRefreshLine, Jt as Hash, K as RiPieChart2Fill, Kt as Info, L as RiHeart2Line, Lt as ScanLine, M as RiArrowRightFill, Mt as Star, N as RiBarChartFill, Nt as Smartphone, O as AiFillStar, Ot as UserPlus, P as RiBellFill, Pt as Shield, Q as RiSparkling2Fill, Qt as Eye, R as RiHeart3Fill, Rt as Radio, S as HiOutlineMenuAlt2, St as IoSearch, T as FaCommentDots, Tt as Zap, U as RiLiveLine, Ut as Music, V as RiLinkM, Vt as Plug2, W as RiLoginCircleFill, Wt as MessageCircle, X as RiSendPlaneFill, Xt as Gamepad2, Y as RiRobot2Fill, Yt as Gift, Z as RiShareForwardFill, Zt as FileText, _ as init_md, _t as code_default, an as CircleEllipsis, at as RiVideoLine, b as TbScan, bt as HeroUIProvider, c as VictoryPie, cn as ChartColumn, ct as Markdown, d as VictoryAxis, dn as BookOpen, dt as init_date_fns, en as Crown, et as RiStarLine, f as VictoryLabel, fn as Bell, g as MdAccessTime, gn as require_react, gt as init_dist, h as rehypeHighlight, hn as require_server_node, in as CircleFadingArrowUp, it as RiUserFollowLine, j as zhCN, jt as Terminal, k as init_ai, kt as TriangleAlert, l as VictoryLine, ln as Calendar, lt as LuFullscreen, m as init_rehype_highlight, mn as init_clsx, mt as format, nn as Coins, nt as RiTiktokFill, o as init_es, on as CircleCheckBig, ot as init_ri, p as VictoryTheme, pn as clsx_default, pt as formatDistanceToNow, q as RiQuestionFill, qt as Heart, rn as Clock, rt as RiTrophyFill, s as VictoryScatter, sn as CircleAlert, st as init_react_markdown, tn as CornerDownLeft, tt as RiThumbUpFill, u as VictoryChart, un as Bookmark, ut as init_lu, v as SiBilibili, vt as chip_default, w as FaCodeBranch, wt as init_lucide_react, x as init_tb, xt as require_jsx_runtime, y as init_si, yt as button_default, z as RiHeart3Line, zt as Quote } from "./vendor-9pKTNH6x.js";
|
|
3
3
|
import { logger as logger$1 } from "node-karin";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "./rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import "./vendor-
|
|
3
|
-
import { r as reactServerRender, t as template_default } from "./template-
|
|
2
|
+
import "./vendor-9pKTNH6x.js";
|
|
3
|
+
import { r as reactServerRender, t as template_default } from "./template-CsOboAFj.js";
|
|
4
4
|
export { template_default as default, reactServerRender };
|
|
@@ -144568,7 +144568,6 @@ var init_victory_brush_line = __esmMin(() => {
|
|
|
144568
144568
|
__toESM(require_react());
|
|
144569
144569
|
__toESM(require_defaults());
|
|
144570
144570
|
__toESM(require_pick());
|
|
144571
|
-
init_es$27();
|
|
144572
144571
|
__toESM(require_react_fast_compare());
|
|
144573
144572
|
1 / Number.MAX_SAFE_INTEGER;
|
|
144574
144573
|
});
|
|
@@ -145161,7 +145160,6 @@ var init_use_canvas_context = __esmMin(() => {
|
|
|
145161
145160
|
var import_react$32;
|
|
145162
145161
|
var init_canvas_bar = __esmMin(() => {
|
|
145163
145162
|
__toESM(require_react());
|
|
145164
|
-
init_es$24();
|
|
145165
145163
|
});
|
|
145166
145164
|
var import_react$31, CanvasGroup;
|
|
145167
145165
|
var init_canvas_group = __esmMin(() => {
|
|
@@ -145202,12 +145200,10 @@ var init_canvas_group = __esmMin(() => {
|
|
|
145202
145200
|
var import_react$30;
|
|
145203
145201
|
var init_canvas_curve = __esmMin(() => {
|
|
145204
145202
|
__toESM(require_react());
|
|
145205
|
-
init_es$27();
|
|
145206
145203
|
});
|
|
145207
145204
|
var import_react$29;
|
|
145208
145205
|
var init_canvas_point = __esmMin(() => {
|
|
145209
145206
|
__toESM(require_react());
|
|
145210
|
-
init_es$27();
|
|
145211
145207
|
});
|
|
145212
145208
|
var init_es$19 = __esmMin(() => {
|
|
145213
145209
|
init_canvas_bar();
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import "./core_chunk/main-
|
|
3
|
-
import "./core_chunk/vendor-
|
|
4
|
-
import "./core_chunk/template-
|
|
2
|
+
import "./core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "./core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "./core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export {};
|
package/lib/root.js
CHANGED
package/lib/web.config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./core_chunk/rolldown-runtime-BMXAG3ag.js";
|
|
2
|
-
import { D as webConfig, O as web_config_default } from "./core_chunk/main-
|
|
3
|
-
import "./core_chunk/vendor-
|
|
4
|
-
import "./core_chunk/template-
|
|
2
|
+
import { D as webConfig, O as web_config_default } from "./core_chunk/main-DjlCg9e5.js";
|
|
3
|
+
import "./core_chunk/vendor-9pKTNH6x.js";
|
|
4
|
+
import "./core_chunk/template-CsOboAFj.js";
|
|
5
5
|
export { web_config_default as default, webConfig };
|