From 9f4e4394787935b9bab499e6aa1af93d312dfa3c Mon Sep 17 00:00:00 2001 From: Seven <53081179+Seven66677731@users.noreply.github.com> Date: Tue, 4 Nov 2025 10:33:16 +0800 Subject: [PATCH] chore(strm): Built-in file types support modification (#1483) --- drivers/strm/driver.go | 55 ++++++++++++++++++++++++++++++------------ drivers/strm/meta.go | 5 ++-- drivers/strm/types.go | 36 --------------------------- 3 files changed, 43 insertions(+), 53 deletions(-) delete mode 100644 drivers/strm/types.go diff --git a/drivers/strm/driver.go b/drivers/strm/driver.go index 2caf18ef..cf6ebe71 100644 --- a/drivers/strm/driver.go +++ b/drivers/strm/driver.go @@ -68,26 +68,51 @@ func (d *Strm) Init(ctx context.Context) error { d.autoFlatten = false } - d.supportSuffix = supportSuffix() - if d.FilterFileTypes != "" { - types := strings.Split(d.FilterFileTypes, ",") - for _, ext := range types { - ext = strings.ToLower(strings.TrimSpace(ext)) - if ext != "" { - d.supportSuffix[ext] = struct{}{} - } + var supportTypes []string + if d.FilterFileTypes == "" { + d.FilterFileTypes = "mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac" + } + supportTypes = strings.Split(d.FilterFileTypes, ",") + d.supportSuffix = map[string]struct{}{} + for _, ext := range supportTypes { + ext = strings.ToLower(strings.TrimSpace(ext)) + if ext != "" { + d.supportSuffix[ext] = struct{}{} } } - d.downloadSuffix = downloadSuffix() - if d.DownloadFileTypes != "" { - downloadTypes := strings.Split(d.DownloadFileTypes, ",") - for _, ext := range downloadTypes { - ext = strings.ToLower(strings.TrimSpace(ext)) - if ext != "" { - d.downloadSuffix[ext] = struct{}{} + var downloadTypes []string + if d.DownloadFileTypes == "" { + d.DownloadFileTypes = "ass,srt,vtt,sub,strm" + } + downloadTypes = strings.Split(d.DownloadFileTypes, ",") + d.downloadSuffix = map[string]struct{}{} + for _, ext := range downloadTypes { + ext = strings.ToLower(strings.TrimSpace(ext)) + if ext != "" { + d.downloadSuffix[ext] = struct{}{} + } + } + + if d.Version != 3 { + types := strings.Split("mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac", ",") + for _, ext := range types { + if _, ok := d.supportSuffix[ext]; !ok { + d.supportSuffix[ext] = struct{}{} + supportTypes = append(supportTypes, ext) } } + d.FilterFileTypes = strings.Join(supportTypes, ",") + + types = strings.Split("ass,srt,vtt,sub,strm", ",") + for _, ext := range types { + if _, ok := d.downloadSuffix[ext]; !ok { + d.supportSuffix[ext] = struct{}{} + downloadTypes = append(downloadTypes, ext) + } + } + d.DownloadFileTypes = strings.Join(downloadTypes, ",") + d.Version = 3 } return nil } diff --git a/drivers/strm/meta.go b/drivers/strm/meta.go index 9e7aba82..a7662811 100644 --- a/drivers/strm/meta.go +++ b/drivers/strm/meta.go @@ -8,12 +8,13 @@ import ( type Addition struct { Paths string `json:"paths" required:"true" type:"text"` SiteUrl string `json:"siteUrl" type:"text" required:"false" help:"The prefix URL of the strm file"` - FilterFileTypes string `json:"filterFileTypes" type:"text" default:"strm" required:"false" help:"Supports suffix name of strm file"` - DownloadFileTypes string `json:"downloadFileTypes" type:"text" default:"ass" required:"false" help:"Files need to download with strm (usally subtitles)"` + DownloadFileTypes string `json:"downloadFileTypes" type:"text" default:"ass,srt,vtt,sub,strm" required:"false" help:"Files need to download with strm (usally subtitles)"` + FilterFileTypes string `json:"filterFileTypes" type:"text" default:"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac" required:"false" help:"Supports suffix name of strm file"` EncodePath bool `json:"encodePath" default:"true" required:"true" help:"encode the path in the strm file"` WithoutUrl bool `json:"withoutUrl" default:"false" help:"strm file content without URL prefix"` SaveStrmToLocal bool `json:"SaveStrmToLocal" default:"false" help:"save strm file locally"` SaveStrmLocalPath string `json:"SaveStrmLocalPath" type:"text" help:"save strm file local path"` + Version int } var config = driver.Config{ diff --git a/drivers/strm/types.go b/drivers/strm/types.go deleted file mode 100644 index dfa427d4..00000000 --- a/drivers/strm/types.go +++ /dev/null @@ -1,36 +0,0 @@ -package strm - -func supportSuffix() map[string]struct{} { - return map[string]struct{}{ - // video - "mp4": {}, - "mkv": {}, - "flv": {}, - "avi": {}, - "wmv": {}, - "ts": {}, - "rmvb": {}, - "webm": {}, - // audio - "mp3": {}, - "flac": {}, - "aac": {}, - "wav": {}, - "ogg": {}, - "m4a": {}, - "wma": {}, - "alac": {}, - } -} - -func downloadSuffix() map[string]struct{} { - return map[string]struct{}{ - // strm - "strm": {}, - // subtitles - "ass": {}, - "srt": {}, - "vtt": {}, - "sub": {}, - } -}