Publish mteam v1.0.1

This commit is contained in:
2026-09-20 16:00:32 +00:00
parent 86bca2b425
commit 4caf179bca

View File

@@ -180,8 +180,10 @@ function parseSearch(items) {
publisher: it.author || '', publisher: it.author || '',
tags: tags, tags: tags,
doubanUrl: it.douban || '', doubanUrl: it.douban || '',
doubanId: (function(){ var m = String(it.douban || '').match(/douban\.com\/subject\/(\d+)/i); return m ? m[1] : ''; })(),
doubanRating: rating, doubanRating: rating,
imdbUrl: it.imdb || '', imdbUrl: it.imdb || '',
imdbId: (function(){ var m = String(it.imdb || '').match(/imdb\.com\/title\/(tt\d+)/i); return m ? m[1] : ''; })(),
cnSub: cnSub, cnSub: cnSub,
standard: it.standard || '', standard: it.standard || '',
detailUrl: it.id !== undefined && it.id !== null ? 'detail/' + String(it.id) : '', detailUrl: it.id !== undefined && it.id !== null ? 'detail/' + String(it.id) : '',
@@ -307,19 +309,42 @@ function sync(input) {
} }
// ===================== 能力: download(下载种子) ===================== // ===================== 能力: download(下载种子) =====================
// ctx: { baseUrl, apiKey, downloadUrl?(可选) | id/detailId, downloadPath?(可选, 默认 /api/torrent/download) } // ctx: { baseUrl, apiKey, downloadUrl?(可选) | id/detailId }
// M-Team API 不暴露直接下载接口(swagger 里没有 /torrent/download), 必须两步:
// 1) POST /api/torrent/genDlToken?id={detailId} → 拿到 Result.data (下载 URL 或 token)
// 2) GET 下载 URL (通常是 CDN)
// 返回 { downloadUrl, url, bytes, size } 或 { error, url? }。 // 返回 { downloadUrl, url, bytes, size } 或 { error, url? }。
function download(input) { function download(input) {
var ctx = __asCtx(input); var ctx = __asCtx(input);
var base = __resolveBase(ctx); var base = __resolveBase(ctx);
var apiKey = ctx && (ctx.apiKey || ctx.xApiKey);
var detailId = ctx && (ctx.id || ctx.detailId) ? String(ctx.id || ctx.detailId) : ''; var detailId = ctx && (ctx.id || ctx.detailId) ? String(ctx.id || ctx.detailId) : '';
var url = null; var url = null;
if (ctx && ctx.downloadUrl) { if (ctx && ctx.downloadUrl) {
url = String(ctx.downloadUrl); url = String(ctx.downloadUrl);
if (url.indexOf('http') !== 0) url = base + (url.charAt(0) === '/' ? url : '/' + url); if (url.indexOf('http') !== 0) url = base + (url.charAt(0) === '/' ? url : '/' + url);
} else if (detailId) { } else if (detailId) {
var path = (ctx && ctx.downloadPath) || '/api/torrent/download'; // 先 genDlToken 拿下载 URL / token
url = base + path + '?id=' + encodeURIComponent(detailId); var tokenPath = '/api/torrent/genDlToken?id=' + encodeURIComponent(detailId);
var tokenRoot = __apiPost(base, tokenPath, {}, apiKey);
if (tokenRoot === null) return { error: 'gen_dl_token_failed_no_response', url: base + tokenPath };
// genDlToken 返回 Result<T>, T 可能是 string (完整下载 URL) 或对象
var tokenData = (tokenRoot.data !== undefined ? tokenRoot.data : tokenRoot);
var dlUrl = null;
if (typeof tokenData === 'string' && tokenData.length > 0) {
dlUrl = tokenData;
} else if (tokenData && typeof tokenData === 'object') {
dlUrl = tokenData.url || tokenData.downloadUrl || tokenData.link || tokenData.token;
}
if (!dlUrl) {
// 把原始响应带回来供 C# 端日志诊断真实格式
var raw = '';
try { raw = typeof JSON !== 'undefined' ? JSON.stringify(tokenRoot) : String(tokenRoot); } catch(e) { raw = String(tokenRoot); }
if (raw.length > 500) raw = raw.substring(0, 500) + '...';
return { error: 'gen_dl_token_failed_no_download_url', url: base + tokenPath, rawResponse: raw };
}
url = String(dlUrl);
} else { } else {
return { error: 'no_detail_id' }; return { error: 'no_detail_id' };
} }