From 7209b1dc54b5d4dc4a00a8a8f3a0adf8338e6cdb Mon Sep 17 00:00:00 2001 From: flashmeow <33206210+LordFlashmeow@users.noreply.github.com> Date: Sun, 12 May 2024 15:05:59 -0700 Subject: [PATCH] Support filtering by file size in GetByFilename --- Shoko.Server/Plex/TVShow/SVR_Episode.cs | 4 ++-- Shoko.Server/Repositories/Cached/AnimeEpisodeRepository.cs | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Shoko.Server/Plex/TVShow/SVR_Episode.cs b/Shoko.Server/Plex/TVShow/SVR_Episode.cs index 0069b79c1..3726c1833 100644 --- a/Shoko.Server/Plex/TVShow/SVR_Episode.cs +++ b/Shoko.Server/Plex/TVShow/SVR_Episode.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using Shoko.Models.Plex.TVShow; using Shoko.Server.Models; using Shoko.Server.Repositories; @@ -15,7 +15,7 @@ public SVR_Episode(PlexHelper helper) } public SVR_AnimeEpisode AnimeEpisode => - RepoFactory.AnimeEpisode.GetByFilename(Path.GetFileName(Media[0].Part[0].File)); + RepoFactory.AnimeEpisode.GetByFilename(Path.GetFileName(Media[0].Part[0].File), Media[0].Part[0].Size); public void Unscrobble() { diff --git a/Shoko.Server/Repositories/Cached/AnimeEpisodeRepository.cs b/Shoko.Server/Repositories/Cached/AnimeEpisodeRepository.cs index aa2ba949f..f4dcdb250 100644 --- a/Shoko.Server/Repositories/Cached/AnimeEpisodeRepository.cs +++ b/Shoko.Server/Repositories/Cached/AnimeEpisodeRepository.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -56,8 +56,9 @@ public SVR_AnimeEpisode GetByAniDBEpisodeID(int epid) /// Get the AnimeEpisode /// /// The filename of the anime to search for. + /// The size of the file in bytes /// the AnimeEpisode given the file information - public SVR_AnimeEpisode GetByFilename(string name) + public SVR_AnimeEpisode GetByFilename(string name, long size = -1) { if (string.IsNullOrEmpty(name)) { @@ -68,6 +69,7 @@ public SVR_AnimeEpisode GetByFilename(string name) .Where(v => name.Equals(v?.FilePath?.Split(Path.DirectorySeparatorChar).LastOrDefault(), StringComparison.InvariantCultureIgnoreCase)) .Select(a => RepoFactory.VideoLocal.GetByID(a.VideoLocalID)).Where(a => a != null) + .Where(a => size == -1 || a.FileSize == size) .SelectMany(a => GetByHash(a.Hash)).ToArray(); var ep = eps.FirstOrDefault(a => a.AniDB_Episode.EpisodeType == (int)EpisodeType.Episode); return ep ?? eps.FirstOrDefault();