diff --git a/internal/config/v1.go b/internal/config/v1.go index 5c7cd0f..707f98d 100644 --- a/internal/config/v1.go +++ b/internal/config/v1.go @@ -539,14 +539,14 @@ func checkArithmeticSequenceInFilenames(files []string) bool { } r := regexp.MustCompile(`\d+`) for _, file := range files { - if !utils.IsPlayable(file) { + if !utils.IsVideo(file) { continue } matches := r.FindAllStringIndex(file, -1) for _, match := range matches { numSet := make(map[int]struct{}) for _, file := range files { - if !utils.IsPlayable(file) { + if !utils.IsVideo(file) { continue } if match[0] >= 0 && match[1] <= len(file) { diff --git a/internal/torrent/manager.go b/internal/torrent/manager.go index 09cffc3..c1da455 100644 --- a/internal/torrent/manager.go +++ b/internal/torrent/manager.go @@ -233,8 +233,8 @@ func (t *TorrentManager) writeTorrentToFile(torrent *Torrent) { func (t *TorrentManager) applyMediaInfoDetails(torrent *Torrent) { changesApplied := false torrent.SelectedFiles.IterCb(func(_ string, file *File) { - isPlayable := utils.IsPlayable(file.Path) || t.IsPlayable(file.Path) - if file.MediaInfo != nil || file.State.Is("broken_file") || !isPlayable { + isPlayable := utils.IsVideo(file.Path) || t.IsPlayable(file.Path) + if file.MediaInfo != nil || !file.State.Is("ok_file") || !isPlayable { return } unrestrict := t.UnrestrictFileUntilOk(file, true) diff --git a/internal/torrent/refresh.go b/internal/torrent/refresh.go index 5afee83..6a872aa 100644 --- a/internal/torrent/refresh.go +++ b/internal/torrent/refresh.go @@ -357,7 +357,7 @@ func (t *TorrentManager) assignDirectory(tor *Torrent, triggerHook bool) { if file.MediaInfo != nil { mediaInfos = append(mediaInfos, file.MediaInfo) } - if utils.IsPlayable(file.Path) || t.IsPlayable(file.Path) { + if utils.IsVideo(file.Path) || t.IsPlayable(file.Path) { unplayable = false } }) diff --git a/internal/torrent/repair.go b/internal/torrent/repair.go index 3dd0aee..a4832e6 100644 --- a/internal/torrent/repair.go +++ b/internal/torrent/repair.go @@ -197,7 +197,7 @@ func (t *TorrentManager) repair(torrent *Torrent, wg *sync.WaitGroup) { // check if broken files are playable allPlayable := true for _, file := range brokenFiles { - if utils.IsPlayable(file.Path) { + if utils.IsVideo(file.Path) { continue } @@ -394,7 +394,7 @@ func (t *TorrentManager) assignLinks(torrent *Torrent) bool { if action == "extract" { videoFiles := []string{} torrent.SelectedFiles.IterCb(func(_ string, file *File) { - if utils.IsPlayable(file.Path) { + if utils.IsVideo(file.Path) { videoFiles = append(videoFiles, fmt.Sprintf("%d", file.ID)) } else if file.ID != 0 { t.repairLog.Debugf("Extracting file %s from rar'ed torrent %s", file.Path, t.GetKey(torrent)) diff --git a/pkg/utils/playable.go b/pkg/utils/playable.go index 3ce6cb9..cfa077c 100644 --- a/pkg/utils/playable.go +++ b/pkg/utils/playable.go @@ -2,15 +2,16 @@ package utils import "strings" -func IsPlayable(filePath string) bool { +func IsVideo(filePath string) bool { filePath = strings.ToLower(filePath) - return strings.HasSuffix(filePath, ".avi") || - strings.HasSuffix(filePath, ".m2ts") || - strings.HasSuffix(filePath, ".m4v") || + return strings.HasSuffix(filePath, ".avi") || // confirmed working + strings.HasSuffix(filePath, ".m2ts") || // confirmed working + strings.HasSuffix(filePath, ".m4v") || // confirmed working strings.HasSuffix(filePath, ".mkv") || // confirmed working + strings.HasSuffix(filePath, ".mov") || // confirmed working strings.HasSuffix(filePath, ".mp4") || // confirmed working - strings.HasSuffix(filePath, ".mpg") || - strings.HasSuffix(filePath, ".ts") || - strings.HasSuffix(filePath, ".wmv") || - strings.HasSuffix(filePath, ".m4b") // confirmed working + strings.HasSuffix(filePath, ".mpg") || // confirmed working (no watch option in RD) + strings.HasSuffix(filePath, ".mpeg") || // confirmed working (no watch option in RD) + strings.HasSuffix(filePath, ".ts") || // confirmed working + strings.HasSuffix(filePath, ".wmv") // confirmed working }