Skip to content

Commit 583ebaa

Browse files
committed
Add extension manager mode to app.js for processing uploaded extension images. Update package.json with new script and enhance SharkPoolsProcessor for extension management. Update workflow to include extension manager processing.
1 parent 5b79713 commit 583ebaa

File tree

5 files changed

+320
-12
lines changed

5 files changed

+320
-12
lines changed

.github/workflows/SharkPool.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,8 @@ jobs:
2626
env:
2727
ZEROCAT_TOKEN_SHARKPOOL: ${{ secrets.ZEROCAT_TOKEN_SHARKPOOL }}
2828
ZEROCAT_BACKEND: ${{ vars.ZEROCAT_BACKEND }}
29+
- name: Process Extension Manager
30+
run: npm run extension-manager
31+
env:
32+
ZEROCAT_TOKEN_SHARKPOOL: ${{ secrets.ZEROCAT_TOKEN_SHARKPOOL }}
33+
ZEROCAT_BACKEND: ${{ vars.ZEROCAT_BACKEND }}

app.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ const args = process.argv.slice(2);
2222
const forceMode = args.includes('-f') || args.includes('--force');
2323
const sharkPoolsMode = args.includes('--sharkpools');
2424
const fortyCodeMode = args.includes('--40code');
25+
const extensionManagerMode = args.includes('--extension-manager');
2526

