karin-plugin-kkk 2.30.3 → 2.31.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 +50 -0
- package/lib/build-metadata.json +5 -5
- package/lib/core_chunk/main.js +708 -227
- package/lib/core_chunk/template.d.mts +23 -6
- package/lib/core_chunk/vendor.js +1078 -750
- package/lib/karin-plugin-kkk.css +199 -181
- package/package.json +4 -4
package/lib/core_chunk/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as __toESM } from "./rolldown-runtime.js";
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as SiOppo, $n as zod_default, $t as MessageCircle, A as n, An as CircleAlert, At as Sparkles, B as RiPieChart2Fill, Bn as Chip, Bt as RotateCcw, C as BiImage, Cn as Clock, Ct as TriangleAlert, D as AiOutlineVideoCamera, Dn as CircleEllipsis, Dt as Star, E as AiFillStar, En as CircleFadingArrowUp, Et as Sun, F as RiHeart3Fill, Fn as Box, Ft as Share2, G as RiTiktokFill, Gn as require_react, Gt as Puzzle, H as RiStarFill, Hn as clsx, Ht as Radio, I as RiHeart3Line, In as Bot, It as Settings2, J as RiVerifiedBadgeFill, Jn as require_jpeg_js, Jt as Pencil, K as RiTrophyFill, Kn as require_png, Kt as Plus, L as RiHeartLine, Ln as Bookmark, Lt as Search, M as RiArrowRightFill, Mn as ChartColumn, Mt as ShoppingBag, N as RiGroupLine, Nn as Camera, Nt as Shield, O as m, On as CircleCheck, Ot as Square, P as RiHashtag, Pn as Calendar, Pt as ShieldCheck, Q as SiSamsung, Qn as Xhshow, Qt as Monitor, R as RiLiveLine, Rn as BellRing, Rt as ScanLine, S as FaUserGroup, Sn as Code, St as Upload, T as AiFillPushpin, Tn as CircleQuestionMark, Tt as Terminal, U as RiStarLine, Un as require_jsx_runtime, Ut as Quote, V as RiShareForwardFill, Vn as Button, Vt as RefreshCw, W as RiThumbUpFill, Wn as require_server_node, Wt as QrCode, X as SiXiaomi, Xn as require_protobufjs, Xt as Music, Y as RiVideoLine, Yn as require_heic_decode, Yt as Palette, Z as SiVivo, Zn as Chalk, Zt as Moon, _ as MdLocationOn, _n as Download, _t as Video, a as purify, an as Info, at as SiBilibili, b as FaMusic, bn as CornerDownLeft, bt as User, c as VictoryLine, cn as Hash, ct as zhCN, d as VictoryLabel, dn as Gamepad2, dt as formatDistanceToNow, en as Menu, et as SiOneplus, f as VictoryTheme, fn as FileText, ft as format, g as MdLightbulbOutline, gn as ExternalLink, gt as WandSparkles, h as MdInfoOutline, hn as EyeOff, ht as X, i as Window, in as LayoutTemplate, it as SiGithub, j as Markdown, jn as Check, jt as Smartphone, k as a, kn as CircleCheckBig, kt as SquarePen, l as VictoryChart, ln as GitBranch, lt as parse, m as MdFitScreen, mn as Eye, mt as Zap, n as require_lib, nn as MapPin, nt as SiHonor, o as VictoryScatter, on as Image$1, ot as SiApple, p as rehypeHighlight, pn as FilePlay, pt as differenceInSeconds, q as RiUserFollowLine, qn as require_jsQR, qt as Play, r as require_qr_code_styling, rn as LoaderCircle, rt as SiGooglephotos, s as VictoryPie, sn as Heart, st as SiAnthropic, t as createProxyMiddleware, tn as Maximize, tt as SiHuawei, u as VictoryAxis, un as Gift, ut as fromUnixTime, v as MdSchedule, vn as Crown, vt as Users, w as AiFillHeart, wn as Clapperboard, wt as Trash2, x as FaTiktok, xn as Copy, xt as UserPlus, y as FaCommentDots, yn as Cpu, yt as UsersRound, z as RiMessage3Fill, zn as ArrowDownToLine, zt as Save } from "./vendor.js";
|
|
3
3
|
import "node:module";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path, { resolve } from "node:path";
|
|
@@ -18,7 +18,7 @@ import util from "node:util";
|
|
|
18
18
|
import { Transform } from "node:stream";
|
|
19
19
|
import { pipeline } from "node:stream/promises";
|
|
20
20
|
import { embedWatermarkToPngBytes } from "@ikenxuan/watermark";
|
|
21
|
-
import { snapka } from "@
|
|
21
|
+
import { snapka } from "@karinjs/plugin-puppeteer";
|
|
22
22
|
import { newInjectedPage } from "fingerprint-injector";
|
|
23
23
|
//#region src/index.ts
|
|
24
24
|
globalThis.__kkkLoadStart ??= process.hrtime.bigint();
|
|
@@ -1613,8 +1613,8 @@ var xiaohongshuApiUrls = {
|
|
|
1613
1613
|
keyword: data.keyword,
|
|
1614
1614
|
page: data.page ?? 1,
|
|
1615
1615
|
page_size: data.page_size ?? 20,
|
|
1616
|
-
sort:
|
|
1617
|
-
note_type:
|
|
1616
|
+
sort: "general",
|
|
1617
|
+
note_type: 0,
|
|
1618
1618
|
search_id: xiaohongshuSign.getSearchId(),
|
|
1619
1619
|
image_formats: [
|
|
1620
1620
|
"jpg",
|
|
@@ -2632,7 +2632,7 @@ var douoyinAPIErrorCode = /* @__PURE__ */ function(douoyinAPIErrorCode) {
|
|
|
2632
2632
|
/** 当前用户未开播 */
|
|
2633
2633
|
douoyinAPIErrorCode["NOT_LIVE"] = "USER_NOT_LIVE";
|
|
2634
2634
|
/** 未知错误 */
|
|
2635
|
-
douoyinAPIErrorCode[
|
|
2635
|
+
douoyinAPIErrorCode["UNKNOWN"] = "UNKNOWN_ERROR";
|
|
2636
2636
|
return douoyinAPIErrorCode;
|
|
2637
2637
|
}({});
|
|
2638
2638
|
/** B站平台API错误码 */
|
|
@@ -2744,7 +2744,7 @@ var kuaishouAPIErrorCode = /* @__PURE__ */ function(kuaishouAPIErrorCode) {
|
|
|
2744
2744
|
/** Cookie无效或已过期 */
|
|
2745
2745
|
kuaishouAPIErrorCode["COOKIE"] = "INVALID_COOKIE";
|
|
2746
2746
|
/** 未知错误 */
|
|
2747
|
-
kuaishouAPIErrorCode[
|
|
2747
|
+
kuaishouAPIErrorCode["UNKNOWN"] = "UNKNOWN_ERROR";
|
|
2748
2748
|
return kuaishouAPIErrorCode;
|
|
2749
2749
|
}({});
|
|
2750
2750
|
/** 小红书平台API错误码 */
|
|
@@ -2752,7 +2752,7 @@ var xiaohongshuAPIErrorCode = /* @__PURE__ */ function(xiaohongshuAPIErrorCode)
|
|
|
2752
2752
|
/** Cookie无效或已过期 */
|
|
2753
2753
|
xiaohongshuAPIErrorCode["COOKIE"] = "INVALID_COOKIE";
|
|
2754
2754
|
/** 未知错误 */
|
|
2755
|
-
xiaohongshuAPIErrorCode[
|
|
2755
|
+
xiaohongshuAPIErrorCode["UNKNOWN"] = "UNKNOWN_ERROR";
|
|
2756
2756
|
/** 非法请求 */
|
|
2757
2757
|
xiaohongshuAPIErrorCode[xiaohongshuAPIErrorCode["ILLEGAL_REQUEST"] = 500] = "ILLEGAL_REQUEST";
|
|
2758
2758
|
/** 检测到帐号异常,请稍后重试 */
|
|
@@ -10140,7 +10140,7 @@ function getApiRoute(platform, methodType) {
|
|
|
10140
10140
|
* 构建后使用 __VERSION__,开发环境从 package.json 读取
|
|
10141
10141
|
*/
|
|
10142
10142
|
var getVersion = () => {
|
|
10143
|
-
return "6.1.
|
|
10143
|
+
return "6.1.3";
|
|
10144
10144
|
};
|
|
10145
10145
|
var VERSION = getVersion();
|
|
10146
10146
|
/**
|
|
@@ -10935,6 +10935,10 @@ var QRCodeScanner = class {
|
|
|
10935
10935
|
try {
|
|
10936
10936
|
const response = await axios.get(imageUrl, { responseType: "arraybuffer" });
|
|
10937
10937
|
const buffer = Buffer.from(response.data);
|
|
10938
|
+
if (!this.detectImageFormat(buffer)) {
|
|
10939
|
+
logger.debug("URL 内容不是支持的图片格式,跳过二维码扫描");
|
|
10940
|
+
return null;
|
|
10941
|
+
}
|
|
10938
10942
|
return this.scanFromBuffer(buffer);
|
|
10939
10943
|
} catch (error) {
|
|
10940
10944
|
logger.error("识别二维码时发生错误:", error);
|
|
@@ -11254,7 +11258,7 @@ var QRCodeScanner = class {
|
|
|
11254
11258
|
*/
|
|
11255
11259
|
static async parseHEIC(buffer) {
|
|
11256
11260
|
try {
|
|
11257
|
-
const decoded = await (0, import_heic_decode.default)({ buffer
|
|
11261
|
+
const decoded = await (0, import_heic_decode.default)({ buffer });
|
|
11258
11262
|
logger.debug(`HEIC 解析成功: ${decoded.width}x${decoded.height}`);
|
|
11259
11263
|
return {
|
|
11260
11264
|
width: decoded.width,
|
|
@@ -11512,23 +11516,47 @@ var Common = new class Tools {
|
|
|
11512
11516
|
* @param e event 消息事件
|
|
11513
11517
|
* @returns 被引用的消息
|
|
11514
11518
|
*/
|
|
11519
|
+
/**
|
|
11520
|
+
* 尝试从图片 URL 识别二维码并返回支持的平台链接
|
|
11521
|
+
* @param imageUrl 图片 URL
|
|
11522
|
+
* @param source 来源描述(用于日志)
|
|
11523
|
+
* @returns 识别到的平台链接,或 null
|
|
11524
|
+
*/
|
|
11525
|
+
async tryScanImageQrCode(imageUrl, source) {
|
|
11526
|
+
try {
|
|
11527
|
+
logger.debug(`检测到${source}为图片,尝试识别二维码...`);
|
|
11528
|
+
const qrContent = await QRCodeScanner.scanFromUrl(imageUrl);
|
|
11529
|
+
if (qrContent && QRCodeScanner.isSupportedPlatform(qrContent)) {
|
|
11530
|
+
logger.debug(`从${source}二维码中识别到支持的平台链接: ${qrContent}`);
|
|
11531
|
+
return qrContent;
|
|
11532
|
+
} else if (qrContent) logger.debug(`识别到二维码内容但不是支持的平台: ${qrContent}`);
|
|
11533
|
+
} catch (error) {
|
|
11534
|
+
logger.error(`识别${source}二维码时发生错误:`, error);
|
|
11535
|
+
}
|
|
11536
|
+
return null;
|
|
11537
|
+
}
|
|
11515
11538
|
async getReplyMessage(e) {
|
|
11516
11539
|
if (e.replyId) {
|
|
11517
11540
|
const reply = await e.bot.getMsg(e.contact, e.replyId);
|
|
11518
|
-
for (const v of reply.elements) if (v.type === "text")
|
|
11519
|
-
|
|
11520
|
-
|
|
11521
|
-
|
|
11522
|
-
|
|
11523
|
-
|
|
11524
|
-
|
|
11525
|
-
|
|
11526
|
-
|
|
11527
|
-
|
|
11528
|
-
|
|
11529
|
-
|
|
11530
|
-
|
|
11531
|
-
|
|
11541
|
+
for (const v of reply.elements) if (v.type === "text") {
|
|
11542
|
+
try {
|
|
11543
|
+
const parsed = JSON.parse(v.text);
|
|
11544
|
+
if (parsed.type === "markdown" && parsed.data?.content) {
|
|
11545
|
+
const content = parsed.data.content;
|
|
11546
|
+
const imageRegex = /!\[.*?\]\((.*?)\)/g;
|
|
11547
|
+
let match;
|
|
11548
|
+
while ((match = imageRegex.exec(content)) !== null) {
|
|
11549
|
+
const qrResult = await this.tryScanImageQrCode(match[1], "引用消息中的 markdown 图片");
|
|
11550
|
+
if (qrResult) return qrResult;
|
|
11551
|
+
}
|
|
11552
|
+
return content;
|
|
11553
|
+
}
|
|
11554
|
+
} catch {}
|
|
11555
|
+
return v.text;
|
|
11556
|
+
} else if (v.type === "json") return v.data;
|
|
11557
|
+
else if (v.type === "image") {
|
|
11558
|
+
const qrResult = await this.tryScanImageQrCode(v.file, "引用消息");
|
|
11559
|
+
if (qrResult) return qrResult;
|
|
11532
11560
|
}
|
|
11533
11561
|
}
|
|
11534
11562
|
return "";
|
|
@@ -14561,7 +14589,7 @@ var ViteLogo = ({ className = "w-auto h-12" }) => /* @__PURE__ */ (0, import_jsx
|
|
|
14561
14589
|
* @param props 组件属性
|
|
14562
14590
|
* @returns JSX元素
|
|
14563
14591
|
*/
|
|
14564
|
-
var DefaultLayout = ({ children, version, data, scale = 3, className = "", style = {} }) => {
|
|
14592
|
+
var DefaultLayout = ({ children, version, data, scale = 3, className = "", style = {}, watermarkTextBitSize }) => {
|
|
14565
14593
|
const { useDarkTheme } = data;
|
|
14566
14594
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
14567
14595
|
className: clsx("w-360 shrink-0 bg-background text-foreground font-[HarmonyOSHans-Regular]", useDarkTheme ? "dark" : "light", className),
|
|
@@ -14575,9 +14603,9 @@ var DefaultLayout = ({ children, version, data, scale = 3, className = "", style
|
|
|
14575
14603
|
maxWidth: "1440px",
|
|
14576
14604
|
...style
|
|
14577
14605
|
},
|
|
14578
|
-
children: [children, version ? /* @__PURE__ */ (0, import_jsx_runtime.
|
|
14606
|
+
children: [children, version ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
14579
14607
|
className: "relative z-50 pt-32 pb-20 text-foreground/80",
|
|
14580
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
14608
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
14581
14609
|
className: "flex relative justify-center items-center space-x-8",
|
|
14582
14610
|
children: [
|
|
14583
14611
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -14697,8 +14725,20 @@ var DefaultLayout = ({ children, version, data, scale = 3, className = "", style
|
|
|
14697
14725
|
})]
|
|
14698
14726
|
})] })
|
|
14699
14727
|
]
|
|
14728
|
+
}), typeof watermarkTextBitSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
14729
|
+
className: "flex justify-center",
|
|
14730
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
14731
|
+
className: "text-xs font-mono text-foreground/30",
|
|
14732
|
+
children: ["Restore ID: ", watermarkTextBitSize]
|
|
14733
|
+
})
|
|
14734
|
+
})]
|
|
14735
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
14736
|
+
className: "flex items-center justify-center h-24",
|
|
14737
|
+
children: typeof watermarkTextBitSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
14738
|
+
className: "text-xs font-mono text-foreground/30",
|
|
14739
|
+
children: ["Restore ID: ", watermarkTextBitSize]
|
|
14700
14740
|
})
|
|
14701
|
-
})
|
|
14741
|
+
})]
|
|
14702
14742
|
});
|
|
14703
14743
|
};
|
|
14704
14744
|
//#endregion
|
|
@@ -15989,6 +16029,31 @@ var CoinIcon = ({ className, size, variant = "solid" }) => {
|
|
|
15989
16029
|
})
|
|
15990
16030
|
});
|
|
15991
16031
|
};
|
|
16032
|
+
/** B站官方评论图标 */
|
|
16033
|
+
var CommentIcon = ({ className, size, variant = "solid" }) => {
|
|
16034
|
+
if (variant === "line") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
16035
|
+
viewBox: "0 0 18 18",
|
|
16036
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
16037
|
+
className,
|
|
16038
|
+
fill: "currentColor",
|
|
16039
|
+
width: size,
|
|
16040
|
+
height: size,
|
|
16041
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
16042
|
+
fillRule: "evenodd",
|
|
16043
|
+
clipRule: "evenodd",
|
|
16044
|
+
d: "M1.5625 7.875C1.5625 4.59581 4.22081 1.9375 7.5 1.9375H10.5C13.7792 1.9375 16.4375 4.59581 16.4375 7.875C16.4375 11.0504 13.9447 13.6435 10.8093 13.8041C10.097 14.723 8.92088 15.8807 7.2671 16.3313C6.97351 16.4113 6.70476 16.2862 6.55411 16.0923C6.40789 15.9041 6.3561 15.63435 6.46524 15.383C6.72879 14.77625 6.77646 14.22103 6.73402 13.7618C3.81677 13.3871 1.5625 10.8945 1.5625 7.875ZM7.5 2.9375C4.77309 2.9375 2.5625 5.14809 2.5625 7.875C2.5625 10.5026 4.61524 12.6511 7.20419 12.8038C7.43059 12.8172 7.61962 12.9812 7.66472 13.2035C7.77257 13.7346 7.8012 14.4054 7.58843 15.1484C8.74832 14.6682 9.606 13.7598 10.1513 13.0165C10.2444 12.8895 10.3921 12.8138 10.5496 12.8123C13.2536 12.7857 15.4375 10.58535 15.4375 7.875C15.4375 5.14809 13.2269 2.9375 10.5 2.9375H7.5Z"
|
|
16045
|
+
})
|
|
16046
|
+
});
|
|
16047
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
16048
|
+
viewBox: "0 0 18 18",
|
|
16049
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
16050
|
+
className,
|
|
16051
|
+
fill: "currentColor",
|
|
16052
|
+
width: size,
|
|
16053
|
+
height: size,
|
|
16054
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M1.5625 7.875C1.5625 4.59581 4.22081 1.9375 7.5 1.9375H10.5C13.7792 1.9375 16.4375 4.59581 16.4375 7.875C16.4375 11.0504 13.9447 13.6435 10.8093 13.8041C10.097 14.723 8.92088 15.8807 7.2671 16.3313C6.97351 16.4113 6.70476 16.2862 6.55411 16.0923C6.40789 15.9041 6.3561 15.63435 6.46524 15.383C6.72879 14.77625 6.77646 14.22103 6.73402 13.7618C3.81677 13.3871 1.5625 10.8945 1.5625 7.875Z" })
|
|
16055
|
+
});
|
|
16056
|
+
};
|
|
15992
16057
|
//#endregion
|
|
15993
16058
|
//#region ../template/src/components/platforms/bilibili/Comment.tsx
|
|
15994
16059
|
var bilibiliMentionClassName = "text-[#006A9E] dark:text-[#58B0D5]";
|
|
@@ -16713,7 +16778,7 @@ var BilibiliArticleStatus = import_react.memo((props) => {
|
|
|
16713
16778
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16714
16779
|
className: "flex gap-3 items-center text-[42px]",
|
|
16715
16780
|
children: [
|
|
16716
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
16781
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 32 }),
|
|
16717
16782
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16718
16783
|
className: "font-medium",
|
|
16719
16784
|
children: props.data.stats.reply || 0
|
|
@@ -16925,7 +16990,7 @@ BilibiliArticleDynamic.displayName = "BilibiliArticleDynamic";
|
|
|
16925
16990
|
*/
|
|
16926
16991
|
var BilibiliVideoDynamicHeader = () => {
|
|
16927
16992
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
16928
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-
|
|
16993
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-25" }),
|
|
16929
16994
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16930
16995
|
className: "flex items-center pl-20 text-6xl text-muted",
|
|
16931
16996
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
@@ -17004,7 +17069,7 @@ var BilibiliVideoDynamicContent = (props) => {
|
|
|
17004
17069
|
}),
|
|
17005
17070
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17006
17071
|
className: "flex gap-3 items-center",
|
|
17007
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
17072
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
17008
17073
|
className: "select-text",
|
|
17009
17074
|
children: [props.data.pinglun, "评论"]
|
|
17010
17075
|
})]
|
|
@@ -17652,7 +17717,7 @@ var BilibiliDynamicStatus$1 = (props) => {
|
|
|
17652
17717
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17653
17718
|
className: "flex gap-2 items-center",
|
|
17654
17719
|
children: [
|
|
17655
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
17720
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }),
|
|
17656
17721
|
props.pinglun,
|
|
17657
17722
|
"评论"
|
|
17658
17723
|
]
|
|
@@ -18011,7 +18076,7 @@ var OriginalDrawContent = ({ content }) => {
|
|
|
18011
18076
|
})
|
|
18012
18077
|
})
|
|
18013
18078
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18014
|
-
className: `grid gap-3
|
|
18079
|
+
className: `grid gap-3 ${content.image_url?.length === 4 ? "grid-cols-2" : "grid-cols-3"}`,
|
|
18015
18080
|
children: [content.image_url?.map((img, index) => {
|
|
18016
18081
|
const total = content.image_url?.length || 0;
|
|
18017
18082
|
const cols = total === 4 ? 2 : 3;
|
|
@@ -18190,7 +18255,7 @@ var BilibiliForwardStatus = (props) => {
|
|
|
18190
18255
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18191
18256
|
className: "flex gap-2 items-center",
|
|
18192
18257
|
children: [
|
|
18193
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
18258
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }),
|
|
18194
18259
|
props.pinglun,
|
|
18195
18260
|
"评论"
|
|
18196
18261
|
]
|
|
@@ -18334,7 +18399,7 @@ var BilibiliForwardDynamic = import_react.memo((props) => {
|
|
|
18334
18399
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18335
18400
|
className: "p-4",
|
|
18336
18401
|
children: [
|
|
18337
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-
|
|
18402
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-25" }),
|
|
18338
18403
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliForwardUserInfo, {
|
|
18339
18404
|
avatar_url: props.data.avatar_url,
|
|
18340
18405
|
frame: props.data.frame,
|
|
@@ -18984,7 +19049,7 @@ var BilibiliDynamicStatus = (props) => {
|
|
|
18984
19049
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18985
19050
|
className: "flex gap-2 items-center",
|
|
18986
19051
|
children: [
|
|
18987
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
19052
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }),
|
|
18988
19053
|
props.pinglun,
|
|
18989
19054
|
"评论"
|
|
18990
19055
|
]
|
|
@@ -19382,32 +19447,32 @@ BilibiliQrcodeImg.displayName = "BilibiliQrcodeImg";
|
|
|
19382
19447
|
var pushTypeConfig$1 = {
|
|
19383
19448
|
video: {
|
|
19384
19449
|
label: "投稿视频",
|
|
19385
|
-
color: "bg-accent/
|
|
19450
|
+
color: "bg-accent/6 text-accent/80 border-accent-soft",
|
|
19386
19451
|
icon: Video
|
|
19387
19452
|
},
|
|
19388
19453
|
draw: {
|
|
19389
19454
|
label: "图文动态",
|
|
19390
|
-
color: "bg-[#23ade5]/
|
|
19455
|
+
color: "bg-[#23ade5]/5 text-[#1a8fb8] border-[#23ade5]/12",
|
|
19391
19456
|
icon: Image$1
|
|
19392
19457
|
},
|
|
19393
19458
|
word: {
|
|
19394
19459
|
label: "纯文动态",
|
|
19395
|
-
color: "bg-warning/
|
|
19460
|
+
color: "bg-warning/5 text-warning/80 border-warning/12",
|
|
19396
19461
|
icon: FileText
|
|
19397
19462
|
},
|
|
19398
19463
|
live: {
|
|
19399
19464
|
label: "直播动态",
|
|
19400
|
-
color: "bg-success/
|
|
19465
|
+
color: "bg-success/5 text-success/80 border-success/12",
|
|
19401
19466
|
icon: Radio
|
|
19402
19467
|
},
|
|
19403
19468
|
forward: {
|
|
19404
19469
|
label: "转发动态",
|
|
19405
|
-
color: "bg-[#f97316]/
|
|
19470
|
+
color: "bg-[#f97316]/5 text-[#cc6b1f] border-[#f97316]/12",
|
|
19406
19471
|
icon: Share2
|
|
19407
19472
|
},
|
|
19408
19473
|
article: {
|
|
19409
19474
|
label: "投稿专栏",
|
|
19410
|
-
color: "bg-[#7c3aed]/
|
|
19475
|
+
color: "bg-[#7c3aed]/5 text-[#6b4fa8] border-[#7c3aed]/12",
|
|
19411
19476
|
icon: FileText
|
|
19412
19477
|
}
|
|
19413
19478
|
};
|
|
@@ -19523,7 +19588,7 @@ var BilibiliUserItem = (props) => {
|
|
|
19523
19588
|
className: `h-full min-h-18.5 px-2.5 py-2.5 rounded-xl border backdrop-blur-sm flex flex-col justify-between transition-colors duration-200 ${isActive ? config.color : "bg-surface/45 text-muted border-border/15"}`,
|
|
19524
19589
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(config.icon, {
|
|
19525
19590
|
size: 18,
|
|
19526
|
-
className: isActive ? "" : "opacity-
|
|
19591
|
+
className: isActive ? "" : "opacity-40"
|
|
19527
19592
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19528
19593
|
className: "text-[13px] font-bold tracking-wide leading-tight",
|
|
19529
19594
|
children: config.label
|
|
@@ -19692,12 +19757,11 @@ var BilibiliUserList = (props) => {
|
|
|
19692
19757
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19693
19758
|
className: "flex items-center gap-3 mb-4",
|
|
19694
19759
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19695
|
-
className: "w-10 h-10 rounded-xl
|
|
19696
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
19697
|
-
|
|
19698
|
-
|
|
19699
|
-
|
|
19700
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-4.41-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z" })
|
|
19760
|
+
className: "w-10 h-10 rounded-xl overflow-hidden shadow-lg border border-border/30",
|
|
19761
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
19762
|
+
src: props.data.groupInfo.groupAvatar,
|
|
19763
|
+
alt: "Group Avatar",
|
|
19764
|
+
className: "w-full h-full object-cover"
|
|
19701
19765
|
})
|
|
19702
19766
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19703
19767
|
className: "font-mono text-sm font-bold tracking-widest uppercase opacity-50 text-foreground",
|
|
@@ -19891,7 +19955,8 @@ var BilibiliVideoInfo = import_react.memo((props) => {
|
|
|
19891
19955
|
}),
|
|
19892
19956
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
19893
19957
|
className: "flex items-center gap-1.5",
|
|
19894
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
19958
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, {
|
|
19959
|
+
variant: "line",
|
|
19895
19960
|
size: 28,
|
|
19896
19961
|
className: "text-foreground/20"
|
|
19897
19962
|
}), formatNumber$2(props.data.stat.reply)]
|
|
@@ -20398,7 +20463,7 @@ var VideoInfoHeader = (props) => {
|
|
|
20398
20463
|
})
|
|
20399
20464
|
}),
|
|
20400
20465
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
20401
|
-
className: "
|
|
20466
|
+
className: "grid grid-cols-2 gap-8",
|
|
20402
20467
|
children: [
|
|
20403
20468
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
20404
20469
|
className: "flex items-center gap-4 text-foreground/50",
|
|
@@ -22807,23 +22872,23 @@ var StatItem$2 = ({ icon: IconComponent, value, iconClassName }) => /* @__PURE__
|
|
|
22807
22872
|
var pushTypeConfig = {
|
|
22808
22873
|
post: {
|
|
22809
22874
|
label: "作品更新",
|
|
22810
|
-
color: "bg-accent/5 text-accent border-accent
|
|
22811
|
-
icon:
|
|
22875
|
+
color: "bg-accent/5 text-accent/80 border-accent/12",
|
|
22876
|
+
icon: Clapperboard
|
|
22812
22877
|
},
|
|
22813
22878
|
favorite: {
|
|
22814
22879
|
label: "喜欢列表",
|
|
22815
|
-
color: "bg-
|
|
22816
|
-
icon:
|
|
22880
|
+
color: "bg-[#d94f50]/5 text-[#b04546] border-[#d94f50]/12",
|
|
22881
|
+
icon: Heart
|
|
22817
22882
|
},
|
|
22818
22883
|
recommend: {
|
|
22819
22884
|
label: "推荐列表",
|
|
22820
|
-
color: "bg-
|
|
22821
|
-
icon:
|
|
22885
|
+
color: "bg-[#c9943a]/5 text-[#a07d30] border-[#c9943a]/12",
|
|
22886
|
+
icon: Sparkles
|
|
22822
22887
|
},
|
|
22823
22888
|
live: {
|
|
22824
22889
|
label: "直播状态",
|
|
22825
|
-
color: "bg-
|
|
22826
|
-
icon:
|
|
22890
|
+
color: "bg-[#3aa876]/5 text-[#2e8a5e] border-[#3aa876]/12",
|
|
22891
|
+
icon: Radio
|
|
22827
22892
|
}
|
|
22828
22893
|
};
|
|
22829
22894
|
/**
|
|
@@ -22911,7 +22976,7 @@ var DouyinUserItem = (props) => {
|
|
|
22911
22976
|
children: props.username
|
|
22912
22977
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
22913
22978
|
className: "inline-flex items-center gap-1 px-2 py-1 rounded-md bg-surface/50 border border-border/50 text-xs font-mono font-bold text-muted",
|
|
22914
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
22979
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Hash, {
|
|
22915
22980
|
size: 12,
|
|
22916
22981
|
className: "opacity-70"
|
|
22917
22982
|
}), props.short_id]
|
|
@@ -22947,17 +23012,17 @@ var DouyinUserItem = (props) => {
|
|
|
22947
23012
|
className: "flex-1 flex flex-col gap-2",
|
|
22948
23013
|
children: [
|
|
22949
23014
|
{
|
|
22950
|
-
icon:
|
|
23015
|
+
icon: UsersRound,
|
|
22951
23016
|
value: props.fans,
|
|
22952
23017
|
label: "粉丝"
|
|
22953
23018
|
},
|
|
22954
23019
|
{
|
|
22955
|
-
icon:
|
|
23020
|
+
icon: Heart,
|
|
22956
23021
|
value: props.total_favorited,
|
|
22957
23022
|
label: "获赞"
|
|
22958
23023
|
},
|
|
22959
23024
|
{
|
|
22960
|
-
icon:
|
|
23025
|
+
icon: UserPlus,
|
|
22961
23026
|
value: props.following_count,
|
|
22962
23027
|
label: "关注"
|
|
22963
23028
|
}
|
|
@@ -23101,12 +23166,11 @@ var DouyinUserList = (props) => {
|
|
|
23101
23166
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23102
23167
|
className: "flex items-center gap-3 mb-4",
|
|
23103
23168
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
23104
|
-
className: "w-10 h-10 rounded-xl
|
|
23105
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("
|
|
23106
|
-
|
|
23107
|
-
|
|
23108
|
-
|
|
23109
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M19 4h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V10h14v10zm0-12H5V6h14v2zm-7 5h5v5h-5z" })
|
|
23169
|
+
className: "w-10 h-10 rounded-xl overflow-hidden shadow-lg border border-border/30",
|
|
23170
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
23171
|
+
src: props.data.groupInfo.groupAvatar,
|
|
23172
|
+
alt: "Group Avatar",
|
|
23173
|
+
className: "w-full h-full object-cover"
|
|
23110
23174
|
})
|
|
23111
23175
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
23112
23176
|
className: "font-mono text-sm font-bold tracking-widest uppercase opacity-50 text-foreground",
|
|
@@ -24220,8 +24284,8 @@ var KuaishouComment = import_react.memo((props) => {
|
|
|
24220
24284
|
var InlineCalloutCode = ({ children, className }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
24221
24285
|
className: `inline-flex items-center rounded-[0.55em] px-[0.48em] py-[0.18em] font-semibold ${className ?? ""}`.trim(),
|
|
24222
24286
|
style: {
|
|
24223
|
-
background: "color-mix(in oklab,
|
|
24224
|
-
color: "
|
|
24287
|
+
background: "color-mix(in oklab, #d4af37 14%, transparent)",
|
|
24288
|
+
color: "#d4af37"
|
|
24225
24289
|
},
|
|
24226
24290
|
children
|
|
24227
24291
|
});
|
|
@@ -24234,27 +24298,27 @@ var Changelog = import_react.memo((props) => {
|
|
|
24234
24298
|
const isDark = props.data.useDarkTheme ?? false;
|
|
24235
24299
|
const { qrCodeDataUrl } = props;
|
|
24236
24300
|
const backgroundColors = isDark ? {
|
|
24237
|
-
base: "#
|
|
24238
|
-
primary: "rgba(
|
|
24239
|
-
secondary: "rgba(
|
|
24240
|
-
accent: "rgba(
|
|
24241
|
-
wash: "rgba(
|
|
24242
|
-
tint: "rgba(
|
|
24243
|
-
noiseOpacity: .
|
|
24301
|
+
base: "#0a0a0a",
|
|
24302
|
+
primary: "rgba(212, 175, 55, 0.28)",
|
|
24303
|
+
secondary: "rgba(184, 134, 11, 0.24)",
|
|
24304
|
+
accent: "rgba(205, 133, 63, 0.20)",
|
|
24305
|
+
wash: "rgba(10, 10, 10, 0.85)",
|
|
24306
|
+
tint: "rgba(212, 175, 55, 0.12)",
|
|
24307
|
+
noiseOpacity: .2,
|
|
24244
24308
|
noiseBlend: "screen",
|
|
24245
|
-
inlineCodeBg: "rgba(255,
|
|
24246
|
-
inlineCodeText: "#
|
|
24309
|
+
inlineCodeBg: "rgba(255, 215, 0, 0.10)",
|
|
24310
|
+
inlineCodeText: "#f0c040"
|
|
24247
24311
|
} : {
|
|
24248
|
-
base: "#
|
|
24249
|
-
primary: "rgba(
|
|
24250
|
-
secondary: "rgba(
|
|
24251
|
-
accent: "rgba(
|
|
24252
|
-
wash: "rgba(
|
|
24253
|
-
tint: "rgba(
|
|
24254
|
-
noiseOpacity: .
|
|
24312
|
+
base: "#faf8f3",
|
|
24313
|
+
primary: "rgba(212, 175, 55, 0.20)",
|
|
24314
|
+
secondary: "rgba(184, 134, 11, 0.16)",
|
|
24315
|
+
accent: "rgba(205, 133, 63, 0.14)",
|
|
24316
|
+
wash: "rgba(250, 248, 243, 0.65)",
|
|
24317
|
+
tint: "rgba(212, 175, 55, 0.07)",
|
|
24318
|
+
noiseOpacity: .12,
|
|
24255
24319
|
noiseBlend: "multiply",
|
|
24256
|
-
inlineCodeBg: "rgba(
|
|
24257
|
-
inlineCodeText: "#
|
|
24320
|
+
inlineCodeBg: "rgba(184, 134, 11, 0.12)",
|
|
24321
|
+
inlineCodeText: "#8b6914"
|
|
24258
24322
|
};
|
|
24259
24323
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DefaultLayout, {
|
|
24260
24324
|
...props,
|
|
@@ -24348,7 +24412,7 @@ var Changelog = import_react.memo((props) => {
|
|
|
24348
24412
|
})
|
|
24349
24413
|
}),
|
|
24350
24414
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24351
|
-
className: "relative px-
|
|
24415
|
+
className: "relative px-16 pt-5 pb-0 w-full max-w-none prose prose-lg prose-invert from-surface to-surface",
|
|
24352
24416
|
children: [
|
|
24353
24417
|
props.data.Tip === true ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24354
24418
|
className: "pt-32",
|
|
@@ -24397,7 +24461,7 @@ var Changelog = import_react.memo((props) => {
|
|
|
24397
24461
|
}),
|
|
24398
24462
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "进入" }),
|
|
24399
24463
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(InlineCalloutCode, {
|
|
24400
|
-
className: "text-[0.9em]",
|
|
24464
|
+
className: "text-[0.9em] font-mono",
|
|
24401
24465
|
children: "Karin WebUI"
|
|
24402
24466
|
}),
|
|
24403
24467
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "→" }),
|
|
@@ -24423,7 +24487,7 @@ var Changelog = import_react.memo((props) => {
|
|
|
24423
24487
|
}),
|
|
24424
24488
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Karin 根目录运行" }),
|
|
24425
24489
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(InlineCalloutCode, {
|
|
24426
|
-
className: "text-[0.85em] whitespace-nowrap",
|
|
24490
|
+
className: "text-[0.85em] whitespace-nowrap font-mono",
|
|
24427
24491
|
children: [
|
|
24428
24492
|
"pnpm add karin-plugin-kkk@",
|
|
24429
24493
|
props.data.remoteVersion,
|
|
@@ -24437,7 +24501,7 @@ var Changelog = import_react.memo((props) => {
|
|
|
24437
24501
|
]
|
|
24438
24502
|
}) }) : null,
|
|
24439
24503
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24440
|
-
className: "changelog-content",
|
|
24504
|
+
className: "changelog-content px-6",
|
|
24441
24505
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Markdown, {
|
|
24442
24506
|
rehypePlugins: [rehypeHighlight],
|
|
24443
24507
|
components: {
|
|
@@ -24480,7 +24544,7 @@ var Changelog = import_react.memo((props) => {
|
|
|
24480
24544
|
children
|
|
24481
24545
|
}),
|
|
24482
24546
|
ul: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
|
|
24483
|
-
className: "pl-[5em] mb-[
|
|
24547
|
+
className: "pl-[5em] mb-[4em] list-disc text-foreground",
|
|
24484
24548
|
...props,
|
|
24485
24549
|
children
|
|
24486
24550
|
}),
|
|
@@ -24512,12 +24576,15 @@ var Changelog = import_react.memo((props) => {
|
|
|
24512
24576
|
...props,
|
|
24513
24577
|
children
|
|
24514
24578
|
}),
|
|
24515
|
-
a: ({ children, href, ...props }) =>
|
|
24516
|
-
|
|
24517
|
-
|
|
24518
|
-
|
|
24519
|
-
|
|
24520
|
-
|
|
24579
|
+
a: ({ children, href, ...props }) => {
|
|
24580
|
+
const isVersionLink = href?.includes("/compare/");
|
|
24581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
|
|
24582
|
+
className: `inline-flex gap-3 items-baseline cursor-pointer font-medium hover:underline ${isVersionLink ? "text-success" : "text-foreground/50"}`,
|
|
24583
|
+
onClick: (e) => e.preventDefault(),
|
|
24584
|
+
...props,
|
|
24585
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children })
|
|
24586
|
+
});
|
|
24587
|
+
},
|
|
24521
24588
|
img: ({ ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
24522
24589
|
className: "max-w-full h-auto rounded",
|
|
24523
24590
|
...props
|
|
@@ -24553,7 +24620,7 @@ var Changelog = import_react.memo((props) => {
|
|
|
24553
24620
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24554
24621
|
className: "text-4xl text-foreground/60",
|
|
24555
24622
|
children: [
|
|
24556
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "
|
|
24623
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "扫码查看实际运行代码从" }),
|
|
24557
24624
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
24558
24625
|
className: "font-bold text-foreground/80",
|
|
24559
24626
|
children: [" v", props.data.localVersion]
|
|
@@ -24563,7 +24630,7 @@ var Changelog = import_react.memo((props) => {
|
|
|
24563
24630
|
className: "font-bold text-foreground/80",
|
|
24564
24631
|
children: [" v", props.data.remoteVersion]
|
|
24565
24632
|
}),
|
|
24566
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "
|
|
24633
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: " 的差异" })
|
|
24567
24634
|
]
|
|
24568
24635
|
})]
|
|
24569
24636
|
}),
|
|
@@ -25959,56 +26026,56 @@ var getLogLevelTheme = (level, isDark) => {
|
|
|
25959
26026
|
borderClass: "border-muted/20",
|
|
25960
26027
|
textClass: "text-muted",
|
|
25961
26028
|
iconClass: "text-muted",
|
|
25962
|
-
levelClass: isDark ? "text-muted/10" : "text-muted/
|
|
25963
|
-
dotClass: "bg-muted/
|
|
26029
|
+
levelClass: isDark ? "text-muted/10" : "text-muted/10",
|
|
26030
|
+
dotClass: "bg-muted/40"
|
|
25964
26031
|
},
|
|
25965
26032
|
"DEBU": {
|
|
25966
26033
|
bgClass: isDark ? "bg-cyan-400/10" : "bg-cyan-500/5",
|
|
25967
26034
|
borderClass: isDark ? "border-cyan-400/20" : "border-cyan-500/20",
|
|
25968
26035
|
textClass: isDark ? "text-cyan-400" : "text-cyan-600",
|
|
25969
26036
|
iconClass: isDark ? "text-cyan-400" : "text-cyan-600",
|
|
25970
|
-
levelClass: isDark ? "text-cyan-400/10" : "text-cyan-600/
|
|
25971
|
-
dotClass: isDark ? "bg-cyan-400/
|
|
26037
|
+
levelClass: isDark ? "text-cyan-400/10" : "text-cyan-600/10",
|
|
26038
|
+
dotClass: isDark ? "bg-cyan-400/40" : "bg-cyan-500/40"
|
|
25972
26039
|
},
|
|
25973
26040
|
"MARK": {
|
|
25974
26041
|
bgClass: isDark ? "bg-muted/10" : "bg-muted/5",
|
|
25975
26042
|
borderClass: "border-muted/20",
|
|
25976
26043
|
textClass: "text-muted",
|
|
25977
26044
|
iconClass: "text-muted",
|
|
25978
|
-
levelClass: isDark ? "text-muted/10" : "text-muted/
|
|
25979
|
-
dotClass: "bg-muted/
|
|
26045
|
+
levelClass: isDark ? "text-muted/10" : "text-muted/10",
|
|
26046
|
+
dotClass: "bg-muted/40"
|
|
25980
26047
|
},
|
|
25981
26048
|
"INFO": {
|
|
25982
26049
|
bgClass: "bg-success-soft",
|
|
25983
26050
|
borderClass: "border-success/25",
|
|
25984
26051
|
textClass: "text-success",
|
|
25985
26052
|
iconClass: "text-success",
|
|
25986
|
-
levelClass: isDark ? "text-success/10" : "text-success/
|
|
25987
|
-
dotClass: "bg-success/
|
|
26053
|
+
levelClass: isDark ? "text-success/10" : "text-success/10",
|
|
26054
|
+
dotClass: "bg-success/40"
|
|
25988
26055
|
},
|
|
25989
26056
|
"WARN": {
|
|
25990
26057
|
bgClass: "bg-warning-soft",
|
|
25991
26058
|
borderClass: "border-warning/25",
|
|
25992
26059
|
textClass: "text-warning",
|
|
25993
26060
|
iconClass: "text-warning",
|
|
25994
|
-
levelClass: isDark ? "text-warning/10" : "text-warning
|
|
25995
|
-
dotClass: "bg-warning/
|
|
26061
|
+
levelClass: isDark ? "text-warning/10" : "text-warning-soft",
|
|
26062
|
+
dotClass: "bg-warning/40"
|
|
25996
26063
|
},
|
|
25997
26064
|
"ERRO": {
|
|
25998
26065
|
bgClass: "bg-danger-soft",
|
|
25999
26066
|
borderClass: "border-danger/25",
|
|
26000
26067
|
textClass: "text-danger",
|
|
26001
26068
|
iconClass: "text-danger",
|
|
26002
|
-
levelClass: isDark ? "text-danger/10" : "text-danger/
|
|
26003
|
-
dotClass: "bg-danger/
|
|
26069
|
+
levelClass: isDark ? "text-danger/10" : "text-danger/10",
|
|
26070
|
+
dotClass: "bg-danger/40"
|
|
26004
26071
|
},
|
|
26005
26072
|
"FATA": {
|
|
26006
26073
|
bgClass: isDark ? "bg-pink-400/10" : "bg-pink-500/5",
|
|
26007
26074
|
borderClass: isDark ? "border-pink-400/25" : "border-pink-500/25",
|
|
26008
26075
|
textClass: isDark ? "text-pink-400" : "text-pink-500",
|
|
26009
26076
|
iconClass: isDark ? "text-pink-400" : "text-pink-500",
|
|
26010
|
-
levelClass: isDark ? "text-pink-400/10" : "text-pink-500/
|
|
26011
|
-
dotClass: isDark ? "bg-pink-400/
|
|
26077
|
+
levelClass: isDark ? "text-pink-400/10" : "text-pink-500/10",
|
|
26078
|
+
dotClass: isDark ? "bg-pink-400/40" : "bg-pink-500/40"
|
|
26012
26079
|
}
|
|
26013
26080
|
};
|
|
26014
26081
|
return themeMap[level] || themeMap["TRAC"];
|
|
@@ -26398,7 +26465,7 @@ var handlerError = (props) => {
|
|
|
26398
26465
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SectionTitle, {
|
|
26399
26466
|
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CircleAlert, {
|
|
26400
26467
|
size: 36,
|
|
26401
|
-
style: { color:
|
|
26468
|
+
style: { color: mutedColor }
|
|
26402
26469
|
}),
|
|
26403
26470
|
en: "Stack Trace",
|
|
26404
26471
|
zh: "错误堆栈",
|
|
@@ -26436,7 +26503,7 @@ var handlerError = (props) => {
|
|
|
26436
26503
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("legend", {
|
|
26437
26504
|
className: "flex items-center gap-2 ml-4",
|
|
26438
26505
|
children: [
|
|
26439
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: `w-
|
|
26506
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: `w-2 h-6 rounded-full -mr-1.5 ${theme.dotClass}` }),
|
|
26440
26507
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
26441
26508
|
className: "flex items-center gap-2 px-3",
|
|
26442
26509
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Clock, {
|
|
@@ -26447,14 +26514,14 @@ var handlerError = (props) => {
|
|
|
26447
26514
|
children: log.timestamp
|
|
26448
26515
|
})]
|
|
26449
26516
|
}),
|
|
26450
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: `w-
|
|
26517
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: `w-2 h-6 rounded-full -ml-1.5 ${theme.dotClass}` })
|
|
26451
26518
|
]
|
|
26452
26519
|
}),
|
|
26453
26520
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
26454
26521
|
className: "absolute bottom-2 right-6 pointer-events-none",
|
|
26455
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.
|
|
26456
|
-
className: `text-
|
|
26457
|
-
children: log.level
|
|
26522
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
26523
|
+
className: `text-6xl font-black uppercase leading-none tracking-tight ${theme.levelClass}`,
|
|
26524
|
+
children: [log.level, "」"]
|
|
26458
26525
|
})
|
|
26459
26526
|
}),
|
|
26460
26527
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -26660,8 +26727,9 @@ var handlerError = (props) => {
|
|
|
26660
26727
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(MdSchedule, { size: 24 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
|
|
26661
26728
|
"Built Time: ",
|
|
26662
26729
|
data.buildTime,
|
|
26663
|
-
"
|
|
26664
|
-
formatDistanceToNow(parse(data.buildTime, "yyyy年MM月dd日 HH:mm", /* @__PURE__ */ new Date()), { locale: zhCN })
|
|
26730
|
+
" 于 ",
|
|
26731
|
+
formatDistanceToNow(parse(data.buildTime, "yyyy年MM月dd日 HH:mm", /* @__PURE__ */ new Date()), { locale: zhCN }),
|
|
26732
|
+
"前"
|
|
26665
26733
|
] })]
|
|
26666
26734
|
}), data.commitHash && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
26667
26735
|
className: "flex items-center gap-3",
|
|
@@ -26885,6 +26953,13 @@ var iconRegistry = {
|
|
|
26885
26953
|
"simple-icons:bilibili": SiBilibili,
|
|
26886
26954
|
"simple-icons:openai": Sparkles,
|
|
26887
26955
|
"simple-icons:anthropic": SiAnthropic,
|
|
26956
|
+
"simple-icons:googlephotos": SiGooglephotos,
|
|
26957
|
+
"simple-icons:xiaomi": SiXiaomi,
|
|
26958
|
+
"simple-icons:oppo": SiOppo,
|
|
26959
|
+
"simple-icons:huawei": SiHuawei,
|
|
26960
|
+
"simple-icons:honor": SiHonor,
|
|
26961
|
+
"simple-icons:vivo": SiVivo,
|
|
26962
|
+
"simple-icons:samsung": SiSamsung,
|
|
26888
26963
|
"tabler:message-circle": MessageCircle,
|
|
26889
26964
|
"tabler:scan": ScanLine,
|
|
26890
26965
|
"ph:play-fill": n,
|
|
@@ -27156,6 +27231,435 @@ var Help = import_react.memo((props) => {
|
|
|
27156
27231
|
});
|
|
27157
27232
|
Help.displayName = "Help";
|
|
27158
27233
|
//#endregion
|
|
27234
|
+
//#region ../template/src/components/platforms/other/LivePhotoTip.tsx
|
|
27235
|
+
/**
|
|
27236
|
+
* Google Photos 彩色官方 Logo
|
|
27237
|
+
*/
|
|
27238
|
+
var GooglePhotosIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
27239
|
+
className,
|
|
27240
|
+
viewBox: "0 0 32 32",
|
|
27241
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
27242
|
+
children: [
|
|
27243
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
27244
|
+
d: "M4,16a6,6,0,0,1,12,0Z",
|
|
27245
|
+
fill: "#ffba00"
|
|
27246
|
+
}),
|
|
27247
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
27248
|
+
d: "M22,10a6,6,0,0,1-6,6V4a6,6,0,0,1,6,6",
|
|
27249
|
+
fill: "#ea4435"
|
|
27250
|
+
}),
|
|
27251
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
27252
|
+
d: "M28,16a6,6,0,0,1-12,0Z",
|
|
27253
|
+
fill: "#0066da"
|
|
27254
|
+
}),
|
|
27255
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
27256
|
+
d: "M10,22a6,6,0,0,1,6-6V28a6,6,0,0,1-6-6",
|
|
27257
|
+
fill: "#00ac47"
|
|
27258
|
+
})
|
|
27259
|
+
]
|
|
27260
|
+
});
|
|
27261
|
+
var statusConfig = {
|
|
27262
|
+
verified: {
|
|
27263
|
+
icon: Check,
|
|
27264
|
+
color: "#22c55e",
|
|
27265
|
+
label: "实测可用"
|
|
27266
|
+
},
|
|
27267
|
+
untested: {
|
|
27268
|
+
icon: CircleQuestionMark,
|
|
27269
|
+
color: "#f59e0b",
|
|
27270
|
+
label: "理论支持"
|
|
27271
|
+
},
|
|
27272
|
+
unsupported: {
|
|
27273
|
+
icon: X,
|
|
27274
|
+
color: "#ef4444",
|
|
27275
|
+
label: "不支持"
|
|
27276
|
+
}
|
|
27277
|
+
};
|
|
27278
|
+
/**
|
|
27279
|
+
* kkk Logo SVG
|
|
27280
|
+
*/
|
|
27281
|
+
var KkkLogo = ({ className, color }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
27282
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
27283
|
+
viewBox: "0 0 230 221",
|
|
27284
|
+
className,
|
|
27285
|
+
style: { color },
|
|
27286
|
+
children: [
|
|
27287
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
27288
|
+
d: "M132.75,87.37l-53.72-53.37c-4.66-4.63-1.38-12.58,5.18-12.58h115.13c6.57,0,9.84,7.95,5.18,12.58l-53.72,53.37c-4.99,4.96-13.06,4.96-18.05,0Z",
|
|
27289
|
+
fill: "currentColor"
|
|
27290
|
+
}),
|
|
27291
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
27292
|
+
d: "M28.49,186.89l.03-51.42c-.02-6.57,7.92-9.87,12.56-5.23l57.02,57.02c4.64,4.64,1.34,12.41-5.23,12.39h-51.42c-7.04-.02-12.94-5.72-12.96-12.76Z",
|
|
27293
|
+
fill: "currentColor"
|
|
27294
|
+
}),
|
|
27295
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
27296
|
+
d: "M41.54,23.68l163.04,163.05c4.78,4.78,1.39,12.95-5.36,12.94h-47.88c-9.69,0-18.99-3.86-25.84-10.71L39.3,102.75c-6.85-6.85-10.7-16.15-10.7-25.84V29.04c0-6.76,8.16-10.14,12.94-5.36Z",
|
|
27297
|
+
fill: "currentColor"
|
|
27298
|
+
})
|
|
27299
|
+
]
|
|
27300
|
+
});
|
|
27301
|
+
function BrandCard({ brand, isDark }) {
|
|
27302
|
+
const StatusIcon = statusConfig[brand.status].icon;
|
|
27303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27304
|
+
className: "flex flex-col items-center gap-3",
|
|
27305
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27306
|
+
className: "relative flex items-center justify-center w-75 h-75 rounded-3xl",
|
|
27307
|
+
style: { background: isDark ? "radial-gradient(circle, " + brand.color + "12 0%, transparent 70%)" : "radial-gradient(circle, " + brand.color + "08 0%, transparent 70%)" },
|
|
27308
|
+
children: [brand.icon, /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27309
|
+
className: "absolute top-4 right-4 flex items-center gap-1.5 px-5 py-2.5 rounded-full",
|
|
27310
|
+
style: { backgroundColor: statusConfig[brand.status].color + "20" },
|
|
27311
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusIcon, {
|
|
27312
|
+
className: "w-5 h-auto",
|
|
27313
|
+
style: { color: statusConfig[brand.status].color }
|
|
27314
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27315
|
+
className: "text-lg font-bold",
|
|
27316
|
+
style: { color: statusConfig[brand.status].color },
|
|
27317
|
+
children: statusConfig[brand.status].label
|
|
27318
|
+
})]
|
|
27319
|
+
})]
|
|
27320
|
+
})
|
|
27321
|
+
});
|
|
27322
|
+
}
|
|
27323
|
+
function UnsupportedBrandCard({ brand, isDark }) {
|
|
27324
|
+
const StatusIcon = statusConfig[brand.status].icon;
|
|
27325
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27326
|
+
className: "flex flex-col items-center gap-2 opacity-50",
|
|
27327
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27328
|
+
className: "relative flex items-center justify-center w-40 h-40 rounded-2xl",
|
|
27329
|
+
style: { background: isDark ? "radial-gradient(circle, " + brand.color + "08 0%, transparent 70%)" : "radial-gradient(circle, " + brand.color + "05 0%, transparent 70%)" },
|
|
27330
|
+
children: brand.icon
|
|
27331
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27332
|
+
className: "flex items-center gap-1",
|
|
27333
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusIcon, {
|
|
27334
|
+
className: "w-5 h-auto",
|
|
27335
|
+
style: { color: statusConfig[brand.status].color }
|
|
27336
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27337
|
+
className: "text-md font-bold",
|
|
27338
|
+
style: { color: statusConfig[brand.status].color },
|
|
27339
|
+
children: statusConfig[brand.status].label
|
|
27340
|
+
})]
|
|
27341
|
+
})]
|
|
27342
|
+
});
|
|
27343
|
+
}
|
|
27344
|
+
/**
|
|
27345
|
+
* 实况图提示组件 - 正方形,Vercel 黑白风格
|
|
27346
|
+
*/
|
|
27347
|
+
var LivePhotoTip = import_react.memo((props) => {
|
|
27348
|
+
const isDark = props.data.useDarkTheme ?? false;
|
|
27349
|
+
const bgColor = isDark ? "#000000" : "#ffffff";
|
|
27350
|
+
const primaryColor = isDark ? "#ffffff" : "#000000";
|
|
27351
|
+
const secondaryColor = isDark ? "#888888" : "#666666";
|
|
27352
|
+
const mutedColor = isDark ? "rgba(255,255,255,0.5)" : "rgba(0,0,0,0.5)";
|
|
27353
|
+
const accentColor = isDark ? "#ffffff" : "#000000";
|
|
27354
|
+
const glow1 = "radial-gradient(ellipse at 30% 40%, " + (isDark ? "rgba(255,255,255,0.08)" : "rgba(0,0,0,0.06)") + " 0%, transparent 70%)";
|
|
27355
|
+
const glow2 = "radial-gradient(ellipse at 70% 60%, " + (isDark ? "rgba(128,128,128,0.1)" : "rgba(128,128,128,0.08)") + " 0%, transparent 70%)";
|
|
27356
|
+
const noiseOpacity = isDark ? .04 : .06;
|
|
27357
|
+
const appleColor = isDark ? "#ffffff" : "#000000";
|
|
27358
|
+
const supportedBrands = [
|
|
27359
|
+
{
|
|
27360
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GooglePhotosIcon, { className: "w-36 h-auto" }),
|
|
27361
|
+
color: "#4285F4",
|
|
27362
|
+
status: "verified"
|
|
27363
|
+
},
|
|
27364
|
+
{
|
|
27365
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SiXiaomi, {
|
|
27366
|
+
className: "w-28 h-auto",
|
|
27367
|
+
style: { color: "#FF6900" }
|
|
27368
|
+
}),
|
|
27369
|
+
color: "#FF6900",
|
|
27370
|
+
status: "verified"
|
|
27371
|
+
},
|
|
27372
|
+
{
|
|
27373
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SiSamsung, {
|
|
27374
|
+
className: "w-68 h-auto",
|
|
27375
|
+
style: { color: "#1428A0" }
|
|
27376
|
+
}),
|
|
27377
|
+
color: "#1428A0",
|
|
27378
|
+
status: "verified"
|
|
27379
|
+
},
|
|
27380
|
+
{
|
|
27381
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SiOppo, { className: "w-58 h-auto" }),
|
|
27382
|
+
color: "#009B77",
|
|
27383
|
+
status: "verified"
|
|
27384
|
+
},
|
|
27385
|
+
{
|
|
27386
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SiOneplus, {
|
|
27387
|
+
className: "w-26 h-auto",
|
|
27388
|
+
style: { color: "#F50514" }
|
|
27389
|
+
}),
|
|
27390
|
+
color: "#F50514",
|
|
27391
|
+
status: "verified"
|
|
27392
|
+
},
|
|
27393
|
+
{
|
|
27394
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SiHuawei, {
|
|
27395
|
+
className: "w-32 h-auto",
|
|
27396
|
+
style: { color: "#CF0A2C" }
|
|
27397
|
+
}),
|
|
27398
|
+
color: "#CF0A2C",
|
|
27399
|
+
status: "untested"
|
|
27400
|
+
},
|
|
27401
|
+
{
|
|
27402
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SiHonor, {
|
|
27403
|
+
className: "w-58 h-auto",
|
|
27404
|
+
style: { color: "#00BFFF" }
|
|
27405
|
+
}),
|
|
27406
|
+
color: "#00BFFF",
|
|
27407
|
+
status: "untested"
|
|
27408
|
+
}
|
|
27409
|
+
];
|
|
27410
|
+
const unsupportedBrands = [{
|
|
27411
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SiApple, {
|
|
27412
|
+
className: "w-20 h-auto",
|
|
27413
|
+
style: { color: appleColor }
|
|
27414
|
+
}),
|
|
27415
|
+
color: appleColor,
|
|
27416
|
+
status: "unsupported"
|
|
27417
|
+
}, {
|
|
27418
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SiVivo, {
|
|
27419
|
+
className: "w-24 h-auto",
|
|
27420
|
+
style: { color: "#415FFF" }
|
|
27421
|
+
}),
|
|
27422
|
+
color: "#415FFF",
|
|
27423
|
+
status: "unsupported"
|
|
27424
|
+
}];
|
|
27425
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DefaultLayout, {
|
|
27426
|
+
...props,
|
|
27427
|
+
version: void 0,
|
|
27428
|
+
className: "relative overflow-hidden",
|
|
27429
|
+
style: {
|
|
27430
|
+
backgroundColor: bgColor,
|
|
27431
|
+
minHeight: "1440px"
|
|
27432
|
+
},
|
|
27433
|
+
children: [
|
|
27434
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27435
|
+
className: "absolute inset-0 pointer-events-none",
|
|
27436
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27437
|
+
className: "absolute rounded-full w-150 h-125 top-[20%] left-[10%] blur-[150px]",
|
|
27438
|
+
style: { background: glow1 }
|
|
27439
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27440
|
+
className: "absolute rounded-full w-125 h-112.5 bottom-[15%] right-[10%] blur-[130px]",
|
|
27441
|
+
style: { background: glow2 }
|
|
27442
|
+
})]
|
|
27443
|
+
}),
|
|
27444
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27445
|
+
className: "absolute inset-0 pointer-events-none",
|
|
27446
|
+
style: { opacity: noiseOpacity },
|
|
27447
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
27448
|
+
className: "w-full h-full",
|
|
27449
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
27450
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", {
|
|
27451
|
+
id: "tipNoise",
|
|
27452
|
+
x: "0%",
|
|
27453
|
+
y: "0%",
|
|
27454
|
+
width: "100%",
|
|
27455
|
+
height: "100%",
|
|
27456
|
+
children: [
|
|
27457
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", {
|
|
27458
|
+
type: "fractalNoise",
|
|
27459
|
+
baseFrequency: "0.8",
|
|
27460
|
+
numOctaves: "1",
|
|
27461
|
+
stitchTiles: "stitch",
|
|
27462
|
+
result: "noise"
|
|
27463
|
+
}),
|
|
27464
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("feColorMatrix", {
|
|
27465
|
+
type: "saturate",
|
|
27466
|
+
values: "0",
|
|
27467
|
+
result: "gray"
|
|
27468
|
+
}),
|
|
27469
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("feComponentTransfer", { children: [
|
|
27470
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("feFuncR", {
|
|
27471
|
+
type: "discrete",
|
|
27472
|
+
tableValues: "0 1"
|
|
27473
|
+
}),
|
|
27474
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("feFuncG", {
|
|
27475
|
+
type: "discrete",
|
|
27476
|
+
tableValues: "0 1"
|
|
27477
|
+
}),
|
|
27478
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("feFuncB", {
|
|
27479
|
+
type: "discrete",
|
|
27480
|
+
tableValues: "0 1"
|
|
27481
|
+
})
|
|
27482
|
+
] })
|
|
27483
|
+
]
|
|
27484
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", {
|
|
27485
|
+
width: "100%",
|
|
27486
|
+
height: "100%",
|
|
27487
|
+
filter: "url(#tipNoise)"
|
|
27488
|
+
})]
|
|
27489
|
+
})
|
|
27490
|
+
}),
|
|
27491
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27492
|
+
className: "absolute inset-0 pointer-events-none overflow-hidden",
|
|
27493
|
+
children: [
|
|
27494
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27495
|
+
className: "absolute top-20 left-20 grid grid-cols-5 gap-2 opacity-30",
|
|
27496
|
+
children: Array.from({ length: 15 }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27497
|
+
className: "w-2 h-2 rounded-full",
|
|
27498
|
+
style: { backgroundColor: primaryColor }
|
|
27499
|
+
}, i))
|
|
27500
|
+
}),
|
|
27501
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27502
|
+
className: "absolute top-20 right-20 flex flex-col items-end gap-2 opacity-30",
|
|
27503
|
+
children: [
|
|
27504
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27505
|
+
className: "h-0.75 rounded-full w-20",
|
|
27506
|
+
style: { backgroundColor: secondaryColor }
|
|
27507
|
+
}),
|
|
27508
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27509
|
+
className: "h-0.75 rounded-full w-12",
|
|
27510
|
+
style: { backgroundColor: secondaryColor }
|
|
27511
|
+
}),
|
|
27512
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27513
|
+
className: "h-0.75 rounded-full w-6",
|
|
27514
|
+
style: { backgroundColor: secondaryColor }
|
|
27515
|
+
})
|
|
27516
|
+
]
|
|
27517
|
+
}),
|
|
27518
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27519
|
+
className: "absolute bottom-40 left-10 flex gap-2 opacity-30",
|
|
27520
|
+
children: [
|
|
27521
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27522
|
+
className: "w-2 h-2 rounded-full",
|
|
27523
|
+
style: { backgroundColor: primaryColor }
|
|
27524
|
+
}),
|
|
27525
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27526
|
+
className: "w-2 h-2 rounded-full",
|
|
27527
|
+
style: { backgroundColor: primaryColor }
|
|
27528
|
+
}),
|
|
27529
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27530
|
+
className: "w-2 h-2 rounded-full",
|
|
27531
|
+
style: { backgroundColor: primaryColor }
|
|
27532
|
+
}),
|
|
27533
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27534
|
+
className: "w-2 h-2 rounded-full",
|
|
27535
|
+
style: { backgroundColor: primaryColor }
|
|
27536
|
+
})
|
|
27537
|
+
]
|
|
27538
|
+
}),
|
|
27539
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27540
|
+
className: "absolute bottom-10 right-10 opacity-30",
|
|
27541
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
27542
|
+
width: "100",
|
|
27543
|
+
height: "100",
|
|
27544
|
+
viewBox: "0 0 100 100",
|
|
27545
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
27546
|
+
cx: "50",
|
|
27547
|
+
cy: "50",
|
|
27548
|
+
r: "44",
|
|
27549
|
+
fill: "none",
|
|
27550
|
+
stroke: primaryColor,
|
|
27551
|
+
strokeWidth: "2"
|
|
27552
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
27553
|
+
cx: "50",
|
|
27554
|
+
cy: "50",
|
|
27555
|
+
r: "28",
|
|
27556
|
+
fill: "none",
|
|
27557
|
+
stroke: secondaryColor,
|
|
27558
|
+
strokeWidth: "2"
|
|
27559
|
+
})]
|
|
27560
|
+
})
|
|
27561
|
+
})
|
|
27562
|
+
]
|
|
27563
|
+
}),
|
|
27564
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27565
|
+
className: "relative z-10 flex flex-col min-h-360 px-20 py-16",
|
|
27566
|
+
children: [
|
|
27567
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-20" }),
|
|
27568
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27569
|
+
className: "flex items-center gap-5 mb-16",
|
|
27570
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27571
|
+
className: "rounded-full p-5 shrink-0",
|
|
27572
|
+
style: { background: "radial-gradient(circle, " + (isDark ? "rgba(255,255,255,0.1)" : "rgba(0,0,0,0.06)") + " 0%, transparent 70%)" },
|
|
27573
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowDownToLine, {
|
|
27574
|
+
className: "w-20 h-auto",
|
|
27575
|
+
style: { color: primaryColor }
|
|
27576
|
+
})
|
|
27577
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
|
|
27578
|
+
className: "text-4xl font-bold leading-tight",
|
|
27579
|
+
style: { color: accentColor },
|
|
27580
|
+
children: "保存原图"
|
|
27581
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
27582
|
+
className: "text-2xl mt-1",
|
|
27583
|
+
style: { color: mutedColor },
|
|
27584
|
+
children: "长按选择「保存原图」即可识别为实况照片"
|
|
27585
|
+
})] })]
|
|
27586
|
+
}),
|
|
27587
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27588
|
+
className: "flex-1 flex flex-col justify-center items-center gap-6",
|
|
27589
|
+
children: [
|
|
27590
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27591
|
+
className: "flex flex-col gap-6",
|
|
27592
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27593
|
+
className: "flex justify-center gap-6",
|
|
27594
|
+
children: supportedBrands.slice(0, 4).map((brand, idx) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BrandCard, {
|
|
27595
|
+
brand,
|
|
27596
|
+
isDark
|
|
27597
|
+
}, idx))
|
|
27598
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27599
|
+
className: "flex justify-center gap-6",
|
|
27600
|
+
children: supportedBrands.slice(4).map((brand, idx) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BrandCard, {
|
|
27601
|
+
brand,
|
|
27602
|
+
isDark
|
|
27603
|
+
}, idx))
|
|
27604
|
+
})]
|
|
27605
|
+
}),
|
|
27606
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27607
|
+
className: "w-200 h-px",
|
|
27608
|
+
style: { backgroundColor: isDark ? "rgba(255,255,255,0.08)" : "rgba(0,0,0,0.06)" }
|
|
27609
|
+
}),
|
|
27610
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27611
|
+
className: "flex justify-center gap-8",
|
|
27612
|
+
children: unsupportedBrands.map((brand, idx) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UnsupportedBrandCard, {
|
|
27613
|
+
brand,
|
|
27614
|
+
isDark
|
|
27615
|
+
}, idx))
|
|
27616
|
+
})
|
|
27617
|
+
]
|
|
27618
|
+
}),
|
|
27619
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27620
|
+
className: "flex items-start gap-4 mt-12 px-8 py-5 rounded-2xl",
|
|
27621
|
+
style: { backgroundColor: isDark ? "rgba(255,255,255,0.04)" : "rgba(0,0,0,0.03)" },
|
|
27622
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Info, {
|
|
27623
|
+
className: "w-6 h-6 shrink-0 mt-0.5",
|
|
27624
|
+
style: { color: primaryColor }
|
|
27625
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
27626
|
+
className: "text-xl leading-relaxed",
|
|
27627
|
+
style: { color: mutedColor },
|
|
27628
|
+
children: "所有支持 Google Motion Photo 标准的相册 App 均可识别实况照片"
|
|
27629
|
+
})]
|
|
27630
|
+
}),
|
|
27631
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27632
|
+
className: "flex justify-end items-end mt-auto pt-12",
|
|
27633
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27634
|
+
className: "flex items-end gap-6",
|
|
27635
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27636
|
+
className: "flex flex-col items-end",
|
|
27637
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27638
|
+
className: "text-xl font-bold tracking-[0.15em] uppercase",
|
|
27639
|
+
style: { color: mutedColor },
|
|
27640
|
+
children: "KARIN-PLUGIN"
|
|
27641
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27642
|
+
className: "text-5xl font-black",
|
|
27643
|
+
style: { color: accentColor },
|
|
27644
|
+
children: "kkk"
|
|
27645
|
+
})]
|
|
27646
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GlowImage, {
|
|
27647
|
+
glowStrength: 1,
|
|
27648
|
+
blurRadius: 25,
|
|
27649
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KkkLogo, {
|
|
27650
|
+
className: "w-auto h-20",
|
|
27651
|
+
color: accentColor
|
|
27652
|
+
})
|
|
27653
|
+
})]
|
|
27654
|
+
})
|
|
27655
|
+
})
|
|
27656
|
+
]
|
|
27657
|
+
})
|
|
27658
|
+
]
|
|
27659
|
+
});
|
|
27660
|
+
});
|
|
27661
|
+
LivePhotoTip.displayName = "LivePhotoTip";
|
|
27662
|
+
//#endregion
|
|
27159
27663
|
//#region ../template/src/components/platforms/other/qrlogin.tsx
|
|
27160
27664
|
/**
|
|
27161
27665
|
* APP 扫码登录组件
|
|
@@ -28992,6 +29496,14 @@ var baseComponentConfigs = [
|
|
|
28992
29496
|
enabled: true,
|
|
28993
29497
|
componentPath: "platforms/other/qrlogin",
|
|
28994
29498
|
exportName: "QrLogin"
|
|
29499
|
+
},
|
|
29500
|
+
{
|
|
29501
|
+
id: "live-photo-tip",
|
|
29502
|
+
name: "实况图提示",
|
|
29503
|
+
description: "实况照片保存提示图片",
|
|
29504
|
+
enabled: true,
|
|
29505
|
+
componentPath: "platforms/other/LivePhotoTip",
|
|
29506
|
+
exportName: "LivePhotoTip"
|
|
28995
29507
|
}
|
|
28996
29508
|
]
|
|
28997
29509
|
},
|
|
@@ -29171,6 +29683,7 @@ var componentConfigs = baseComponentConfigs.map((basePlatform) => {
|
|
|
29171
29683
|
case "changelog": return createComponentConfig(baseComponent, { component: Changelog });
|
|
29172
29684
|
case "version_warning": return createComponentConfig(baseComponent, { component: VersionWarning });
|
|
29173
29685
|
case "qrlogin": return createComponentConfig(baseComponent, { component: QrLogin });
|
|
29686
|
+
case "live-photo-tip": return createComponentConfig(baseComponent, { component: LivePhotoTip });
|
|
29174
29687
|
default: return createComponentConfig(baseComponent);
|
|
29175
29688
|
}
|
|
29176
29689
|
});
|
|
@@ -29627,6 +30140,7 @@ var ComponentRendererFactory = class {
|
|
|
29627
30140
|
data: request.data,
|
|
29628
30141
|
version: request.version,
|
|
29629
30142
|
scale: request.scale,
|
|
30143
|
+
watermarkTextBitSize: request.watermarkTextBitSize,
|
|
29630
30144
|
...extraProps
|
|
29631
30145
|
};
|
|
29632
30146
|
if (templateName.includes("/")) props.subType = templateName.split("/")[1];
|
|
@@ -30530,7 +31044,6 @@ var createPosterPalettePlugin = () => {
|
|
|
30530
31044
|
*/
|
|
30531
31045
|
/**
|
|
30532
31046
|
* 将隐水印嵌入到 PNG 图片中
|
|
30533
|
-
*
|
|
30534
31047
|
* @param pngBytes - PNG 图片的 Buffer 或 Uint8Array
|
|
30535
31048
|
* @param watermarkText - 要嵌入的水印文本
|
|
30536
31049
|
* @returns 嵌入水印后的 PNG Buffer,失败返回 null
|
|
@@ -30538,12 +31051,17 @@ var createPosterPalettePlugin = () => {
|
|
|
30538
31051
|
var embedWatermark = (pngBytes, watermarkText) => {
|
|
30539
31052
|
try {
|
|
30540
31053
|
const result = embedWatermarkToPngBytes(pngBytes instanceof Buffer ? pngBytes : Buffer.from(pngBytes), watermarkText);
|
|
30541
|
-
return result instanceof Buffer ? result : Buffer.from(result);
|
|
30542
|
-
} catch
|
|
30543
|
-
logger.error("嵌入隐水印失败:", error);
|
|
31054
|
+
return result instanceof Buffer ? result : Buffer.from(result.buffer);
|
|
31055
|
+
} catch {
|
|
30544
31056
|
return null;
|
|
30545
31057
|
}
|
|
30546
31058
|
};
|
|
31059
|
+
/**
|
|
31060
|
+
* 从 PNG 图片中提取隐水印文本
|
|
31061
|
+
*
|
|
31062
|
+
* @param pngBytes - PNG 图片的 Buffer 或 Uint8Array
|
|
31063
|
+
* @returns 提取出的水印文本,失败返回 null
|
|
31064
|
+
*/
|
|
30547
31065
|
//#endregion
|
|
30548
31066
|
//#region src/module/utils/Render/index.ts
|
|
30549
31067
|
/**
|
|
@@ -30571,6 +31089,12 @@ var Render = async (event, path$1, data) => {
|
|
|
30571
31089
|
const lockedVersion = await db.get("kkk:update:lock");
|
|
30572
31090
|
if (typeof lockedVersion === "string" && lockedVersion.length > 0) hasUpdate = isSemverGreater(lockedVersion, Root.pluginVersion);
|
|
30573
31091
|
} catch {}
|
|
31092
|
+
const watermarkText = JSON.stringify({
|
|
31093
|
+
a: Date.now(),
|
|
31094
|
+
b: `Generated by karin-plugin-kkk v${Root.pluginVersion}, with source code open-sourced under the GPL-3.0 license`,
|
|
31095
|
+
c: `Sent by ${event?.bot?.account.selfId ?? "unknown"}|${event?.bot?.account.name ?? "unknown"}`
|
|
31096
|
+
});
|
|
31097
|
+
const watermarkTextBitSize = Buffer.byteLength(watermarkText, "utf8") * 8;
|
|
30574
31098
|
const result = await reactServerRender({
|
|
30575
31099
|
request: {
|
|
30576
31100
|
templateType,
|
|
@@ -30586,6 +31110,7 @@ var Render = async (event, path$1, data) => {
|
|
|
30586
31110
|
frameworkVersion: Root.karinVersion,
|
|
30587
31111
|
hasUpdate
|
|
30588
31112
|
},
|
|
31113
|
+
watermarkTextBitSize,
|
|
30589
31114
|
data: {
|
|
30590
31115
|
...data,
|
|
30591
31116
|
useDarkTheme: Common.useDarkTheme()
|
|
@@ -30607,7 +31132,7 @@ var Render = async (event, path$1, data) => {
|
|
|
30607
31132
|
const renderResult = await render.render({
|
|
30608
31133
|
name: `${Root.pluginName}/${templateType}`,
|
|
30609
31134
|
file: result.htmlPath,
|
|
30610
|
-
multiPage: Config.app.multiPageRender ? Config.app.multiPageHeight : false,
|
|
31135
|
+
multiPage: Config.app.multiPageRender && event.bot.adapter.name !== "QQ Official Bot" ? Config.app.multiPageHeight : false,
|
|
30611
31136
|
selector: "#container",
|
|
30612
31137
|
fullPage: false,
|
|
30613
31138
|
type: "png",
|
|
@@ -30622,11 +31147,7 @@ var Render = async (event, path$1, data) => {
|
|
|
30622
31147
|
const imageStats = [];
|
|
30623
31148
|
for (const image of images) {
|
|
30624
31149
|
const imageBuffer = Buffer.from(image, "base64");
|
|
30625
|
-
const finalImageBuffer = embedWatermark(imageBuffer,
|
|
30626
|
-
a: Date.now(),
|
|
30627
|
-
b: `Generated by karin-plugin-kkk v${Root.pluginVersion}, with source code open-sourced under the GPL-3.0 license`,
|
|
30628
|
-
c: `Sent by ${event?.bot?.account.selfId ?? "unknown"}|${event?.bot?.account.name ?? "unknown"}`
|
|
30629
|
-
})) ?? imageBuffer;
|
|
31150
|
+
const finalImageBuffer = embedWatermark(imageBuffer, watermarkText) ?? imageBuffer;
|
|
30630
31151
|
const metadata = getImageMetadata(finalImageBuffer);
|
|
30631
31152
|
const dimensions = metadata.width && metadata.height ? `${metadata.width}x${metadata.height}` : "unknown";
|
|
30632
31153
|
imageStats.push({
|
|
@@ -36590,13 +37111,11 @@ var Bilibili = class extends Base {
|
|
|
36590
37111
|
imgArray.push(segment.image(imageUrl));
|
|
36591
37112
|
}
|
|
36592
37113
|
if (hasGeneratedLivePhoto) {
|
|
36593
|
-
const
|
|
36594
|
-
|
|
36595
|
-
|
|
36596
|
-
|
|
36597
|
-
|
|
36598
|
-
}[Config.app.livePhotoSystem] || "Google 相册";
|
|
36599
|
-
imgArray.push(segment.text(`💡 提示:保存原图到 ${tip} 即可识别为实况图`));
|
|
37114
|
+
const tipImg = await Render(this.e, "other/live-photo-tip", {
|
|
37115
|
+
title: "实况照片已生成",
|
|
37116
|
+
description: "保存原图到相册即可识别为实况图"
|
|
37117
|
+
});
|
|
37118
|
+
imgArray.push(...tipImg);
|
|
36600
37119
|
}
|
|
36601
37120
|
if (imgArray.length === 1) this.e.reply(imgArray[0]);
|
|
36602
37121
|
if (imgArray.length > 1) {
|
|
@@ -38133,8 +38652,6 @@ var Bilibilipush = class extends Base {
|
|
|
38133
38652
|
host_mid: data[dynamicId].host_mid,
|
|
38134
38653
|
typeMode: "strict"
|
|
38135
38654
|
});
|
|
38136
|
-
let emojiDATA = await this.amagi.bilibili.fetcher.fetchEmojiList({ typeMode: "strict" });
|
|
38137
|
-
emojiDATA = extractEmojisData(emojiDATA.data.data.packages);
|
|
38138
38655
|
switch (data[dynamicId].dynamic_type) {
|
|
38139
38656
|
/** 处理图文动态 */
|
|
38140
38657
|
case DynamicType.DRAW:
|
|
@@ -38465,9 +38982,13 @@ var Bilibilipush = class extends Base {
|
|
|
38465
38982
|
if (send_video) {
|
|
38466
38983
|
let correctList;
|
|
38467
38984
|
let videoSize = "";
|
|
38985
|
+
const videoInfo = await this.amagi.bilibili.fetcher.fetchVideoInfo({
|
|
38986
|
+
bvid: data[dynamicId].Dynamic_Data.modules.module_dynamic.major.archive.bvid,
|
|
38987
|
+
typeMode: "strict"
|
|
38988
|
+
});
|
|
38468
38989
|
const playUrlData = await this.amagi.bilibili.fetcher.fetchVideoStreamUrl({
|
|
38469
38990
|
avid: parseInt(data[dynamicId].Dynamic_Data.modules.module_dynamic.major.archive.aid),
|
|
38470
|
-
cid: data
|
|
38991
|
+
cid: videoInfo.data.data.cid,
|
|
38471
38992
|
typeMode: "strict"
|
|
38472
38993
|
});
|
|
38473
38994
|
/** 提取出视频流信息对象,并排除清晰度重复的视频流 */
|
|
@@ -38634,13 +39155,11 @@ var Bilibilipush = class extends Base {
|
|
|
38634
39155
|
}
|
|
38635
39156
|
}
|
|
38636
39157
|
if (hasGeneratedLivePhoto) {
|
|
38637
|
-
const
|
|
38638
|
-
|
|
38639
|
-
|
|
38640
|
-
|
|
38641
|
-
|
|
38642
|
-
}[Config.app.livePhotoSystem] || "Google 相册";
|
|
38643
|
-
imgArray.push(segment.text(`💡 提示:保存原图到 ${tip} 即可识别为实况图`));
|
|
39158
|
+
const tipImg = await Render(this.e, "other/live-photo-tip", {
|
|
39159
|
+
title: "实况照片已生成",
|
|
39160
|
+
description: "保存原图到相册即可识别为实况图"
|
|
39161
|
+
});
|
|
39162
|
+
imgArray.push(...tipImg);
|
|
38644
39163
|
}
|
|
38645
39164
|
const forwardMsg = common.makeForward(imgArray, botId, bot.account.name);
|
|
38646
39165
|
try {
|
|
@@ -38908,7 +39427,8 @@ var Bilibilipush = class extends Base {
|
|
|
38908
39427
|
renderOpt,
|
|
38909
39428
|
groupInfo: {
|
|
38910
39429
|
groupId: groupInfo.groupId || "",
|
|
38911
|
-
groupName: groupInfo.groupName || ""
|
|
39430
|
+
groupName: groupInfo.groupName || "",
|
|
39431
|
+
groupAvatar: groupInfo.avatar || ""
|
|
38912
39432
|
}
|
|
38913
39433
|
});
|
|
38914
39434
|
await this.e.reply(img);
|
|
@@ -38923,23 +39443,6 @@ var br = (data) => {
|
|
|
38923
39443
|
return data = data.replace(/\n/g, "<br>");
|
|
38924
39444
|
};
|
|
38925
39445
|
/**
|
|
38926
|
-
* 处理并提取表情数据,返回一个包含表情名称和URL的对象数组。
|
|
38927
|
-
* @param data 表情数据的数组,每个元素包含一个表情包的信息。
|
|
38928
|
-
* @returns 返回一个对象数组,每个对象包含text(表情名称)和url(表情图片地址)属性。
|
|
38929
|
-
*/
|
|
38930
|
-
var extractEmojisData = (data) => {
|
|
38931
|
-
const emojisData = [];
|
|
38932
|
-
data.forEach((packages) => {
|
|
38933
|
-
packages.emote.forEach((emote) => {
|
|
38934
|
-
emojisData.push({
|
|
38935
|
-
text: emote.text,
|
|
38936
|
-
url: emote.url
|
|
38937
|
-
});
|
|
38938
|
-
});
|
|
38939
|
-
});
|
|
38940
|
-
return emojisData;
|
|
38941
|
-
};
|
|
38942
|
-
/**
|
|
38943
39446
|
* 判断标题是否有屏蔽词或屏蔽标签
|
|
38944
39447
|
* @param PushItem 推送项
|
|
38945
39448
|
* @returns 是否应该跳过推送
|
|
@@ -39832,13 +40335,11 @@ var DouYin = class DouYin extends Base {
|
|
|
39832
40335
|
}
|
|
39833
40336
|
}
|
|
39834
40337
|
if (hasGeneratedLivePhoto) {
|
|
39835
|
-
const
|
|
39836
|
-
|
|
39837
|
-
|
|
39838
|
-
|
|
39839
|
-
|
|
39840
|
-
}[Config.app.livePhotoSystem] || "Google 相册";
|
|
39841
|
-
processedImages.push(segment.text(`💡 提示:保存原图到 ${tip} 即可识别为实况图`));
|
|
40338
|
+
const tipImg = await Render(this.e, "other/live-photo-tip", {
|
|
40339
|
+
title: "实况照片已生成",
|
|
40340
|
+
description: "保存原图到相册即可识别为实况图"
|
|
40341
|
+
});
|
|
40342
|
+
processedImages.push(...tipImg);
|
|
39842
40343
|
}
|
|
39843
40344
|
const Element = common.makeForward(processedImages, Config.app.fakeForward ? this.e.sender.userId : this.e.bot.account.selfId, Config.app.fakeForward ? this.e.sender.nick : this.e.bot.account.name);
|
|
39844
40345
|
try {
|
|
@@ -39989,13 +40490,11 @@ var DouYin = class DouYin extends Base {
|
|
|
39989
40490
|
}
|
|
39990
40491
|
}
|
|
39991
40492
|
if (hasGeneratedLivePhoto) {
|
|
39992
|
-
const
|
|
39993
|
-
|
|
39994
|
-
|
|
39995
|
-
|
|
39996
|
-
|
|
39997
|
-
}[Config.app.livePhotoSystem] || "Google 相册";
|
|
39998
|
-
images.push(segment.text(`💡 提示:保存原图到 ${tip} 即可识别为实况图`));
|
|
40493
|
+
const tipImg = await Render(this.e, "other/live-photo-tip", {
|
|
40494
|
+
title: "实况照片已生成",
|
|
40495
|
+
description: "保存原图到相册即可识别为实况图"
|
|
40496
|
+
});
|
|
40497
|
+
images.push(...tipImg);
|
|
39999
40498
|
}
|
|
40000
40499
|
const Element = common.makeForward(images, Config.app.fakeForward ? this.e.sender.userId : this.e.bot.account.selfId, Config.app.fakeForward ? this.e.sender.nick : this.e.bot.account.name);
|
|
40001
40500
|
try {
|
|
@@ -40591,21 +41090,11 @@ var DouyinWorkMainType = /* @__PURE__ */ function(DouyinWorkMainType) {
|
|
|
40591
41090
|
return DouyinWorkMainType;
|
|
40592
41091
|
}({});
|
|
40593
41092
|
/**
|
|
40594
|
-
* 图文作品子类型
|
|
40595
|
-
*/
|
|
40596
|
-
var DouyinImageSubType = /* @__PURE__ */ function(DouyinImageSubType) {
|
|
40597
|
-
/** 图集(纯静态图片或包含 live 图) */
|
|
40598
|
-
DouyinImageSubType["GALLERY"] = "gallery";
|
|
40599
|
-
/** 合辑(图片+视频混合) */
|
|
40600
|
-
DouyinImageSubType["COLLECTION"] = "collection";
|
|
40601
|
-
return DouyinImageSubType;
|
|
40602
|
-
}({});
|
|
40603
|
-
/**
|
|
40604
41093
|
* 从作品数据判断详细类型信息
|
|
40605
41094
|
*/
|
|
40606
41095
|
function getWorkTypeInfo(data) {
|
|
40607
41096
|
if (data.live_data) return {
|
|
40608
|
-
mainType:
|
|
41097
|
+
mainType: "live",
|
|
40609
41098
|
isVideo: false,
|
|
40610
41099
|
isImage: false,
|
|
40611
41100
|
isArticle: false,
|
|
@@ -40615,7 +41104,7 @@ function getWorkTypeInfo(data) {
|
|
|
40615
41104
|
templatePath: "douyin/live"
|
|
40616
41105
|
};
|
|
40617
41106
|
if (data.aweme_type === 163 || data.article_info) return {
|
|
40618
|
-
mainType:
|
|
41107
|
+
mainType: "article",
|
|
40619
41108
|
isVideo: false,
|
|
40620
41109
|
isImage: false,
|
|
40621
41110
|
isArticle: true,
|
|
@@ -40625,21 +41114,21 @@ function getWorkTypeInfo(data) {
|
|
|
40625
41114
|
templatePath: "douyin/article-work"
|
|
40626
41115
|
};
|
|
40627
41116
|
if (data.images && data.images.length > 0) {
|
|
40628
|
-
const subType = data.is_slides === true ?
|
|
41117
|
+
const subType = data.is_slides === true ? "collection" : "gallery";
|
|
40629
41118
|
return {
|
|
40630
|
-
mainType:
|
|
41119
|
+
mainType: "image",
|
|
40631
41120
|
subType,
|
|
40632
41121
|
isVideo: false,
|
|
40633
41122
|
isImage: true,
|
|
40634
41123
|
isArticle: false,
|
|
40635
41124
|
isLive: false,
|
|
40636
|
-
isGallery: subType ===
|
|
40637
|
-
isCollection: subType ===
|
|
41125
|
+
isGallery: subType === "gallery",
|
|
41126
|
+
isCollection: subType === "collection",
|
|
40638
41127
|
templatePath: "douyin/image-work"
|
|
40639
41128
|
};
|
|
40640
41129
|
}
|
|
40641
41130
|
return {
|
|
40642
|
-
mainType:
|
|
41131
|
+
mainType: "video",
|
|
40643
41132
|
isVideo: true,
|
|
40644
41133
|
isImage: false,
|
|
40645
41134
|
isArticle: false,
|
|
@@ -41390,13 +41879,11 @@ var DouYinpush = class extends Base {
|
|
|
41390
41879
|
}
|
|
41391
41880
|
}
|
|
41392
41881
|
if (hasGeneratedLivePhoto) {
|
|
41393
|
-
const
|
|
41394
|
-
|
|
41395
|
-
|
|
41396
|
-
|
|
41397
|
-
|
|
41398
|
-
}[Config.app.livePhotoSystem] || "Google 相册";
|
|
41399
|
-
images.push(segment.text(`💡 提示:保存原图到 ${tip} 即可识别为实况图`));
|
|
41882
|
+
const tipImg = await Render(this.e, "other/live-photo-tip", {
|
|
41883
|
+
title: "实况照片已生成",
|
|
41884
|
+
description: "保存原图到相册即可识别为实况图"
|
|
41885
|
+
});
|
|
41886
|
+
images.push(...tipImg);
|
|
41400
41887
|
}
|
|
41401
41888
|
const bot = karin$1.getBot(botId);
|
|
41402
41889
|
const Element = common.makeForward(images, botId, bot.account.name);
|
|
@@ -41515,13 +42002,11 @@ var DouYinpush = class extends Base {
|
|
|
41515
42002
|
}
|
|
41516
42003
|
}
|
|
41517
42004
|
if (hasGeneratedLivePhoto) {
|
|
41518
|
-
const
|
|
41519
|
-
|
|
41520
|
-
|
|
41521
|
-
|
|
41522
|
-
|
|
41523
|
-
}[Config.app.livePhotoSystem] || "Google 相册";
|
|
41524
|
-
processedImages.push(segment.text(`💡 提示:保存原图到 ${tip} 即可识别为实况图`));
|
|
42005
|
+
const tipImg = await Render(this.e, "other/live-photo-tip", {
|
|
42006
|
+
title: "实况照片已生成",
|
|
42007
|
+
description: "保存原图到相册即可识别为实况图"
|
|
42008
|
+
});
|
|
42009
|
+
processedImages.push(...tipImg);
|
|
41525
42010
|
}
|
|
41526
42011
|
const bot = karin$1.getBot(botId);
|
|
41527
42012
|
const Element = common.makeForward(processedImages, botId, bot.account.name);
|
|
@@ -41784,7 +42269,8 @@ var DouYinpush = class extends Base {
|
|
|
41784
42269
|
renderOpt,
|
|
41785
42270
|
groupInfo: {
|
|
41786
42271
|
groupId: groupInfo.groupId || "",
|
|
41787
|
-
groupName: groupInfo.groupName || ""
|
|
42272
|
+
groupName: groupInfo.groupName || "",
|
|
42273
|
+
groupAvatar: groupInfo.avatar || ""
|
|
41788
42274
|
}
|
|
41789
42275
|
});
|
|
41790
42276
|
await this.e.reply(img);
|
|
@@ -42421,13 +42907,11 @@ var Xiaohongshu = class extends Base {
|
|
|
42421
42907
|
processedImages.push(segment.image(imageUrl));
|
|
42422
42908
|
}
|
|
42423
42909
|
if (hasGeneratedLivePhoto) {
|
|
42424
|
-
const
|
|
42425
|
-
|
|
42426
|
-
|
|
42427
|
-
|
|
42428
|
-
|
|
42429
|
-
}[Config.app.livePhotoSystem] || "Google 相册";
|
|
42430
|
-
processedImages.push(segment.text(`💡 提示:保存原图到 ${tip} 即可识别为实况图`));
|
|
42910
|
+
const tipImg = await Render(this.e, "other/live-photo-tip", {
|
|
42911
|
+
title: "实况照片已生成",
|
|
42912
|
+
description: "保存原图到相册即可识别为实况图"
|
|
42913
|
+
});
|
|
42914
|
+
processedImages.push(...tipImg);
|
|
42431
42915
|
}
|
|
42432
42916
|
const res = common.makeForward(processedImages, Config.app.fakeForward ? this.e.sender.userId : this.e.bot.account.selfId, Config.app.fakeForward ? this.e.sender.nick : this.e.bot.account.name);
|
|
42433
42917
|
if (processedImages.length === 1) await this.e.reply(processedImages[0]);
|
|
@@ -43471,14 +43955,12 @@ var forcePush = karin$1.command(/#(抖音|B站)(全部)?强制推送/, handleFor
|
|
|
43471
43955
|
var setdyPush = karin$1.command(/^#设置抖音推送/, handleSetDouyinPush, {
|
|
43472
43956
|
name: "kkk-推送功能-设置",
|
|
43473
43957
|
event: "message.group",
|
|
43474
|
-
perm: Config.douyin.push.permission
|
|
43475
|
-
dsbAdapter: ["qqbot"]
|
|
43958
|
+
perm: Config.douyin.push.permission
|
|
43476
43959
|
});
|
|
43477
43960
|
var setbiliPush = karin$1.command(/^#设置[bB]站推送/, handleSetBilibiliPush, {
|
|
43478
43961
|
name: "kkk-推送功能-设置",
|
|
43479
43962
|
event: "message.group",
|
|
43480
|
-
perm: Config.bilibili.push.permission
|
|
43481
|
-
dsbAdapter: ["qqbot"]
|
|
43963
|
+
perm: Config.bilibili.push.permission
|
|
43482
43964
|
});
|
|
43483
43965
|
var bilibiliPushList = karin$1.command(/^#?[bB]站推送列表$/, handleBilibiliPushList, {
|
|
43484
43966
|
name: "kkk-推送功能-列表",
|
|
@@ -43496,7 +43978,6 @@ var testDouyinPush = karin$1.command(/^#测试抖音推送\s*(https?:\/\/[^\s]+)
|
|
|
43496
43978
|
name: "kkk-推送功能-测试",
|
|
43497
43979
|
event: "message.group",
|
|
43498
43980
|
perm: Config.douyin.push.permission,
|
|
43499
|
-
dsbAdapter: ["qqbot"],
|
|
43500
43981
|
priority: -Infinity
|
|
43501
43982
|
});
|
|
43502
43983
|
var globalIgnore = karin$1.command(/^#kkk推送全局忽略/, handleGlobalIgnore, {
|
|
@@ -43939,7 +44420,7 @@ var getChangelogImage = async (ctx, props) => {
|
|
|
43939
44420
|
remoteVersion: props.remoteVersion,
|
|
43940
44421
|
lagVersionCount,
|
|
43941
44422
|
buildTime,
|
|
43942
|
-
share_url: `https://karin-plugin-kkk-docs.vercel.app/
|
|
44423
|
+
share_url: `https://karin-plugin-kkk-docs.vercel.app/diff?old=${props.localVersion}&new=latest`
|
|
43943
44424
|
}) || null;
|
|
43944
44425
|
};
|
|
43945
44426
|
//#endregion
|