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);
}
}