@zhin.js/plugin-music 1.1.14 → 1.1.16
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/commands/cookie/delete/[source]/index.js +8 -7
- package/commands/cookie/delete/[source]/index.ts +8 -7
- package/commands/cookie/get/[source]/index.js +10 -9
- package/commands/cookie/get/[source]/index.ts +10 -9
- package/commands/cookie/set/[source]/index.js +8 -7
- package/commands/cookie/set/[source]/index.ts +8 -7
- package/commands/cookie/status/index.js +7 -7
- package/commands/cookie/status/index.ts +7 -7
- package/commands/login/[platform]/index.js +22 -18
- package/commands/login/[platform]/index.ts +23 -19
- package/commands//347/202/271/346/255/214/[keyword]/index.js +13 -9
- package/commands//347/202/271/346/255/214/[keyword]/index.ts +13 -9
- package/lib/i18n.d.ts +6 -0
- package/lib/i18n.d.ts.map +1 -0
- package/lib/i18n.js +50 -0
- package/lib/i18n.js.map +1 -0
- package/lib/login/index.d.ts +5 -2
- package/lib/login/index.d.ts.map +1 -1
- package/lib/login/index.js +13 -10
- package/lib/login/index.js.map +1 -1
- package/lib/login/netease.d.ts +3 -2
- package/lib/login/netease.d.ts.map +1 -1
- package/lib/login/netease.js +10 -9
- package/lib/login/netease.js.map +1 -1
- package/lib/login/qq.d.ts +2 -1
- package/lib/login/qq.d.ts.map +1 -1
- package/lib/login/qq.js +12 -11
- package/lib/login/qq.js.map +1 -1
- package/lib/login/types.d.ts +3 -2
- package/lib/login/types.d.ts.map +1 -1
- package/lib/login/types.js.map +1 -1
- package/lib/music-lib.d.ts +3 -2
- package/lib/music-lib.d.ts.map +1 -1
- package/lib/music-lib.js +8 -7
- package/lib/music-lib.js.map +1 -1
- package/lib/session.d.ts +7 -10
- package/lib/session.d.ts.map +1 -1
- package/lib/session.js +9 -8
- package/lib/session.js.map +1 -1
- package/middlewares/music-selection/index.js +9 -7
- package/middlewares/music-selection/index.ts +9 -6
- package/package.json +11 -10
- package/skills/music/tools/music-share/index.js +1 -1
- package/skills/music/tools/music-share/index.ts +1 -1
- package/src/i18n.ts +50 -0
- package/src/login/index.ts +16 -10
- package/src/login/netease.ts +11 -9
- package/src/login/qq.ts +13 -11
- package/src/login/types.ts +3 -2
- package/src/music-lib.ts +9 -7
- package/src/session.ts +13 -11
package/lib/i18n.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createMessages } from 'zhin.js/i18n';
|
|
2
|
+
import { SOURCE_DISPLAY_NAME } from './config.js';
|
|
3
|
+
export const messages = createMessages({
|
|
4
|
+
loginAborted: { 'zh-CN': '登录已取消', en: 'Login cancelled.' },
|
|
5
|
+
keyword: { 'zh-CN': "请输入歌曲名称", en: "Enter a song name." },
|
|
6
|
+
usage: { 'zh-CN': "用法:{command}", en: "Usage: {command}" },
|
|
7
|
+
sources: { 'zh-CN': "支持音乐源:{sources}", en: "Music sources: {sources}" },
|
|
8
|
+
noResults: { 'zh-CN': "[{source}] 未找到相关歌曲", en: "[{source}] No matching songs found." },
|
|
9
|
+
noMatch: { 'zh-CN': "[{source}] 未找到\"{keyword}\"相关歌曲", en: "[{source}] No songs found for \"{keyword}\"." },
|
|
10
|
+
results: { 'zh-CN': "[{source}] 搜索结果:\n{lines}\n\n回复序号播放,回复\"取消\"取消选择", en: "[{source}] Search results:\n{lines}\n\nReply with a number to play, or \"cancel\" to cancel." },
|
|
11
|
+
unsupported: { 'zh-CN': "不支持的音乐源:{source}", en: "Unsupported music source: {source}" },
|
|
12
|
+
cancelSelection: { 'zh-CN': "已取消点歌", en: "Music selection cancelled." },
|
|
13
|
+
detailFailed: { 'zh-CN': "[{source}] 获取\"{title}\"播放信息失败:{error}", en: "[{source}] Could not load \"{title}\": {error}" },
|
|
14
|
+
credentials: { 'zh-CN': "--- 音乐凭证状态 ---", en: "--- Music credentials ---" },
|
|
15
|
+
unset: { 'zh-CN': "未配置", en: "Not configured" },
|
|
16
|
+
count: { 'zh-CN': "{keys} ({count} 项)", en: "{keys} ({count} entries)" },
|
|
17
|
+
credentialUnset: { 'zh-CN': "[{source}] 凭证 {key} 未设置", en: "[{source}] Credential {key} is not set." },
|
|
18
|
+
saved: { 'zh-CN': "[{source}] 凭证 {key} 已保存", en: "[{source}] Credential {key} saved." },
|
|
19
|
+
deleted: { 'zh-CN': "[{source}] 凭证 {key} 已删除", en: "[{source}] Credential {key} deleted." },
|
|
20
|
+
conversation: { 'zh-CN': "无法识别会话信息,请在群聊或私聊中使用", en: "Cannot identify this conversation. Use a group or private chat." },
|
|
21
|
+
cancelLogin: { 'zh-CN': "已取消登录", en: "Login cancelled." },
|
|
22
|
+
noLogin: { 'zh-CN': "没有进行中的登录会话", en: "There is no active login session." },
|
|
23
|
+
platform: { 'zh-CN': "不支持的平台:{platform}\n支持:qq, netease", en: "Unsupported platform: {platform}\nSupported: qq, netease" },
|
|
24
|
+
active: { 'zh-CN': "正在进行 {source} 登录,请先完成", en: "A {source} login is in progress. Complete it first." },
|
|
25
|
+
cancelHint: { 'zh-CN': "发送\"{command}\"可中止", en: "Send \"{command}\" to cancel." },
|
|
26
|
+
qrFailed: { 'zh-CN': "[{source}] 获取二维码失败:{error}", en: "[{source}] Could not obtain a QR code: {error}" },
|
|
27
|
+
noReply: { 'zh-CN': "无法发送消息", en: "Cannot send a reply." },
|
|
28
|
+
scan: { 'zh-CN': "[{source}] 请使用 {source} App 扫描二维码登录:", en: "[{source}] Scan the QR code with the {source} app to sign in:" },
|
|
29
|
+
valid: { 'zh-CN': "二维码有效期 2 分钟", en: "The QR code is valid for 2 minutes." },
|
|
30
|
+
success: { 'zh-CN': "登录成功!cookie 已自动保存,现在可以搜索和播放高品质音乐了", en: "Signed in. The cookie has been saved; you can now search and play high-quality music." },
|
|
31
|
+
waiting: { 'zh-CN': "等待扫码...", en: "Waiting for scan..." },
|
|
32
|
+
scanned: { 'zh-CN': "已扫码,请在手机上确认登录", en: "Scanned. Confirm the login on your phone." },
|
|
33
|
+
expired: { 'zh-CN': "二维码已过期,请重新发起登录", en: "The QR code has expired. Start a new login." },
|
|
34
|
+
confirmed: { 'zh-CN': "登录成功", en: "Signed in." },
|
|
35
|
+
unknown: { 'zh-CN': "未知状态", en: "Unknown status" },
|
|
36
|
+
pollFailed: { 'zh-CN': "轮询失败:{error}", en: "Login polling failed: {error}" },
|
|
37
|
+
pollError: { 'zh-CN': "轮询异常:{error}", en: "Login polling error: {error}" },
|
|
38
|
+
timeout: { 'zh-CN': "登录超时,请重试", en: "Login timed out. Try again." },
|
|
39
|
+
neteaseQr: { 'zh-CN': "获取网易云登录二维码失败", en: "Could not obtain a NetEase login QR code." },
|
|
40
|
+
emptyResponse: { 'zh-CN': "服务端返回空响应 (HTTP {status})", en: "The server returned an empty response (HTTP {status})." },
|
|
41
|
+
cookieFailed: { 'zh-CN': "登录成功但获取 cookie 失败", en: "Signed in, but could not retrieve the cookie." },
|
|
42
|
+
});
|
|
43
|
+
const EN_SOURCE_NAMES = { qq: 'QQ Music', netease: 'NetEase Cloud Music', kuwo: 'Kuwo', kugou: 'Kugou' };
|
|
44
|
+
export function sourceName(source, locale = 'zh-CN') {
|
|
45
|
+
return locale === 'en' ? EN_SOURCE_NAMES[source] : SOURCE_DISPLAY_NAME[source];
|
|
46
|
+
}
|
|
47
|
+
export function usage(locale, command) {
|
|
48
|
+
return command === undefined ? '' : messages(locale, 'usage', { command });
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=i18n.js.map
|
package/lib/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;IACrC,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,oBAAoB,EAAE;IACzD,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,0BAA0B,EAAE;IACvE,SAAS,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,EAAE,qCAAqC,EAAE;IACvF,OAAO,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,EAAE,8CAA8C,EAAE;IAC3G,OAAO,EAAE,EAAE,OAAO,EAAE,kDAAkD,EAAE,EAAE,EAAE,8FAA8F,EAAE;IAC5K,WAAW,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,oCAAoC,EAAE;IACtF,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,4BAA4B,EAAE;IACvE,YAAY,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,EAAE,EAAE,gDAAgD,EAAE;IACzH,WAAW,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,2BAA2B,EAAE;IAC3E,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,gBAAgB,EAAE;IAC/C,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,EAAE,0BAA0B,EAAE;IACxE,eAAe,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE,EAAE,yCAAyC,EAAE;IACtG,KAAK,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE,EAAE,oCAAoC,EAAE;IACvF,OAAO,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE,EAAE,sCAAsC,EAAE;IAC3F,YAAY,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,EAAE,iEAAiE,EAAE;IACvH,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,mCAAmC,EAAE;IAC3E,QAAQ,EAAE,EAAE,OAAO,EAAE,mCAAmC,EAAE,EAAE,EAAE,0DAA0D,EAAE;IAC1H,MAAM,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,EAAE,qDAAqD,EAAE;IACvG,UAAU,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,EAAE,+BAA+B,EAAE;IAClF,QAAQ,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,EAAE,EAAE,gDAAgD,EAAE;IACzG,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,sBAAsB,EAAE;IAC1D,IAAI,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,EAAE,EAAE,+DAA+D,EAAE;IAC9H,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,qCAAqC,EAAE;IAC5E,OAAO,EAAE,EAAE,OAAO,EAAE,mCAAmC,EAAE,EAAE,EAAE,uFAAuF,EAAE;IACtJ,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,qBAAqB,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,2CAA2C,EAAE;IACtF,OAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,6CAA6C,EAAE;IACzF,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE;IAChD,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE;IAClD,UAAU,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,+BAA+B,EAAE;IAC5E,SAAS,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,8BAA8B,EAAE;IAC1E,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,6BAA6B,EAAE;IACnE,SAAS,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,2CAA2C,EAAE;IACvF,aAAa,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,wDAAwD,EAAE;IACpH,YAAY,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,+CAA+C,EAAE;CACpG,CAAC,CAAC;AACH,MAAM,eAAe,GAAgC,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACtI,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,SAAiB,OAAO;IACtE,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACjF,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,MAAc,EAAE,OAA2B;IAC/D,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC"}
|
package/lib/login/index.d.ts
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
2
|
+
import type { ConversationRef } from '@zhin.js/im-contract';
|
|
1
3
|
import type { QrLoginProvider, QrLoginSource, QrPollResult } from './types.js';
|
|
2
4
|
import type { CredentialStore } from '../credential-store.js';
|
|
3
5
|
export type { QrLoginSource, QrPollResult, QrLoginProvider } from './types.js';
|
|
4
6
|
export interface QrLoginSession {
|
|
7
|
+
locale: Locale;
|
|
5
8
|
source: QrLoginSource;
|
|
6
9
|
pollData: Record<string, string>;
|
|
7
10
|
timestamp: number;
|
|
8
11
|
aborted: boolean;
|
|
9
12
|
}
|
|
10
|
-
export declare function loginSessionKey(
|
|
13
|
+
export declare function loginSessionKey(conversation: ConversationRef, senderId: string): string;
|
|
11
14
|
/** Generation-owned QR login coordinator. */
|
|
12
15
|
export declare class QrLoginRuntime {
|
|
13
16
|
#private;
|
|
14
17
|
constructor(credentials: CredentialStore, providers?: Readonly<Record<QrLoginSource, QrLoginProvider>>, now?: () => number, sleep?: (ms: number) => Promise<void>);
|
|
15
18
|
get(key: string): QrLoginSession | undefined;
|
|
16
19
|
cancel(key: string): boolean;
|
|
17
|
-
start(source: QrLoginSource, key: string): Promise<{
|
|
20
|
+
start(source: QrLoginSource, key: string, locale?: Locale): Promise<{
|
|
18
21
|
imageSegment: {
|
|
19
22
|
type: 'image';
|
|
20
23
|
data: Record<string, unknown>;
|
package/lib/login/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,wBAAgB,eAAe,CAC7B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,6CAA6C;AAC7C,qBAAa,cAAc;;gBAQvB,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,EAC5D,GAAG,GAAE,MAAM,MAAiB,EAC5B,KAAK,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAA6D;IAWlG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAW5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQtB,KAAK,CACT,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAgB,GACvB,OAAO,CAAC;QAAE,YAAY,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;IAyBxE,IAAI,CACR,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,OAAO,CAAC,YAAY,CAAC;IAyCxB,YAAY,IAAI,IAAI;IAUpB,OAAO,IAAI,IAAI;CAIhB"}
|
package/lib/login/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { sessionKey } from '../session.js';
|
|
2
|
+
import { messages as t } from '../i18n.js';
|
|
1
3
|
import { QQLoginProvider } from './qq.js';
|
|
2
4
|
import { NeteaseLoginProvider } from './netease.js';
|
|
3
5
|
const LOGIN_TIMEOUT_MS = 2 * 60 * 1000;
|
|
4
6
|
const POLL_INTERVAL_MS = 3_000;
|
|
5
7
|
const MAX_POLLS = Math.ceil(LOGIN_TIMEOUT_MS / POLL_INTERVAL_MS);
|
|
6
|
-
export function loginSessionKey(
|
|
7
|
-
return `login:${
|
|
8
|
+
export function loginSessionKey(conversation, senderId) {
|
|
9
|
+
return `login:${sessionKey(conversation, senderId)}`;
|
|
8
10
|
}
|
|
9
11
|
/** Generation-owned QR login coordinator. */
|
|
10
12
|
export class QrLoginRuntime {
|
|
@@ -41,21 +43,22 @@ export class QrLoginRuntime {
|
|
|
41
43
|
this.#active.delete(key);
|
|
42
44
|
return true;
|
|
43
45
|
}
|
|
44
|
-
async start(source, key) {
|
|
46
|
+
async start(source, key, locale = 'zh-CN') {
|
|
45
47
|
const existing = this.#active.get(key);
|
|
46
48
|
if (existing && !existing.aborted)
|
|
47
49
|
existing.aborted = true;
|
|
48
50
|
const session = {
|
|
49
51
|
source,
|
|
52
|
+
locale,
|
|
50
53
|
pollData: {},
|
|
51
54
|
timestamp: this.#now(),
|
|
52
55
|
aborted: false,
|
|
53
56
|
};
|
|
54
57
|
this.#active.set(key, session);
|
|
55
58
|
try {
|
|
56
|
-
const result = await this.#providers[source].createQr();
|
|
59
|
+
const result = await this.#providers[source].createQr(locale);
|
|
57
60
|
if (session.aborted || this.#active.get(key) !== session) {
|
|
58
|
-
throw new Error('
|
|
61
|
+
throw new Error(t(locale, 'loginAborted'));
|
|
59
62
|
}
|
|
60
63
|
session.pollData = result.pollData;
|
|
61
64
|
return { imageSegment: result.imageSegment };
|
|
@@ -69,16 +72,16 @@ export class QrLoginRuntime {
|
|
|
69
72
|
async poll(key, onStatus) {
|
|
70
73
|
const session = this.#active.get(key);
|
|
71
74
|
if (!session)
|
|
72
|
-
return { status: 'error', message: '
|
|
75
|
+
return { status: 'error', message: t('zh-CN', 'noLogin') };
|
|
73
76
|
const provider = this.#providers[session.source];
|
|
74
77
|
let lastStatus = '';
|
|
75
78
|
try {
|
|
76
79
|
for (let i = 0; i < MAX_POLLS; i++) {
|
|
77
80
|
if (session.aborted) {
|
|
78
81
|
this.#active.delete(key);
|
|
79
|
-
return { status: 'error', message: '
|
|
82
|
+
return { status: 'error', message: t(session.locale, 'loginAborted') };
|
|
80
83
|
}
|
|
81
|
-
const result = await provider.pollQr(session.pollData);
|
|
84
|
+
const result = await provider.pollQr(session.pollData, session.locale);
|
|
82
85
|
if (result.status !== lastStatus) {
|
|
83
86
|
lastStatus = result.status;
|
|
84
87
|
await onStatus(result);
|
|
@@ -100,11 +103,11 @@ export class QrLoginRuntime {
|
|
|
100
103
|
this.#active.delete(key);
|
|
101
104
|
return {
|
|
102
105
|
status: 'error',
|
|
103
|
-
message:
|
|
106
|
+
message: t(session.locale, 'pollError', { error: error instanceof Error ? error.message : String(error) }),
|
|
104
107
|
};
|
|
105
108
|
}
|
|
106
109
|
this.#active.delete(key);
|
|
107
|
-
return { status: 'expired', message: '
|
|
110
|
+
return { status: 'expired', message: t(session.locale, 'timeout') };
|
|
108
111
|
}
|
|
109
112
|
pruneExpired() {
|
|
110
113
|
const now = this.#now();
|
package/lib/login/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"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"}
|
package/lib/login/netease.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
1
2
|
import type { QrLoginProvider, QrCreateResult, QrPollResult } from './types.js';
|
|
2
3
|
export declare class NeteaseLoginProvider implements QrLoginProvider {
|
|
3
|
-
createQr(): Promise<QrCreateResult>;
|
|
4
|
-
pollQr(pollData: Record<string, string
|
|
4
|
+
createQr(locale?: Locale): Promise<QrCreateResult>;
|
|
5
|
+
pollQr(pollData: Record<string, string>, locale?: Locale): Promise<QrPollResult>;
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=netease.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"netease.d.ts","sourceRoot":"","sources":["../../src/login/netease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKhF,qBAAa,oBAAqB,YAAW,eAAe;IACpD,QAAQ,
|
|
1
|
+
{"version":3,"file":"netease.d.ts","sourceRoot":"","sources":["../../src/login/netease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKhF,qBAAa,oBAAqB,YAAW,eAAe;IACpD,QAAQ,CAAC,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IAwB3D,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;CAsChG"}
|
package/lib/login/netease.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { messages as t } from '../i18n.js';
|
|
1
2
|
import { extractSetCookies } from './types.js';
|
|
2
3
|
const QR_IMAGE_API = 'https://api.qrserver.com/v1/create-qr-code/';
|
|
3
4
|
export class NeteaseLoginProvider {
|
|
4
|
-
async createQr() {
|
|
5
|
+
async createQr(locale = 'zh-CN') {
|
|
5
6
|
const timestampMs = Date.now();
|
|
6
7
|
const keyResp = await fetch(`https://music.163.com/api/login/qrcode/unikey?type=1×tamp=${timestampMs}`, {
|
|
7
8
|
method: 'POST',
|
|
@@ -10,7 +11,7 @@ export class NeteaseLoginProvider {
|
|
|
10
11
|
});
|
|
11
12
|
const keyData = (await keyResp.json());
|
|
12
13
|
if (keyData.code !== 200 || !keyData.unikey) {
|
|
13
|
-
throw new Error('
|
|
14
|
+
throw new Error(t(locale, 'neteaseQr'));
|
|
14
15
|
}
|
|
15
16
|
const loginUrl = `https://music.163.com/login?codekey=${keyData.unikey}`;
|
|
16
17
|
const imageUrl = `${QR_IMAGE_API}?size=300x300&data=${encodeURIComponent(loginUrl)}`;
|
|
@@ -19,7 +20,7 @@ export class NeteaseLoginProvider {
|
|
|
19
20
|
pollData: { unikey: keyData.unikey },
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
|
-
async pollQr(pollData) {
|
|
23
|
+
async pollQr(pollData, locale = 'zh-CN') {
|
|
23
24
|
const { unikey } = pollData;
|
|
24
25
|
try {
|
|
25
26
|
const response = await fetch('https://music.163.com/api/login/qrcode/client/login', {
|
|
@@ -30,27 +31,27 @@ export class NeteaseLoginProvider {
|
|
|
30
31
|
const data = (await response.json());
|
|
31
32
|
switch (data.code) {
|
|
32
33
|
case 801:
|
|
33
|
-
return { status: 'waiting', message: '
|
|
34
|
+
return { status: 'waiting', message: t(locale, 'waiting') };
|
|
34
35
|
case 802:
|
|
35
|
-
return { status: 'scanned', message: '
|
|
36
|
+
return { status: 'scanned', message: t(locale, 'scanned') };
|
|
36
37
|
case 800:
|
|
37
|
-
return { status: 'expired', message: '
|
|
38
|
+
return { status: 'expired', message: t(locale, 'expired') };
|
|
38
39
|
case 803: {
|
|
39
40
|
const cookie = extractSetCookies(response.headers);
|
|
40
41
|
return {
|
|
41
42
|
status: 'confirmed',
|
|
42
|
-
message: '
|
|
43
|
+
message: t(locale, 'confirmed'),
|
|
43
44
|
cookie: cookie || undefined,
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
47
|
default:
|
|
47
|
-
return { status: 'error', message: data.message ?? '
|
|
48
|
+
return { status: 'error', message: data.message ?? t(locale, 'unknown') };
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
catch (err) {
|
|
51
52
|
return {
|
|
52
53
|
status: 'error',
|
|
53
|
-
message:
|
|
54
|
+
message: t(locale, 'pollFailed', { error: err instanceof Error ? err.message : String(err) }),
|
|
54
55
|
};
|
|
55
56
|
}
|
|
56
57
|
}
|
package/lib/login/netease.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"netease.js","sourceRoot":"","sources":["../../src/login/netease.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,YAAY,GAAG,6CAA6C,CAAC;AAEnE,MAAM,OAAO,oBAAoB;IAC/B,KAAK,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"netease.js","sourceRoot":"","sources":["../../src/login/netease.ts"],"names":[],"mappings":"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"}
|
package/lib/login/qq.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
1
2
|
import type { QrLoginProvider, QrCreateResult, QrPollResult } from './types.js';
|
|
2
3
|
export declare class QQLoginProvider implements QrLoginProvider {
|
|
3
4
|
createQr(): Promise<QrCreateResult>;
|
|
4
|
-
pollQr(pollData: Record<string, string
|
|
5
|
+
pollQr(pollData: Record<string, string>, locale?: Locale): Promise<QrPollResult>;
|
|
5
6
|
private handleLoginSuccess;
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=qq.d.ts.map
|
package/lib/login/qq.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qq.d.ts","sourceRoot":"","sources":["../../src/login/qq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsBhF,qBAAa,eAAgB,YAAW,eAAe;IAC/C,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAsDnC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"qq.d.ts","sourceRoot":"","sources":["../../src/login/qq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsBhF,qBAAa,eAAgB,YAAW,eAAe;IAC/C,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAsDnC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;YAyDjF,kBAAkB;CAmBjC"}
|
package/lib/login/qq.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { messages as t } from '../i18n.js';
|
|
1
2
|
import { extractSetCookies } from './types.js';
|
|
2
3
|
function hashPtqrtoken(qrsig) {
|
|
3
4
|
let hash = 0;
|
|
@@ -63,7 +64,7 @@ export class QQLoginProvider {
|
|
|
63
64
|
pollData: { ptqrtoken, qrsig, loginSig },
|
|
64
65
|
};
|
|
65
66
|
}
|
|
66
|
-
async pollQr(pollData) {
|
|
67
|
+
async pollQr(pollData, locale = 'zh-CN') {
|
|
67
68
|
const { ptqrtoken, qrsig, loginSig } = pollData;
|
|
68
69
|
const url = new URL('https://ssl.ptlogin2.qq.com/ptqrlogin');
|
|
69
70
|
url.searchParams.set('u1', 'https://y.qq.com/');
|
|
@@ -93,30 +94,30 @@ export class QQLoginProvider {
|
|
|
93
94
|
});
|
|
94
95
|
const text = await response.text();
|
|
95
96
|
if (text.includes('二维码未失效')) {
|
|
96
|
-
return { status: 'waiting', message: '
|
|
97
|
+
return { status: 'waiting', message: t(locale, 'waiting') };
|
|
97
98
|
}
|
|
98
99
|
if (text.includes('二维码认证中') || text.includes('已扫码')) {
|
|
99
|
-
return { status: 'scanned', message: '
|
|
100
|
+
return { status: 'scanned', message: t(locale, 'scanned') };
|
|
100
101
|
}
|
|
101
102
|
if (text.includes('二维码已失效')) {
|
|
102
|
-
return { status: 'expired', message: '
|
|
103
|
+
return { status: 'expired', message: t(locale, 'expired') };
|
|
103
104
|
}
|
|
104
105
|
if (text.includes('登录成功') || text.includes('ptsigx')) {
|
|
105
|
-
return this.handleLoginSuccess(text, response.headers);
|
|
106
|
+
return this.handleLoginSuccess(text, response.headers, locale);
|
|
106
107
|
}
|
|
107
108
|
if (!text) {
|
|
108
|
-
return { status: 'error', message:
|
|
109
|
+
return { status: 'error', message: t(locale, 'emptyResponse', { status: response.status }) };
|
|
109
110
|
}
|
|
110
|
-
return { status: 'waiting', message: '
|
|
111
|
+
return { status: 'waiting', message: t(locale, 'waiting') };
|
|
111
112
|
}
|
|
112
113
|
catch (err) {
|
|
113
114
|
return {
|
|
114
115
|
status: 'error',
|
|
115
|
-
message:
|
|
116
|
+
message: t(locale, 'pollFailed', { error: err instanceof Error ? err.message : String(err) }),
|
|
116
117
|
};
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
|
-
async handleLoginSuccess(text, headers) {
|
|
120
|
+
async handleLoginSuccess(text, headers, locale) {
|
|
120
121
|
const redirectMatch = text.match(/'(https?:\/\/[^']+)'/);
|
|
121
122
|
if (redirectMatch) {
|
|
122
123
|
const redirectResp = await fetch(redirectMatch[1], {
|
|
@@ -125,13 +126,13 @@ export class QQLoginProvider {
|
|
|
125
126
|
});
|
|
126
127
|
const cookie = extractSetCookies(redirectResp.headers);
|
|
127
128
|
if (cookie) {
|
|
128
|
-
return { status: 'confirmed', message: '
|
|
129
|
+
return { status: 'confirmed', message: t(locale, 'confirmed'), cookie };
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
const cookie = extractSetCookies(headers);
|
|
132
133
|
return {
|
|
133
134
|
status: cookie ? 'confirmed' : 'error',
|
|
134
|
-
message: cookie ? '
|
|
135
|
+
message: t(locale, cookie ? 'confirmed' : 'cookieFailed'),
|
|
135
136
|
cookie: cookie || undefined,
|
|
136
137
|
};
|
|
137
138
|
}
|
package/lib/login/qq.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qq.js","sourceRoot":"","sources":["../../src/login/qq.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"qq.js","sourceRoot":"","sources":["../../src/login/qq.ts"],"names":[],"mappings":"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"}
|
package/lib/login/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
1
2
|
export type QrLoginSource = 'qq' | 'netease';
|
|
2
3
|
export interface QrPollResult {
|
|
3
4
|
status: 'waiting' | 'scanned' | 'confirmed' | 'expired' | 'error';
|
|
@@ -12,8 +13,8 @@ export interface QrCreateResult {
|
|
|
12
13
|
pollData: Record<string, string>;
|
|
13
14
|
}
|
|
14
15
|
export interface QrLoginProvider {
|
|
15
|
-
createQr(): Promise<QrCreateResult>;
|
|
16
|
-
pollQr(pollData: Record<string, string
|
|
16
|
+
createQr(locale?: Locale): Promise<QrCreateResult>;
|
|
17
|
+
pollQr(pollData: Record<string, string>, locale?: Locale): Promise<QrPollResult>;
|
|
17
18
|
}
|
|
18
19
|
export declare function extractSetCookies(headers: Headers): string;
|
|
19
20
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/login/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/login/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/login/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACnD,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAClF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAQ1D"}
|
package/lib/login/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/login/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/login/types.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
package/lib/music-lib.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
1
2
|
import type { MusicInfo, MusicDetail, MusicSource } from './types.js';
|
|
2
3
|
import type { MusicRuntime } from './runtime.js';
|
|
3
4
|
export declare function searchMusic(runtime: MusicRuntime, keyword: string, source?: MusicSource, limit?: number): Promise<{
|
|
@@ -7,7 +8,7 @@ export declare function searchMusic(runtime: MusicRuntime, keyword: string, sour
|
|
|
7
8
|
results: MusicInfo[];
|
|
8
9
|
total: number;
|
|
9
10
|
}>;
|
|
10
|
-
export declare function shareMusicDetail(runtime: MusicRuntime, id: string, source: MusicSource): Promise<{
|
|
11
|
+
export declare function shareMusicDetail(runtime: MusicRuntime, id: string, source: MusicSource, locale?: Locale): Promise<{
|
|
11
12
|
success: false;
|
|
12
13
|
error: string;
|
|
13
14
|
music?: undefined;
|
|
@@ -16,7 +17,7 @@ export declare function shareMusicDetail(runtime: MusicRuntime, id: string, sour
|
|
|
16
17
|
music: MusicDetail;
|
|
17
18
|
error?: undefined;
|
|
18
19
|
}>;
|
|
19
|
-
export declare function formatSearchResults(results: readonly MusicInfo[], source: MusicSource): string;
|
|
20
|
+
export declare function formatSearchResults(results: readonly MusicInfo[], source: MusicSource, locale?: Locale): string;
|
|
20
21
|
export declare function buildMusicShareSegment(detail: MusicDetail): {
|
|
21
22
|
type: "share";
|
|
22
23
|
data: {
|
package/lib/music-lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"music-lib.d.ts","sourceRoot":"","sources":["../src/music-lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"music-lib.d.ts","sourceRoot":"","sources":["../src/music-lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,KAAK,SAAI,GACR,OAAO,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,MAAgB;;;;;;;;GActH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,MAAgB,GAAG,MAAM,CAUxH;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW;;;;;;;;;;;EAczD"}
|
package/lib/music-lib.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages as t, sourceName as displayName } from './i18n.js';
|
|
2
|
+
import { sourceConfigMap, formatDuration } from './config.js';
|
|
2
3
|
export async function searchMusic(runtime, keyword, source, limit = 5) {
|
|
3
4
|
const s = source ?? 'qq';
|
|
4
5
|
const service = runtime.services[s];
|
|
@@ -11,10 +12,10 @@ export async function searchMusic(runtime, keyword, source, limit = 5) {
|
|
|
11
12
|
total: results.length,
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
|
-
export async function shareMusicDetail(runtime, id, source) {
|
|
15
|
+
export async function shareMusicDetail(runtime, id, source, locale = 'zh-CN') {
|
|
15
16
|
const service = runtime.services[source];
|
|
16
17
|
if (!service) {
|
|
17
|
-
return { success: false, error:
|
|
18
|
+
return { success: false, error: t(locale, 'unsupported', { source }) };
|
|
18
19
|
}
|
|
19
20
|
try {
|
|
20
21
|
const detail = await service.getDetail(id);
|
|
@@ -27,10 +28,10 @@ export async function shareMusicDetail(runtime, id, source) {
|
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
|
-
export function formatSearchResults(results, source) {
|
|
31
|
-
const sourceName =
|
|
31
|
+
export function formatSearchResults(results, source, locale = 'zh-CN') {
|
|
32
|
+
const sourceName = displayName(source, locale) ?? source;
|
|
32
33
|
if (results.length === 0)
|
|
33
|
-
return
|
|
34
|
+
return t(locale, 'noResults', { source: sourceName });
|
|
34
35
|
const lines = results.map((m, i) => {
|
|
35
36
|
const parts = [m.title];
|
|
36
37
|
if (m.artist)
|
|
@@ -38,7 +39,7 @@ export function formatSearchResults(results, source) {
|
|
|
38
39
|
const duration = m.duration ? ` [${formatDuration(m.duration)}]` : '';
|
|
39
40
|
return `${i + 1}. ${parts.join(' - ')}${duration}`;
|
|
40
41
|
});
|
|
41
|
-
return
|
|
42
|
+
return t(locale, 'results', { source: sourceName, lines: lines.join('\n') });
|
|
42
43
|
}
|
|
43
44
|
export function buildMusicShareSegment(detail) {
|
|
44
45
|
const config = sourceConfigMap[detail.source];
|
package/lib/music-lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"music-lib.js","sourceRoot":"","sources":["../src/music-lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"music-lib.js","sourceRoot":"","sources":["../src/music-lib.ts"],"names":[],"mappings":"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"}
|
package/lib/session.d.ts
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
2
|
+
import { type ConversationRef } from '@zhin.js/im-contract';
|
|
1
3
|
import type { MusicInfo, MusicSource } from './types.js';
|
|
2
4
|
export interface PendingSearch {
|
|
5
|
+
readonly locale?: Locale;
|
|
3
6
|
readonly results: readonly MusicInfo[];
|
|
4
7
|
readonly source: MusicSource;
|
|
5
8
|
readonly keyword: string;
|
|
6
9
|
readonly timestamp: number;
|
|
7
10
|
}
|
|
8
|
-
export declare function sessionKey(
|
|
11
|
+
export declare function sessionKey(conversation: ConversationRef, senderId: string): string;
|
|
9
12
|
export declare function resolveMessageIds(input: {
|
|
10
13
|
metadata?: Record<string, unknown>;
|
|
11
|
-
conversation?:
|
|
12
|
-
id?: unknown;
|
|
13
|
-
endpoint?: {
|
|
14
|
-
id?: unknown;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
14
|
+
conversation?: ConversationRef;
|
|
17
15
|
sender?: {
|
|
18
16
|
id?: unknown;
|
|
19
17
|
};
|
|
20
|
-
}): {
|
|
21
|
-
|
|
22
|
-
conversationId: string;
|
|
18
|
+
} | undefined): {
|
|
19
|
+
conversation: ConversationRef;
|
|
23
20
|
senderId: string;
|
|
24
21
|
} | null;
|
|
25
22
|
/** Generation-owned pending music selections. */
|
package/lib/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAgB,UAAU,CACxB,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAgB,UAAU,CACxB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3B,GAAG,SAAS,GAAG;IAAE,YAAY,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOzE;AAED,iDAAiD;AACjD,qBAAa,mBAAmB;;gBAM5B,SAAS,SAAoB,EAC7B,GAAG,GAAE,MAAM,MAAiB;IAM9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAI7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAU3C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,YAAY,IAAI,IAAI;IASpB,OAAO,IAAI,IAAI;CAGhB"}
|
package/lib/session.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import { conversationRefKey } from '@zhin.js/im-contract';
|
|
1
2
|
const SEARCH_TIMEOUT_MS = 3 * 60 * 1000;
|
|
2
|
-
export function sessionKey(
|
|
3
|
-
return
|
|
3
|
+
export function sessionKey(conversation, senderId) {
|
|
4
|
+
return JSON.stringify([conversationRefKey(conversation), senderId]);
|
|
4
5
|
}
|
|
5
6
|
export function resolveMessageIds(input) {
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const conversation = input?.conversation;
|
|
8
|
+
const senderId = input?.sender?.id;
|
|
9
|
+
if (!conversation?.endpoint?.id || !conversation.endpoint.adapter || !conversation.id
|
|
10
|
+
|| !['private', 'group', 'channel'].includes(conversation.kind)
|
|
11
|
+
|| typeof senderId !== 'string' || !senderId)
|
|
11
12
|
return null;
|
|
12
|
-
return {
|
|
13
|
+
return { conversation, senderId };
|
|
13
14
|
}
|
|
14
15
|
/** Generation-owned pending music selections. */
|
|
15
16
|
export class MusicSearchSessions {
|