添加Modrinth扫描Mod
This commit is contained in:
parent
10803b3187
commit
fe9824bcb2
80
index.js
Normal file
80
index.js
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
const axios = require('axios');
|
||||||
|
const fs = require('fs');
|
||||||
|
const readline = require('readline');
|
||||||
|
|
||||||
|
// Modrinth API URL
|
||||||
|
const API_URL = 'https://api.modrinth.com/v2/search';
|
||||||
|
|
||||||
|
// 本地服务器URL
|
||||||
|
const LOCAL_SERVER_URL = 'http://192.168.1.7:5000/modid';
|
||||||
|
|
||||||
|
// 用于存储请求结果的数组
|
||||||
|
let results = [];
|
||||||
|
|
||||||
|
// 用于记录请求的次数
|
||||||
|
let requestCount = 0;
|
||||||
|
|
||||||
|
// 用于记录请求的间隔时间(毫秒)
|
||||||
|
const requestInterval = 3000; // 3秒
|
||||||
|
|
||||||
|
// 用于读取Modrinth API返回的响应
|
||||||
|
async function fetchModrinthData(page) {
|
||||||
|
try {
|
||||||
|
// 构建查询参数
|
||||||
|
const facets = [["project_type:mod"]];
|
||||||
|
const params = {
|
||||||
|
facets: JSON.stringify(facets),
|
||||||
|
limit: 96,
|
||||||
|
offset: page * 96 // 更新offset以获取下一页数据
|
||||||
|
};
|
||||||
|
// 发送请求
|
||||||
|
const response = await axios.get(API_URL, {
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// 处理响应数据
|
||||||
|
response.data.hits.forEach(async (hit) => {
|
||||||
|
const modid = hit.slug;
|
||||||
|
const clientSide = hit.client_side;
|
||||||
|
const serverSide = hit.server_side;
|
||||||
|
|
||||||
|
// 根据client_side和server_side的值计算client参数
|
||||||
|
let client = false;
|
||||||
|
if (clientSide === "required" && serverSide === "required") {
|
||||||
|
client = "trlse"; // 两者都要求
|
||||||
|
} else if (clientSide === "required") {
|
||||||
|
client = true; // 只有client_side要求
|
||||||
|
} else if (serverSide === "required") {
|
||||||
|
client = false; // 只有server_side要求
|
||||||
|
} else {
|
||||||
|
client = false; // 两者都不要求或为optional
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建本地服务器请求的URL,包含根据client_side和server_side计算出的client值
|
||||||
|
const localUrl = `${LOCAL_SERVER_URL}?modid=${modid}&client=${client}`;
|
||||||
|
|
||||||
|
// 发送请求到本地服务器
|
||||||
|
try {
|
||||||
|
const localResponse = await axios.get(localUrl);
|
||||||
|
// 处理本地服务器的响应
|
||||||
|
console.log(`处理了modid: ${modid}`);
|
||||||
|
console.log(`本地服务器响应: ${localResponse.data}`);
|
||||||
|
} catch (localError) {
|
||||||
|
// 忽略本地服务器请求的错误
|
||||||
|
console.log(`处理modid ${modid}时本地服务器请求失败: ${localError.message}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 如果有下一页,继续请求
|
||||||
|
if (response.data.offset < response.data.total_hits) {
|
||||||
|
await fetchModrinthData(page + 1);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// 忽略Modrinth API请求的错误
|
||||||
|
console.log(`处理Modrinth API请求时发生错误: ${error.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开始请求Modrinth API
|
||||||
|
fetchModrinthData(0); // 从第0页开始
|
108
package-lock.json
generated
Normal file
108
package-lock.json
generated
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
{
|
||||||
|
"name": "modri",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^1.7.2",
|
||||||
|
"readline": "^1.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/asynckit": {
|
||||||
|
"version": "0.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
||||||
|
},
|
||||||
|
"node_modules/axios": {
|
||||||
|
"version": "1.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
|
||||||
|
"integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
|
||||||
|
"dependencies": {
|
||||||
|
"follow-redirects": "^1.15.6",
|
||||||
|
"form-data": "^4.0.0",
|
||||||
|
"proxy-from-env": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/combined-stream": {
|
||||||
|
"version": "1.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||||
|
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||||
|
"dependencies": {
|
||||||
|
"delayed-stream": "~1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/delayed-stream": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/follow-redirects": {
|
||||||
|
"version": "1.15.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
|
||||||
|
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://github.com/sponsors/RubenVerborgh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"debug": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/form-data": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-db": {
|
||||||
|
"version": "1.52.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||||
|
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-types": {
|
||||||
|
"version": "2.1.35",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||||
|
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||||
|
"dependencies": {
|
||||||
|
"mime-db": "1.52.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/proxy-from-env": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
|
||||||
|
},
|
||||||
|
"node_modules/readline": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
6
package.json
Normal file
6
package.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^1.7.2",
|
||||||
|
"readline": "^1.3.0"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user