mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-12 23:33:43 +08:00
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
/**
|
|
* API Response Parsers
|
|
*/
|
|
|
|
import type { Episode } from '@/lib/types';
|
|
|
|
/**
|
|
* Parse episode URL string into structured array
|
|
*/
|
|
export function parseEpisodes(playUrl: string): Episode[] {
|
|
if (!playUrl) return [];
|
|
|
|
try {
|
|
// Format: "Episode1$url1#Episode2$url2#..."
|
|
const episodes = playUrl.split('#').filter(Boolean);
|
|
|
|
return episodes.map((episode, index) => {
|
|
const parts = episode.split('$');
|
|
let name: string, url: string;
|
|
|
|
if (parts.length > 1) {
|
|
name = parts[0];
|
|
url = parts[1];
|
|
} else {
|
|
// If no '$' separator, treat the whole thing as the URL
|
|
url = parts[0];
|
|
name = `第 ${index + 1} 集`;
|
|
}
|
|
|
|
// Clean up URL: remove double slashes but keep protocol (http:// or https://)
|
|
const cleanUrl = (url || '').replace(/([^:])\/\//g, '$1/');
|
|
|
|
return {
|
|
name: name || `第 ${index + 1} 集`,
|
|
url: cleanUrl,
|
|
index,
|
|
};
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to parse episodes:', error);
|
|
return [];
|
|
}
|
|
}
|
|
|