2627
// 检查是否指定了模式
27-
if (!sharkPoolsMode && !fortyCodeMode) {
28+
if (!sharkPoolsMode && !fortyCodeMode && !extensionManagerMode) {
2829
console.log('❌ 错误: 请指定运行模式');
2930
console.log('使用方法:');
30-
console.log(' - 40code模式: node app.js --40code');
31+
console.log(' - 40code模式: node app.js --40code');
3132
console.log(' - SharkPools模式: node app.js --sharkpools');
33+
console.log(' - 扩展管理器模式: node app.js --extension-manager');
3234
console.log(' - 强制模式: 添加 -f 或 --force 参数');
3335
process.exit(1);
3436
}
@@ -102,6 +104,31 @@ async function main() {
102104

103105
console.log('✅ 所有扩展同步完成!');
104106
process.exit(0);
107+
} else if (extensionManagerMode) {
108+
// 扩展管理器模式 - 处理已上传扩展的图片
109+
console.log('ℹ️ 运行模式: 扩展管理器图片处理');
110+
111+
if (!process.env.ZEROCAT_TOKEN_SHARKPOOL) {
112+
console.log('❌ 错误: 扩展管理器模式需要设置环境变量 ZEROCAT_TOKEN_SHARKPOOL');
113+
process.exit(1);
114+
}
115+
116+
const sharkPoolsProcessor = new SharkPoolsProcessor(
117+
process.env.ZEROCAT_TOKEN_SHARKPOOL,
118+
process.env.ZEROCAT_BACKEND
119+
);
120+
121+
console.log('ℹ️ 开始处理扩展管理器中的扩展图片...');
122+
123+
const success = await sharkPoolsProcessor.processExtensionManager();
124+
125+
if (success) {
126+
console.log('✅ 扩展管理器图片处理完成!');
127+
process.exit(0);
128+
} else {
129+
console.log('❌ 扩展管理器图片处理失败');
130+
process.exit(1);
131+
}
105132
}
106133
} catch (error) {
107134
console.log(`❌ 程序执行失败: ${error.message}`);

components/zerocatApi.js

Lines changed: 71 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class ZeroCatAPI {
4343

4444
this.log('正在获取用户信息...');
4545
const response = await this.api.get('/user/me');
46-
46+
4747
if (response.data.status === 'success') {
4848
this.config.userInfo = response.data.data;
4949
this.config.username = response.data.data.username;
@@ -71,7 +71,7 @@ class ZeroCatAPI {
7171
try {
7272
await this.ensureInitialized();
7373
const targetUsername = username || this.config.username;
74-
74+
7575
const response = await this.api.get(`/project/namespace/${targetUsername}/${projectName}`);
7676
return {
7777
exists: true,
@@ -91,7 +91,7 @@ class ZeroCatAPI {
9191
async createProject(options = {}) {
9292
try {
9393
await this.ensureInitialized();
94-
94+
9595
const {
9696
extId,
9797
name,
@@ -105,16 +105,16 @@ class ZeroCatAPI {
105105

106106
// 构建项目名称
107107
const finalProjectName = projectName || `40code-${extId}`;
108-
108+
109109
// 构建标题
110110
const finalTitle = title || `${name}(40code ${ext.author})`;
111-
111+
112112
// 构建描述
113-
const finalDescription = description ||
113+
const finalDescription = description ||
114114
`从 40code 镜像的 ${name} 扩展\n原作者:40code [${ext.author}](https://www.40code.com/#page=user&id=${ext.author_id})\n\n${ext.description}`;
115115

116116
this.log(`正在创建项目: ${finalProjectName}`);
117-
117+
118118
const response = await this.api.post('/project', {
119119
name: finalProjectName,
120120
title: finalTitle,
@@ -254,8 +254,8 @@ class ZeroCatAPI {
254254
async uploadThumbnail(projectId, formData) {
255255
try {
256256
this.log(`正在上传作品封面: ${projectId}`);
257-
258-
const response = await this.api.post(`/scratch/thumbnail/${projectId}`, formData, {
257+
258+
const response = await this.api.post(`/assets/upload`, formData, {
259259
headers: {
260260
...formData.getHeaders()
261261
}
@@ -268,6 +268,68 @@ class ZeroCatAPI {
268268
throw error;
269269
}
270270
}
271+
272+
// 获取我的所有扩展信息
273+
async getMyExtensions() {
274+
try {
275+
this.log('正在获取我的扩展信息...');
276+
const response = await this.api.get('/extensions/manager/my');
277+
278+
if (response.data.status === 'success') {
279+
this.log(`获取扩展信息成功,共 ${response.data.data.length} 个扩展`, 'success');
280+
return response.data.data;
281+
} else {
282+
throw new Error(`获取扩展信息失败: ${response.data.message || '未知错误'}`);
283+
}
284+
} catch (error) {
285+
this.log(`获取扩展信息失败: ${error.message}`, 'error');
286+
throw error;
287+
}
288+
}
289+
290+
// 上传资产文件
291+
async uploadAsset(formData) {
292+
try {
293+
this.log('正在上传资产文件...');
294+
295+
const response = await this.api.post('/assets/upload', formData, {
296+
headers: {
297+
...formData.getHeaders()
298+
}
299+
});
300+
301+
if (response.data.status === 'success') {
302+
this.log('资产文件上传成功', 'success');
303+
return response.data;
304+
} else {
305+
console.log(response.data)
306+
this.log(`上传资产文件失败: ${response.data.message || '未知错误'}`);
307+
return response.data
308+
}
309+
} catch (error) {
310+
this.log(`上传资产文件失败: ${error.message}`, 'error');
311+
throw error;
312+
}
313+
}
314+
315+
// 更新扩展信息
316+
async updateExtension(extensionId, updateData) {
317+
try {
318+
this.log(`正在更新扩展信息: ${extensionId}`);
319+
320+
const response = await this.api.put(`/extensions/manager/edit/${extensionId}`, updateData);
321+
322+
if (response.data.status === 'success') {
323+
this.log(`扩展信息更新成功: ${extensionId}`, 'success');
324+
return response.data;
325+
} else {
326+
throw new Error(`更新扩展信息失败: ${response.data.message || '未知错误'}`);
327+
}
328+
} catch (error) {
329+
this.log(`更新扩展信息失败 ${extensionId}: ${error.message}`, 'error');
330+
throw error;
331+
}
332+
}
271333
}
272334

273335
export default ZeroCatAPI;

0 commit comments

Comments
 (0)