Merge branch 'main' of https://gitee.com/wg123/video-gen
This commit is contained in:
@@ -569,6 +569,34 @@ const GeneratedRecord: React.FC = () => {
|
|||||||
const handleDateChange = (dateString: string) => {
|
const handleDateChange = (dateString: string) => {
|
||||||
setSelectedDate(dateString);
|
setSelectedDate(dateString);
|
||||||
};
|
};
|
||||||
|
const getVideoDimensions = (videoUrl: string): Promise<string> => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const video = document.createElement('video');
|
||||||
|
const baseUrl = import.meta.env.VITE_API_BASE || "http://localhost:8000";
|
||||||
|
let cleanPath = videoUrl.startsWith('/') ? videoUrl.slice(1) : videoUrl;
|
||||||
|
let cleanBase = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
||||||
|
video.src = `${cleanBase}/${cleanPath}`;
|
||||||
|
video.crossOrigin = 'anonymous';
|
||||||
|
video.onloadedmetadata = () => {
|
||||||
|
const width = video.videoWidth;
|
||||||
|
const height = video.videoHeight;
|
||||||
|
video.remove();
|
||||||
|
resolve(`${width}x${height}`);
|
||||||
|
};
|
||||||
|
video.onerror = () => {
|
||||||
|
video.remove();
|
||||||
|
resolve('');
|
||||||
|
};
|
||||||
|
video.onabort = () => {
|
||||||
|
video.remove();
|
||||||
|
resolve('');
|
||||||
|
};
|
||||||
|
setTimeout(() => {
|
||||||
|
video.remove();
|
||||||
|
resolve('');
|
||||||
|
}, 5000);
|
||||||
|
});
|
||||||
|
};
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
let historySource = '';
|
let historySource = '';
|
||||||
@@ -588,8 +616,16 @@ const GeneratedRecord: React.FC = () => {
|
|||||||
if (historySource) {
|
if (historySource) {
|
||||||
parameters = `${selectedDate}?gen_type=${filterMedia}&history_source=${historySource}&page=${Pagebreak.page}&page_size=${Pagebreak.pageSize}`;
|
parameters = `${selectedDate}?gen_type=${filterMedia}&history_source=${historySource}&page=${Pagebreak.page}&page_size=${Pagebreak.pageSize}`;
|
||||||
}
|
}
|
||||||
gethistoryItems(parameters).then((res: any) => {
|
gethistoryItems(parameters).then(async (res: any) => {
|
||||||
const data = Array.isArray(res) ? res : (res?.items || []);
|
const data = Array.isArray(res) ? res : (res?.items || []);
|
||||||
|
for (const item of data) {
|
||||||
|
if (item.videoUrl && item.videoUrl.trim()) {
|
||||||
|
const dimensions = await getVideoDimensions(item.videoUrl);
|
||||||
|
if (dimensions) {
|
||||||
|
item.imagePx = dimensions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
let recordList = [{
|
let recordList = [{
|
||||||
generatedDate: res.generatedDate,
|
generatedDate: res.generatedDate,
|
||||||
items: data,
|
items: data,
|
||||||
@@ -610,12 +646,19 @@ const GeneratedRecord: React.FC = () => {
|
|||||||
} finally {
|
} finally {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
gethistory(parameters).then((res: any) => {
|
gethistory(parameters).then(async (res: any) => {
|
||||||
const data = Array.isArray(res) ? res : (res?.groups || []);
|
const data = Array.isArray(res) ? res : (res?.groups || []);
|
||||||
data.forEach(group => {
|
for (const group of data) {
|
||||||
group.page = 1;
|
group.page = 1;
|
||||||
});
|
for (const item of group.items) {
|
||||||
// 如果是第一页,替换数据;否则追加数据
|
if (item.videoUrl && item.videoUrl.trim()) {
|
||||||
|
const dimensions = await getVideoDimensions(item.videoUrl);
|
||||||
|
if (dimensions) {
|
||||||
|
item.imagePx = dimensions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (Pagebreak.page === 1) {
|
if (Pagebreak.page === 1) {
|
||||||
setRecordList(data);
|
setRecordList(data);
|
||||||
} else {
|
} else {
|
||||||
@@ -658,7 +701,6 @@ const GeneratedRecord: React.FC = () => {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const res: any = await gethistoryItems(parameters);
|
const res: any = await gethistoryItems(parameters);
|
||||||
// gethistoryItems 返回数组,直接使用
|
|
||||||
const newItems: any[] = res.items || [];
|
const newItems: any[] = res.items || [];
|
||||||
if (newItems && newItems.length > 0) {
|
if (newItems && newItems.length > 0) {
|
||||||
setRecordList(prev => prev.map(group => {
|
setRecordList(prev => prev.map(group => {
|
||||||
|
|||||||
Reference in New Issue
Block a user