- SearchMedia 响应字段在 item.Video 嵌套对象中,修正字段映射 - endpoint 自动补充 https:// 协议前缀 - 移除状态筛选与日期范围筛选(VOD SearchMedia Match 语法不支持)
This commit is contained in:
@@ -5,11 +5,8 @@ import { decrypt } from '../utils/crypto';
|
||||
export interface SearchParams {
|
||||
keyword?: string;
|
||||
cateId?: number;
|
||||
status?: string;
|
||||
pageNo?: number;
|
||||
pageSize?: number;
|
||||
startTime?: string;
|
||||
endTime?: string;
|
||||
sortBy?: string;
|
||||
sortOrder?: 'Asc' | 'Desc';
|
||||
}
|
||||
@@ -22,7 +19,10 @@ export interface SearchResult {
|
||||
}
|
||||
|
||||
export function createVodClient(account: Account): RPCClient {
|
||||
const endpoint = account.endpoint || `vod.${account.region}.aliyuncs.com`;
|
||||
let endpoint = account.endpoint || `vod.${account.region}.aliyuncs.com`;
|
||||
if (!endpoint.startsWith('http://') && !endpoint.startsWith('https://')) {
|
||||
endpoint = `https://${endpoint}`;
|
||||
}
|
||||
return new RPCClient({
|
||||
accessKeyId: account.accessKeyId,
|
||||
accessKeySecret: decrypt(account.accessKeySecret),
|
||||
@@ -35,6 +35,10 @@ export async function searchMedia(client: RPCClient, params: SearchParams): Prom
|
||||
const requestParams: Record<string, unknown> = {
|
||||
PageNo: params.pageNo || 1,
|
||||
PageSize: Math.min(params.pageSize || 20, 100),
|
||||
SearchType: 'video',
|
||||
Fields: 'Title,CoverURL,CreationTime,Status,Duration,Size,CateId,CateName,Tags',
|
||||
SortBy: params.sortBy || 'CreationTime',
|
||||
SortOrder: params.sortOrder || 'Desc',
|
||||
};
|
||||
|
||||
const searchParams: string[] = [];
|
||||
@@ -44,20 +48,9 @@ export async function searchMedia(client: RPCClient, params: SearchParams): Prom
|
||||
if (params.cateId) {
|
||||
searchParams.push(`CateId=${params.cateId}`);
|
||||
}
|
||||
if (params.status) {
|
||||
searchParams.push(`Status='${params.status}'`);
|
||||
}
|
||||
if (params.startTime && params.endTime) {
|
||||
searchParams.push(`CreationTime>${params.startTime}`);
|
||||
searchParams.push(`CreationTime<${params.endTime}`);
|
||||
}
|
||||
|
||||
if (searchParams.length > 0) {
|
||||
requestParams.SearchType = 'video';
|
||||
requestParams.Fields = 'Title,CoverURL,CreationTime,Status,Duration,Size,CateId,CateName,Tags';
|
||||
requestParams.Match = searchParams.join(' and ');
|
||||
requestParams.SortBy = params.sortBy || 'CreationTime';
|
||||
requestParams.SortOrder = params.sortOrder || 'Desc';
|
||||
}
|
||||
|
||||
const action = 'SearchMedia';
|
||||
@@ -67,20 +60,23 @@ export async function searchMedia(client: RPCClient, params: SearchParams): Prom
|
||||
>;
|
||||
|
||||
const mediaListRaw = (response.MediaList as Record<string, unknown>[]) || [];
|
||||
const mediaList = mediaListRaw.map((item) => ({
|
||||
videoId: (item.VideoId || item.MediaId) as string,
|
||||
title: item.Title as string,
|
||||
description: item.Description as string,
|
||||
duration: item.Duration as number,
|
||||
size: item.Size as number,
|
||||
coverURL: item.CoverURL as string,
|
||||
status: item.Status as string,
|
||||
cateId: item.CateId as number,
|
||||
cateName: item.CateName as string,
|
||||
tags: item.Tags as string,
|
||||
creationTime: item.CreationTime as string,
|
||||
modificationTime: item.ModificationTime as string,
|
||||
}));
|
||||
const mediaList = mediaListRaw.map((item) => {
|
||||
const video = (item.Video as Record<string, unknown>) || {};
|
||||
return {
|
||||
videoId: (video.VideoId || item.MediaId) as string,
|
||||
title: video.Title as string,
|
||||
description: video.Description as string,
|
||||
duration: video.Duration as number,
|
||||
size: video.Size as number,
|
||||
coverURL: video.CoverURL as string,
|
||||
status: video.Status as string,
|
||||
cateId: video.CateId as number,
|
||||
cateName: video.CateName as string,
|
||||
tags: video.Tags as string,
|
||||
creationTime: (video.CreationTime || item.CreationTime) as string,
|
||||
modificationTime: video.ModificationTime as string,
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
total: (response.Total as number) || 0,
|
||||
|
||||
Reference in New Issue
Block a user