karin-plugin-kkk 2.40.1 → 2.40.3
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 +116 -48
- package/lib/karin-plugin-kkk.css +32 -49
- 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.3](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.40.2...v2.40.3) (2026-07-29)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### 💄 UI 优化
|
|
9
|
+
|
|
10
|
+
* **douyiin:** 优化图文作品详情组件中描述板块的行间距 ([43d6cdc](https://github.com/ikenxuan/karin-plugin-kkk/commit/43d6cdcefc51986a0ffb6feb18c32d3bbdcd9375))
|
|
11
|
+
|
|
12
|
+
## [2.40.2](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.40.1...v2.40.2) (2026-07-28)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### 🐛 错误修复
|
|
16
|
+
|
|
17
|
+
* 优化接口库客户端热重载功能 ([3e3bd9d](https://github.com/ikenxuan/karin-plugin-kkk/commit/3e3bd9d5e2c40a40158a4a6db034367895f3fd8d))
|
|
18
|
+
|
|
5
19
|
## [2.40.1](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.40.0...v2.40.1) (2026-07-19)
|
|
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.3",
|
|
3
|
+
"buildTime": "2026-07-29T21:08:11.682Z",
|
|
4
|
+
"buildTimestamp": 1785359291682,
|
|
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": "298910e07af729a36f76eea0b24b67c36f4dc3cd",
|
|
9
|
+
"shortCommitHash": "298910e0"
|
|
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
|
/**
|
|
@@ -19529,7 +19565,7 @@ var DouyinPosterHeader$2 = ({ data }) => {
|
|
|
19529
19565
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19530
19566
|
className: "min-w-0",
|
|
19531
19567
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19532
|
-
className: "max-w-
|
|
19568
|
+
className: "max-w-165 truncate text-[44px] font-black leading-tight text-foreground select-text",
|
|
19533
19569
|
children: username
|
|
19534
19570
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19535
19571
|
className: "mt-3 flex flex-wrap items-center gap-x-5 gap-y-2 text-[30px] text-muted",
|
|
@@ -19555,7 +19591,7 @@ var DouyinPosterHeader$2 = ({ data }) => {
|
|
|
19555
19591
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
19556
19592
|
src: useDarkTheme ? "/image/douyin/dylogo-light.svg" : "/image/douyin/dylogo-dark.svg",
|
|
19557
19593
|
alt: "抖音",
|
|
19558
|
-
className: "mt-2 h-
|
|
19594
|
+
className: "mt-2 h-17 w-auto shrink-0 object-contain opacity-90"
|
|
19559
19595
|
})]
|
|
19560
19596
|
});
|
|
19561
19597
|
};
|
|
@@ -19702,7 +19738,7 @@ var DouyinSignalLine$2 = ({ data }) => {
|
|
|
19702
19738
|
].map((stat) => {
|
|
19703
19739
|
const Icon = stat.icon;
|
|
19704
19740
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19705
|
-
className: "min-w-
|
|
19741
|
+
className: "min-w-37.5",
|
|
19706
19742
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19707
19743
|
className: "flex items-center gap-3 text-[28px] font-semibold text-muted",
|
|
19708
19744
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
@@ -19742,7 +19778,7 @@ var DouyinPosterFooter$2 = ({ data }) => {
|
|
|
19742
19778
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19743
19779
|
className: "min-w-0",
|
|
19744
19780
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19745
|
-
className: "max-w-
|
|
19781
|
+
className: "max-w-162.5 truncate text-[48px] font-black leading-tight text-foreground select-text",
|
|
19746
19782
|
children: username
|
|
19747
19783
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19748
19784
|
className: "mt-3 flex items-center gap-2 text-[30px] text-muted",
|
|
@@ -19776,7 +19812,7 @@ var DouyinPosterFooter$2 = ({ data }) => {
|
|
|
19776
19812
|
].map((stat) => {
|
|
19777
19813
|
const Icon = stat.icon;
|
|
19778
19814
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19779
|
-
className: "min-w-
|
|
19815
|
+
className: "min-w-37.5",
|
|
19780
19816
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19781
19817
|
className: "flex items-center gap-3 text-[25px] font-semibold text-muted",
|
|
19782
19818
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
@@ -19800,7 +19836,7 @@ var DouyinPosterFooter$2 = ({ data }) => {
|
|
|
19800
19836
|
avatarUrl: avater_url,
|
|
19801
19837
|
useDarkTheme,
|
|
19802
19838
|
alt: "二维码",
|
|
19803
|
-
className: "h-
|
|
19839
|
+
className: "h-75 w-75"
|
|
19804
19840
|
})
|
|
19805
19841
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19806
19842
|
className: "mt-2 text-[28px] font-black text-foreground/80",
|
|
@@ -21099,7 +21135,7 @@ var DouyinPosterHeader$1 = ({ data }) => {
|
|
|
21099
21135
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21100
21136
|
className: "min-w-0",
|
|
21101
21137
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21102
|
-
className: "max-w-
|
|
21138
|
+
className: "max-w-165 truncate text-[44px] font-black leading-tight text-foreground select-text",
|
|
21103
21139
|
children: username
|
|
21104
21140
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21105
21141
|
className: "mt-3 flex flex-wrap items-center gap-x-5 gap-y-2 text-[30px] text-muted",
|
|
@@ -21124,7 +21160,7 @@ var DouyinPosterHeader$1 = ({ data }) => {
|
|
|
21124
21160
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
21125
21161
|
src: useDarkTheme ? "/image/douyin/dylogo-light.svg" : "/image/douyin/dylogo-dark.svg",
|
|
21126
21162
|
alt: "抖音",
|
|
21127
|
-
className: "mt-2 h-
|
|
21163
|
+
className: "mt-2 h-17 w-auto shrink-0 object-contain opacity-90"
|
|
21128
21164
|
})]
|
|
21129
21165
|
});
|
|
21130
21166
|
};
|
|
@@ -21151,7 +21187,7 @@ var DouyinPosterTitle$1 = ({ data }) => {
|
|
|
21151
21187
|
},
|
|
21152
21188
|
children: renderRichTextToReact(title, richTextOptions)
|
|
21153
21189
|
}), hasDesc && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21154
|
-
className: cn$1("mt-7 whitespace-pre-wrap select-text", !hasTitle ? "text-6xl font-bold
|
|
21190
|
+
className: cn$1("mt-7 whitespace-pre-wrap select-text", !hasTitle ? "text-6xl font-bold" : "text-5xl font-medium", "leading-tight"),
|
|
21155
21191
|
style: {
|
|
21156
21192
|
wordBreak: "break-word",
|
|
21157
21193
|
overflowWrap: "break-word"
|
|
@@ -21234,7 +21270,7 @@ var DouyinImageCover = ({ data }) => {
|
|
|
21234
21270
|
})
|
|
21235
21271
|
}),
|
|
21236
21272
|
music && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21237
|
-
className: "absolute bottom-12 left-24 z-30 flex max-w-
|
|
21273
|
+
className: "absolute bottom-12 left-24 z-30 flex max-w-212.5 items-center gap-5 text-white drop-shadow-xl",
|
|
21238
21274
|
children: [music.cover ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21239
21275
|
className: "relative h-20 w-20 shrink-0",
|
|
21240
21276
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GlowImage, {
|
|
@@ -21297,7 +21333,7 @@ var DouyinSignalLine$1 = ({ data }) => {
|
|
|
21297
21333
|
].map((stat) => {
|
|
21298
21334
|
const Icon = stat.icon;
|
|
21299
21335
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21300
|
-
className: "min-w-
|
|
21336
|
+
className: "min-w-37.5",
|
|
21301
21337
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21302
21338
|
className: "flex items-center gap-3 text-[28px] font-semibold text-muted",
|
|
21303
21339
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
@@ -21352,11 +21388,11 @@ var DouyinCoCreatorList$1 = ({ data, coCreatorCount }) => {
|
|
|
21352
21388
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21353
21389
|
className: "mt-6 flex min-w-0 flex-wrap items-center gap-x-10 gap-y-6 overflow-hidden",
|
|
21354
21390
|
children: [visibleCreators.map((creator, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21355
|
-
className: "flex min-w-0 max-w-
|
|
21391
|
+
className: "flex min-w-0 max-w-77.5 items-center gap-4",
|
|
21356
21392
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
21357
21393
|
src: creator.avatar_url || data.avater_url,
|
|
21358
21394
|
alt: "共创者头像",
|
|
21359
|
-
className: "h-
|
|
21395
|
+
className: "h-18 w-18 shrink-0 rounded-full object-cover shadow-xl",
|
|
21360
21396
|
referrerPolicy: "no-referrer",
|
|
21361
21397
|
crossOrigin: "anonymous"
|
|
21362
21398
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -21397,7 +21433,7 @@ var DouyinPosterFooter$1 = ({ data }) => {
|
|
|
21397
21433
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21398
21434
|
className: "min-w-0",
|
|
21399
21435
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21400
|
-
className: "max-w-
|
|
21436
|
+
className: "max-w-162.5 truncate text-[48px] font-black leading-tight text-foreground select-text",
|
|
21401
21437
|
children: username
|
|
21402
21438
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21403
21439
|
className: "mt-3 flex items-center gap-2 text-[30px] text-muted",
|
|
@@ -21431,7 +21467,7 @@ var DouyinPosterFooter$1 = ({ data }) => {
|
|
|
21431
21467
|
].map((stat) => {
|
|
21432
21468
|
const Icon = stat.icon;
|
|
21433
21469
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21434
|
-
className: "min-w-
|
|
21470
|
+
className: "min-w-37.5",
|
|
21435
21471
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21436
21472
|
className: "flex items-center gap-3 text-[25px] font-semibold text-muted",
|
|
21437
21473
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
@@ -21455,7 +21491,7 @@ var DouyinPosterFooter$1 = ({ data }) => {
|
|
|
21455
21491
|
avatarUrl: avater_url,
|
|
21456
21492
|
useDarkTheme,
|
|
21457
21493
|
alt: "二维码",
|
|
21458
|
-
className: "h-
|
|
21494
|
+
className: "h-75 w-75"
|
|
21459
21495
|
})
|
|
21460
21496
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21461
21497
|
className: "mt-2 text-[28px] font-black text-foreground/80",
|
|
@@ -23214,7 +23250,7 @@ var DouyinPosterHeader = ({ data }) => {
|
|
|
23214
23250
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23215
23251
|
className: "min-w-0",
|
|
23216
23252
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
23217
|
-
className: "max-w-
|
|
23253
|
+
className: "max-w-165 truncate text-[44px] font-black leading-tight text-foreground select-text",
|
|
23218
23254
|
children: username
|
|
23219
23255
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23220
23256
|
className: "mt-3 flex flex-wrap items-center gap-x-5 gap-y-2 text-[30px] text-muted",
|
|
@@ -23239,7 +23275,7 @@ var DouyinPosterHeader = ({ data }) => {
|
|
|
23239
23275
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
23240
23276
|
src: useDarkTheme ? "/image/douyin/dylogo-light.svg" : "/image/douyin/dylogo-dark.svg",
|
|
23241
23277
|
alt: "抖音",
|
|
23242
|
-
className: "mt-2 h-
|
|
23278
|
+
className: "mt-2 h-17 w-auto shrink-0 object-contain opacity-90"
|
|
23243
23279
|
})]
|
|
23244
23280
|
});
|
|
23245
23281
|
};
|
|
@@ -23289,7 +23325,7 @@ var DouyinVideoCover = ({ data }) => {
|
|
|
23289
23325
|
className: "absolute bottom-12 right-24 z-30 text-white opacity-90 drop-shadow-2xl"
|
|
23290
23326
|
}),
|
|
23291
23327
|
music && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23292
|
-
className: "absolute bottom-12 left-24 z-30 flex max-w-
|
|
23328
|
+
className: "absolute bottom-12 left-24 z-30 flex max-w-212.5 items-center gap-5 text-white drop-shadow-xl",
|
|
23293
23329
|
children: [music.cover ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
23294
23330
|
className: "relative h-20 w-20 shrink-0",
|
|
23295
23331
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GlowImage, {
|
|
@@ -23344,7 +23380,7 @@ var DouyinPosterTitle = ({ data }) => {
|
|
|
23344
23380
|
},
|
|
23345
23381
|
children: renderRichTextToReact(title, richTextOptions)
|
|
23346
23382
|
}), hasDesc && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
23347
|
-
className: "mt-7 max-w-
|
|
23383
|
+
className: "mt-7 max-w-290 whitespace-pre-wrap text-[42px] font-medium leading-tight text-muted select-text",
|
|
23348
23384
|
style: {
|
|
23349
23385
|
wordBreak: "break-word",
|
|
23350
23386
|
overflowWrap: "break-word"
|
|
@@ -23384,7 +23420,7 @@ var DouyinSignalLine = ({ data }) => {
|
|
|
23384
23420
|
].map((stat) => {
|
|
23385
23421
|
const Icon = stat.icon;
|
|
23386
23422
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23387
|
-
className: "min-w-
|
|
23423
|
+
className: "min-w-37.5",
|
|
23388
23424
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23389
23425
|
className: "flex items-center gap-3 text-[28px] font-semibold text-muted",
|
|
23390
23426
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
@@ -23438,11 +23474,11 @@ var DouyinCoCreatorList = ({ data, coCreatorCount }) => {
|
|
|
23438
23474
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23439
23475
|
className: "mt-6 flex min-w-0 flex-wrap items-center gap-x-10 gap-y-6 overflow-hidden",
|
|
23440
23476
|
children: [visibleCreators.map((creator, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23441
|
-
className: "flex min-w-0 max-w-
|
|
23477
|
+
className: "flex min-w-0 max-w-77.5 items-center gap-4",
|
|
23442
23478
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
23443
23479
|
src: creator.avatar_url || data.avater_url,
|
|
23444
23480
|
alt: "共创者头像",
|
|
23445
|
-
className: "h-
|
|
23481
|
+
className: "h-18 w-18 shrink-0 rounded-full object-cover shadow-xl",
|
|
23446
23482
|
referrerPolicy: "no-referrer",
|
|
23447
23483
|
crossOrigin: "anonymous"
|
|
23448
23484
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -23483,7 +23519,7 @@ var DouyinPosterFooter = ({ data }) => {
|
|
|
23483
23519
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23484
23520
|
className: "min-w-0",
|
|
23485
23521
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
23486
|
-
className: "max-w-
|
|
23522
|
+
className: "max-w-162.5 truncate text-[48px] font-black leading-tight text-foreground select-text",
|
|
23487
23523
|
children: username
|
|
23488
23524
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23489
23525
|
className: "mt-3 flex items-center gap-2 text-[30px] text-muted",
|
|
@@ -23517,7 +23553,7 @@ var DouyinPosterFooter = ({ data }) => {
|
|
|
23517
23553
|
].map((stat) => {
|
|
23518
23554
|
const Icon = stat.icon;
|
|
23519
23555
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23520
|
-
className: "min-w-
|
|
23556
|
+
className: "min-w-37.5",
|
|
23521
23557
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
23522
23558
|
className: "flex items-center gap-3 text-[25px] font-semibold text-muted",
|
|
23523
23559
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
@@ -23541,7 +23577,7 @@ var DouyinPosterFooter = ({ data }) => {
|
|
|
23541
23577
|
avatarUrl: avater_url,
|
|
23542
23578
|
useDarkTheme,
|
|
23543
23579
|
alt: "二维码",
|
|
23544
|
-
className: "h-
|
|
23580
|
+
className: "h-75 w-75"
|
|
23545
23581
|
})
|
|
23546
23582
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
23547
23583
|
className: "mt-2 text-[28px] font-black text-foreground/80",
|
|
@@ -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
|
@@ -14250,6 +14250,10 @@
|
|
|
14250
14250
|
height: calc(var(--spacing) * 16);
|
|
14251
14251
|
}
|
|
14252
14252
|
|
|
14253
|
+
.h-17 {
|
|
14254
|
+
height: calc(var(--spacing) * 17);
|
|
14255
|
+
}
|
|
14256
|
+
|
|
14253
14257
|
.h-18 {
|
|
14254
14258
|
height: calc(var(--spacing) * 18);
|
|
14255
14259
|
}
|
|
@@ -14486,22 +14490,10 @@
|
|
|
14486
14490
|
height: 60%;
|
|
14487
14491
|
}
|
|
14488
14492
|
|
|
14489
|
-
.h-\[68px\] {
|
|
14490
|
-
height: 68px;
|
|
14491
|
-
}
|
|
14492
|
-
|
|
14493
|
-
.h-\[72px\] {
|
|
14494
|
-
height: 72px;
|
|
14495
|
-
}
|
|
14496
|
-
|
|
14497
14493
|
.h-\[187\.5px\] {
|
|
14498
14494
|
height: 187.5px;
|
|
14499
14495
|
}
|
|
14500
14496
|
|
|
14501
|
-
.h-\[300px\] {
|
|
14502
|
-
height: 300px;
|
|
14503
|
-
}
|
|
14504
|
-
|
|
14505
14497
|
.h-\[calc\(100\%-160px\)\] {
|
|
14506
14498
|
height: calc(100% - 160px);
|
|
14507
14499
|
}
|
|
@@ -14694,6 +14686,10 @@
|
|
|
14694
14686
|
width: calc(var(--spacing) * 16);
|
|
14695
14687
|
}
|
|
14696
14688
|
|
|
14689
|
+
.w-18 {
|
|
14690
|
+
width: calc(var(--spacing) * 18);
|
|
14691
|
+
}
|
|
14692
|
+
|
|
14697
14693
|
.w-20 {
|
|
14698
14694
|
width: calc(var(--spacing) * 20);
|
|
14699
14695
|
}
|
|
@@ -14942,10 +14938,6 @@
|
|
|
14942
14938
|
width: 44%;
|
|
14943
14939
|
}
|
|
14944
14940
|
|
|
14945
|
-
.w-\[72px\] {
|
|
14946
|
-
width: 72px;
|
|
14947
|
-
}
|
|
14948
|
-
|
|
14949
14941
|
.w-\[90\%\] {
|
|
14950
14942
|
width: 90%;
|
|
14951
14943
|
}
|
|
@@ -14958,10 +14950,6 @@
|
|
|
14958
14950
|
width: 187.5px;
|
|
14959
14951
|
}
|
|
14960
14952
|
|
|
14961
|
-
.w-\[300px\] {
|
|
14962
|
-
width: 300px;
|
|
14963
|
-
}
|
|
14964
|
-
|
|
14965
14953
|
.w-\[calc\(100\%-160px\)\] {
|
|
14966
14954
|
width: calc(100% - 160px);
|
|
14967
14955
|
}
|
|
@@ -15006,6 +14994,10 @@
|
|
|
15006
14994
|
max-width: var(--container-6xl);
|
|
15007
14995
|
}
|
|
15008
14996
|
|
|
14997
|
+
.max-w-77\.5 {
|
|
14998
|
+
max-width: calc(var(--spacing) * 77.5);
|
|
14999
|
+
}
|
|
15000
|
+
|
|
15009
15001
|
.max-w-80 {
|
|
15010
15002
|
max-width: calc(var(--spacing) * 80);
|
|
15011
15003
|
}
|
|
@@ -15026,14 +15018,30 @@
|
|
|
15026
15018
|
max-width: calc(var(--spacing) * 150);
|
|
15027
15019
|
}
|
|
15028
15020
|
|
|
15021
|
+
.max-w-162\.5 {
|
|
15022
|
+
max-width: calc(var(--spacing) * 162.5);
|
|
15023
|
+
}
|
|
15024
|
+
|
|
15025
|
+
.max-w-165 {
|
|
15026
|
+
max-width: calc(var(--spacing) * 165);
|
|
15027
|
+
}
|
|
15028
|
+
|
|
15029
15029
|
.max-w-200 {
|
|
15030
15030
|
max-width: calc(var(--spacing) * 200);
|
|
15031
15031
|
}
|
|
15032
15032
|
|
|
15033
|
+
.max-w-212\.5 {
|
|
15034
|
+
max-width: calc(var(--spacing) * 212.5);
|
|
15035
|
+
}
|
|
15036
|
+
|
|
15033
15037
|
.max-w-225 {
|
|
15034
15038
|
max-width: calc(var(--spacing) * 225);
|
|
15035
15039
|
}
|
|
15036
15040
|
|
|
15041
|
+
.max-w-290 {
|
|
15042
|
+
max-width: calc(var(--spacing) * 290);
|
|
15043
|
+
}
|
|
15044
|
+
|
|
15037
15045
|
.max-w-300 {
|
|
15038
15046
|
max-width: calc(var(--spacing) * 300);
|
|
15039
15047
|
}
|
|
@@ -15046,26 +15054,6 @@
|
|
|
15046
15054
|
max-width: 72%;
|
|
15047
15055
|
}
|
|
15048
15056
|
|
|
15049
|
-
.max-w-\[310px\] {
|
|
15050
|
-
max-width: 310px;
|
|
15051
|
-
}
|
|
15052
|
-
|
|
15053
|
-
.max-w-\[650px\] {
|
|
15054
|
-
max-width: 650px;
|
|
15055
|
-
}
|
|
15056
|
-
|
|
15057
|
-
.max-w-\[660px\] {
|
|
15058
|
-
max-width: 660px;
|
|
15059
|
-
}
|
|
15060
|
-
|
|
15061
|
-
.max-w-\[850px\] {
|
|
15062
|
-
max-width: 850px;
|
|
15063
|
-
}
|
|
15064
|
-
|
|
15065
|
-
.max-w-\[1160px\] {
|
|
15066
|
-
max-width: 1160px;
|
|
15067
|
-
}
|
|
15068
|
-
|
|
15069
15057
|
.max-w-full {
|
|
15070
15058
|
max-width: 100%;
|
|
15071
15059
|
}
|
|
@@ -15078,6 +15066,10 @@
|
|
|
15078
15066
|
min-width: 0;
|
|
15079
15067
|
}
|
|
15080
15068
|
|
|
15069
|
+
.min-w-37\.5 {
|
|
15070
|
+
min-width: calc(var(--spacing) * 37.5);
|
|
15071
|
+
}
|
|
15072
|
+
|
|
15081
15073
|
.min-w-38 {
|
|
15082
15074
|
min-width: calc(var(--spacing) * 38);
|
|
15083
15075
|
}
|
|
@@ -15086,10 +15078,6 @@
|
|
|
15086
15078
|
min-width: calc(var(--spacing) * 42);
|
|
15087
15079
|
}
|
|
15088
15080
|
|
|
15089
|
-
.min-w-\[150px\] {
|
|
15090
|
-
min-width: 150px;
|
|
15091
|
-
}
|
|
15092
|
-
|
|
15093
15081
|
.flex-1 {
|
|
15094
15082
|
flex: 1;
|
|
15095
15083
|
}
|
|
@@ -18235,11 +18223,6 @@
|
|
|
18235
18223
|
line-height: 1.45;
|
|
18236
18224
|
}
|
|
18237
18225
|
|
|
18238
|
-
.leading-\[1\.48\] {
|
|
18239
|
-
--tw-leading: 1.48;
|
|
18240
|
-
line-height: 1.48;
|
|
18241
|
-
}
|
|
18242
|
-
|
|
18243
18226
|
.leading-\[1\.55\] {
|
|
18244
18227
|
--tw-leading: 1.55;
|
|
18245
18228
|
line-height: 1.55;
|
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.3",
|
|
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-29T20:48:02.801Z"
|
|
93
93
|
}
|