polyv-live-cli 1.2.17 → 1.2.21
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/dist/commands/ai.commands.d.ts +12 -0
- package/dist/commands/ai.commands.d.ts.map +1 -0
- package/dist/commands/ai.commands.js +126 -0
- package/dist/commands/ai.commands.js.map +1 -0
- package/dist/commands/card-push.commands.d.ts +15 -0
- package/dist/commands/card-push.commands.d.ts.map +1 -0
- package/dist/commands/card-push.commands.js +257 -0
- package/dist/commands/card-push.commands.js.map +1 -0
- package/dist/commands/chat.commands.d.ts.map +1 -1
- package/dist/commands/chat.commands.js +152 -0
- package/dist/commands/chat.commands.js.map +1 -1
- package/dist/commands/checkin.commands.d.ts +4 -0
- package/dist/commands/checkin.commands.d.ts.map +1 -0
- package/dist/commands/checkin.commands.js +228 -0
- package/dist/commands/checkin.commands.js.map +1 -0
- package/dist/commands/donate.commands.d.ts +5 -0
- package/dist/commands/donate.commands.d.ts.map +1 -0
- package/dist/commands/donate.commands.js +177 -0
- package/dist/commands/donate.commands.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/lottery.commands.d.ts +5 -0
- package/dist/commands/lottery.commands.d.ts.map +1 -0
- package/dist/commands/lottery.commands.js +330 -0
- package/dist/commands/lottery.commands.js.map +1 -0
- package/dist/commands/platform-label.commands.d.ts +11 -0
- package/dist/commands/platform-label.commands.d.ts.map +1 -0
- package/dist/commands/platform-label.commands.js +173 -0
- package/dist/commands/platform-label.commands.js.map +1 -0
- package/dist/commands/platform.commands.d.ts +13 -0
- package/dist/commands/platform.commands.d.ts.map +1 -0
- package/dist/commands/platform.commands.js +366 -0
- package/dist/commands/platform.commands.js.map +1 -0
- package/dist/commands/promotion.commands.d.ts +12 -0
- package/dist/commands/promotion.commands.d.ts.map +1 -0
- package/dist/commands/promotion.commands.js +98 -0
- package/dist/commands/promotion.commands.js.map +1 -0
- package/dist/commands/qa.commands.d.ts +4 -0
- package/dist/commands/qa.commands.d.ts.map +1 -0
- package/dist/commands/qa.commands.js +159 -0
- package/dist/commands/qa.commands.js.map +1 -0
- package/dist/commands/questionnaire.commands.d.ts +4 -0
- package/dist/commands/questionnaire.commands.d.ts.map +1 -0
- package/dist/commands/questionnaire.commands.js +187 -0
- package/dist/commands/questionnaire.commands.js.map +1 -0
- package/dist/commands/transmit.commands.d.ts +12 -0
- package/dist/commands/transmit.commands.d.ts.map +1 -0
- package/dist/commands/transmit.commands.js +98 -0
- package/dist/commands/transmit.commands.js.map +1 -0
- package/dist/commands/viewer.commands.d.ts +5 -0
- package/dist/commands/viewer.commands.d.ts.map +1 -0
- package/dist/commands/viewer.commands.js +257 -0
- package/dist/commands/viewer.commands.js.map +1 -0
- package/dist/commands/watch-condition.commands.d.ts +5 -0
- package/dist/commands/watch-condition.commands.d.ts.map +1 -0
- package/dist/commands/watch-condition.commands.js +158 -0
- package/dist/commands/watch-condition.commands.js.map +1 -0
- package/dist/commands/whitelist.commands.d.ts +5 -0
- package/dist/commands/whitelist.commands.d.ts.map +1 -0
- package/dist/commands/whitelist.commands.js +216 -0
- package/dist/commands/whitelist.commands.js.map +1 -0
- package/dist/handlers/ai-digital-human.handler.d.ts +18 -0
- package/dist/handlers/ai-digital-human.handler.d.ts.map +1 -0
- package/dist/handlers/ai-digital-human.handler.js +134 -0
- package/dist/handlers/ai-digital-human.handler.js.map +1 -0
- package/dist/handlers/card-push.handler.d.ts +25 -0
- package/dist/handlers/card-push.handler.d.ts.map +1 -0
- package/dist/handlers/card-push.handler.js +287 -0
- package/dist/handlers/card-push.handler.js.map +1 -0
- package/dist/handlers/chat.handler.d.ts +17 -1
- package/dist/handlers/chat.handler.d.ts.map +1 -1
- package/dist/handlers/chat.handler.js +272 -0
- package/dist/handlers/chat.handler.js.map +1 -1
- package/dist/handlers/checkin.handler.d.ts +22 -0
- package/dist/handlers/checkin.handler.d.ts.map +1 -0
- package/dist/handlers/checkin.handler.js +261 -0
- package/dist/handlers/checkin.handler.js.map +1 -0
- package/dist/handlers/donate.handler.d.ts +18 -0
- package/dist/handlers/donate.handler.d.ts.map +1 -0
- package/dist/handlers/donate.handler.js +221 -0
- package/dist/handlers/donate.handler.js.map +1 -0
- package/dist/handlers/lottery.handler.d.ts +29 -0
- package/dist/handlers/lottery.handler.d.ts.map +1 -0
- package/dist/handlers/lottery.handler.js +386 -0
- package/dist/handlers/lottery.handler.js.map +1 -0
- package/dist/handlers/platform-label.handler.d.ts +18 -0
- package/dist/handlers/platform-label.handler.d.ts.map +1 -0
- package/dist/handlers/platform-label.handler.js +113 -0
- package/dist/handlers/platform-label.handler.js.map +1 -0
- package/dist/handlers/platform.handler.d.ts +24 -0
- package/dist/handlers/platform.handler.d.ts.map +1 -0
- package/dist/handlers/platform.handler.js +302 -0
- package/dist/handlers/platform.handler.js.map +1 -0
- package/dist/handlers/promotion.handler.d.ts +16 -0
- package/dist/handlers/promotion.handler.d.ts.map +1 -0
- package/dist/handlers/promotion.handler.js +103 -0
- package/dist/handlers/promotion.handler.js.map +1 -0
- package/dist/handlers/qa-questionnaire.handler.d.ts +27 -0
- package/dist/handlers/qa-questionnaire.handler.d.ts.map +1 -0
- package/dist/handlers/qa-questionnaire.handler.js +386 -0
- package/dist/handlers/qa-questionnaire.handler.js.map +1 -0
- package/dist/handlers/transmit.handler.d.ts +15 -0
- package/dist/handlers/transmit.handler.d.ts.map +1 -0
- package/dist/handlers/transmit.handler.js +86 -0
- package/dist/handlers/transmit.handler.js.map +1 -0
- package/dist/handlers/viewer.handler.d.ts +23 -0
- package/dist/handlers/viewer.handler.d.ts.map +1 -0
- package/dist/handlers/viewer.handler.js +322 -0
- package/dist/handlers/viewer.handler.js.map +1 -0
- package/dist/handlers/watch-condition.handler.d.ts +18 -0
- package/dist/handlers/watch-condition.handler.d.ts.map +1 -0
- package/dist/handlers/watch-condition.handler.js +178 -0
- package/dist/handlers/watch-condition.handler.js.map +1 -0
- package/dist/handlers/whitelist.handler.d.ts +20 -0
- package/dist/handlers/whitelist.handler.d.ts.map +1 -0
- package/dist/handlers/whitelist.handler.js +241 -0
- package/dist/handlers/whitelist.handler.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -4
- package/dist/index.js.map +1 -1
- package/dist/services/ai-digital-human-service.d.ts +10 -0
- package/dist/services/ai-digital-human-service.d.ts.map +1 -0
- package/dist/services/ai-digital-human-service.js +64 -0
- package/dist/services/ai-digital-human-service.js.map +1 -0
- package/dist/services/card-push-service.d.ts +16 -0
- package/dist/services/card-push-service.d.ts.map +1 -0
- package/dist/services/card-push-service.js +153 -0
- package/dist/services/card-push-service.js.map +1 -0
- package/dist/services/chat.service.sdk.d.ts +39 -1
- package/dist/services/chat.service.sdk.d.ts.map +1 -1
- package/dist/services/chat.service.sdk.js +60 -0
- package/dist/services/chat.service.sdk.js.map +1 -1
- package/dist/services/checkin-service.d.ts +14 -0
- package/dist/services/checkin-service.d.ts.map +1 -0
- package/dist/services/checkin-service.js +89 -0
- package/dist/services/checkin-service.js.map +1 -0
- package/dist/services/donate-service.d.ts +12 -0
- package/dist/services/donate-service.d.ts.map +1 -0
- package/dist/services/donate-service.js +59 -0
- package/dist/services/donate-service.js.map +1 -0
- package/dist/services/lottery-service.d.ts +17 -0
- package/dist/services/lottery-service.d.ts.map +1 -0
- package/dist/services/lottery-service.js +84 -0
- package/dist/services/lottery-service.js.map +1 -0
- package/dist/services/platform-label-service.d.ts +21 -0
- package/dist/services/platform-label-service.d.ts.map +1 -0
- package/dist/services/platform-label-service.js +56 -0
- package/dist/services/platform-label-service.js.map +1 -0
- package/dist/services/platform-service.d.ts +47 -0
- package/dist/services/platform-service.d.ts.map +1 -0
- package/dist/services/platform-service.js +144 -0
- package/dist/services/platform-service.js.map +1 -0
- package/dist/services/promotion-service.d.ts +12 -0
- package/dist/services/promotion-service.d.ts.map +1 -0
- package/dist/services/promotion-service.js +54 -0
- package/dist/services/promotion-service.js.map +1 -0
- package/dist/services/qa-questionnaire-service.d.ts +15 -0
- package/dist/services/qa-questionnaire-service.d.ts.map +1 -0
- package/dist/services/qa-questionnaire-service.js +102 -0
- package/dist/services/qa-questionnaire-service.js.map +1 -0
- package/dist/services/stream.service.sdk.d.ts.map +1 -1
- package/dist/services/stream.service.sdk.js +8 -12
- package/dist/services/stream.service.sdk.js.map +1 -1
- package/dist/services/transmit-service.d.ts +9 -0
- package/dist/services/transmit-service.d.ts.map +1 -0
- package/dist/services/transmit-service.js +45 -0
- package/dist/services/transmit-service.js.map +1 -0
- package/dist/services/viewer-service.d.ts +29 -0
- package/dist/services/viewer-service.d.ts.map +1 -0
- package/dist/services/viewer-service.js +106 -0
- package/dist/services/viewer-service.js.map +1 -0
- package/dist/services/watch-condition-service.d.ts +16 -0
- package/dist/services/watch-condition-service.d.ts.map +1 -0
- package/dist/services/watch-condition-service.js +38 -0
- package/dist/services/watch-condition-service.js.map +1 -0
- package/dist/services/whitelist-service.d.ts +50 -0
- package/dist/services/whitelist-service.d.ts.map +1 -0
- package/dist/services/whitelist-service.js +56 -0
- package/dist/services/whitelist-service.js.map +1 -0
- package/dist/types/ai-digital-human.d.ts +49 -0
- package/dist/types/ai-digital-human.d.ts.map +1 -0
- package/dist/types/ai-digital-human.js +3 -0
- package/dist/types/ai-digital-human.js.map +1 -0
- package/dist/types/card-push.d.ts +151 -0
- package/dist/types/card-push.d.ts.map +1 -0
- package/dist/types/card-push.js +3 -0
- package/dist/types/card-push.js.map +1 -0
- package/dist/types/chat.d.ts +35 -0
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/types/checkin.d.ts +57 -0
- package/dist/types/checkin.d.ts.map +1 -0
- package/dist/types/checkin.js +3 -0
- package/dist/types/checkin.js.map +1 -0
- package/dist/types/donate.d.ts +92 -0
- package/dist/types/donate.d.ts.map +1 -0
- package/dist/types/donate.js +3 -0
- package/dist/types/donate.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/lottery.d.ts +110 -0
- package/dist/types/lottery.d.ts.map +1 -0
- package/dist/types/lottery.js +3 -0
- package/dist/types/lottery.js.map +1 -0
- package/dist/types/platform-label.d.ts +29 -0
- package/dist/types/platform-label.d.ts.map +1 -0
- package/dist/types/platform-label.js +3 -0
- package/dist/types/platform-label.js.map +1 -0
- package/dist/types/platform.d.ts +44 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +11 -0
- package/dist/types/platform.js.map +1 -0
- package/dist/types/promotion.d.ts +31 -0
- package/dist/types/promotion.d.ts.map +1 -0
- package/dist/types/promotion.js +3 -0
- package/dist/types/promotion.js.map +1 -0
- package/dist/types/qa.d.ts +90 -0
- package/dist/types/qa.d.ts.map +1 -0
- package/dist/types/qa.js +3 -0
- package/dist/types/qa.js.map +1 -0
- package/dist/types/transmit.d.ts +40 -0
- package/dist/types/transmit.d.ts.map +1 -0
- package/dist/types/transmit.js +3 -0
- package/dist/types/transmit.js.map +1 -0
- package/dist/types/viewer.d.ts +36 -0
- package/dist/types/viewer.d.ts.map +1 -0
- package/dist/types/viewer.js +3 -0
- package/dist/types/viewer.js.map +1 -0
- package/dist/types/watch-condition.d.ts +49 -0
- package/dist/types/watch-condition.d.ts.map +1 -0
- package/dist/types/watch-condition.js +18 -0
- package/dist/types/watch-condition.js.map +1 -0
- package/dist/types/whitelist.d.ts +36 -0
- package/dist/types/whitelist.d.ts.map +1 -0
- package/dist/types/whitelist.js +3 -0
- package/dist/types/whitelist.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOutputFormat = validateOutputFormat;
|
|
4
|
+
exports.registerViewerCommands = registerViewerCommands;
|
|
5
|
+
const viewer_handler_1 = require("../handlers/viewer.handler");
|
|
6
|
+
const manager_1 = require("../config/manager");
|
|
7
|
+
const auth_adapter_1 = require("../config/auth-adapter");
|
|
8
|
+
const errors_1 = require("../utils/errors");
|
|
9
|
+
function validateOutputFormat(value) {
|
|
10
|
+
if (!['table', 'json'].includes(value)) {
|
|
11
|
+
throw new Error('Output format must be either "table" or "json"');
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
function registerViewerCommands(program) {
|
|
16
|
+
const viewerCmd = program.command('viewer');
|
|
17
|
+
viewerCmd.description('Manage viewer information queries');
|
|
18
|
+
const getCmd = viewerCmd
|
|
19
|
+
.command('get')
|
|
20
|
+
.description('Get single viewer details')
|
|
21
|
+
.requiredOption('-i, --viewer-id <id>', 'viewer unique ID')
|
|
22
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
23
|
+
.action(async (options) => {
|
|
24
|
+
try {
|
|
25
|
+
const parentOptions = program.opts();
|
|
26
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
27
|
+
const viewerHandler = new viewer_handler_1.ViewerHandler(authConfig, serviceConfig);
|
|
28
|
+
await viewerHandler.getViewer({
|
|
29
|
+
viewerId: options.viewerId,
|
|
30
|
+
output: options.output,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
getCmd.addHelpText('after', `
|
|
39
|
+
Examples:
|
|
40
|
+
# Get viewer details
|
|
41
|
+
$ polyv-live-cli viewer get -i "2_v378gn997yovtl3p8h77db9e224t6hg9"
|
|
42
|
+
|
|
43
|
+
# JSON output
|
|
44
|
+
$ polyv-live-cli viewer get -i "2_v378gn997yovtl3p8h77db9e224t6hg9" -o json
|
|
45
|
+
|
|
46
|
+
Output Formats:
|
|
47
|
+
table - Formatted table output (default)
|
|
48
|
+
json - JSON format for programmatic use
|
|
49
|
+
`);
|
|
50
|
+
const listCmd = viewerCmd
|
|
51
|
+
.command('list')
|
|
52
|
+
.description('List viewers with pagination and filters')
|
|
53
|
+
.option('--source <type>', 'filter by source (IMPORT|WX|MOBILE)')
|
|
54
|
+
.option('--mobile <number>', 'filter by mobile number')
|
|
55
|
+
.option('--email <email>', 'filter by email')
|
|
56
|
+
.option('--area <area>', 'filter by area')
|
|
57
|
+
.option('--page <number>', 'page number', parseInt)
|
|
58
|
+
.option('--size <number>', 'page size', parseInt)
|
|
59
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
60
|
+
.action(async (options) => {
|
|
61
|
+
try {
|
|
62
|
+
const parentOptions = program.opts();
|
|
63
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
64
|
+
const viewerHandler = new viewer_handler_1.ViewerHandler(authConfig, serviceConfig);
|
|
65
|
+
await viewerHandler.listViewers({
|
|
66
|
+
source: options.source,
|
|
67
|
+
mobile: options.mobile,
|
|
68
|
+
email: options.email,
|
|
69
|
+
area: options.area,
|
|
70
|
+
page: options.page,
|
|
71
|
+
size: options.size,
|
|
72
|
+
output: options.output,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
listCmd.addHelpText('after', `
|
|
81
|
+
Examples:
|
|
82
|
+
# List all viewers (default pagination)
|
|
83
|
+
$ polyv-live-cli viewer list
|
|
84
|
+
|
|
85
|
+
# List with custom pagination
|
|
86
|
+
$ polyv-live-cli viewer list --page 1 --size 20
|
|
87
|
+
|
|
88
|
+
# Filter by source
|
|
89
|
+
$ polyv-live-cli viewer list --source IMPORT
|
|
90
|
+
$ polyv-live-cli viewer list --source WX
|
|
91
|
+
$ polyv-live-cli viewer list --source MOBILE
|
|
92
|
+
|
|
93
|
+
# Filter by mobile number
|
|
94
|
+
$ polyv-live-cli viewer list --mobile "13800138000"
|
|
95
|
+
|
|
96
|
+
# Filter by email
|
|
97
|
+
$ polyv-live-cli viewer list --email "user@example.com"
|
|
98
|
+
|
|
99
|
+
# Filter by area
|
|
100
|
+
$ polyv-live-cli viewer list --area "Beijing"
|
|
101
|
+
|
|
102
|
+
# Combine multiple filters
|
|
103
|
+
$ polyv-live-cli viewer list --source IMPORT --page 1 --size 50 -o json
|
|
104
|
+
|
|
105
|
+
Output Formats:
|
|
106
|
+
table - Formatted table output (default)
|
|
107
|
+
json - JSON format for programmatic use
|
|
108
|
+
`);
|
|
109
|
+
const tagCmd = viewerCmd.command('tag');
|
|
110
|
+
tagCmd.description('Manage viewer tags');
|
|
111
|
+
const tagListCmd = tagCmd
|
|
112
|
+
.command('list')
|
|
113
|
+
.description('List all viewer tags')
|
|
114
|
+
.option('-k, --keyword <keyword>', 'keyword to search tag name')
|
|
115
|
+
.option('--page <number>', 'page number', parseInt)
|
|
116
|
+
.option('--size <number>', 'page size', parseInt)
|
|
117
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
118
|
+
.action(async (options) => {
|
|
119
|
+
try {
|
|
120
|
+
const parentOptions = program.opts();
|
|
121
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
122
|
+
const viewerHandler = new viewer_handler_1.ViewerHandler(authConfig, serviceConfig);
|
|
123
|
+
await viewerHandler.listViewerTags({
|
|
124
|
+
keyword: options.keyword,
|
|
125
|
+
page: options.page,
|
|
126
|
+
size: options.size,
|
|
127
|
+
output: options.output,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
tagListCmd.addHelpText('after', `
|
|
136
|
+
Examples:
|
|
137
|
+
# List all tags
|
|
138
|
+
$ polyv-live-cli viewer tag list
|
|
139
|
+
|
|
140
|
+
# Search tags by keyword
|
|
141
|
+
$ polyv-live-cli viewer tag list -k "VIP"
|
|
142
|
+
|
|
143
|
+
# Paginated list
|
|
144
|
+
$ polyv-live-cli viewer tag list --page 1 --size 20
|
|
145
|
+
|
|
146
|
+
# JSON output
|
|
147
|
+
$ polyv-live-cli viewer tag list -o json
|
|
148
|
+
`);
|
|
149
|
+
const tagAddCmd = tagCmd
|
|
150
|
+
.command('add')
|
|
151
|
+
.description('Add tags to viewers')
|
|
152
|
+
.requiredOption('-V, --viewer-ids <ids>', 'comma-separated viewer IDs')
|
|
153
|
+
.requiredOption('-l, --label-ids <ids>', 'comma-separated label IDs')
|
|
154
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
155
|
+
.action(async (options) => {
|
|
156
|
+
try {
|
|
157
|
+
const parentOptions = program.opts();
|
|
158
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
159
|
+
const viewerHandler = new viewer_handler_1.ViewerHandler(authConfig, serviceConfig);
|
|
160
|
+
await viewerHandler.addViewerTag({
|
|
161
|
+
viewerIds: options.viewerIds,
|
|
162
|
+
labelIds: options.labelIds,
|
|
163
|
+
output: options.output,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
tagAddCmd.addHelpText('after', `
|
|
172
|
+
Examples:
|
|
173
|
+
# Add single tag to single viewer
|
|
174
|
+
$ polyv-live-cli viewer tag add -V "viewer1" -l 1
|
|
175
|
+
|
|
176
|
+
# Add multiple tags to single viewer
|
|
177
|
+
$ polyv-live-cli viewer tag add -V "viewer1" -l 1,2,3
|
|
178
|
+
|
|
179
|
+
# Add tags to multiple viewers
|
|
180
|
+
$ polyv-live-cli viewer tag add -V "viewer1,viewer2,viewer3" -l 1,2
|
|
181
|
+
|
|
182
|
+
# JSON output
|
|
183
|
+
$ polyv-live-cli viewer tag add -V "viewer1" -l 1 -o json
|
|
184
|
+
`);
|
|
185
|
+
const tagRemoveCmd = tagCmd
|
|
186
|
+
.command('remove')
|
|
187
|
+
.description('Remove tags from viewers')
|
|
188
|
+
.requiredOption('-V, --viewer-ids <ids>', 'comma-separated viewer IDs')
|
|
189
|
+
.requiredOption('-l, --label-ids <ids>', 'comma-separated label IDs')
|
|
190
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
191
|
+
.action(async (options) => {
|
|
192
|
+
try {
|
|
193
|
+
const parentOptions = program.opts();
|
|
194
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
195
|
+
const viewerHandler = new viewer_handler_1.ViewerHandler(authConfig, serviceConfig);
|
|
196
|
+
await viewerHandler.removeViewerTag({
|
|
197
|
+
viewerIds: options.viewerIds,
|
|
198
|
+
labelIds: options.labelIds,
|
|
199
|
+
output: options.output,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
204
|
+
process.exit(1);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
tagRemoveCmd.addHelpText('after', `
|
|
208
|
+
Examples:
|
|
209
|
+
# Remove single tag from single viewer
|
|
210
|
+
$ polyv-live-cli viewer tag remove -V "viewer1" -l 1
|
|
211
|
+
|
|
212
|
+
# Remove multiple tags from single viewer
|
|
213
|
+
$ polyv-live-cli viewer tag remove -V "viewer1" -l 1,2,3
|
|
214
|
+
|
|
215
|
+
# Remove tags from multiple viewers
|
|
216
|
+
$ polyv-live-cli viewer tag remove -V "viewer1,viewer2" -l 1,2
|
|
217
|
+
|
|
218
|
+
# JSON output
|
|
219
|
+
$ polyv-live-cli viewer tag remove -V "viewer1" -l 1 -o json
|
|
220
|
+
`);
|
|
221
|
+
}
|
|
222
|
+
async function loadAuthAndServiceConfig(parentOptions) {
|
|
223
|
+
const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions);
|
|
224
|
+
if (!authResult) {
|
|
225
|
+
throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions));
|
|
226
|
+
}
|
|
227
|
+
let configResult;
|
|
228
|
+
try {
|
|
229
|
+
configResult = await manager_1.configManager.load({
|
|
230
|
+
cliOptions: parentOptions,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) {
|
|
235
|
+
configResult = {
|
|
236
|
+
config: {
|
|
237
|
+
baseUrl: 'https://api.polyv.net',
|
|
238
|
+
timeout: 30000,
|
|
239
|
+
debug: false
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
throw error;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const serviceConfig = {
|
|
248
|
+
baseUrl: configResult.config.baseUrl,
|
|
249
|
+
timeout: configResult.config.timeout,
|
|
250
|
+
debug: configResult.config.debug,
|
|
251
|
+
};
|
|
252
|
+
return {
|
|
253
|
+
authConfig: authResult.config,
|
|
254
|
+
serviceConfig,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=viewer.commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer.commands.js","sourceRoot":"","sources":["../../src/commands/viewer.commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { OutputFormat } from '../handlers/base.handler';
|
|
3
|
+
export declare function validateOutputFormat(value: string): OutputFormat;
|
|
4
|
+
export declare function registerWatchConditionCommands(program: Command): void;
|
|
5
|
+
//# sourceMappingURL=watch-condition.commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-condition.commands.d.ts","sourceRoot":"","sources":["../../src/commands/watch-condition.commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOxD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAKhE;AAMD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuHrE"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOutputFormat = validateOutputFormat;
|
|
4
|
+
exports.registerWatchConditionCommands = registerWatchConditionCommands;
|
|
5
|
+
const watch_condition_handler_1 = require("../handlers/watch-condition.handler");
|
|
6
|
+
const manager_1 = require("../config/manager");
|
|
7
|
+
const auth_adapter_1 = require("../config/auth-adapter");
|
|
8
|
+
const errors_1 = require("../utils/errors");
|
|
9
|
+
function validateOutputFormat(value) {
|
|
10
|
+
if (!['table', 'json'].includes(value)) {
|
|
11
|
+
throw new Error('Output format must be either "table" or "json"');
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
function registerWatchConditionCommands(program) {
|
|
16
|
+
const watchConditionCmd = program.command('watch-condition');
|
|
17
|
+
watchConditionCmd.description('观看条件配置管理');
|
|
18
|
+
const getCmd = watchConditionCmd
|
|
19
|
+
.command('get')
|
|
20
|
+
.description('获取观看条件配置')
|
|
21
|
+
.option('--channel-id <id>', '频道ID (可选,不传为全局设置)')
|
|
22
|
+
.option('-o, --output <format>', '输出格式 (table|json)', validateOutputFormat, 'table')
|
|
23
|
+
.action(async (options) => {
|
|
24
|
+
try {
|
|
25
|
+
const parentOptions = program.opts();
|
|
26
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
27
|
+
const watchConditionHandler = new watch_condition_handler_1.WatchConditionHandler(authConfig, serviceConfig);
|
|
28
|
+
await watchConditionHandler.getWatchCondition({
|
|
29
|
+
channelId: options.channelId,
|
|
30
|
+
output: options.output,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
getCmd.addHelpText('after', `
|
|
39
|
+
Examples:
|
|
40
|
+
# 获取全局观看条件
|
|
41
|
+
$ polyv-live-cli watch-condition get
|
|
42
|
+
|
|
43
|
+
# 获取频道观看条件
|
|
44
|
+
$ polyv-live-cli watch-condition get --channel-id 123456
|
|
45
|
+
|
|
46
|
+
# JSON 输出格式
|
|
47
|
+
$ polyv-live-cli watch-condition get --channel-id 123456 -o json
|
|
48
|
+
|
|
49
|
+
Output Formats:
|
|
50
|
+
table - 表格输出格式 (默认)
|
|
51
|
+
json - JSON 格式输出,适合程序化处理
|
|
52
|
+
`);
|
|
53
|
+
const setCmd = watchConditionCmd
|
|
54
|
+
.command('set')
|
|
55
|
+
.description('设置观看条件配置')
|
|
56
|
+
.option('--channel-id <id>', '频道ID (可选,不传为全局设置)')
|
|
57
|
+
.option('--rank <number>', '条件级别 (1=主要条件/ 2=次要条件)', parseInt)
|
|
58
|
+
.option('--auth-type <type>', '认证类型 (none|code|pay|phone|info|custom|external|direct)')
|
|
59
|
+
.option('--enabled <value>', '是否启用 (Y|N)')
|
|
60
|
+
.option('--auth-code <password>', '密码 (authType=code 时使用)')
|
|
61
|
+
.option('--price <amount>', '价格/元 (authType=pay 时使用)', parseFloat)
|
|
62
|
+
.option('--config-file <path>', 'JSON 配置文件路径 (复杂配置场景)')
|
|
63
|
+
.option('-o, --output <format>', '输出格式 (table|json)', validateOutputFormat, 'table')
|
|
64
|
+
.action(async (options) => {
|
|
65
|
+
try {
|
|
66
|
+
const parentOptions = program.opts();
|
|
67
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
68
|
+
const watchConditionHandler = new watch_condition_handler_1.WatchConditionHandler(authConfig, serviceConfig);
|
|
69
|
+
await watchConditionHandler.setWatchCondition({
|
|
70
|
+
channelId: options.channelId,
|
|
71
|
+
rank: options.rank,
|
|
72
|
+
authType: options.authType,
|
|
73
|
+
enabled: options.enabled,
|
|
74
|
+
authCode: options.authCode,
|
|
75
|
+
price: options.price,
|
|
76
|
+
configFile: options.configFile,
|
|
77
|
+
output: options.output,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
setCmd.addHelpText('after', `
|
|
86
|
+
Examples:
|
|
87
|
+
# 简单设置:关闭观看条件(公开观看)
|
|
88
|
+
$ polyv-live-cli watch-condition set --channel-id 123456 --rank 1 --auth-type none --enabled Y
|
|
89
|
+
|
|
90
|
+
# 简单设置:密码观看
|
|
91
|
+
$ polyv-live-cli watch-condition set --channel-id 123456 --rank 1 --auth-type code --enabled Y --auth-code "abc123"
|
|
92
|
+
|
|
93
|
+
# 简单设置:付费观看
|
|
94
|
+
$ polyv-live-cli watch-condition set --channel-id 123456 --rank 1 --auth-type pay --enabled Y --price 99.9
|
|
95
|
+
|
|
96
|
+
# 复杂设置:使用 JSON 配置文件
|
|
97
|
+
$ polyv-live-cli watch-condition set --channel-id 123456 --config-file ./watch-condition.json
|
|
98
|
+
|
|
99
|
+
# 设置全局观看条件
|
|
100
|
+
$ polyv-live-cli watch-condition set --rank 1 --auth-type none --enabled N
|
|
101
|
+
|
|
102
|
+
JSON Config File Format:
|
|
103
|
+
{
|
|
104
|
+
"authSettings": [
|
|
105
|
+
{
|
|
106
|
+
"rank": 1,
|
|
107
|
+
"enabled": "Y",
|
|
108
|
+
"authType": "code",
|
|
109
|
+
"authCode": "abc123"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"rank": 2,
|
|
113
|
+
"enabled": "N"
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
Output Formats:
|
|
119
|
+
table - 表格输出格式 (默认)
|
|
120
|
+
json - JSON 格式输出,适合程序化处理
|
|
121
|
+
`);
|
|
122
|
+
}
|
|
123
|
+
async function loadAuthAndServiceConfig(parentOptions) {
|
|
124
|
+
const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions);
|
|
125
|
+
if (!authResult) {
|
|
126
|
+
throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions));
|
|
127
|
+
}
|
|
128
|
+
let configResult;
|
|
129
|
+
try {
|
|
130
|
+
configResult = await manager_1.configManager.load({
|
|
131
|
+
cliOptions: parentOptions,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) {
|
|
136
|
+
configResult = {
|
|
137
|
+
config: {
|
|
138
|
+
baseUrl: 'https://api.polyv.net',
|
|
139
|
+
timeout: 30000,
|
|
140
|
+
debug: false
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const serviceConfig = {
|
|
149
|
+
baseUrl: configResult.config.baseUrl,
|
|
150
|
+
timeout: configResult.config.timeout,
|
|
151
|
+
debug: configResult.config.debug,
|
|
152
|
+
};
|
|
153
|
+
return {
|
|
154
|
+
authConfig: authResult.config,
|
|
155
|
+
serviceConfig,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=watch-condition.commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-condition.commands.js","sourceRoot":"","sources":["../../src/commands/watch-condition.commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { OutputFormat } from '../handlers/base.handler';
|
|
3
|
+
export declare function validateOutputFormat(value: string): OutputFormat;
|
|
4
|
+
export declare function registerWhitelistCommands(program: Command): void;
|
|
5
|
+
//# sourceMappingURL=whitelist.commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whitelist.commands.d.ts","sourceRoot":"","sources":["../../src/commands/whitelist.commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOxD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAKhE;AAMD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6LhE"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOutputFormat = validateOutputFormat;
|
|
4
|
+
exports.registerWhitelistCommands = registerWhitelistCommands;
|
|
5
|
+
const whitelist_handler_1 = require("../handlers/whitelist.handler");
|
|
6
|
+
const manager_1 = require("../config/manager");
|
|
7
|
+
const auth_adapter_1 = require("../config/auth-adapter");
|
|
8
|
+
const errors_1 = require("../utils/errors");
|
|
9
|
+
function validateOutputFormat(value) {
|
|
10
|
+
if (!['table', 'json'].includes(value)) {
|
|
11
|
+
throw new Error('Output format must be either "table" or "json"');
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
function registerWhitelistCommands(program) {
|
|
16
|
+
const whitelistCmd = program.command('whitelist');
|
|
17
|
+
whitelistCmd.description('白名单管理');
|
|
18
|
+
const listCmd = whitelistCmd
|
|
19
|
+
.command('list')
|
|
20
|
+
.description('获取白名单列表')
|
|
21
|
+
.requiredOption('--rank <number>', '条件级别 (1=主要条件/ 2=次要条件)', parseInt)
|
|
22
|
+
.option('--channel-id <id>', '频道ID (可选,不传为全局设置)')
|
|
23
|
+
.option('--page <number>', '页码,默认为1', parseInt)
|
|
24
|
+
.option('--page-size <number>', '每页数量,默认为10', parseInt)
|
|
25
|
+
.option('--keyword <keyword>', '关键词(可根据会员码和名称查询)')
|
|
26
|
+
.option('-o, --output <format>', '输出格式 (table|json)', validateOutputFormat, 'table')
|
|
27
|
+
.action(async (options) => {
|
|
28
|
+
try {
|
|
29
|
+
const parentOptions = program.opts();
|
|
30
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
31
|
+
const whitelistHandler = new whitelist_handler_1.WhitelistHandler(authConfig, serviceConfig);
|
|
32
|
+
await whitelistHandler.listWhitelist({
|
|
33
|
+
channelId: options.channelId,
|
|
34
|
+
rank: options.rank,
|
|
35
|
+
page: options.page,
|
|
36
|
+
pageSize: options.pageSize,
|
|
37
|
+
keyword: options.keyword,
|
|
38
|
+
output: options.output,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
listCmd.addHelpText('after', `
|
|
47
|
+
Examples:
|
|
48
|
+
# 获取频道白名单
|
|
49
|
+
$ polyv-live-cli whitelist list --channel-id 123456 --rank 1
|
|
50
|
+
|
|
51
|
+
# 获取全局白名单
|
|
52
|
+
$ polyv-live-cli whitelist list --rank 1
|
|
53
|
+
|
|
54
|
+
# 分页和搜索
|
|
55
|
+
$ polyv-live-cli whitelist list --channel-id 123456 --rank 1 --page 1 --page-size 20 --keyword "张三"
|
|
56
|
+
|
|
57
|
+
# JSON 输出格式
|
|
58
|
+
$ polyv-live-cli whitelist list --channel-id 123456 --rank 1 -o json
|
|
59
|
+
|
|
60
|
+
Output Formats:
|
|
61
|
+
table - 表格输出格式 (默认)
|
|
62
|
+
json - JSON 格式输出,适合程序化处理
|
|
63
|
+
`);
|
|
64
|
+
const addCmd = whitelistCmd
|
|
65
|
+
.command('add')
|
|
66
|
+
.description('添加白名单项')
|
|
67
|
+
.requiredOption('--rank <number>', '条件级别 (1=主要条件/ 2=次要条件)', parseInt)
|
|
68
|
+
.requiredOption('--code <code>', '会员码 (最多50个字符)')
|
|
69
|
+
.option('--channel-id <id>', '频道ID (可选,不传为全局设置)')
|
|
70
|
+
.option('--name <name>', '昵称 (可选,最多50个字符)')
|
|
71
|
+
.option('-o, --output <format>', '输出格式 (table|json)', validateOutputFormat, 'table')
|
|
72
|
+
.action(async (options) => {
|
|
73
|
+
try {
|
|
74
|
+
const parentOptions = program.opts();
|
|
75
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
76
|
+
const whitelistHandler = new whitelist_handler_1.WhitelistHandler(authConfig, serviceConfig);
|
|
77
|
+
await whitelistHandler.addWhitelist({
|
|
78
|
+
channelId: options.channelId,
|
|
79
|
+
rank: options.rank,
|
|
80
|
+
code: options.code,
|
|
81
|
+
name: options.name,
|
|
82
|
+
output: options.output,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
addCmd.addHelpText('after', `
|
|
91
|
+
Examples:
|
|
92
|
+
# 添加频道白名单
|
|
93
|
+
$ polyv-live-cli whitelist add --channel-id 123456 --rank 1 --code "13800138000" --name "张三"
|
|
94
|
+
|
|
95
|
+
# 添加全局白名单
|
|
96
|
+
$ polyv-live-cli whitelist add --rank 1 --code "13800138000" --name "张三"
|
|
97
|
+
|
|
98
|
+
# JSON 输出格式
|
|
99
|
+
$ polyv-live-cli whitelist add --rank 1 --code "13800138000" -o json
|
|
100
|
+
`);
|
|
101
|
+
const updateCmd = whitelistCmd
|
|
102
|
+
.command('update')
|
|
103
|
+
.description('更新白名单项')
|
|
104
|
+
.requiredOption('--rank <number>', '条件级别 (1=主要条件/ 2=次要条件)', parseInt)
|
|
105
|
+
.requiredOption('--old-code <code>', '原会员码')
|
|
106
|
+
.requiredOption('--code <code>', '新会员码 (最多50个字符)')
|
|
107
|
+
.option('--channel-id <id>', '频道ID (可选,不传为全局设置)')
|
|
108
|
+
.option('--name <name>', '昵称 (可选,最多50个字符)')
|
|
109
|
+
.option('-o, --output <format>', '输出格式 (table|json)', validateOutputFormat, 'table')
|
|
110
|
+
.action(async (options) => {
|
|
111
|
+
try {
|
|
112
|
+
const parentOptions = program.opts();
|
|
113
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
114
|
+
const whitelistHandler = new whitelist_handler_1.WhitelistHandler(authConfig, serviceConfig);
|
|
115
|
+
await whitelistHandler.updateWhitelist({
|
|
116
|
+
channelId: options.channelId,
|
|
117
|
+
rank: options.rank,
|
|
118
|
+
oldCode: options.oldCode,
|
|
119
|
+
code: options.code,
|
|
120
|
+
name: options.name,
|
|
121
|
+
output: options.output,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
updateCmd.addHelpText('after', `
|
|
130
|
+
Examples:
|
|
131
|
+
# 更新频道白名单
|
|
132
|
+
$ polyv-live-cli whitelist update --channel-id 123456 --rank 1 --old-code "13800138000" --code "13900139000" --name "李四"
|
|
133
|
+
|
|
134
|
+
# 更新全局白名单
|
|
135
|
+
$ polyv-live-cli whitelist update --rank 1 --old-code "13800138000" --code "13900139000" --name "李四"
|
|
136
|
+
|
|
137
|
+
# JSON 输出格式
|
|
138
|
+
$ polyv-live-cli whitelist update --rank 1 --old-code "13800138000" --code "13900139000" -o json
|
|
139
|
+
`);
|
|
140
|
+
const removeCmd = whitelistCmd
|
|
141
|
+
.command('remove')
|
|
142
|
+
.description('删除白名单项')
|
|
143
|
+
.requiredOption('--rank <number>', '条件级别 (1=主要条件/ 2=次要条件)', parseInt)
|
|
144
|
+
.option('--channel-id <id>', '频道ID (可选,不传为全局设置)')
|
|
145
|
+
.option('--codes <codes>', '要删除的会员码 (逗号分隔)')
|
|
146
|
+
.option('--clear', '清空所有白名单')
|
|
147
|
+
.option('-o, --output <format>', '输出格式 (table|json)', validateOutputFormat, 'table')
|
|
148
|
+
.action(async (options) => {
|
|
149
|
+
try {
|
|
150
|
+
const parentOptions = program.opts();
|
|
151
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
152
|
+
const whitelistHandler = new whitelist_handler_1.WhitelistHandler(authConfig, serviceConfig);
|
|
153
|
+
await whitelistHandler.removeWhitelist({
|
|
154
|
+
channelId: options.channelId,
|
|
155
|
+
rank: options.rank,
|
|
156
|
+
codes: options.codes,
|
|
157
|
+
clear: options.clear,
|
|
158
|
+
output: options.output,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
removeCmd.addHelpText('after', `
|
|
167
|
+
Examples:
|
|
168
|
+
# 删除单个白名单
|
|
169
|
+
$ polyv-live-cli whitelist remove --channel-id 123456 --rank 1 --codes "13800138000"
|
|
170
|
+
|
|
171
|
+
# 清空所有白名单
|
|
172
|
+
$ polyv-live-cli whitelist remove --channel-id 123456 --rank 1 --clear
|
|
173
|
+
|
|
174
|
+
# JSON 输出格式
|
|
175
|
+
$ polyv-live-cli whitelist remove --channel-id 123456 --rank 1 --codes "13800138000" -o json
|
|
176
|
+
|
|
177
|
+
Note:
|
|
178
|
+
--codes 参数目前只支持单个会员码(API限制)
|
|
179
|
+
`);
|
|
180
|
+
}
|
|
181
|
+
async function loadAuthAndServiceConfig(parentOptions) {
|
|
182
|
+
const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions);
|
|
183
|
+
if (!authResult) {
|
|
184
|
+
throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions));
|
|
185
|
+
}
|
|
186
|
+
let configResult;
|
|
187
|
+
try {
|
|
188
|
+
configResult = await manager_1.configManager.load({
|
|
189
|
+
cliOptions: parentOptions,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) {
|
|
194
|
+
configResult = {
|
|
195
|
+
config: {
|
|
196
|
+
baseUrl: 'https://api.polyv.net',
|
|
197
|
+
timeout: 30000,
|
|
198
|
+
debug: false
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
const serviceConfig = {
|
|
207
|
+
baseUrl: configResult.config.baseUrl,
|
|
208
|
+
timeout: configResult.config.timeout,
|
|
209
|
+
debug: configResult.config.debug,
|
|
210
|
+
};
|
|
211
|
+
return {
|
|
212
|
+
authConfig: authResult.config,
|
|
213
|
+
serviceConfig,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=whitelist.commands.js.map
|