karin-plugin-kkk 2.40.0 → 2.40.2
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 +14 -0
- package/lib/build-metadata.json +5 -5
- package/lib/core_chunk/amagi.js +1 -1
- package/lib/core_chunk/amagiClient.js +1 -1
- package/lib/core_chunk/main.js +112 -44
- package/lib/karin-plugin-kkk.css +101 -137
- package/lib/root.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog
|
|
4
4
|
|
|
5
|
+
## [2.40.2](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.40.1...v2.40.2) (2026-07-28)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### 🐛 错误修复
|
|
9
|
+
|
|
10
|
+
* 优化接口库客户端热重载功能 ([3e3bd9d](https://github.com/ikenxuan/karin-plugin-kkk/commit/3e3bd9d5e2c40a40158a4a6db034367895f3fd8d))
|
|
11
|
+
|
|
12
|
+
## [2.40.1](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.40.0...v2.40.1) (2026-07-19)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### 💄 UI 优化
|
|
16
|
+
|
|
17
|
+
* 微调 `#kkk` 版本 ([82aa4e3](https://github.com/ikenxuan/karin-plugin-kkk/commit/82aa4e3cf5dc27e6ba69f0936bbc3ff2a59025a5))
|
|
18
|
+
|
|
5
19
|
## [2.40.0](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.39.0...v2.40.0) (2026-07-18)
|
|
6
20
|
|
|
7
21
|
|
package/lib/build-metadata.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2.40.
|
|
3
|
-
"buildTime": "2026-07-
|
|
4
|
-
"buildTimestamp":
|
|
2
|
+
"version": "2.40.2",
|
|
3
|
+
"buildTime": "2026-07-28T05:14:06.496Z",
|
|
4
|
+
"buildTimestamp": 1785215646496,
|
|
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": "f4798eaff113ebfc5e24b01263ad2da1f2835f23",
|
|
9
|
+
"shortCommitHash": "f4798eaf"
|
|
10
10
|
}
|
package/lib/core_chunk/amagi.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $n as
|
|
1
|
+
import { $n as XiaohongshuMethodRoutes, $r as emitHttpRequest, $t as DynamicType, An as logger, Ar as BilibiliAv2BvParamsSchema, At as BilibiliMethodMapping, Bn as kuaishouApiUrls, Br as BilibiliLiveParamsSchema, Bt as BilibiliInternalMethods, Cn as parseDmSegMobileReply, Cr as DouyinUserParamsSchema, Dn as httpLogger, Dr as BilibiliArticleCardParamsSchema, Dt as amagi, En as qtparam, Er as BilibiliApplyCaptchaParamsSchema, Et as CreateApp, Fn as createBoundXiaohongshuFetcher, Fr as BilibiliCommentParamsSchema, Ft as XiaohongshuApiRoutes, Gn as bilibiliFetcher, Gr as BilibiliUserParamsSchema, Gt as KuaishouFetcherMethods, Hn as createBoundDouyinFetcher, Hr as BilibiliMethodRoutes, Ht as DouyinFetcherMethods, In as xiaohongshuFetcher, Ir as BilibiliCommentReplyParamsSchema, It as XiaohongshuMethodMapping, Jn as createSuccessResponse, Jr as BilibiliVideoDownloadParamsSchema, Jt as MethodMaps, Kn as createBoundBilibiliFetcher, Kr as BilibiliValidateCaptchaParamsSchema, Kt as KuaishouInternalMethods, Ln as createBoundKuaishouFetcher, Lr as BilibiliDanmakuParamsSchema, Lt as getApiRoute, Mn as fetchResponse, Mr as BilibiliBangumiStreamParamsSchema, Mt as DouyinMethodMapping, Nn as getHeadersAndData, Nr as BilibiliBv2AvParamsSchema, Nt as KuaishouApiRoutes, On as initLogger, Or as BilibiliArticleInfoParamsSchema, Ot as amagiClient, Pn as isNetworkErrorResult, Pr as BilibiliColumnInfoParamsSchema, Pt as KuaishouMethodMapping, Qn as validateXiaohongshuParams, Qr as emitApiSuccess, Qt as toFetcherMethod, Rn as kuaishouFetcher, Rr as BilibiliDynamicParamsSchema, Rt as getEnglishMethodName, Sn as wbi_sign, Sr as DouyinUserListParamsSchema, Tn as bv2av, Tr as DouyinWorkParamsSchema, Un as douyinApiUrls, Ur as BilibiliQrcodeParamsSchema, Ut as DouyinInternalMethods, Vn as douyinFetcher, Vr as BilibiliLoginParamsSchema, Vt as BilibiliMethodToFetcher, Wn as douyinSign, Wr as BilibiliQrcodeStatusParamsSchema, Wt as DouyinMethodToFetcher, Xn as validateDouyinParams, Xr as amagiEvents, Xt as XiaohongshuInternalMethods, Yn as validateBilibiliParams, Yr as BilibiliVideoParamsSchema, Yt as XiaohongshuFetcherMethods, Zn as validateKuaishouParams, Zr as emitApiError, Zt as XiaohongshuMethodToFetcher, _n as createBilibiliRoutes, _r as DouyinLiveRoomParamsSchema, ai as emitLogMark, an as createXiaohongshuRoutes, ar as KuaishouLiveRoomInfoParamsSchema, bn as handleError, br as DouyinQrcodeParamsSchema, ci as emitNetworkRetry, cn as kuaishouUtils, cr as KuaishouUserWorkListParamsSchema, di as bilibiliApiUrls, dn as kuaishou, dr as DouyinCommentParamsSchema, ei as emitHttpResponse, en as AdditionalType, er as XiaohongshuValidationSchemas, fi as getBilibiliData, fn as douyinUtils, fr as DouyinCommentReplyParamsSchema, gn as bilibiliUtils, gr as DouyinHotWordsParamsSchema, hn as douyin, hr as DouyinEmojiProParamsSchema, ii as emitLogInfo, in as xiaohongshuUtils, ir as KuaishouEmojiParamsSchema, jn as fetchData, jr as BilibiliBangumiInfoParamsSchema, jt as DouyinApiRoutes, kn as logMiddleware, kr as BilibiliArticleParamsSchema, kt as BilibiliApiRoutes, li as bilibili, ln as createKuaishouRoutes, lr as KuaishouValidationSchemas, mi as getKuaishouData, mn as createBoundDouyinApi, mr as DouyinEmojiListParamsSchema, ni as emitLogDebug, nn as CommentType, nr as xiaohongshuSign, oi as emitLogWarn, on as createBoundXiaohongshuApi, or as KuaishouMethodRoutes, pi as getDouyinData, pn as createDouyinRoutes, pr as DouyinDanmakuParamsSchema, qn as createErrorResponse, qr as BilibiliValidationSchemas, qt as KuaishouMethodToFetcher, ri as emitLogError, rn as createAmagiClient, rr as KuaishouCommentParamsSchema, si as emitNetworkError, sn as xiaohongshu, sr as KuaishouUserProfileParamsSchema, ti as emitLog, tn as MajorType, tr as xiaohongshuApiUrls, ui as createBoundBilibiliApi, un as createBoundKuaishouApi, ur as KuaishouVideoParamsSchema, vn as ApiError, vr as DouyinMethodRoutes, wn as av2bv, wr as DouyinValidationSchemas, xn as bilibiliErrorCodeMap, xr as DouyinSearchParamsSchema, yn as ValidationError, yr as DouyinMusicParamsSchema, zn as kuaishouSign, zr as BilibiliEmojiParamsSchema, zt as BilibiliFetcherMethods } from "./main.js";
|
|
2
2
|
export { AdditionalType, ApiError, BilibiliApiRoutes, BilibiliApplyCaptchaParamsSchema, BilibiliArticleCardParamsSchema, BilibiliArticleInfoParamsSchema, BilibiliArticleParamsSchema, BilibiliAv2BvParamsSchema, BilibiliBangumiInfoParamsSchema, BilibiliBangumiStreamParamsSchema, BilibiliBv2AvParamsSchema, BilibiliColumnInfoParamsSchema, BilibiliCommentParamsSchema, BilibiliCommentReplyParamsSchema, BilibiliDanmakuParamsSchema, BilibiliDynamicParamsSchema, BilibiliEmojiParamsSchema, BilibiliFetcherMethods, BilibiliInternalMethods, BilibiliLiveParamsSchema, BilibiliLoginParamsSchema, BilibiliMethodMapping, BilibiliMethodRoutes, BilibiliMethodToFetcher, BilibiliQrcodeParamsSchema, BilibiliQrcodeStatusParamsSchema, BilibiliUserParamsSchema, BilibiliValidateCaptchaParamsSchema, BilibiliValidationSchemas, BilibiliVideoDownloadParamsSchema, BilibiliVideoParamsSchema, CommentType, CreateApp, DouyinApiRoutes, DouyinCommentParamsSchema, DouyinCommentReplyParamsSchema, DouyinDanmakuParamsSchema, DouyinEmojiListParamsSchema, DouyinEmojiProParamsSchema, DouyinFetcherMethods, DouyinHotWordsParamsSchema, DouyinInternalMethods, DouyinLiveRoomParamsSchema, DouyinMethodMapping, DouyinMethodRoutes, DouyinMethodToFetcher, DouyinMusicParamsSchema, DouyinQrcodeParamsSchema, DouyinSearchParamsSchema, DouyinUserListParamsSchema, DouyinUserParamsSchema, DouyinValidationSchemas, DouyinWorkParamsSchema, DynamicType, KuaishouApiRoutes, KuaishouCommentParamsSchema, KuaishouEmojiParamsSchema, KuaishouFetcherMethods, KuaishouInternalMethods, KuaishouLiveRoomInfoParamsSchema, KuaishouMethodMapping, KuaishouMethodRoutes, KuaishouMethodToFetcher, KuaishouUserProfileParamsSchema, KuaishouUserWorkListParamsSchema, KuaishouValidationSchemas, KuaishouVideoParamsSchema, MajorType, MethodMaps, ValidationError, XiaohongshuApiRoutes, XiaohongshuFetcherMethods, XiaohongshuInternalMethods, XiaohongshuMethodMapping, XiaohongshuMethodRoutes, XiaohongshuMethodToFetcher, XiaohongshuValidationSchemas, amagi, amagiClient, amagiEvents, av2bv, bilibili, bilibiliApiUrls, bilibiliErrorCodeMap, bilibiliFetcher, bilibiliUtils, bv2av, createAmagiClient, createBilibiliRoutes, createBilibiliRoutes as registerBilibiliRoutes, createBoundBilibiliApi, createBoundBilibiliFetcher, createBoundDouyinApi, createBoundDouyinFetcher, createBoundKuaishouApi, createBoundKuaishouFetcher, createBoundXiaohongshuApi, createBoundXiaohongshuFetcher, createDouyinRoutes, createDouyinRoutes as registerDouyinRoutes, createErrorResponse, createKuaishouRoutes, createKuaishouRoutes as registerKuaishouRoutes, createSuccessResponse, createXiaohongshuRoutes, createXiaohongshuRoutes as registerXiaohongshuRoutes, douyin, douyinApiUrls, douyinFetcher, douyinSign, douyinUtils, emitApiError, emitApiSuccess, emitHttpRequest, emitHttpResponse, emitLog, emitLogDebug, emitLogError, emitLogInfo, emitLogMark, emitLogWarn, emitNetworkError, emitNetworkRetry, fetchData, fetchResponse, getApiRoute, getBilibiliData, getDouyinData, getEnglishMethodName, getHeadersAndData, getKuaishouData, handleError, httpLogger, initLogger, isNetworkErrorResult, kuaishou, kuaishouApiUrls, kuaishouFetcher, kuaishouSign, kuaishouUtils, logMiddleware, logger, parseDmSegMobileReply, qtparam, toFetcherMethod, validateBilibiliParams, validateDouyinParams, validateKuaishouParams, validateXiaohongshuParams, wbi_sign, xiaohongshu, xiaohongshuApiUrls, xiaohongshuFetcher, xiaohongshuSign, xiaohongshuUtils };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ct as reloadAmagiConfig } from "./main.js";
|
|
2
2
|
export { reloadAmagiConfig };
|
package/lib/core_chunk/main.js
CHANGED
|
@@ -10340,7 +10340,7 @@ var VERSION = getVersion();
|
|
|
10340
10340
|
/**
|
|
10341
10341
|
* @deprecated 请使用 createAmagiClient 替代
|
|
10342
10342
|
*/
|
|
10343
|
-
var amagiClient
|
|
10343
|
+
var amagiClient = createAmagiClient;
|
|
10344
10344
|
/**
|
|
10345
10345
|
* 创建一个新的 amagi 客户端实例
|
|
10346
10346
|
* 用于创建和初始化一个新的 amagi 客户端实例,支持通过 new 关键字或函数调用方式使用
|
|
@@ -10700,10 +10700,15 @@ var AmagiError = class extends Error {
|
|
|
10700
10700
|
var AmagiBase = class {
|
|
10701
10701
|
/** 解析库实例 */
|
|
10702
10702
|
amagi;
|
|
10703
|
+
/** 当前客户端使用的配置快照,用于避免文件监听与显式重载造成重复初始化 */
|
|
10704
|
+
configSignature;
|
|
10703
10705
|
constructor() {
|
|
10704
10706
|
const client = this.createAmagiClient();
|
|
10705
10707
|
this.amagi = this.wrapAmagiClient(client);
|
|
10708
|
+
this.configSignature = this.getConfigSignature();
|
|
10706
10709
|
}
|
|
10710
|
+
/** 获取会影响 Amagi 运行状态的配置快照 */
|
|
10711
|
+
getConfigSignature = () => JSON.stringify(Config.amagi);
|
|
10707
10712
|
/** 创建解析库实例 */
|
|
10708
10713
|
createAmagiClient = () => {
|
|
10709
10714
|
const amagi = Config.amagi;
|
|
@@ -10718,12 +10723,20 @@ var AmagiBase = class {
|
|
|
10718
10723
|
};
|
|
10719
10724
|
/**
|
|
10720
10725
|
* 重载配置 - 重新创建 Amagi Client 实例
|
|
10726
|
+
* @returns 配置发生变化并完成重载时返回 true
|
|
10721
10727
|
*/
|
|
10722
10728
|
reloadConfig() {
|
|
10729
|
+
const nextConfigSignature = this.getConfigSignature();
|
|
10730
|
+
if (nextConfigSignature === this.configSignature) {
|
|
10731
|
+
logger.debug("[AmagiClient] 配置未变化,跳过重复重载");
|
|
10732
|
+
return false;
|
|
10733
|
+
}
|
|
10723
10734
|
logger.debug("[AmagiClient] 检测到配置变化,正在重载...");
|
|
10724
10735
|
const client = this.createAmagiClient();
|
|
10725
10736
|
this.amagi = this.wrapAmagiClient(client);
|
|
10737
|
+
this.configSignature = nextConfigSignature;
|
|
10726
10738
|
logger.debug("[AmagiClient] 配置重载完成");
|
|
10739
|
+
return true;
|
|
10727
10740
|
}
|
|
10728
10741
|
/** 包装解析库实例,递归代理所有嵌套对象的方法 */
|
|
10729
10742
|
wrapAmagiClient = (client) => {
|
|
@@ -10790,14 +10803,37 @@ var softFetch = async (fn, allowedCodes) => {
|
|
|
10790
10803
|
}
|
|
10791
10804
|
};
|
|
10792
10805
|
var amagiClientInstance = new AmagiBase();
|
|
10793
|
-
|
|
10806
|
+
/** 需要随 Amagi Client 一同刷新的运行时资源,例如已经挂载的 HTTP Router */
|
|
10807
|
+
var amagiReloadListeners = /* @__PURE__ */ new Set();
|
|
10808
|
+
/**
|
|
10809
|
+
* 注册 Amagi 配置重载监听器。
|
|
10810
|
+
* @returns 注销当前监听器的函数
|
|
10811
|
+
*/
|
|
10812
|
+
var registerAmagiReloadListener = (listener) => {
|
|
10813
|
+
amagiReloadListeners.add(listener);
|
|
10814
|
+
return () => amagiReloadListeners.delete(listener);
|
|
10815
|
+
};
|
|
10816
|
+
var bilibiliFetcher = amagiClientInstance.amagi.bilibili.fetcher;
|
|
10817
|
+
var douyinFetcher = amagiClientInstance.amagi.douyin.fetcher;
|
|
10818
|
+
var kuaishouFetcher = amagiClientInstance.amagi.kuaishou.fetcher;
|
|
10819
|
+
var xiaohongshuFetcher = amagiClientInstance.amagi.xiaohongshu.fetcher;
|
|
10794
10820
|
var reloadAmagiConfig = () => {
|
|
10795
|
-
amagiClientInstance.reloadConfig();
|
|
10821
|
+
if (!amagiClientInstance.reloadConfig()) return false;
|
|
10822
|
+
/**
|
|
10823
|
+
* ESM 的 `export let` 是实时绑定。这里必须在 Client 重建后同步替换各平台
|
|
10824
|
+
* Fetcher,避免调用方继续持有模块初始化阶段截取的旧 Client 引用。
|
|
10825
|
+
*/
|
|
10826
|
+
bilibiliFetcher = amagiClientInstance.amagi.bilibili.fetcher;
|
|
10827
|
+
douyinFetcher = amagiClientInstance.amagi.douyin.fetcher;
|
|
10828
|
+
kuaishouFetcher = amagiClientInstance.amagi.kuaishou.fetcher;
|
|
10829
|
+
xiaohongshuFetcher = amagiClientInstance.amagi.xiaohongshu.fetcher;
|
|
10830
|
+
for (const listener of amagiReloadListeners) try {
|
|
10831
|
+
listener();
|
|
10832
|
+
} catch (error) {
|
|
10833
|
+
logger.error(`[AmagiClient] 运行时资源重载失败: ${error}`);
|
|
10834
|
+
}
|
|
10835
|
+
return true;
|
|
10796
10836
|
};
|
|
10797
|
-
var bilibiliFetcher = amagiClient.bilibili.fetcher;
|
|
10798
|
-
var douyinFetcher = amagiClient.douyin.fetcher;
|
|
10799
|
-
var kuaishouFetcher = amagiClient.kuaishou.fetcher;
|
|
10800
|
-
amagiClient.xiaohongshu.fetcher;
|
|
10801
10837
|
//#endregion
|
|
10802
10838
|
//#region src/module/utils/Base.ts
|
|
10803
10839
|
/**
|
|
@@ -27787,30 +27823,30 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
27787
27823
|
};
|
|
27788
27824
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DefaultLayout, {
|
|
27789
27825
|
...props,
|
|
27790
|
-
className: "relative min-h-
|
|
27826
|
+
className: "relative min-h-455 overflow-hidden",
|
|
27791
27827
|
style: { backgroundColor: palette.background },
|
|
27792
27828
|
children: [
|
|
27793
27829
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27794
27830
|
className: "pointer-events-none absolute inset-0 z-0 overflow-hidden",
|
|
27795
27831
|
children: [
|
|
27796
27832
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27797
|
-
className: "absolute -left-
|
|
27833
|
+
className: "absolute -left-130 -top-120 h-337.5 w-375 rounded-full blur-[230px]",
|
|
27798
27834
|
style: { background: `radial-gradient(ellipse at center, ${palette.glowPrimary} 0%, transparent 70%)` }
|
|
27799
27835
|
}),
|
|
27800
27836
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27801
|
-
className: "absolute -right-
|
|
27837
|
+
className: "absolute -right-130 top-[32%] h-312.5 w-300 rounded-full blur-[240px]",
|
|
27802
27838
|
style: { background: `radial-gradient(ellipse at center, ${palette.glowSecondary} 0%, transparent 72%)` }
|
|
27803
27839
|
}),
|
|
27804
27840
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27805
|
-
className: "absolute -bottom-
|
|
27841
|
+
className: "absolute -bottom-120 -left-80 h-287.5 w-337.5 rounded-full blur-[260px]",
|
|
27806
27842
|
style: { background: `radial-gradient(ellipse at center, ${palette.glowWarm} 0%, transparent 72%)` }
|
|
27807
27843
|
}),
|
|
27808
27844
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27809
|
-
className: "absolute -bottom-
|
|
27845
|
+
className: "absolute -bottom-90 -right-105 h-225 w-250 rounded-full blur-[240px]",
|
|
27810
27846
|
style: { background: `radial-gradient(ellipse at center, ${palette.glowPrimary} 0%, transparent 72%)` }
|
|
27811
27847
|
}),
|
|
27812
27848
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27813
|
-
className: "absolute -
|
|
27849
|
+
className: "absolute left-115 top-200 select-none text-[400px] -rotate-90 font-black leading-none tracking-[-0.06em] opacity-[0.03]",
|
|
27814
27850
|
style: { color: palette.bgWord },
|
|
27815
27851
|
children: "RUNTIME"
|
|
27816
27852
|
})
|
|
@@ -27864,7 +27900,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
27864
27900
|
})
|
|
27865
27901
|
}),
|
|
27866
27902
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("main", {
|
|
27867
|
-
className: "relative z-10 px-
|
|
27903
|
+
className: "relative z-10 px-22 pb-16 pt-20",
|
|
27868
27904
|
children: [
|
|
27869
27905
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("header", {
|
|
27870
27906
|
className: "relative",
|
|
@@ -27894,7 +27930,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
27894
27930
|
})]
|
|
27895
27931
|
}),
|
|
27896
27932
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27897
|
-
className: "mt-
|
|
27933
|
+
className: "mt-19",
|
|
27898
27934
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
|
|
27899
27935
|
className: "whitespace-nowrap text-[136px] font-black leading-none tracking-[-0.05em] text-foreground",
|
|
27900
27936
|
children: "运行环境"
|
|
@@ -27904,10 +27940,10 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
27904
27940
|
})]
|
|
27905
27941
|
}),
|
|
27906
27942
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27907
|
-
className: "relative mt-
|
|
27943
|
+
className: "relative mt-23",
|
|
27908
27944
|
children: [
|
|
27909
27945
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27910
|
-
className: "pointer-events-none absolute -left-16 -top-24 h-
|
|
27946
|
+
className: "pointer-events-none absolute -left-16 -top-24 h-105 w-205 rounded-full blur-[150px]",
|
|
27911
27947
|
style: { background: palette.versionGlow }
|
|
27912
27948
|
}),
|
|
27913
27949
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -27941,7 +27977,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
27941
27977
|
})]
|
|
27942
27978
|
}),
|
|
27943
27979
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27944
|
-
className: "relative mt-
|
|
27980
|
+
className: "relative mt-11 whitespace-nowrap font-mono text-[22px] font-semibold text-foreground/28",
|
|
27945
27981
|
children: [
|
|
27946
27982
|
"构建 ",
|
|
27947
27983
|
data.build.shortCommitHash ?? "未知",
|
|
@@ -27954,7 +27990,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
27954
27990
|
]
|
|
27955
27991
|
}),
|
|
27956
27992
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", {
|
|
27957
|
-
className: "relative mt-
|
|
27993
|
+
className: "relative mt-30",
|
|
27958
27994
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27959
27995
|
className: "relative flex items-center gap-5",
|
|
27960
27996
|
children: [
|
|
@@ -27968,12 +28004,12 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
27968
28004
|
children: "环境摘要"
|
|
27969
28005
|
}),
|
|
27970
28006
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27971
|
-
className: "ml-2 h-2 w-
|
|
28007
|
+
className: "ml-2 h-2 w-22 rounded-full",
|
|
27972
28008
|
style: { background: palette.barAccent }
|
|
27973
28009
|
})
|
|
27974
28010
|
]
|
|
27975
28011
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27976
|
-
className: "relative mt-
|
|
28012
|
+
className: "relative mt-16 grid grid-cols-2 gap-x-18 gap-y-16",
|
|
27977
28013
|
children: [
|
|
27978
28014
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
27979
28015
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -28043,7 +28079,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
28043
28079
|
})]
|
|
28044
28080
|
}),
|
|
28045
28081
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28046
|
-
className: "mt-5 h-
|
|
28082
|
+
className: "mt-5 h-3 w-full max-w-105 overflow-hidden rounded-full bg-foreground/8",
|
|
28047
28083
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28048
28084
|
className: "h-full rounded-full",
|
|
28049
28085
|
style: {
|
|
@@ -28059,7 +28095,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
28059
28095
|
children: "处理器"
|
|
28060
28096
|
}),
|
|
28061
28097
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28062
|
-
className: "mt-3 line-clamp-2 break-
|
|
28098
|
+
className: "mt-3 line-clamp-2 wrap-break-word text-[32px] font-black leading-[1.4] text-foreground/78",
|
|
28063
28099
|
children: data.resources.cpuModel
|
|
28064
28100
|
}),
|
|
28065
28101
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -28071,7 +28107,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
28071
28107
|
})]
|
|
28072
28108
|
}),
|
|
28073
28109
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", {
|
|
28074
|
-
className: "relative mt-
|
|
28110
|
+
className: "relative mt-32.5",
|
|
28075
28111
|
children: [
|
|
28076
28112
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28077
28113
|
className: "relative flex items-center gap-5",
|
|
@@ -28086,7 +28122,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
28086
28122
|
children: "仅展示当前版本"
|
|
28087
28123
|
}),
|
|
28088
28124
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
28089
|
-
className: "ml-2 h-2 w-
|
|
28125
|
+
className: "ml-2 h-2 w-22 rounded-full",
|
|
28090
28126
|
style: { background: palette.barAccent }
|
|
28091
28127
|
})
|
|
28092
28128
|
]
|
|
@@ -28097,7 +28133,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
28097
28133
|
children: "本版变更"
|
|
28098
28134
|
}),
|
|
28099
28135
|
data.releaseNotes.available ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28100
|
-
className: "runtime-release-notes relative mt-
|
|
28136
|
+
className: "runtime-release-notes relative mt-15",
|
|
28101
28137
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Markdown, {
|
|
28102
28138
|
components: {
|
|
28103
28139
|
h2: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", {
|
|
@@ -28127,7 +28163,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
28127
28163
|
children
|
|
28128
28164
|
}),
|
|
28129
28165
|
li: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", {
|
|
28130
|
-
className: `relative break-
|
|
28166
|
+
className: `relative wrap-break-word text-[32px] font-semibold leading-[1.65] before:absolute before:-left-8 before:top-[0.74em] before:h-2.5 before:w-2.5 before:rounded-full ${palette.noteBulletClass}`,
|
|
28131
28167
|
style: { color: palette.noteBody },
|
|
28132
28168
|
children
|
|
28133
28169
|
}),
|
|
@@ -28153,7 +28189,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
28153
28189
|
children: data.releaseNotes.markdown
|
|
28154
28190
|
})
|
|
28155
28191
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28156
|
-
className: "relative mt-
|
|
28192
|
+
className: "relative mt-15 flex items-start gap-6",
|
|
28157
28193
|
style: { color: palette.warnText },
|
|
28158
28194
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TriangleAlert, { className: "mt-1 h-11 w-11 shrink-0" }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28159
28195
|
className: "text-[34px] font-black",
|
|
@@ -28166,7 +28202,7 @@ var RuntimeReport = import_react.memo((props) => {
|
|
|
28166
28202
|
]
|
|
28167
28203
|
}),
|
|
28168
28204
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("footer", {
|
|
28169
|
-
className: "mt-
|
|
28205
|
+
className: "mt-20 flex items-end justify-between gap-12 whitespace-nowrap text-[22px] font-semibold text-foreground/32",
|
|
28170
28206
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "仅包含经过脱敏的本地运行信息" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
28171
28207
|
className: "font-mono",
|
|
28172
28208
|
children: data.snapshotAt
|
|
@@ -42043,8 +42079,9 @@ var douyinLogin = async (e) => {
|
|
|
42043
42079
|
if (!hasTtwid) logger.warn(" - 缺少 ttwid");
|
|
42044
42080
|
}
|
|
42045
42081
|
logger.debug("开始保存 cookies...");
|
|
42046
|
-
Config.Modify("amagi", "cookies.douyin", cookieString);
|
|
42047
|
-
|
|
42082
|
+
await Config.Modify("amagi", "cookies.douyin", cookieString);
|
|
42083
|
+
const reloaded = reloadAmagiConfig();
|
|
42084
|
+
logger.debug(`cookies 保存完成,Amagi Client ${reloaded ? "已重载" : "配置未变化"}`);
|
|
42048
42085
|
await e.reply("登录成功!用户登录凭证已保存至配置", { reply: true });
|
|
42049
42086
|
await Promise.all(msg_id.map(async (id) => {
|
|
42050
42087
|
await e.bot.recallMsg(e.contact, id);
|
|
@@ -44151,8 +44188,36 @@ var signatureVerificationMiddleware = (req, res, next) => {
|
|
|
44151
44188
|
}
|
|
44152
44189
|
};
|
|
44153
44190
|
//#endregion
|
|
44154
|
-
//#region src/module/server/routes/
|
|
44191
|
+
//#region src/module/server/routes/amagi.ts
|
|
44155
44192
|
var import_lib = /* @__PURE__ */ __toESM(require_lib(), 1);
|
|
44193
|
+
/** 创建使用当前配置的 Amagi 平台 Router。 */
|
|
44194
|
+
var createPlatformRouters = () => ({
|
|
44195
|
+
bilibili: createBilibiliRoutes(Config.amagi.cookies.bilibili),
|
|
44196
|
+
douyin: createDouyinRoutes(Config.amagi.cookies.douyin),
|
|
44197
|
+
kuaishou: createKuaishouRoutes(Config.amagi.cookies.kuaishou),
|
|
44198
|
+
xiaohongshu: createXiaohongshuRoutes(Config.amagi.cookies.xiaohongshu)
|
|
44199
|
+
});
|
|
44200
|
+
/**
|
|
44201
|
+
* 创建一个挂载地址保持不变、内部平台 Router 可热切换的 Amagi Router。
|
|
44202
|
+
*
|
|
44203
|
+
* Express 挂载后无法直接替换中间件栈,因此外层 Router 始终保持稳定,
|
|
44204
|
+
* 每次请求再转发给当前的平台 Router;配置重载时只需原子替换内部引用。
|
|
44205
|
+
*/
|
|
44206
|
+
var createReloadableAmagiRouter = () => {
|
|
44207
|
+
const router = express.Router();
|
|
44208
|
+
let platformRouters = createPlatformRouters();
|
|
44209
|
+
router.use("/bilibili", (req, res, next) => platformRouters.bilibili(req, res, next));
|
|
44210
|
+
router.use("/douyin", (req, res, next) => platformRouters.douyin(req, res, next));
|
|
44211
|
+
router.use("/kuaishou", (req, res, next) => platformRouters.kuaishou(req, res, next));
|
|
44212
|
+
router.use("/xiaohongshu", (req, res, next) => platformRouters.xiaohongshu(req, res, next));
|
|
44213
|
+
registerAmagiReloadListener(() => {
|
|
44214
|
+
platformRouters = createPlatformRouters();
|
|
44215
|
+
logger.debug("[AmagiRouter] 平台 Router 已使用最新配置重建");
|
|
44216
|
+
});
|
|
44217
|
+
return router;
|
|
44218
|
+
};
|
|
44219
|
+
//#endregion
|
|
44220
|
+
//#region src/module/server/routes/api.ts
|
|
44156
44221
|
/**
|
|
44157
44222
|
* API 路由注册
|
|
44158
44223
|
*/
|
|
@@ -44231,17 +44296,20 @@ if (process.env.NODE_ENV !== "test") checkPort(3780).then((isOpen) => {
|
|
|
44231
44296
|
var app$1 = express.Router();
|
|
44232
44297
|
app$1.use(express.json());
|
|
44233
44298
|
app$1.use(express.urlencoded({ extended: true }));
|
|
44234
|
-
if (Config.amagi.APIServer && Config.amagi.APIServerMount)
|
|
44235
|
-
|
|
44236
|
-
|
|
44237
|
-
|
|
44238
|
-
|
|
44239
|
-
|
|
44240
|
-
|
|
44241
|
-
|
|
44242
|
-
|
|
44243
|
-
|
|
44244
|
-
}
|
|
44299
|
+
if (Config.amagi.APIServer && Config.amagi.APIServerMount) app$1.use("/amagi/api", createReloadableAmagiRouter());
|
|
44300
|
+
else if (Config.amagi.APIServer) {
|
|
44301
|
+
const amagiServer = express();
|
|
44302
|
+
amagiServer.use(express.json());
|
|
44303
|
+
amagiServer.use(express.urlencoded({ extended: true }));
|
|
44304
|
+
amagiServer.get("/", (_req, res) => res.redirect(301, "https://amagi.apifox.cn"));
|
|
44305
|
+
amagiServer.get("/docs", (_req, res) => res.redirect(301, "https://amagi.apifox.cn"));
|
|
44306
|
+
amagiServer.use("/api", createReloadableAmagiRouter());
|
|
44307
|
+
amagiServer.listen(Config.amagi.APIServerPort, "::", () => {
|
|
44308
|
+
logger.mark(`[karin-plugin-kkk] Amagi server listening on http://localhost:${Config.amagi.APIServerPort}`);
|
|
44309
|
+
}).on("error", (error) => {
|
|
44310
|
+
logger.error(`[karin-plugin-kkk] Amagi API Server 启动失败: ${error.message}`);
|
|
44311
|
+
});
|
|
44312
|
+
}
|
|
44245
44313
|
app$1.use("/v1", apiRouter);
|
|
44246
44314
|
app$1.use(SSR_PREFIX, ssrRouter);
|
|
44247
44315
|
app$1.use(ASSETS_PREFIX, staticRouter);
|
|
@@ -44292,4 +44360,4 @@ mkdirSync(`${karinPathBase}/${Root.pluginName}/data`);
|
|
|
44292
44360
|
mkdirSync(Common.tempDri.images);
|
|
44293
44361
|
mkdirSync(Common.tempDri.video);
|
|
44294
44362
|
//#endregion
|
|
44295
|
-
export { createImageNode as $,
|
|
44363
|
+
export { createImageNode as $, XiaohongshuMethodRoutes as $n, emitHttpRequest as $r, DynamicType as $t, testWrapWithErrorHandler as A, logger$2 as An, BilibiliAv2BvParamsSchema as Ar, BilibiliMethodMapping as At, StatisticsDBBase as B, kuaishouApiUrls as Bn, BilibiliLiveParamsSchema as Br, BilibiliInternalMethods as Bt, changelog as C, parseDmSegMobileReply as Cn, DouyinUserParamsSchema as Cr, reloadAmagiConfig as Ct, dylogin as D, httpLogger as Dn, BilibiliArticleCardParamsSchema as Dr, amagi as Dt, biLogin as E, qtparam as En, BilibiliApplyCaptchaParamsSchema as Er, CreateApp as Et, douyinDBInstance as F, createBoundXiaohongshuFetcher as Fn, BilibiliCommentParamsSchema as Fr, XiaohongshuApiRoutes as Ft, renderRichTextToReact as G, bilibiliFetcher$1 as Gn, BilibiliUserParamsSchema as Gr, KuaishouFetcherMethods as Gt, BilibiliDBBase as H, createBoundDouyinFetcher as Hn, BilibiliMethodRoutes as Hr, DouyinFetcherMethods as Ht, getBilibiliDB as I, xiaohongshuFetcher$1 as In, BilibiliCommentReplyParamsSchema as Ir, XiaohongshuMethodMapping as It, createCodeBlockNode as J, createSuccessResponse$1 as Jn, BilibiliVideoDownloadParamsSchema as Jr, MethodMaps as Jt, createAtNode as K, createBoundBilibiliFetcher as Kn, BilibiliValidateCaptchaParamsSchema as Kr, KuaishouInternalMethods as Kt, getDouyinDB as L, createBoundKuaishouFetcher as Ln, BilibiliDanmakuParamsSchema as Lr, getApiRoute as Lt, webConfig as M, fetchResponse as Mn, BilibiliBangumiStreamParamsSchema as Mr, DouyinMethodMapping as Mt, bilibiliDBInstance as N, getHeadersAndData as Nn, BilibiliBv2AvParamsSchema as Nr, KuaishouApiRoutes as Nt, removeOldFiles as O, initLogger as On, BilibiliArticleInfoParamsSchema as Or, amagiClient as Ot, cleanOldDynamicCache as P, isNetworkErrorResult as Pn, BilibiliColumnInfoParamsSchema as Pr, KuaishouMethodMapping as Pt, createHorizontalRuleNode as Q, validateXiaohongshuParams as Qn, emitApiSuccess as Qr, toFetcherMethod as Qt, getStatisticsDB as R, kuaishouFetcher$1 as Rn, BilibiliDynamicParamsSchema as Rr, getEnglishMethodName as Rt, setdyPush as S, wbi_sign as Sn, DouyinUserListParamsSchema as Sr, registerAmagiReloadListener as St, version as T, bv2av as Tn, DouyinWorkParamsSchema as Tr, xiaohongshuFetcher as Tt, reactServerRender as U, douyinApiUrls as Un, BilibiliQrcodeParamsSchema as Ur, DouyinInternalMethods as Ut, DouyinDBBase as V, douyinFetcher$1 as Vn, BilibiliLoginParamsSchema as Vr, BilibiliMethodToFetcher as Vt, renderVideoPreviewPage as W, douyinSign as Wn, BilibiliQrcodeStatusParamsSchema as Wr, DouyinMethodToFetcher as Wt, createHashtagNode as X, validateDouyinParams as Xn, amagiEvents as Xr, XiaohongshuInternalMethods as Xt, createEmojiNode as Y, validateBilibiliParams as Yn, BilibiliVideoParamsSchema as Yr, XiaohongshuFetcherMethods as Yt, createHeadingNode as Z, validateKuaishouParams as Zn, emitApiError as Zr, XiaohongshuMethodToFetcher as Zt, douyinPush as _, createBilibiliRoutes as _n, DouyinLiveRoomParamsSchema as _r, AmagiError as _t, bilibiliAPP as a, emitLogMark as ai, createXiaohongshuRoutes as an, KuaishouLiveRoomInfoParamsSchema as ar, createMentionNode as at, globalIgnore as b, handleError as bn, DouyinQrcodeParamsSchema as br, douyinFetcher as bt, prefix as c, emitNetworkRetry as ci, kuaishouUtils as cn, KuaishouUserWorkListParamsSchema as cr, createSearchKeywordNode as ct, globalStatistics as d, bilibiliApiUrls as di, kuaishou$1 as dn, DouyinCommentParamsSchema as dr, createViewPictureNode as dt, emitHttpResponse as ei, AdditionalType as en, XiaohongshuValidationSchemas as er, createLineBreakNode as et, groupStatistics as f, getBilibiliData as fi, douyinUtils as fn, DouyinCommentReplyParamsSchema as fr, createVoteNode as ft, changeBotID as g, bilibiliUtils as gn, DouyinHotWordsParamsSchema as gr, AmagiBase as gt, bilibiliPushList as h, Root as hi, douyin$1 as hn, DouyinEmojiProParamsSchema as hr, normalizeRichTextNodes as ht, update as i, emitLogInfo as ii, xiaohongshuUtils as in, KuaishouEmojiParamsSchema as ir, createLotteryNode as it, template_default as j, fetchData as jn, BilibiliBangumiInfoParamsSchema as jr, DouyinApiRoutes as jt, task as k, logMiddleware as kn, BilibiliArticleParamsSchema as kr, BilibiliApiRoutes as kt, xiaohongshuAPP as l, bilibili$1 as li, createKuaishouRoutes as ln, KuaishouValidationSchemas as lr, createTextNode as lt, bilibiliPush as m, getKuaishouData as mi, createBoundDouyinApi as mn, DouyinEmojiListParamsSchema as mr, extractRichTextPlainText as mt, kkkUpdateCommand as n, emitLogDebug as ni, CommentType as nn, xiaohongshuSign as nr, createListItemNode as nt, douyinAPP as o, emitLogWarn as oi, createBoundXiaohongshuApi as on, KuaishouMethodRoutes as or, createParagraphNode as ot, qrLogin as p, getDouyinData as pi, createDouyinRoutes as pn, DouyinDanmakuParamsSchema as pr, createWebLinkNode as pt, createBlockquoteNode as q, createErrorResponse as qn, BilibiliValidationSchemas as qr, KuaishouMethodToFetcher as qt, kkkUpdateTest as r, emitLogError as ri, createAmagiClient as rn, KuaishouCommentParamsSchema as rr, createListNode as rt, kuaishouAPP as s, emitNetworkError as si, xiaohongshu$1 as sn, KuaishouUserProfileParamsSchema as sr, createRichTextDocument as st, kkkUpdate as t, emitLog as ti, MajorType as tn, xiaohongshuApiUrls as tr, createLinkCardNode as tt, testPush as u, createBoundBilibiliApi as ui, createBoundKuaishouApi as un, KuaishouVideoParamsSchema as ur, createTopicNode as ut, douyinPushList as v, ApiError as vn, DouyinMethodRoutes as vr, SOFT_ERROR_CODES as vt, help as w, av2bv as wn, DouyinValidationSchemas as wr, softFetch as wt, setbiliPush as x, bilibiliErrorCodeMap as xn, DouyinSearchParamsSchema as xr, kuaishouFetcher as xt, forcePush as y, ValidationError as yn, DouyinMusicParamsSchema as yr, bilibiliFetcher as yt, initAllDatabases as z, kuaishouSign as zn, BilibiliEmojiParamsSchema as zr, BilibiliFetcherMethods as zt };
|
package/lib/karin-plugin-kkk.css
CHANGED
|
@@ -13033,12 +13033,12 @@
|
|
|
13033
13033
|
top: calc(var(--spacing) * -100);
|
|
13034
13034
|
}
|
|
13035
13035
|
|
|
13036
|
-
.-top-
|
|
13037
|
-
top: calc(var(--spacing) * -
|
|
13036
|
+
.-top-120 {
|
|
13037
|
+
top: calc(var(--spacing) * -120);
|
|
13038
13038
|
}
|
|
13039
13039
|
|
|
13040
|
-
.-top
|
|
13041
|
-
top: -
|
|
13040
|
+
.-top-125 {
|
|
13041
|
+
top: calc(var(--spacing) * -125);
|
|
13042
13042
|
}
|
|
13043
13043
|
|
|
13044
13044
|
.top-0 {
|
|
@@ -13109,6 +13109,10 @@
|
|
|
13109
13109
|
top: calc(var(--spacing) * 150);
|
|
13110
13110
|
}
|
|
13111
13111
|
|
|
13112
|
+
.top-200 {
|
|
13113
|
+
top: calc(var(--spacing) * 200);
|
|
13114
|
+
}
|
|
13115
|
+
|
|
13112
13116
|
.top-450 {
|
|
13113
13117
|
top: calc(var(--spacing) * 450);
|
|
13114
13118
|
}
|
|
@@ -13137,10 +13141,6 @@
|
|
|
13137
13141
|
top: 80%;
|
|
13138
13142
|
}
|
|
13139
13143
|
|
|
13140
|
-
.top-\[110px\] {
|
|
13141
|
-
top: 110px;
|
|
13142
|
-
}
|
|
13143
|
-
|
|
13144
13144
|
.-right-1 {
|
|
13145
13145
|
right: calc(var(--spacing) * -1);
|
|
13146
13146
|
}
|
|
@@ -13185,12 +13185,12 @@
|
|
|
13185
13185
|
right: calc(var(--spacing) * -100);
|
|
13186
13186
|
}
|
|
13187
13187
|
|
|
13188
|
-
.-right
|
|
13189
|
-
right: -
|
|
13188
|
+
.-right-105 {
|
|
13189
|
+
right: calc(var(--spacing) * -105);
|
|
13190
13190
|
}
|
|
13191
13191
|
|
|
13192
|
-
.-right
|
|
13193
|
-
right: -
|
|
13192
|
+
.-right-130 {
|
|
13193
|
+
right: calc(var(--spacing) * -130);
|
|
13194
13194
|
}
|
|
13195
13195
|
|
|
13196
13196
|
.right-0 {
|
|
@@ -13321,16 +13321,12 @@
|
|
|
13321
13321
|
bottom: calc(var(--spacing) * -75);
|
|
13322
13322
|
}
|
|
13323
13323
|
|
|
13324
|
-
.-bottom-
|
|
13325
|
-
bottom: calc(var(--spacing) * -
|
|
13324
|
+
.-bottom-90 {
|
|
13325
|
+
bottom: calc(var(--spacing) * -90);
|
|
13326
13326
|
}
|
|
13327
13327
|
|
|
13328
|
-
.-bottom
|
|
13329
|
-
bottom: -
|
|
13330
|
-
}
|
|
13331
|
-
|
|
13332
|
-
.-bottom-\[480px\] {
|
|
13333
|
-
bottom: -480px;
|
|
13328
|
+
.-bottom-120 {
|
|
13329
|
+
bottom: calc(var(--spacing) * -120);
|
|
13334
13330
|
}
|
|
13335
13331
|
|
|
13336
13332
|
.bottom-0 {
|
|
@@ -13457,16 +13453,16 @@
|
|
|
13457
13453
|
left: calc(var(--spacing) * -75);
|
|
13458
13454
|
}
|
|
13459
13455
|
|
|
13460
|
-
.-left-
|
|
13461
|
-
left: calc(var(--spacing) * -
|
|
13456
|
+
.-left-80 {
|
|
13457
|
+
left: calc(var(--spacing) * -80);
|
|
13462
13458
|
}
|
|
13463
13459
|
|
|
13464
|
-
.-left
|
|
13465
|
-
left: -
|
|
13460
|
+
.-left-100 {
|
|
13461
|
+
left: calc(var(--spacing) * -100);
|
|
13466
13462
|
}
|
|
13467
13463
|
|
|
13468
|
-
.-left
|
|
13469
|
-
left: -
|
|
13464
|
+
.-left-130 {
|
|
13465
|
+
left: calc(var(--spacing) * -130);
|
|
13470
13466
|
}
|
|
13471
13467
|
|
|
13472
13468
|
.left-0 {
|
|
@@ -13553,6 +13549,10 @@
|
|
|
13553
13549
|
left: calc(var(--spacing) * 100);
|
|
13554
13550
|
}
|
|
13555
13551
|
|
|
13552
|
+
.left-115 {
|
|
13553
|
+
left: calc(var(--spacing) * 115);
|
|
13554
|
+
}
|
|
13555
|
+
|
|
13556
13556
|
.left-\[-20\%\] {
|
|
13557
13557
|
left: -20%;
|
|
13558
13558
|
}
|
|
@@ -13775,6 +13775,10 @@
|
|
|
13775
13775
|
margin-top: calc(var(--spacing) * 10);
|
|
13776
13776
|
}
|
|
13777
13777
|
|
|
13778
|
+
.mt-11 {
|
|
13779
|
+
margin-top: calc(var(--spacing) * 11);
|
|
13780
|
+
}
|
|
13781
|
+
|
|
13778
13782
|
.mt-12 {
|
|
13779
13783
|
margin-top: calc(var(--spacing) * 12);
|
|
13780
13784
|
}
|
|
@@ -13799,18 +13803,34 @@
|
|
|
13799
13803
|
margin-top: calc(var(--spacing) * 18);
|
|
13800
13804
|
}
|
|
13801
13805
|
|
|
13806
|
+
.mt-19 {
|
|
13807
|
+
margin-top: calc(var(--spacing) * 19);
|
|
13808
|
+
}
|
|
13809
|
+
|
|
13802
13810
|
.mt-20 {
|
|
13803
13811
|
margin-top: calc(var(--spacing) * 20);
|
|
13804
13812
|
}
|
|
13805
13813
|
|
|
13814
|
+
.mt-23 {
|
|
13815
|
+
margin-top: calc(var(--spacing) * 23);
|
|
13816
|
+
}
|
|
13817
|
+
|
|
13806
13818
|
.mt-25 {
|
|
13807
13819
|
margin-top: calc(var(--spacing) * 25);
|
|
13808
13820
|
}
|
|
13809
13821
|
|
|
13822
|
+
.mt-30 {
|
|
13823
|
+
margin-top: calc(var(--spacing) * 30);
|
|
13824
|
+
}
|
|
13825
|
+
|
|
13810
13826
|
.mt-32 {
|
|
13811
13827
|
margin-top: calc(var(--spacing) * 32);
|
|
13812
13828
|
}
|
|
13813
13829
|
|
|
13830
|
+
.mt-32\.5 {
|
|
13831
|
+
margin-top: calc(var(--spacing) * 32.5);
|
|
13832
|
+
}
|
|
13833
|
+
|
|
13814
13834
|
.mt-35 {
|
|
13815
13835
|
margin-top: calc(var(--spacing) * 35);
|
|
13816
13836
|
}
|
|
@@ -13819,38 +13839,6 @@
|
|
|
13819
13839
|
margin-top: 37.5px;
|
|
13820
13840
|
}
|
|
13821
13841
|
|
|
13822
|
-
.mt-\[44px\] {
|
|
13823
|
-
margin-top: 44px;
|
|
13824
|
-
}
|
|
13825
|
-
|
|
13826
|
-
.mt-\[60px\] {
|
|
13827
|
-
margin-top: 60px;
|
|
13828
|
-
}
|
|
13829
|
-
|
|
13830
|
-
.mt-\[64px\] {
|
|
13831
|
-
margin-top: 64px;
|
|
13832
|
-
}
|
|
13833
|
-
|
|
13834
|
-
.mt-\[76px\] {
|
|
13835
|
-
margin-top: 76px;
|
|
13836
|
-
}
|
|
13837
|
-
|
|
13838
|
-
.mt-\[80px\] {
|
|
13839
|
-
margin-top: 80px;
|
|
13840
|
-
}
|
|
13841
|
-
|
|
13842
|
-
.mt-\[92px\] {
|
|
13843
|
-
margin-top: 92px;
|
|
13844
|
-
}
|
|
13845
|
-
|
|
13846
|
-
.mt-\[120px\] {
|
|
13847
|
-
margin-top: 120px;
|
|
13848
|
-
}
|
|
13849
|
-
|
|
13850
|
-
.mt-\[130px\] {
|
|
13851
|
-
margin-top: 130px;
|
|
13852
|
-
}
|
|
13853
|
-
|
|
13854
13842
|
.mt-auto {
|
|
13855
13843
|
margin-top: auto;
|
|
13856
13844
|
}
|
|
@@ -14370,6 +14358,10 @@
|
|
|
14370
14358
|
height: calc(var(--spacing) * 100);
|
|
14371
14359
|
}
|
|
14372
14360
|
|
|
14361
|
+
.h-105 {
|
|
14362
|
+
height: calc(var(--spacing) * 105);
|
|
14363
|
+
}
|
|
14364
|
+
|
|
14373
14365
|
.h-110 {
|
|
14374
14366
|
height: calc(var(--spacing) * 110);
|
|
14375
14367
|
}
|
|
@@ -14434,10 +14426,22 @@
|
|
|
14434
14426
|
height: calc(var(--spacing) * 280);
|
|
14435
14427
|
}
|
|
14436
14428
|
|
|
14429
|
+
.h-287\.5 {
|
|
14430
|
+
height: calc(var(--spacing) * 287.5);
|
|
14431
|
+
}
|
|
14432
|
+
|
|
14437
14433
|
.h-300 {
|
|
14438
14434
|
height: calc(var(--spacing) * 300);
|
|
14439
14435
|
}
|
|
14440
14436
|
|
|
14437
|
+
.h-312\.5 {
|
|
14438
|
+
height: calc(var(--spacing) * 312.5);
|
|
14439
|
+
}
|
|
14440
|
+
|
|
14441
|
+
.h-337\.5 {
|
|
14442
|
+
height: calc(var(--spacing) * 337.5);
|
|
14443
|
+
}
|
|
14444
|
+
|
|
14441
14445
|
.h-350 {
|
|
14442
14446
|
height: calc(var(--spacing) * 350);
|
|
14443
14447
|
}
|
|
@@ -14462,10 +14466,6 @@
|
|
|
14462
14466
|
height: 1em;
|
|
14463
14467
|
}
|
|
14464
14468
|
|
|
14465
|
-
.h-\[12px\] {
|
|
14466
|
-
height: 12px;
|
|
14467
|
-
}
|
|
14468
|
-
|
|
14469
14469
|
.h-\[24\%\] {
|
|
14470
14470
|
height: 24%;
|
|
14471
14471
|
}
|
|
@@ -14502,26 +14502,6 @@
|
|
|
14502
14502
|
height: 300px;
|
|
14503
14503
|
}
|
|
14504
14504
|
|
|
14505
|
-
.h-\[420px\] {
|
|
14506
|
-
height: 420px;
|
|
14507
|
-
}
|
|
14508
|
-
|
|
14509
|
-
.h-\[900px\] {
|
|
14510
|
-
height: 900px;
|
|
14511
|
-
}
|
|
14512
|
-
|
|
14513
|
-
.h-\[1150px\] {
|
|
14514
|
-
height: 1150px;
|
|
14515
|
-
}
|
|
14516
|
-
|
|
14517
|
-
.h-\[1250px\] {
|
|
14518
|
-
height: 1250px;
|
|
14519
|
-
}
|
|
14520
|
-
|
|
14521
|
-
.h-\[1350px\] {
|
|
14522
|
-
height: 1350px;
|
|
14523
|
-
}
|
|
14524
|
-
|
|
14525
14505
|
.h-\[calc\(100\%-160px\)\] {
|
|
14526
14506
|
height: calc(100% - 160px);
|
|
14527
14507
|
}
|
|
@@ -14614,12 +14594,12 @@
|
|
|
14614
14594
|
min-height: calc(var(--spacing) * 360);
|
|
14615
14595
|
}
|
|
14616
14596
|
|
|
14617
|
-
.min-h-
|
|
14618
|
-
min-height: calc(var(--spacing) *
|
|
14597
|
+
.min-h-455 {
|
|
14598
|
+
min-height: calc(var(--spacing) * 455);
|
|
14619
14599
|
}
|
|
14620
14600
|
|
|
14621
|
-
.min-h
|
|
14622
|
-
min-height:
|
|
14601
|
+
.min-h-500 {
|
|
14602
|
+
min-height: calc(var(--spacing) * 500);
|
|
14623
14603
|
}
|
|
14624
14604
|
|
|
14625
14605
|
.min-h-\[calc\(100vh-200px\)\] {
|
|
@@ -14718,6 +14698,10 @@
|
|
|
14718
14698
|
width: calc(var(--spacing) * 20);
|
|
14719
14699
|
}
|
|
14720
14700
|
|
|
14701
|
+
.w-22 {
|
|
14702
|
+
width: calc(var(--spacing) * 22);
|
|
14703
|
+
}
|
|
14704
|
+
|
|
14721
14705
|
.w-23 {
|
|
14722
14706
|
width: calc(var(--spacing) * 23);
|
|
14723
14707
|
}
|
|
@@ -14870,6 +14854,10 @@
|
|
|
14870
14854
|
width: calc(var(--spacing) * 200);
|
|
14871
14855
|
}
|
|
14872
14856
|
|
|
14857
|
+
.w-205 {
|
|
14858
|
+
width: calc(var(--spacing) * 205);
|
|
14859
|
+
}
|
|
14860
|
+
|
|
14873
14861
|
.w-225 {
|
|
14874
14862
|
width: calc(var(--spacing) * 225);
|
|
14875
14863
|
}
|
|
@@ -14898,6 +14886,10 @@
|
|
|
14898
14886
|
width: calc(var(--spacing) * 315);
|
|
14899
14887
|
}
|
|
14900
14888
|
|
|
14889
|
+
.w-337\.5 {
|
|
14890
|
+
width: calc(var(--spacing) * 337.5);
|
|
14891
|
+
}
|
|
14892
|
+
|
|
14901
14893
|
.w-350 {
|
|
14902
14894
|
width: calc(var(--spacing) * 350);
|
|
14903
14895
|
}
|
|
@@ -14906,6 +14898,10 @@
|
|
|
14906
14898
|
width: calc(var(--spacing) * 360);
|
|
14907
14899
|
}
|
|
14908
14900
|
|
|
14901
|
+
.w-375 {
|
|
14902
|
+
width: calc(var(--spacing) * 375);
|
|
14903
|
+
}
|
|
14904
|
+
|
|
14909
14905
|
.w-400 {
|
|
14910
14906
|
width: calc(var(--spacing) * 400);
|
|
14911
14907
|
}
|
|
@@ -14950,10 +14946,6 @@
|
|
|
14950
14946
|
width: 72px;
|
|
14951
14947
|
}
|
|
14952
14948
|
|
|
14953
|
-
.w-\[88px\] {
|
|
14954
|
-
width: 88px;
|
|
14955
|
-
}
|
|
14956
|
-
|
|
14957
14949
|
.w-\[90\%\] {
|
|
14958
14950
|
width: 90%;
|
|
14959
14951
|
}
|
|
@@ -14970,26 +14962,6 @@
|
|
|
14970
14962
|
width: 300px;
|
|
14971
14963
|
}
|
|
14972
14964
|
|
|
14973
|
-
.w-\[820px\] {
|
|
14974
|
-
width: 820px;
|
|
14975
|
-
}
|
|
14976
|
-
|
|
14977
|
-
.w-\[1000px\] {
|
|
14978
|
-
width: 1000px;
|
|
14979
|
-
}
|
|
14980
|
-
|
|
14981
|
-
.w-\[1200px\] {
|
|
14982
|
-
width: 1200px;
|
|
14983
|
-
}
|
|
14984
|
-
|
|
14985
|
-
.w-\[1350px\] {
|
|
14986
|
-
width: 1350px;
|
|
14987
|
-
}
|
|
14988
|
-
|
|
14989
|
-
.w-\[1500px\] {
|
|
14990
|
-
width: 1500px;
|
|
14991
|
-
}
|
|
14992
|
-
|
|
14993
14965
|
.w-\[calc\(100\%-160px\)\] {
|
|
14994
14966
|
width: calc(100% - 160px);
|
|
14995
14967
|
}
|
|
@@ -15038,6 +15010,10 @@
|
|
|
15038
15010
|
max-width: calc(var(--spacing) * 80);
|
|
15039
15011
|
}
|
|
15040
15012
|
|
|
15013
|
+
.max-w-105 {
|
|
15014
|
+
max-width: calc(var(--spacing) * 105);
|
|
15015
|
+
}
|
|
15016
|
+
|
|
15041
15017
|
.max-w-112\.5 {
|
|
15042
15018
|
max-width: calc(var(--spacing) * 112.5);
|
|
15043
15019
|
}
|
|
@@ -15074,10 +15050,6 @@
|
|
|
15074
15050
|
max-width: 310px;
|
|
15075
15051
|
}
|
|
15076
15052
|
|
|
15077
|
-
.max-w-\[420px\] {
|
|
15078
|
-
max-width: 420px;
|
|
15079
|
-
}
|
|
15080
|
-
|
|
15081
15053
|
.max-w-\[650px\] {
|
|
15082
15054
|
max-width: 650px;
|
|
15083
15055
|
}
|
|
@@ -15260,6 +15232,10 @@
|
|
|
15260
15232
|
rotate: -20deg;
|
|
15261
15233
|
}
|
|
15262
15234
|
|
|
15235
|
+
.-rotate-90 {
|
|
15236
|
+
rotate: -90deg;
|
|
15237
|
+
}
|
|
15238
|
+
|
|
15263
15239
|
.rotate-12 {
|
|
15264
15240
|
rotate: 12deg;
|
|
15265
15241
|
}
|
|
@@ -15620,12 +15596,12 @@
|
|
|
15620
15596
|
column-gap: calc(var(--spacing) * 16);
|
|
15621
15597
|
}
|
|
15622
15598
|
|
|
15623
|
-
.gap-x-
|
|
15624
|
-
column-gap: calc(var(--spacing) *
|
|
15599
|
+
.gap-x-18 {
|
|
15600
|
+
column-gap: calc(var(--spacing) * 18);
|
|
15625
15601
|
}
|
|
15626
15602
|
|
|
15627
|
-
.gap-x
|
|
15628
|
-
column-gap:
|
|
15603
|
+
.gap-x-24 {
|
|
15604
|
+
column-gap: calc(var(--spacing) * 24);
|
|
15629
15605
|
}
|
|
15630
15606
|
|
|
15631
15607
|
:where(.-space-x-5 > :not(:last-child)) {
|
|
@@ -15700,10 +15676,6 @@
|
|
|
15700
15676
|
row-gap: calc(var(--spacing) * 16);
|
|
15701
15677
|
}
|
|
15702
15678
|
|
|
15703
|
-
.gap-y-\[64px\] {
|
|
15704
|
-
row-gap: 64px;
|
|
15705
|
-
}
|
|
15706
|
-
|
|
15707
15679
|
:where(.divide-y > :not(:last-child)) {
|
|
15708
15680
|
--tw-divide-y-reverse: 0;
|
|
15709
15681
|
border-bottom-style: var(--tw-border-style);
|
|
@@ -17476,6 +17448,10 @@
|
|
|
17476
17448
|
padding-inline: calc(var(--spacing) * 20);
|
|
17477
17449
|
}
|
|
17478
17450
|
|
|
17451
|
+
.px-22 {
|
|
17452
|
+
padding-inline: calc(var(--spacing) * 22);
|
|
17453
|
+
}
|
|
17454
|
+
|
|
17479
17455
|
.px-24 {
|
|
17480
17456
|
padding-inline: calc(var(--spacing) * 24);
|
|
17481
17457
|
}
|
|
@@ -17492,10 +17468,6 @@
|
|
|
17492
17468
|
padding-inline: .48em;
|
|
17493
17469
|
}
|
|
17494
17470
|
|
|
17495
|
-
.px-\[88px\] {
|
|
17496
|
-
padding-inline: 88px;
|
|
17497
|
-
}
|
|
17498
|
-
|
|
17499
17471
|
.py-0\.5 {
|
|
17500
17472
|
padding-block: calc(var(--spacing) * .5);
|
|
17501
17473
|
}
|
|
@@ -17644,10 +17616,6 @@
|
|
|
17644
17616
|
padding-top: calc(var(--spacing) * 40);
|
|
17645
17617
|
}
|
|
17646
17618
|
|
|
17647
|
-
.pt-\[80px\] {
|
|
17648
|
-
padding-top: 80px;
|
|
17649
|
-
}
|
|
17650
|
-
|
|
17651
17619
|
.pr-0 {
|
|
17652
17620
|
padding-right: 0;
|
|
17653
17621
|
}
|
|
@@ -17740,10 +17708,6 @@
|
|
|
17740
17708
|
padding-bottom: calc(var(--spacing) * 48);
|
|
17741
17709
|
}
|
|
17742
17710
|
|
|
17743
|
-
.pb-\[64px\] {
|
|
17744
|
-
padding-bottom: 64px;
|
|
17745
|
-
}
|
|
17746
|
-
|
|
17747
17711
|
.pl-2 {
|
|
17748
17712
|
padding-left: calc(var(--spacing) * 2);
|
|
17749
17713
|
}
|
|
@@ -18177,8 +18141,8 @@
|
|
|
18177
18141
|
font-size: 220px;
|
|
18178
18142
|
}
|
|
18179
18143
|
|
|
18180
|
-
.text-\[
|
|
18181
|
-
font-size:
|
|
18144
|
+
.text-\[400px\] {
|
|
18145
|
+
font-size: 400px;
|
|
18182
18146
|
}
|
|
18183
18147
|
|
|
18184
18148
|
.leading-10 {
|
|
@@ -18496,7 +18460,7 @@
|
|
|
18496
18460
|
letter-spacing: var(--tracking-widest);
|
|
18497
18461
|
}
|
|
18498
18462
|
|
|
18499
|
-
.
|
|
18463
|
+
.wrap-break-word {
|
|
18500
18464
|
overflow-wrap: break-word;
|
|
18501
18465
|
}
|
|
18502
18466
|
|
package/lib/root.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hi as Root } from "./core_chunk/main.js";
|
|
2
2
|
export { Root };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "karin-plugin-kkk",
|
|
3
|
-
"version": "2.40.
|
|
3
|
+
"version": "2.40.2",
|
|
4
4
|
"description": "Karin 的「抖音」「B 站」视频解析/动态推送插件",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"karin",
|
|
@@ -89,5 +89,5 @@
|
|
|
89
89
|
"web": "./lib/web.config.js",
|
|
90
90
|
"ts-web": "./src/web.config.ts"
|
|
91
91
|
},
|
|
92
|
-
"timestamp": "2026-07-
|
|
92
|
+
"timestamp": "2026-07-19T04:05:14.269Z"
|
|
93
93
|
}
|