diff --git a/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs
index 25d5792c..4ab8b73a 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs
@@ -21,6 +21,7 @@ using System.Linq;
using System.Threading.Tasks;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models;
+using Kyoo.Abstractions.Models.Exceptions;
using Kyoo.Abstractions.Models.Utils;
using Kyoo.Postgresql;
using Microsoft.EntityFrameworkCore;
@@ -45,6 +46,25 @@ public class MovieRepository(
.ToListAsync();
}
+ ///
+ public override Task Create(Movie obj)
+ {
+ try
+ {
+ return base.Create(obj);
+ }
+ catch (DuplicatedItemException ex)
+ when (ex.Existing is Movie existing
+ && existing.Slug == obj.Slug
+ && obj.AirDate is not null
+ && existing.AirDate?.Year != obj.AirDate?.Year
+ )
+ {
+ obj.Slug = $"{obj.Slug}-{obj.AirDate!.Value.Year}";
+ return base.Create(obj);
+ }
+ }
+
///
protected override async Task Validate(Movie resource)
{
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs
index 53a3b6d5..ed67e2df 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs
@@ -21,6 +21,7 @@ using System.Linq;
using System.Threading.Tasks;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models;
+using Kyoo.Abstractions.Models.Exceptions;
using Kyoo.Abstractions.Models.Utils;
using Kyoo.Postgresql;
using Microsoft.EntityFrameworkCore;
@@ -45,6 +46,25 @@ public class ShowRepository(
.ToListAsync();
}
+ ///
+ public override Task Create(Show obj)
+ {
+ try
+ {
+ return base.Create(obj);
+ }
+ catch (DuplicatedItemException ex)
+ when (ex.Existing is Show existing
+ && existing.Slug == obj.Slug
+ && obj.StartAir is not null
+ && existing.StartAir?.Year != obj.StartAir?.Year
+ )
+ {
+ obj.Slug = $"{obj.Slug}-{obj.StartAir!.Value.Year}";
+ return base.Create(obj);
+ }
+ }
+
///
protected override async Task Validate(Show resource)
{
diff --git a/scanner/providers/kyoo_client.py b/scanner/providers/kyoo_client.py
index b804b740..47a16c93 100644
--- a/scanner/providers/kyoo_client.py
+++ b/scanner/providers/kyoo_client.py
@@ -112,20 +112,6 @@ class KyooClient:
logger.error(f"Request error: {await r.text()}")
r.raise_for_status()
ret = await r.json()
-
- if r.status == 409 and (
- (path == "shows" and ret["startAir"][:4] != str(data["start_air"].year))
- or (
- path == "movies"
- and ret["airDate"][:4] != str(data["air_date"].year)
- )
- ):
- logger.info(
- f"Found a {path} with the same slug ({ret['slug']}) and a different date, using the date as part of the slug"
- )
- year = (data["start_air"] if path == "movie" else data["air_date"]).year
- data["slug"] = f"{ret['slug']}-{year}"
- return await self.post(path, data=data)
return ret["id"]
async def delete(