diff --git a/back/src/Kyoo.Abstractions/Models/Resources/Interfaces/IRefreshable.cs b/back/src/Kyoo.Abstractions/Models/Resources/Interfaces/IRefreshable.cs index ad7acc73..0a8acae3 100644 --- a/back/src/Kyoo.Abstractions/Models/Resources/Interfaces/IRefreshable.cs +++ b/back/src/Kyoo.Abstractions/Models/Resources/Interfaces/IRefreshable.cs @@ -27,16 +27,13 @@ public interface IRefreshable /// public DateTime? NextMetadataRefresh { get; set; } - public static DateTime ComputeNextRefreshDate(DateOnly? airDate) + public static DateTime ComputeNextRefreshDate(DateOnly airDate) { - if (airDate is null) - return DateTime.UtcNow.AddDays(1); - - int days = airDate.Value.DayNumber - DateOnly.FromDateTime(DateTime.UtcNow).DayNumber; + int days = DateOnly.FromDateTime(DateTime.UtcNow).DayNumber - airDate.DayNumber; return days switch { - <= 7 => DateTime.UtcNow.AddDays(1), - <= 21 => DateTime.UtcNow.AddDays(5), + <= 4 => DateTime.UtcNow.AddDays(1), + <= 21 => DateTime.UtcNow.AddDays(14), _ => DateTime.UtcNow.AddMonths(2) }; } diff --git a/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs index e1f2f0bd..500972fa 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs @@ -92,7 +92,9 @@ public class EpisodeRepository( .FirstOrDefaultAsync(); } - resource.NextMetadataRefresh ??= IRefreshable.ComputeNextRefreshDate(resource.ReleaseDate); + resource.NextMetadataRefresh ??= IRefreshable.ComputeNextRefreshDate( + resource.ReleaseDate ?? DateOnly.FromDateTime(resource.AddedDate) + ); await thumbnails.DownloadImages(resource); } diff --git a/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs index 2dec59c8..e33501e1 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs @@ -16,6 +16,7 @@ // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -74,7 +75,9 @@ public class MovieRepository( resource.StudioId = (await studios.CreateIfNotExists(resource.Studio)).Id; resource.Studio = null; } - resource.NextMetadataRefresh ??= IRefreshable.ComputeNextRefreshDate(resource.AirDate); + resource.NextMetadataRefresh ??= IRefreshable.ComputeNextRefreshDate( + resource.AirDate ?? DateOnly.FromDateTime(resource.AddedDate) + ); await thumbnails.DownloadImages(resource); } } diff --git a/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs index 61297f4a..a7f8233a 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs @@ -77,7 +77,9 @@ public class SeasonRepository( throw new ValidationException("Missing show id"); // This is storred in db so it needs to be set before every create/edit (and before events) resource.ShowSlug = (await shows.Get(resource.ShowId)).Slug; - resource.NextMetadataRefresh ??= IRefreshable.ComputeNextRefreshDate(resource.StartDate); + resource.NextMetadataRefresh ??= IRefreshable.ComputeNextRefreshDate( + resource.StartDate ?? DateOnly.FromDateTime(resource.AddedDate) + ); await thumbnails.DownloadImages(resource); } } diff --git a/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs index 13caad26..51c9f76c 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs @@ -16,6 +16,7 @@ // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -74,7 +75,9 @@ public class ShowRepository( resource.StudioId = (await studios.CreateIfNotExists(resource.Studio)).Id; resource.Studio = null; } - resource.NextMetadataRefresh ??= IRefreshable.ComputeNextRefreshDate(resource.StartAir); + resource.NextMetadataRefresh ??= IRefreshable.ComputeNextRefreshDate( + resource.StartAir ?? DateOnly.FromDateTime(resource.AddedDate) + ); await thumbnails.DownloadImages(resource); } }