import type { FormEvent } from 'react' import { Loader2, Save, Wand2 } from 'lucide-react' import type { GenerateSTRMResult } from '../api/strm' import type { Library } from '../types' import { currentOrigin, type CloudPlaybackMode } from './strmPageModel' type StrmGenerateSectionProps = { libraries: Library[] generateLibraryID: string baseURL: string outputDir: string cloudPlaybackMode: CloudPlaybackMode strmPlaybackEnabled: boolean redirectProxyEnabled: boolean autoGenerate: boolean savingSettings: boolean overwrite: boolean generating: boolean generateResult: GenerateSTRMResult | null playbackStatus: string onGenerate: (event: FormEvent) => void saveSTRMSettings: () => void setGenerateLibraryID: (value: string) => void setBaseURL: (value: string) => void setOutputDir: (value: string) => void setCloudPlaybackMode: (value: CloudPlaybackMode) => void setStrmPlaybackEnabled: (value: boolean) => void setRedirectProxyEnabled: (value: boolean) => void setAutoGenerate: (value: boolean) => void setOverwrite: (value: boolean) => void } export function StrmGenerateSection({ libraries, generateLibraryID, baseURL, outputDir, cloudPlaybackMode, strmPlaybackEnabled, redirectProxyEnabled, autoGenerate, savingSettings, overwrite, generating, generateResult, playbackStatus, onGenerate, saveSTRMSettings, setGenerateLibraryID, setBaseURL, setOutputDir, setCloudPlaybackMode, setStrmPlaybackEnabled, setRedirectProxyEnabled, setAutoGenerate, setOverwrite, }: StrmGenerateSectionProps) { return (

自动生成 STRM 文件

只需要填写自己的访问域名,系统会按媒体库内每个媒体批量生成可播放的 .strm 文件。

{playbackStatus}
setBaseURL(e.target.value)} /> setOutputDir(e.target.value)} />

生成内容为 域名 + /api/stream/媒体ID?token=...;第三方客户端播放优先方式由上方「STRMURL / 302反代」模式决定。域名会同步保存到系统设置中的「公开访问域名 / STRM 域名」。

{generateResult && (
输出目录:{generateResult.output_dir}
新增 {generateResult.generated} · 更新 {generateResult.updated} · 跳过 {generateResult.skipped} · 清理 {generateResult.cleaned || 0}
{generateResult.errors && generateResult.errors.length > 0 && (
失败 {generateResult.errors.length} 条:{generateResult.errors.slice(0, 3).join(';')}
)}
)}
) }