From 74fabb11eaa13733d07e43065a2fdf6470551a62 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Thu, 18 Jun 2020 23:48:38 +0200 Subject: [PATCH] Fixing bugs with the crawler that keep appening, cleaning the regex --- Kyoo.Common/Models/Episode.cs | 20 ++++++++++++++++---- Kyoo.Common/Utility.cs | 6 +++--- Kyoo/Tasks/Crawler.cs | 8 +------- Kyoo/appsettings.json | 7 ++++--- Kyoo/kyoo.sh | 4 ++-- Kyoo/regexTesterr.sh | 5 +++++ 6 files changed, 31 insertions(+), 19 deletions(-) create mode 100755 Kyoo/regexTesterr.sh diff --git a/Kyoo.Common/Models/Episode.cs b/Kyoo.Common/Models/Episode.cs index a00fa12f..a90dc5d9 100644 --- a/Kyoo.Common/Models/Episode.cs +++ b/Kyoo.Common/Models/Episode.cs @@ -1,10 +1,11 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; +using Kyoo.Models.Attributes; namespace Kyoo.Models { - public class Episode + public class Episode : IOnMerge { [JsonIgnore] public int ID { get; set; } [JsonIgnore] public int ShowID { get; set; } @@ -12,9 +13,9 @@ namespace Kyoo.Models [JsonIgnore] public int? SeasonID { get; set; } [JsonIgnore] public virtual Season Season { get; set; } - public int SeasonNumber { get; set; } - public int EpisodeNumber { get; set; } - public int AbsoluteNumber { get; set; } + public int SeasonNumber { get; set; } = -1; + public int EpisodeNumber { get; set; } = -1; + public int AbsoluteNumber { get; set; } = -1; [JsonIgnore] public string Path { get; set; } public string Title { get; set; } public string Overview { get; set; } @@ -94,5 +95,16 @@ namespace Kyoo.Models { return showSlug + "-s" + seasonNumber + "e" + episodeNumber; } + + public void OnMerge(object merged) + { + Episode other = (Episode)merged; + if (SeasonNumber == -1 && other.SeasonNumber != -1) + SeasonNumber = other.SeasonNumber; + if (EpisodeNumber == -1 && other.EpisodeNumber != -1) + EpisodeNumber = other.EpisodeNumber; + if (AbsoluteNumber == -1 && other.AbsoluteNumber != -1) + AbsoluteNumber = other.AbsoluteNumber; + } } } diff --git a/Kyoo.Common/Utility.cs b/Kyoo.Common/Utility.cs index 36cd6f3c..a852c6f8 100644 --- a/Kyoo.Common/Utility.cs +++ b/Kyoo.Common/Utility.cs @@ -9,6 +9,7 @@ using System.Text.RegularExpressions; using JetBrains.Annotations; using Kyoo.Models; using Kyoo.Models.Attributes; +using Microsoft.VisualBasic; namespace Kyoo { @@ -93,7 +94,6 @@ namespace Kyoo public static T Merge(T first, T second) { - // TODO During the merge, reference to the second values are not set to the first value (for child objects). if (first == null) return second; if (second == null) @@ -124,8 +124,8 @@ namespace Kyoo } } - if (first is IOnMerge) - ((IOnMerge)first).OnMerge(second); + if (first is IOnMerge merge) + merge.OnMerge(second); return first; } diff --git a/Kyoo/Tasks/Crawler.cs b/Kyoo/Tasks/Crawler.cs index 17afc242..e89347f0 100644 --- a/Kyoo/Tasks/Crawler.cs +++ b/Kyoo/Tasks/Crawler.cs @@ -147,7 +147,7 @@ namespace Kyoo.Controllers string showPath = Path.GetDirectoryName(path); string collectionName = match.Groups["Collection"]?.Value; - string showName = match.Groups["ShowTitle"].Value; + string showName = match.Groups["Show"].Value; int seasonNumber = int.TryParse(match.Groups["Season"].Value, out int tmp) ? tmp : -1; int episodeNumber = int.TryParse(match.Groups["Episode"].Value, out tmp) ? tmp : -1; int absoluteNumber = int.TryParse(match.Groups["Absolute"].Value, out tmp) ? tmp : -1; @@ -272,12 +272,6 @@ namespace Kyoo.Controllers season ??= await GetSeason(libraryManager, show, episode.SeasonNumber, library); episode.Season = season; episode.SeasonID = season?.ID; - if (season == null) - { - await Console.Error.WriteLineAsync("Error: You don't have any provider that support absolute epiode numbering. Install one and try again."); - return default; - } - await _thumbnailsManager.Validate(episode); await GetTracks(episode); return episode; diff --git a/Kyoo/appsettings.json b/Kyoo/appsettings.json index 15eb271e..10101c80 100644 --- a/Kyoo/appsettings.json +++ b/Kyoo/appsettings.json @@ -9,7 +9,8 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information", "Microsoft.EntityFrameworkCore.DbUpdateException": "None", - "Microsoft.EntityFrameworkCore.Update": "None" + "Microsoft.EntityFrameworkCore.Update": "None", + "Microsoft.EntityFrameworkCore.Database.Command": "None" } }, "AllowedHosts": "*", @@ -32,5 +33,5 @@ "plugins": "plugins/", "defaultPermissions": "read,play,write,admin", "newUserPermissions": "read,play,write,admin", - "regex": "(\\/(?.*)\\/)?.*\\/(?.+?)( \\(\\d*\\))?(( S(?\\d+)E(?\\d+)| (?\\d+)))?\\." -} + "regex": "(?:\\/(?.*?))?\\/(?.*)(?: \\(\\d+\\))?\\/\\k(?: \\(\\d+\\))?(?:(?: S(?\\d+)E(?\\d+))| (?\\d+))?.*$" +} \ No newline at end of file diff --git a/Kyoo/kyoo.sh b/Kyoo/kyoo.sh index bb2c0391..b614af45 100644 --- a/Kyoo/kyoo.sh +++ b/Kyoo/kyoo.sh @@ -1,4 +1,4 @@ #!/usr/bin/bash -cd /opt/kyoo -dotnet Kyoo.dll +cd /opt/kyoo || exit 1 +dotnet Kyoo.dll \ No newline at end of file diff --git a/Kyoo/regexTesterr.sh b/Kyoo/regexTesterr.sh new file mode 100755 index 00000000..2b5317cb --- /dev/null +++ b/Kyoo/regexTesterr.sh @@ -0,0 +1,5 @@ +#! /usr/bin/bash + +REGEX="(?:\/(?.*?))?\/(?.*)(?: \(\d+\))?\/\k(?: \(\d+\))?(?:(?: S(?\d+)E(?\d+))| (?\d+))?.*$" + +find "$1" -type f \( -name '*.mp4' -o -name '*.mkv' \) | cut -c $((${#1} + 1))- | grep -viP "$REGEX" \ No newline at end of file