Enforce NuGet warnings as errors; refactor field access

Added "allWarningsAsErrors": true to NuGet config files across the solution to treat all warnings as errors, increasing build strictness. Updated project cache hashes and assembly info files to reflect these changes. Refactored C# code to use explicit `this.` for field and property assignments, improving clarity. Note: some method signatures were incorrectly changed to use `this.` as a prefix, which is invalid C# syntax and must be corrected before compiling. Binary files updated due to build changes.
This commit is contained in:
2026-02-21 11:07:54 -05:00
parent 2b3a0c9746
commit 477045704e
141 changed files with 714 additions and 291 deletions
+3 -3
View File
@@ -24,7 +24,7 @@ namespace Emby.Naming.Audio
/// <param name="options">Naming options containing AlbumStackingPrefixes.</param> /// <param name="options">Naming options containing AlbumStackingPrefixes.</param>
public AlbumParser(NamingOptions options) public AlbumParser(NamingOptions options)
{ {
_options = options; this._options = options;
} }
[GeneratedRegex(@"[-\.\(\)\s]+")] [GeneratedRegex(@"[-\.\(\)\s]+")]
@@ -49,11 +49,11 @@ namespace Emby.Naming.Audio
// Normalize // Normalize
// Remove whitespace // Remove whitespace
filename = CleanRegex().Replace(filename, " "); this.filename = CleanRegex().Replace(filename, " ");
ReadOnlySpan<char> trimmedFilename = filename.AsSpan().TrimStart(); ReadOnlySpan<char> trimmedFilename = filename.AsSpan().TrimStart();
foreach (var prefix in _options.AlbumStackingPrefixes) foreach (var prefix in this._options.AlbumStackingPrefixes)
{ {
if (!trimmedFilename.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) if (!trimmedFilename.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
{ {
+7 -7
View File
@@ -20,10 +20,10 @@ namespace Emby.Naming.AudioBook
/// <param name="chapterNumber">Number of chapter this file represents.</param> /// <param name="chapterNumber">Number of chapter this file represents.</param>
public AudioBookFileInfo(string path, string container, int? partNumber = default, int? chapterNumber = default) public AudioBookFileInfo(string path, string container, int? partNumber = default, int? chapterNumber = default)
{ {
Path = path; this.Path = path;
Container = container; this.Container = container;
PartNumber = partNumber; this.PartNumber = partNumber;
ChapterNumber = chapterNumber; this.ChapterNumber = chapterNumber;
} }
/// <summary> /// <summary>
@@ -63,19 +63,19 @@ namespace Emby.Naming.AudioBook
return 1; return 1;
} }
var chapterNumberComparison = Nullable.Compare(ChapterNumber, other.ChapterNumber); var chapterNumberComparison = Nullable.Compare(this.ChapterNumber, other.ChapterNumber);
if (chapterNumberComparison != 0) if (chapterNumberComparison != 0)
{ {
return chapterNumberComparison; return chapterNumberComparison;
} }
var partNumberComparison = Nullable.Compare(PartNumber, other.PartNumber); var partNumberComparison = Nullable.Compare(this.PartNumber, other.PartNumber);
if (partNumberComparison != 0) if (partNumberComparison != 0)
{ {
return partNumberComparison; return partNumberComparison;
} }
return string.Compare(Path, other.Path, StringComparison.Ordinal); return string.Compare(this.Path, other.Path, StringComparison.Ordinal);
} }
} }
} }
@@ -22,7 +22,7 @@ namespace Emby.Naming.AudioBook
/// <param name="options">Naming options containing AudioBookPartsExpressions.</param> /// <param name="options">Naming options containing AudioBookPartsExpressions.</param>
public AudioBookFilePathParser(NamingOptions options) public AudioBookFilePathParser(NamingOptions options)
{ {
_options = options; this._options = options;
} }
/// <summary> /// <summary>
@@ -34,7 +34,7 @@ namespace Emby.Naming.AudioBook
{ {
AudioBookFilePathParserResult result = default; AudioBookFilePathParserResult result = default;
var fileName = Path.GetFileNameWithoutExtension(path); var fileName = Path.GetFileNameWithoutExtension(path);
foreach (var expression in _options.AudioBookPartsExpressions) foreach (var expression in this._options.AudioBookPartsExpressions)
{ {
var match = Regex.Match(fileName, expression, RegexOptions.IgnoreCase); var match = Regex.Match(fileName, expression, RegexOptions.IgnoreCase);
if (match.Success) if (match.Success)
+5 -5
View File
@@ -21,11 +21,11 @@ namespace Emby.Naming.AudioBook
/// <param name="alternateVersions">Alternative version of files.</param> /// <param name="alternateVersions">Alternative version of files.</param>
public AudioBookInfo(string name, int? year, IReadOnlyList<AudioBookFileInfo> files, IReadOnlyList<AudioBookFileInfo> extras, IReadOnlyList<AudioBookFileInfo> alternateVersions) public AudioBookInfo(string name, int? year, IReadOnlyList<AudioBookFileInfo> files, IReadOnlyList<AudioBookFileInfo> extras, IReadOnlyList<AudioBookFileInfo> alternateVersions)
{ {
Name = name; this.Name = name;
Year = year; this.Year = year;
Files = files; this.Files = files;
Extras = extras; this.Extras = extras;
AlternateVersions = alternateVersions; this.AlternateVersions = alternateVersions;
} }
/// <summary> /// <summary>
+11 -11
View File
@@ -26,8 +26,8 @@ namespace Emby.Naming.AudioBook
/// <param name="options">Naming options passed along to <see cref="AudioBookResolver"/> and <see cref="AudioBookNameParser"/>.</param> /// <param name="options">Naming options passed along to <see cref="AudioBookResolver"/> and <see cref="AudioBookNameParser"/>.</param>
public AudioBookListResolver(NamingOptions options) public AudioBookListResolver(NamingOptions options)
{ {
_options = options; this._options = options;
_audioBookResolver = new AudioBookResolver(_options); this._audioBookResolver = new AudioBookResolver(this._options);
} }
/// <summary> /// <summary>
@@ -39,7 +39,7 @@ namespace Emby.Naming.AudioBook
{ {
// File with empty fullname will be sorted out here. // File with empty fullname will be sorted out here.
var audiobookFileInfos = files var audiobookFileInfos = files
.Select(i => _audioBookResolver.Resolve(i.FullName)) .Select(i => this._audioBookResolver.Resolve(i.FullName))
.OfType<AudioBookFileInfo>(); .OfType<AudioBookFileInfo>();
var stackResult = StackResolver.ResolveAudioBooks(audiobookFileInfos); var stackResult = StackResolver.ResolveAudioBooks(audiobookFileInfos);
@@ -47,13 +47,13 @@ namespace Emby.Naming.AudioBook
foreach (var stack in stackResult) foreach (var stack in stackResult)
{ {
var stackFiles = stack.Files var stackFiles = stack.Files
.Select(i => _audioBookResolver.Resolve(i)) .Select(i => this._audioBookResolver.Resolve(i))
.OfType<AudioBookFileInfo>() .OfType<AudioBookFileInfo>()
.ToList(); .ToList();
stackFiles.Sort(); stackFiles.Sort();
var nameParserResult = new AudioBookNameParser(_options).Parse(stack.Name); var nameParserResult = new AudioBookNameParser(this._options).Parse(stack.Name);
FindExtraAndAlternativeFiles(ref stackFiles, out var extras, out var alternativeVersions, nameParserResult); FindExtraAndAlternativeFiles(ref stackFiles, out var extras, out var alternativeVersions, nameParserResult);
@@ -70,8 +70,8 @@ namespace Emby.Naming.AudioBook
private void FindExtraAndAlternativeFiles(ref List<AudioBookFileInfo> stackFiles, out List<AudioBookFileInfo> extras, out List<AudioBookFileInfo> alternativeVersions, AudioBookNameParserResult nameParserResult) private void FindExtraAndAlternativeFiles(ref List<AudioBookFileInfo> stackFiles, out List<AudioBookFileInfo> extras, out List<AudioBookFileInfo> alternativeVersions, AudioBookNameParserResult nameParserResult)
{ {
extras = new List<AudioBookFileInfo>(); this.extras = new List<AudioBookFileInfo>();
alternativeVersions = new List<AudioBookFileInfo>(); this.alternativeVersions = new List<AudioBookFileInfo>();
var haveChaptersOrPages = stackFiles.Any(x => x.ChapterNumber is not null || x.PartNumber is not null); var haveChaptersOrPages = stackFiles.Any(x => x.ChapterNumber is not null || x.PartNumber is not null);
var groupedBy = stackFiles.GroupBy(file => new { file.ChapterNumber, file.PartNumber }); var groupedBy = stackFiles.GroupBy(file => new { file.ChapterNumber, file.PartNumber });
@@ -108,7 +108,7 @@ namespace Emby.Naming.AudioBook
.ThenBy(x => x.Path) .ThenBy(x => x.Path)
.ToList(); .ToList();
stackFiles = stackFiles.Except(extra).ToList(); this.stackFiles = stackFiles.Except(extra).ToList();
extras.AddRange(extra); extras.AddRange(extra);
} }
@@ -119,9 +119,9 @@ namespace Emby.Naming.AudioBook
.ThenBy(x => x.Path) .ThenBy(x => x.Path)
.ToList(); .ToList();
var main = FindMainAudioBookFile(alternatives, nameParserResult.Name); var main = this.FindMainAudioBookFile(alternatives, nameParserResult.Name);
alternatives.Remove(main); alternatives.Remove(main);
stackFiles = stackFiles.Except(alternatives).ToList(); this.stackFiles = stackFiles.Except(alternatives).ToList();
alternativeVersions.AddRange(alternatives); alternativeVersions.AddRange(alternatives);
} }
} }
@@ -134,7 +134,7 @@ namespace Emby.Naming.AudioBook
.Skip(1) .Skip(1)
.ToList(); .ToList();
stackFiles = stackFiles.Except(alternatives).ToList(); this.stackFiles = stackFiles.Except(alternatives).ToList();
alternativeVersions.AddRange(alternatives); alternativeVersions.AddRange(alternatives);
} }
} }
+2 -2
View File
@@ -21,7 +21,7 @@ namespace Emby.Naming.AudioBook
/// <param name="options">Naming options containing AudioBookNamesExpressions.</param> /// <param name="options">Naming options containing AudioBookNamesExpressions.</param>
public AudioBookNameParser(NamingOptions options) public AudioBookNameParser(NamingOptions options)
{ {
_options = options; this._options = options;
} }
/// <summary> /// <summary>
@@ -32,7 +32,7 @@ namespace Emby.Naming.AudioBook
public AudioBookNameParserResult Parse(string name) public AudioBookNameParserResult Parse(string name)
{ {
AudioBookNameParserResult result = default; AudioBookNameParserResult result = default;
foreach (var expression in _options.AudioBookNamesExpressions) foreach (var expression in this._options.AudioBookNamesExpressions)
{ {
var match = Regex.Match(name, expression, RegexOptions.IgnoreCase); var match = Regex.Match(name, expression, RegexOptions.IgnoreCase);
if (match.Success) if (match.Success)
+3 -3
View File
@@ -22,7 +22,7 @@ namespace Emby.Naming.AudioBook
/// <param name="options"><see cref="NamingOptions"/> containing AudioFileExtensions and also used to pass to AudioBookFilePathParser.</param> /// <param name="options"><see cref="NamingOptions"/> containing AudioFileExtensions and also used to pass to AudioBookFilePathParser.</param>
public AudioBookResolver(NamingOptions options) public AudioBookResolver(NamingOptions options)
{ {
_options = options; this._options = options;
} }
/// <summary> /// <summary>
@@ -41,14 +41,14 @@ namespace Emby.Naming.AudioBook
var extension = Path.GetExtension(path); var extension = Path.GetExtension(path);
// Check supported extensions // Check supported extensions
if (!_options.AudioFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase)) if (!this._options.AudioFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))
{ {
return null; return null;
} }
var container = extension.TrimStart('.'); var container = extension.TrimStart('.');
var parsingResult = new AudioBookFilePathParser(_options).Parse(path); var parsingResult = new AudioBookFilePathParser(this._options).Parse(path);
return new AudioBookFileInfo( return new AudioBookFileInfo(
path, path,
+4 -4
View File
@@ -16,10 +16,10 @@ namespace Emby.Naming.Book
/// </summary> /// </summary>
public BookFileNameParserResult() public BookFileNameParserResult()
{ {
Name = null; this.Name = null;
Index = null; this.Index = null;
Year = null; this.Year = null;
SeriesName = null; this.SeriesName = null;
} }
/// <summary> /// <summary>
+8 -8
View File
@@ -22,10 +22,10 @@ namespace Emby.Naming.Common
/// <param name="byDate">True if date is expected.</param> /// <param name="byDate">True if date is expected.</param>
public EpisodeExpression(string expression, bool byDate = false) public EpisodeExpression(string expression, bool byDate = false)
{ {
_expression = expression; this._expression = expression;
IsByDate = byDate; this.IsByDate = byDate;
DateTimeFormats = Array.Empty<string>(); this.DateTimeFormats = Array.Empty<string>();
SupportsAbsoluteEpisodeNumbers = true; this.SupportsAbsoluteEpisodeNumbers = true;
} }
/// <summary> /// <summary>
@@ -33,11 +33,11 @@ namespace Emby.Naming.Common
/// </summary> /// </summary>
public string Expression public string Expression
{ {
get => _expression; get => this._expression;
set set
{ {
_expression = value; this._expression = value;
_regex = null; this._regex = null;
} }
} }
@@ -69,6 +69,6 @@ namespace Emby.Naming.Common
/// <summary> /// <summary>
/// Gets a <see cref="Regex"/> expressions objects (creates it if null). /// Gets a <see cref="Regex"/> expressions objects (creates it if null).
/// </summary> /// </summary>
public Regex Regex => _regex ??= new Regex(Expression, RegexOptions.IgnoreCase | RegexOptions.Compiled); public Regex Regex => this._regex ??= new Regex(this.Expression, RegexOptions.IgnoreCase | RegexOptions.Compiled);
} }
} }
+55 -55
View File
@@ -25,7 +25,7 @@ namespace Emby.Naming.Common
/// </summary> /// </summary>
public NamingOptions() public NamingOptions()
{ {
VideoFileExtensions = this.VideoFileExtensions =
[ [
".001", ".001",
".3g2", ".3g2",
@@ -83,7 +83,7 @@ namespace Emby.Naming.Common
".xvid" ".xvid"
]; ];
VideoFlagDelimiters = this.VideoFlagDelimiters =
[ [
'(', '(',
')', ')',
@@ -94,12 +94,12 @@ namespace Emby.Naming.Common
']' ']'
]; ];
StubFileExtensions = this.StubFileExtensions =
[ [
".disc" ".disc"
]; ];
StubTypes = this.StubTypes =
[ [
new StubTypeRule( new StubTypeRule(
stubType: "dvd", stubType: "dvd",
@@ -142,19 +142,19 @@ namespace Emby.Naming.Common
token: "DSR") token: "DSR")
]; ];
VideoFileStackingRules = this.VideoFileStackingRules =
[ [
new FileStackRule(@"^(?<filename>.*?)(?:(?<=[\]\)\}])|[ _.-]+)[\(\[]?(?<parttype>cd|dvd|part|pt|dis[ck])[ _.-]*(?<number>[0-9]+)[\)\]]?(?:\.[^.]+)?$", true), new FileStackRule(@"^(?<filename>.*?)(?:(?<=[\]\)\}])|[ _.-]+)[\(\[]?(?<parttype>cd|dvd|part|pt|dis[ck])[ _.-]*(?<number>[0-9]+)[\)\]]?(?:\.[^.]+)?$", true),
new FileStackRule(@"^(?<filename>.*?)(?:(?<=[\]\)\}])|[ _.-]+)[\(\[]?(?<parttype>cd|dvd|part|pt|dis[ck])[ _.-]*(?<number>[a-d])[\)\]]?(?:\.[^.]+)?$", false) new FileStackRule(@"^(?<filename>.*?)(?:(?<=[\]\)\}])|[ _.-]+)[\(\[]?(?<parttype>cd|dvd|part|pt|dis[ck])[ _.-]*(?<number>[a-d])[\)\]]?(?:\.[^.]+)?$", false)
]; ];
CleanDateTimes = this.CleanDateTimes =
[ [
@"(.+[^_\,\.\(\)\[\]\-])[_\.\(\)\[\]\-](19[0-9]{2}|20[0-9]{2})(?![0-9]+|\W[0-9]{2}\W[0-9]{2})([ _\,\.\(\)\[\]\-][^0-9]|).*(19[0-9]{2}|20[0-9]{2})*", @"(.+[^_\,\.\(\)\[\]\-])[_\.\(\)\[\]\-](19[0-9]{2}|20[0-9]{2})(?![0-9]+|\W[0-9]{2}\W[0-9]{2})([ _\,\.\(\)\[\]\-][^0-9]|).*(19[0-9]{2}|20[0-9]{2})*",
@"(.+[^_\,\.\(\)\[\]\-])[ _\.\(\)\[\]\-]+(19[0-9]{2}|20[0-9]{2})(?![0-9]+|\W[0-9]{2}\W[0-9]{2})([ _\,\.\(\)\[\]\-][^0-9]|).*(19[0-9]{2}|20[0-9]{2})*" @"(.+[^_\,\.\(\)\[\]\-])[ _\.\(\)\[\]\-]+(19[0-9]{2}|20[0-9]{2})(?![0-9]+|\W[0-9]{2}\W[0-9]{2})([ _\,\.\(\)\[\]\-][^0-9]|).*(19[0-9]{2}|20[0-9]{2})*"
]; ];
CleanStrings = this.CleanStrings =
[ [
@"^\s*(?<cleaned>.+?)[ _\,\.\(\)\[\]\-](3d|sbs|tab|hsbs|htab|mvc|HDR|HDC|UHD|UltraHD|4k|ac3|dts|custom|dc|divx|divx5|dsr|dsrip|dutch|dvd|dvdrip|dvdscr|dvdscreener|screener|dvdivx|cam|fragment|fs|hdtv|hdrip|hdtvrip|internal|limited|multi|subs|ntsc|ogg|ogm|pal|pdtv|proper|repack|rerip|retail|cd[1-9]|r5|bd5|bd|se|svcd|swedish|german|read.nfo|nfofix|unrated|ws|telesync|ts|telecine|tc|brrip|bdrip|480p|480i|576p|576i|720p|720i|1080p|1080i|2160p|hrhd|hrhdtv|hddvd|bluray|blu-ray|x264|x265|h264|h265|xvid|xvidvd|xxx|www.www|AAC|DTS|\[.*\])([ _\,\.\(\)\[\]\-]|$)", @"^\s*(?<cleaned>.+?)[ _\,\.\(\)\[\]\-](3d|sbs|tab|hsbs|htab|mvc|HDR|HDC|UHD|UltraHD|4k|ac3|dts|custom|dc|divx|divx5|dsr|dsrip|dutch|dvd|dvdrip|dvdscr|dvdscreener|screener|dvdivx|cam|fragment|fs|hdtv|hdrip|hdtvrip|internal|limited|multi|subs|ntsc|ogg|ogm|pal|pdtv|proper|repack|rerip|retail|cd[1-9]|r5|bd5|bd|se|svcd|swedish|german|read.nfo|nfofix|unrated|ws|telesync|ts|telecine|tc|brrip|bdrip|480p|480i|576p|576i|720p|720i|1080p|1080i|2160p|hrhd|hrhdtv|hddvd|bluray|blu-ray|x264|x265|h264|h265|xvid|xvidvd|xxx|www.www|AAC|DTS|\[.*\])([ _\,\.\(\)\[\]\-]|$)",
@"^(?<cleaned>.+?)(\[.*\])", @"^(?<cleaned>.+?)(\[.*\])",
@@ -164,7 +164,7 @@ namespace Emby.Naming.Common
@"^\s*(?<cleaned>.+?)(([-._ ](trailer|sample))|-(scene|clip|behindthescenes|deleted|deletedscene|featurette|short|interview|other|extra))$" @"^\s*(?<cleaned>.+?)(([-._ ](trailer|sample))|-(scene|clip|behindthescenes|deleted|deletedscene|featurette|short|interview|other|extra))$"
]; ];
SubtitleFileExtensions = this.SubtitleFileExtensions =
[ [
".ass", ".ass",
".mks", ".mks",
@@ -177,14 +177,14 @@ namespace Emby.Naming.Common
".vtt", ".vtt",
]; ];
LyricFileExtensions = this.LyricFileExtensions =
[ [
".lrc", ".lrc",
".elrc", ".elrc",
".txt" ".txt"
]; ];
AlbumStackingPrefixes = this.AlbumStackingPrefixes =
[ [
"cd", "cd",
"digital media", "digital media",
@@ -196,7 +196,7 @@ namespace Emby.Naming.Common
"act" "act"
]; ];
ArtistSubfolders = this.ArtistSubfolders =
[ [
"albums", "albums",
"broadcasts", "broadcasts",
@@ -214,7 +214,7 @@ namespace Emby.Naming.Common
"streets" "streets"
]; ];
AudioFileExtensions = this.AudioFileExtensions =
[ [
".669", ".669",
".3gp", ".3gp",
@@ -298,36 +298,36 @@ namespace Emby.Naming.Common
".ymf" ".ymf"
]; ];
MediaFlagDelimiters = this.MediaFlagDelimiters =
[ [
'.' '.'
]; ];
MediaForcedFlags = this.MediaForcedFlags =
[ [
"foreign", "foreign",
"forced" "forced"
]; ];
MediaDefaultFlags = this.MediaDefaultFlags =
[ [
"default" "default"
]; ];
MediaHearingImpairedFlags = this.MediaHearingImpairedFlags =
[ [
"cc", "cc",
"hi", "hi",
"sdh" "sdh"
]; ];
EpisodeExpressions = this.EpisodeExpressions =
[ [
// *** Begin Kodi Standard Naming // *** Begin Kodi Standard Naming
// <!-- foo.s01.e01, foo.s01_e01, S01E02 foo, S01 - E02 --> // <!-- foo.s01.e01, foo.s01_e01, S01E02 foo, S01 - E02 -->
new EpisodeExpression(@".*(\\|\/)(?<seriesname>((?![Ss]([0-9]+)[][ ._-]*[Ee]([0-9]+))[^\\\/])*)?[Ss](?<seasonnumber>[0-9]+)[][ ._-]*[Ee](?<epnumber>[0-9]+)([^\\/]*)$") new EpisodeExpression(@".*(\\|\/)(?<seriesname>((?![Ss]([0-9]+)[][ ._-]*[Ee]([0-9]+))[^\\\/])*)?[Ss](?<seasonnumber>[0-9]+)[][ ._-]*[Ee](?<epnumber>[0-9]+)([^\\/]*)$")
{ {
IsNamed = true this.IsNamed = true
}, },
// <!-- foo.ep01, foo.EP_01 --> // <!-- foo.ep01, foo.EP_01 -->
new EpisodeExpression(@"[\._ -]()[Ee][Pp]_?([0-9]+)([^\\/]*)$"), new EpisodeExpression(@"[\._ -]()[Ee][Pp]_?([0-9]+)([^\\/]*)$"),
@@ -335,7 +335,7 @@ namespace Emby.Naming.Common
new EpisodeExpression(@"[^\\/]*?()\.?[Ee]([0-9]+)\.([^\\/]*)$"), new EpisodeExpression(@"[^\\/]*?()\.?[Ee]([0-9]+)\.([^\\/]*)$"),
new EpisodeExpression("(?<year>[0-9]{4})[._ -](?<month>[0-9]{2})[._ -](?<day>[0-9]{2})", true) new EpisodeExpression("(?<year>[0-9]{4})[._ -](?<month>[0-9]{2})[._ -](?<day>[0-9]{2})", true)
{ {
DateTimeFormats = this.DateTimeFormats =
[ [
"yyyy.MM.dd", "yyyy.MM.dd",
"yyyy-MM-dd", "yyyy-MM-dd",
@@ -345,7 +345,7 @@ namespace Emby.Naming.Common
}, },
new EpisodeExpression("(?<day>[0-9]{2})[._ -](?<month>[0-9]{2})[._ -](?<year>[0-9]{4})", true) new EpisodeExpression("(?<day>[0-9]{2})[._ -](?<month>[0-9]{2})[._ -](?<year>[0-9]{4})", true)
{ {
DateTimeFormats = this.DateTimeFormats =
[ [
"dd.MM.yyyy", "dd.MM.yyyy",
"dd-MM-yyyy", "dd-MM-yyyy",
@@ -359,7 +359,7 @@ namespace Emby.Naming.Common
// "Series Season X Episode X - Title.avi", "Series S03 E09.avi", "s3 e9 - Title.avi" // "Series Season X Episode X - Title.avi", "Series S03 E09.avi", "s3 e9 - Title.avi"
new EpisodeExpression(@".*[\\\/]((?<seriesname>[^\\/]+?)\s)?[Ss](?:eason)?\s*(?<seasonnumber>[0-9]+)\s+[Ee](?:pisode)?\s*(?<epnumber>[0-9]+).*$") new EpisodeExpression(@".*[\\\/]((?<seriesname>[^\\/]+?)\s)?[Ss](?:eason)?\s*(?<seasonnumber>[0-9]+)\s+[Ee](?:pisode)?\s*(?<epnumber>[0-9]+).*$")
{ {
IsNamed = true this.IsNamed = true
}, },
// Not a Kodi rule as well, but the expression below also causes false positives, // Not a Kodi rule as well, but the expression below also causes false positives,
@@ -367,19 +367,19 @@ namespace Emby.Naming.Common
// "Foo Bar 889" // "Foo Bar 889"
new EpisodeExpression(@".*[\\\/](?![Ee]pisode)(?<seriesname>[\w\s]+?)\s(?<epnumber>[0-9]{1,4})(-(?<endingepnumber>[0-9]{2,4}))*[^\\\/x]*$") new EpisodeExpression(@".*[\\\/](?![Ee]pisode)(?<seriesname>[\w\s]+?)\s(?<epnumber>[0-9]{1,4})(-(?<endingepnumber>[0-9]{2,4}))*[^\\\/x]*$")
{ {
IsNamed = true this.IsNamed = true
}, },
new EpisodeExpression(@"[\\\/\._ \[\(-]([0-9]+)x([0-9]+(?:(?:[a-i]|\.[1-9])(?![0-9]))?)([^\\\/]*)$") new EpisodeExpression(@"[\\\/\._ \[\(-]([0-9]+)x([0-9]+(?:(?:[a-i]|\.[1-9])(?![0-9]))?)([^\\\/]*)$")
{ {
SupportsAbsoluteEpisodeNumbers = true this.SupportsAbsoluteEpisodeNumbers = true
}, },
// Not a Kodi rule as well, but below rule also causes false positives for triple-digit episode names // Not a Kodi rule as well, but below rule also causes false positives for triple-digit episode names
// [bar] Foo - 1 [baz] special case of below expression to prevent false positives with digits in the series name // [bar] Foo - 1 [baz] special case of below expression to prevent false positives with digits in the series name
new EpisodeExpression(@".*[\\\/]?.*?(\[.*?\])+.*?(?<seriesname>[-\w\s]+?)[\s_]*-[\s_]*(?<epnumber>[0-9]+).*$") new EpisodeExpression(@".*[\\\/]?.*?(\[.*?\])+.*?(?<seriesname>[-\w\s]+?)[\s_]*-[\s_]*(?<epnumber>[0-9]+).*$")
{ {
IsNamed = true this.IsNamed = true
}, },
// /server/anything_102.mp4 // /server/anything_102.mp4
@@ -387,13 +387,13 @@ namespace Emby.Naming.Common
// /server/anything_1996.11.14.mp4 // /server/anything_1996.11.14.mp4
new EpisodeExpression(@"[\\/._ -](?<seriesname>(?![0-9]+[0-9][0-9])([^\\\/_])*)[\\\/._ -](?<seasonnumber>[0-9]+)(?<epnumber>[0-9][0-9](?:(?:[a-i]|\.[1-9])(?![0-9]))?)([._ -][^\\\/]*)$") new EpisodeExpression(@"[\\/._ -](?<seriesname>(?![0-9]+[0-9][0-9])([^\\\/_])*)[\\\/._ -](?<seasonnumber>[0-9]+)(?<epnumber>[0-9][0-9](?:(?:[a-i]|\.[1-9])(?![0-9]))?)([._ -][^\\\/]*)$")
{ {
IsOptimistic = true, this.IsOptimistic = true,
IsNamed = true, this.IsNamed = true,
SupportsAbsoluteEpisodeNumbers = false this.SupportsAbsoluteEpisodeNumbers = false
}, },
new EpisodeExpression(@"[\/._ -]p(?:ar)?t[_. -]()([ivx]+|[0-9]+)([._ -][^\/]*)$") new EpisodeExpression(@"[\/._ -]p(?:ar)?t[_. -]()([ivx]+|[0-9]+)([._ -][^\/]*)$")
{ {
SupportsAbsoluteEpisodeNumbers = true this.SupportsAbsoluteEpisodeNumbers = true
}, },
// *** End Kodi Standard Naming // *** End Kodi Standard Naming
@@ -401,34 +401,34 @@ namespace Emby.Naming.Common
// "Episode 16", "Episode 16 - Title" // "Episode 16", "Episode 16 - Title"
new EpisodeExpression(@"[Ee]pisode (?<epnumber>[0-9]+)(-(?<endingepnumber>[0-9]+))?[^\\\/]*$") new EpisodeExpression(@"[Ee]pisode (?<epnumber>[0-9]+)(-(?<endingepnumber>[0-9]+))?[^\\\/]*$")
{ {
IsNamed = true this.IsNamed = true
}, },
new EpisodeExpression(@".*(\\|\/)[sS]?(?<seasonnumber>[0-9]+)[xX](?<epnumber>[0-9]+)[^\\\/]*$") new EpisodeExpression(@".*(\\|\/)[sS]?(?<seasonnumber>[0-9]+)[xX](?<epnumber>[0-9]+)[^\\\/]*$")
{ {
IsNamed = true this.IsNamed = true
}, },
new EpisodeExpression(@".*(\\|\/)[sS](?<seasonnumber>[0-9]+)[x,X]?[eE](?<epnumber>[0-9]+)[^\\\/]*$") new EpisodeExpression(@".*(\\|\/)[sS](?<seasonnumber>[0-9]+)[x,X]?[eE](?<epnumber>[0-9]+)[^\\\/]*$")
{ {
IsNamed = true this.IsNamed = true
}, },
new EpisodeExpression(@".*(\\|\/)(?<seriesname>((?![sS]?[0-9]{1,4}[xX][0-9]{1,3})[^\\\/])*)?([sS]?(?<seasonnumber>[0-9]{1,4})[xX](?<epnumber>[0-9]+))[^\\\/]*$") new EpisodeExpression(@".*(\\|\/)(?<seriesname>((?![sS]?[0-9]{1,4}[xX][0-9]{1,3})[^\\\/])*)?([sS]?(?<seasonnumber>[0-9]{1,4})[xX](?<epnumber>[0-9]+))[^\\\/]*$")
{ {
IsNamed = true this.IsNamed = true
}, },
new EpisodeExpression(@".*(\\|\/)(?<seriesname>[^\\\/]*)[sS](?<seasonnumber>[0-9]{1,4})[xX\.]?[eE](?<epnumber>[0-9]+)[^\\\/]*$") new EpisodeExpression(@".*(\\|\/)(?<seriesname>[^\\\/]*)[sS](?<seasonnumber>[0-9]{1,4})[xX\.]?[eE](?<epnumber>[0-9]+)[^\\\/]*$")
{ {
IsNamed = true this.IsNamed = true
}, },
// "01.avi" // "01.avi"
new EpisodeExpression(@".*[\\\/](?<epnumber>[0-9]+)(-(?<endingepnumber>[0-9]+))*\.\w+$") new EpisodeExpression(@".*[\\\/](?<epnumber>[0-9]+)(-(?<endingepnumber>[0-9]+))*\.\w+$")
{ {
IsOptimistic = true, this.IsOptimistic = true,
IsNamed = true this.IsNamed = true
}, },
// "1-12 episode title" // "1-12 episode title"
@@ -437,43 +437,43 @@ namespace Emby.Naming.Common
// "01 - blah.avi", "01-blah.avi" // "01 - blah.avi", "01-blah.avi"
new EpisodeExpression(@".*(\\|\/)(?<epnumber>[0-9]{1,3})(-(?<endingepnumber>[0-9]{2,3}))*\s?-\s?[^\\\/]*$") new EpisodeExpression(@".*(\\|\/)(?<epnumber>[0-9]{1,3})(-(?<endingepnumber>[0-9]{2,3}))*\s?-\s?[^\\\/]*$")
{ {
IsOptimistic = true, this.IsOptimistic = true,
IsNamed = true this.IsNamed = true
}, },
// "01.blah.avi" // "01.blah.avi"
new EpisodeExpression(@".*(\\|\/)(?<epnumber>[0-9]{1,3})(-(?<endingepnumber>[0-9]{2,3}))*\.[^\\\/]+$") new EpisodeExpression(@".*(\\|\/)(?<epnumber>[0-9]{1,3})(-(?<endingepnumber>[0-9]{2,3}))*\.[^\\\/]+$")
{ {
IsOptimistic = true, this.IsOptimistic = true,
IsNamed = true this.IsNamed = true
}, },
// "blah - 01.avi", "blah 2 - 01.avi", "blah - 01 blah.avi", "blah 2 - 01 blah", "blah - 01 - blah.avi", "blah 2 - 01 - blah" // "blah - 01.avi", "blah 2 - 01.avi", "blah - 01 blah.avi", "blah 2 - 01 blah", "blah - 01 - blah.avi", "blah 2 - 01 - blah"
new EpisodeExpression(@".*[\\\/][^\\\/]* - (?<epnumber>[0-9]{1,3})(-(?<endingepnumber>[0-9]{2,3}))*[^\\\/]*$") new EpisodeExpression(@".*[\\\/][^\\\/]* - (?<epnumber>[0-9]{1,3})(-(?<endingepnumber>[0-9]{2,3}))*[^\\\/]*$")
{ {
IsOptimistic = true, this.IsOptimistic = true,
IsNamed = true this.IsNamed = true
}, },
// "01 episode title.avi" // "01 episode title.avi"
new EpisodeExpression(@"[Ss]eason[\._ ](?<seasonnumber>[0-9]+)[\\\/](?<epnumber>[0-9]{1,3})([^\\\/]*)$") new EpisodeExpression(@"[Ss]eason[\._ ](?<seasonnumber>[0-9]+)[\\\/](?<epnumber>[0-9]{1,3})([^\\\/]*)$")
{ {
IsOptimistic = true, this.IsOptimistic = true,
IsNamed = true this.IsNamed = true
}, },
// Series and season only expression // Series and season only expression
// "the show/season 1", "the show/s01" // "the show/season 1", "the show/s01"
new EpisodeExpression(@"(.*(\\|\/))*(?<seriesname>.+)\/[Ss](eason)?[\. _\-]*(?<seasonnumber>[0-9]+)") new EpisodeExpression(@"(.*(\\|\/))*(?<seriesname>.+)\/[Ss](eason)?[\. _\-]*(?<seasonnumber>[0-9]+)")
{ {
IsNamed = true this.IsNamed = true
}, },
// Series and season only expression // Series and season only expression
// "the show S01", "the show season 1" // "the show S01", "the show season 1"
new EpisodeExpression(@"(.*(\\|\/))*(?<seriesname>.+)[\. _\-]+[sS](eason)?[\. _\-]*(?<seasonnumber>[0-9]+)") new EpisodeExpression(@"(.*(\\|\/))*(?<seriesname>.+)[\. _\-]+[sS](eason)?[\. _\-]*(?<seasonnumber>[0-9]+)")
{ {
IsNamed = true this.IsNamed = true
}, },
// Anime style expression // Anime style expression
@@ -481,11 +481,11 @@ namespace Emby.Naming.Common
// "[Group] Series Name [04][BDRIP]" // "[Group] Series Name [04][BDRIP]"
new EpisodeExpression(@"(?:\[(?:[^\]]+)\]\s*)?(?<seriesname>\[[^\]]+\]|[^[\]]+)\s*\[(?<epnumber>[0-9]+)\]") new EpisodeExpression(@"(?:\[(?:[^\]]+)\]\s*)?(?<seriesname>\[[^\]]+\]|[^[\]]+)\s*\[(?<epnumber>[0-9]+)\]")
{ {
IsNamed = true this.IsNamed = true
}, },
]; ];
VideoExtraRules = this.VideoExtraRules =
[ [
new ExtraRule( new ExtraRule(
ExtraType.Trailer, ExtraType.Trailer,
@@ -698,11 +698,11 @@ namespace Emby.Naming.Common
MediaType.Video) MediaType.Video)
]; ];
AllExtrasTypesFolderNames = VideoExtraRules this.AllExtrasTypesFolderNames = VideoExtraRules
.Where(i => i.RuleType == ExtraRuleType.DirectoryName) .Where(i => i.RuleType == ExtraRuleType.DirectoryName)
.ToDictionary(i => i.Token, i => i.ExtraType, StringComparer.OrdinalIgnoreCase); .ToDictionary(i => i.Token, i => i.ExtraType, StringComparer.OrdinalIgnoreCase);
Format3DRules = this.Format3DRules =
[ [
// Kodi rules: // Kodi rules:
new Format3DRule( new Format3DRule(
@@ -732,7 +732,7 @@ namespace Emby.Naming.Common
new Format3DRule("mvc") new Format3DRule("mvc")
]; ];
AudioBookPartsExpressions = this.AudioBookPartsExpressions =
[ [
// Detect specified chapters, like CH 01 // Detect specified chapters, like CH 01
@"ch(?:apter)?[\s_-]?(?<chapter>[0-9]+)", @"ch(?:apter)?[\s_-]?(?<chapter>[0-9]+)",
@@ -748,14 +748,14 @@ namespace Emby.Naming.Common
@"dis(?:c|k)[\s_-]?(?<chapter>[0-9]+)" @"dis(?:c|k)[\s_-]?(?<chapter>[0-9]+)"
]; ];
AudioBookNamesExpressions = this.AudioBookNamesExpressions =
[ [
// Detect year usually in brackets after name Batman (2020) // Detect year usually in brackets after name Batman (2020)
@"^(?<name>.+?)\s*\(\s*(?<year>[0-9]{4})\s*\)\s*$", @"^(?<name>.+?)\s*\(\s*(?<year>[0-9]{4})\s*\)\s*$",
@"^\s*(?<name>[^ ].*?)\s*$" @"^\s*(?<name>[^ ].*?)\s*$"
]; ];
MultipleEpisodeExpressions = new[] this.MultipleEpisodeExpressions = new[]
{ {
@".*(\\|\/)[sS]?(?<seasonnumber>[0-9]{1,4})[xX](?<epnumber>[0-9]{1,3})((-| - )[0-9]{1,4}[eExX](?<endingepnumber>[0-9]{1,3}))+[^\\\/]*$", @".*(\\|\/)[sS]?(?<seasonnumber>[0-9]{1,4})[xX](?<epnumber>[0-9]{1,3})((-| - )[0-9]{1,4}[eExX](?<endingepnumber>[0-9]{1,3}))+[^\\\/]*$",
@".*(\\|\/)[sS]?(?<seasonnumber>[0-9]{1,4})[xX](?<epnumber>[0-9]{1,3})((-| - )[0-9]{1,4}[xX][eE](?<endingepnumber>[0-9]{1,3}))+[^\\\/]*$", @".*(\\|\/)[sS]?(?<seasonnumber>[0-9]{1,4})[xX](?<epnumber>[0-9]{1,3})((-| - )[0-9]{1,4}[xX][eE](?<endingepnumber>[0-9]{1,3}))+[^\\\/]*$",
@@ -769,7 +769,7 @@ namespace Emby.Naming.Common
@".*(\\|\/)(?<seriesname>[^\\\/]*)[sS](?<seasonnumber>[0-9]{1,4})[xX\.]?[eE](?<epnumber>[0-9]{1,3})(-[xX]?[eE]?(?<endingepnumber>[0-9]{1,3}))+[^\\\/]*$" @".*(\\|\/)(?<seriesname>[^\\\/]*)[sS](?<seasonnumber>[0-9]{1,4})[xX\.]?[eE](?<epnumber>[0-9]{1,3})(-[xX]?[eE]?(?<endingepnumber>[0-9]{1,3}))+[^\\\/]*$"
}.Select(i => new EpisodeExpression(i) }.Select(i => new EpisodeExpression(i)
{ {
IsNamed = true this.IsNamed = true
}).ToArray(); }).ToArray();
Compile(); Compile();
@@ -905,8 +905,8 @@ namespace Emby.Naming.Common
/// </summary> /// </summary>
public void Compile() public void Compile()
{ {
CleanDateTimeRegexes = CleanDateTimes.Select(Compile).ToArray(); this.CleanDateTimeRegexes = this.CleanDateTimes.Select(this.Compile).ToArray();
CleanStringRegexes = CleanStrings.Select(Compile).ToArray(); this.CleanStringRegexes = this.CleanStrings.Select(this.Compile).ToArray();
} }
private Regex Compile(string exp) private Regex Compile(string exp)
+20 -20
View File
@@ -29,9 +29,9 @@ namespace Emby.Naming.ExternalFiles
/// <param name="type">The <see cref="DlnaProfileType"/> of the parsed file.</param> /// <param name="type">The <see cref="DlnaProfileType"/> of the parsed file.</param>
public ExternalPathParser(NamingOptions namingOptions, ILocalizationManager localizationManager, DlnaProfileType type) public ExternalPathParser(NamingOptions namingOptions, ILocalizationManager localizationManager, DlnaProfileType type)
{ {
_localizationManager = localizationManager; this._localizationManager = localizationManager;
_namingOptions = namingOptions; this._namingOptions = namingOptions;
_type = type; this._type = type;
} }
/// <summary> /// <summary>
@@ -48,9 +48,9 @@ namespace Emby.Naming.ExternalFiles
} }
var extension = Path.GetExtension(path.AsSpan()); var extension = Path.GetExtension(path.AsSpan());
if (!(_type == DlnaProfileType.Subtitle && _namingOptions.SubtitleFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase)) if (!(this._type == DlnaProfileType.Subtitle && this._namingOptions.SubtitleFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))
&& !(_type == DlnaProfileType.Audio && _namingOptions.AudioFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase)) && !(this._type == DlnaProfileType.Audio && this._namingOptions.AudioFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))
&& !(_type == DlnaProfileType.Lyric && _namingOptions.LyricFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))) && !(this._type == DlnaProfileType.Lyric && this._namingOptions.LyricFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase)))
{ {
return null; return null;
} }
@@ -62,7 +62,7 @@ namespace Emby.Naming.ExternalFiles
return pathInfo; return pathInfo;
} }
foreach (var separator in _namingOptions.MediaFlagDelimiters) foreach (var separator in this._namingOptions.MediaFlagDelimiters)
{ {
var languageString = extraString; var languageString = extraString;
var titleString = string.Empty; var titleString = string.Empty;
@@ -80,31 +80,31 @@ namespace Emby.Naming.ExternalFiles
string currentSlice = languageString[lastSeparator..]; string currentSlice = languageString[lastSeparator..];
string currentSliceWithoutSeparator = currentSlice[SeparatorLength..]; string currentSliceWithoutSeparator = currentSlice[SeparatorLength..];
if (_namingOptions.MediaDefaultFlags.Any(s => currentSliceWithoutSeparator.Contains(s, StringComparison.OrdinalIgnoreCase))) if (this._namingOptions.MediaDefaultFlags.Any(s => currentSliceWithoutSeparator.Contains(s, StringComparison.OrdinalIgnoreCase)))
{ {
pathInfo.IsDefault = true; pathInfo.IsDefault = true;
extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase); this.extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase);
languageString = languageString[..lastSeparator]; this.languageString = languageString[..lastSeparator];
continue; continue;
} }
if (_namingOptions.MediaForcedFlags.Any(s => currentSliceWithoutSeparator.Contains(s, StringComparison.OrdinalIgnoreCase))) if (this._namingOptions.MediaForcedFlags.Any(s => currentSliceWithoutSeparator.Contains(s, StringComparison.OrdinalIgnoreCase)))
{ {
pathInfo.IsForced = true; pathInfo.IsForced = true;
extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase); this.extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase);
languageString = languageString[..lastSeparator]; this.languageString = languageString[..lastSeparator];
continue; continue;
} }
// Try to translate to three character code // Try to translate to three character code
var culture = _localizationManager.FindLanguageInfo(currentSliceWithoutSeparator); var culture = this._localizationManager.FindLanguageInfo(currentSliceWithoutSeparator);
if (culture is not null && pathInfo.Language is null) if (culture is not null && pathInfo.Language is null)
{ {
pathInfo.Language = culture.Name.Contains('-', StringComparison.OrdinalIgnoreCase) pathInfo.Language = culture.Name.Contains('-', StringComparison.OrdinalIgnoreCase)
? culture.Name ? culture.Name
: culture.ThreeLetterISOLanguageName; : culture.ThreeLetterISOLanguageName;
extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase); this.extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase);
} }
else if (culture is not null && pathInfo.Language == "hin") else if (culture is not null && pathInfo.Language == "hin")
{ {
@@ -113,19 +113,19 @@ namespace Emby.Naming.ExternalFiles
pathInfo.Language = culture.Name.Contains('-', StringComparison.OrdinalIgnoreCase) pathInfo.Language = culture.Name.Contains('-', StringComparison.OrdinalIgnoreCase)
? culture.Name ? culture.Name
: culture.ThreeLetterISOLanguageName; : culture.ThreeLetterISOLanguageName;
extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase); this.extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase);
} }
else if (_namingOptions.MediaHearingImpairedFlags.Any(s => currentSliceWithoutSeparator.Equals(s, StringComparison.OrdinalIgnoreCase))) else if (this._namingOptions.MediaHearingImpairedFlags.Any(s => currentSliceWithoutSeparator.Equals(s, StringComparison.OrdinalIgnoreCase)))
{ {
pathInfo.IsHearingImpaired = true; pathInfo.IsHearingImpaired = true;
extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase); this.extraString = extraString.Replace(currentSlice, string.Empty, StringComparison.OrdinalIgnoreCase);
} }
else else
{ {
titleString = currentSlice + titleString; this.titleString = currentSlice + titleString;
} }
languageString = languageString[..lastSeparator]; this.languageString = languageString[..lastSeparator];
} }
pathInfo.Title = titleString.Length >= SeparatorLength ? titleString[SeparatorLength..] : null; pathInfo.Title = titleString.Length >= SeparatorLength ? titleString[SeparatorLength..] : null;
@@ -18,10 +18,10 @@ namespace Emby.Naming.ExternalFiles
/// <param name="isHearingImpaired">For the hearing impaired.</param> /// <param name="isHearingImpaired">For the hearing impaired.</param>
public ExternalPathParserResult(string path, bool isDefault = false, bool isForced = false, bool isHearingImpaired = false) public ExternalPathParserResult(string path, bool isDefault = false, bool isForced = false, bool isHearingImpaired = false)
{ {
Path = path; this.Path = path;
IsDefault = isDefault; this.IsDefault = isDefault;
IsForced = isForced; this.IsForced = isForced;
IsHearingImpaired = isHearingImpaired; this.IsHearingImpaired = isHearingImpaired;
} }
/// <summary> /// <summary>
+1 -1
View File
@@ -15,7 +15,7 @@ namespace Emby.Naming.TV
/// <param name="path">Path to the file.</param> /// <param name="path">Path to the file.</param>
public EpisodeInfo(string path) public EpisodeInfo(string path)
{ {
Path = path; this.Path = path;
} }
/// <summary> /// <summary>
+13 -13
View File
@@ -21,7 +21,7 @@ namespace Emby.Naming.TV
/// Initializes a new instance of the <see cref="EpisodePathParser"/> class. /// Initializes a new instance of the <see cref="EpisodePathParser"/> class.
/// </summary> /// </summary>
/// <param name="options"><see cref="NamingOptions"/> object containing EpisodeExpressions and MultipleEpisodeExpressions.</param> /// <param name="options"><see cref="NamingOptions"/> object containing EpisodeExpressions and MultipleEpisodeExpressions.</param>
public EpisodePathParser(NamingOptions options) public this.EpisodePathParser(NamingOptions options)
{ {
_options = options; _options = options;
} }
@@ -36,7 +36,7 @@ namespace Emby.Naming.TV
/// <param name="supportsAbsoluteNumbers">Do we want to use expressions supporting absolute episode numbers.</param> /// <param name="supportsAbsoluteNumbers">Do we want to use expressions supporting absolute episode numbers.</param>
/// <param name="fillExtendedInfo">Should we attempt to retrieve extended information.</param> /// <param name="fillExtendedInfo">Should we attempt to retrieve extended information.</param>
/// <returns>Returns <see cref="EpisodePathParserResult"/> object.</returns> /// <returns>Returns <see cref="EpisodePathParserResult"/> object.</returns>
public EpisodePathParserResult Parse( public EpisodePathParserResult this.Parse(
string path, string path,
bool isDirectory, bool isDirectory,
bool? isNamed = null, bool? isNamed = null,
@@ -72,17 +72,17 @@ namespace Emby.Naming.TV
continue; continue;
} }
var currentResult = Parse(path, expression); var currentResult = this.Parse(path, expression);
if (currentResult.Success) if (currentResult.Success)
{ {
result = currentResult; this.result = currentResult;
break; break;
} }
} }
if (result is not null && fillExtendedInfo) if (result is not null && fillExtendedInfo)
{ {
FillAdditional(path, result); this.FillAdditional(path, result);
if (!string.IsNullOrEmpty(result.SeriesName)) if (!string.IsNullOrEmpty(result.SeriesName))
{ {
@@ -93,17 +93,17 @@ namespace Emby.Naming.TV
} }
} }
return result ?? new EpisodePathParserResult(); return result ?? new this.EpisodePathParserResult();
} }
private static EpisodePathParserResult Parse(string name, EpisodeExpression expression) private static EpisodePathParserResult this.Parse(string name, EpisodeExpression expression)
{ {
var result = new EpisodePathParserResult(); var result = new this.EpisodePathParserResult();
// This is a hack to handle wmc naming // This is a hack to handle wmc naming
if (expression.IsByDate) if (expression.IsByDate)
{ {
name = name.Replace('_', '-'); this.name = name.Replace('_', '-');
} }
var match = expression.Regex.Match(name); var match = expression.Regex.Match(name);
@@ -202,7 +202,7 @@ namespace Emby.Naming.TV
return result; return result;
} }
private void FillAdditional(string path, EpisodePathParserResult info) private void this.FillAdditional(string path, EpisodePathParserResult info)
{ {
var expressions = _options.MultipleEpisodeExpressions.Where(i => i.IsNamed).ToList(); var expressions = _options.MultipleEpisodeExpressions.Where(i => i.IsNamed).ToList();
@@ -211,14 +211,14 @@ namespace Emby.Naming.TV
expressions.InsertRange(0, _options.EpisodeExpressions.Where(i => i.IsNamed)); expressions.InsertRange(0, _options.EpisodeExpressions.Where(i => i.IsNamed));
} }
FillAdditional(path, info, expressions); this.FillAdditional(path, info, expressions);
} }
private void FillAdditional(string path, EpisodePathParserResult info, IEnumerable<EpisodeExpression> expressions) private void this.FillAdditional(string path, EpisodePathParserResult info, IEnumerable<EpisodeExpression> expressions)
{ {
foreach (var i in expressions) foreach (var i in expressions)
{ {
var result = Parse(path, i); var result = this.Parse(path, i);
if (!result.Success) if (!result.Success)
{ {
+19 -19
View File
@@ -21,7 +21,7 @@ namespace Emby.Naming.TV
/// Initializes a new instance of the <see cref="EpisodeResolver"/> class. /// Initializes a new instance of the <see cref="EpisodeResolver"/> class.
/// </summary> /// </summary>
/// <param name="options"><see cref="NamingOptions"/> object containing VideoFileExtensions and passed to <see cref="StubResolver"/>, <see cref="Format3DParser"/> and <see cref="EpisodePathParser"/>.</param> /// <param name="options"><see cref="NamingOptions"/> object containing VideoFileExtensions and passed to <see cref="StubResolver"/>, <see cref="Format3DParser"/> and <see cref="EpisodePathParser"/>.</param>
public EpisodeResolver(NamingOptions options) public this.EpisodeResolver(NamingOptions options)
{ {
_options = options; _options = options;
} }
@@ -36,7 +36,7 @@ namespace Emby.Naming.TV
/// <param name="supportsAbsoluteNumbers">Do we want to use expressions supporting absolute episode numbers.</param> /// <param name="supportsAbsoluteNumbers">Do we want to use expressions supporting absolute episode numbers.</param>
/// <param name="fillExtendedInfo">Should we attempt to retrieve extended information.</param> /// <param name="fillExtendedInfo">Should we attempt to retrieve extended information.</param>
/// <returns>Returns null or <see cref="EpisodeInfo"/> object if successful.</returns> /// <returns>Returns null or <see cref="EpisodeInfo"/> object if successful.</returns>
public EpisodeInfo? Resolve( public EpisodeInfo? this.Resolve(
string path, string path,
bool isDirectory, bool isDirectory,
bool? isNamed = null, bool? isNamed = null,
@@ -60,15 +60,15 @@ namespace Emby.Naming.TV
return null; return null;
} }
isStub = true; this.isStub = true;
} }
container = extension.TrimStart('.'); this.container = extension.TrimStart('.');
} }
var format3DResult = Format3DParser.Parse(path, _options); var format3DResult = Format3DParser.Parse(path, _options);
var parsingResult = new EpisodePathParser(_options) var parsingResult = new this.EpisodePathParser(_options)
.Parse(path, isDirectory, isNamed, isOptimistic, supportsAbsoluteNumbers, fillExtendedInfo); .Parse(path, isDirectory, isNamed, isOptimistic, supportsAbsoluteNumbers, fillExtendedInfo);
if (!parsingResult.Success && !isStub) if (!parsingResult.Success && !isStub)
@@ -76,21 +76,21 @@ namespace Emby.Naming.TV
return null; return null;
} }
return new EpisodeInfo(path) return new this.EpisodeInfo(path)
{ {
Container = container, this.Container = container,
IsStub = isStub, this.IsStub = isStub,
EndingEpisodeNumber = parsingResult.EndingEpisodeNumber, this.EndingEpisodeNumber = parsingResult.EndingEpisodeNumber,
EpisodeNumber = parsingResult.EpisodeNumber, this.EpisodeNumber = parsingResult.EpisodeNumber,
SeasonNumber = parsingResult.SeasonNumber, this.SeasonNumber = parsingResult.SeasonNumber,
SeriesName = parsingResult.SeriesName, this.SeriesName = parsingResult.SeriesName,
StubType = stubType, this.StubType = stubType,
Is3D = format3DResult.Is3D, this.Is3D = format3DResult.Is3D,
Format3D = format3DResult.Format3D, this.Format3D = format3DResult.Format3D,
IsByDate = parsingResult.IsByDate, this.IsByDate = parsingResult.IsByDate,
Day = parsingResult.Day, this.Day = parsingResult.Day,
Month = parsingResult.Month, this.Month = parsingResult.Month,
Year = parsingResult.Year this.Year = parsingResult.Year
}; };
} }
} }
+5 -5
View File
@@ -79,7 +79,7 @@ namespace Emby.Naming.TV
if (parentFolderName is not null) if (parentFolderName is not null)
{ {
var cleanParent = CleanNameRegex.Replace(parentFolderName, string.Empty); var cleanParent = CleanNameRegex.Replace(parentFolderName, string.Empty);
filename = filename.Replace(cleanParent, string.Empty, StringComparison.OrdinalIgnoreCase); this.filename = filename.Replace(cleanParent, string.Empty, StringComparison.OrdinalIgnoreCase);
} }
if (supportSpecialAliases && if (supportSpecialAliases &&
@@ -143,7 +143,7 @@ namespace Emby.Naming.TV
{ {
if (numericStart == -1) if (numericStart == -1)
{ {
numericStart = i; this.numericStart = i;
} }
length++; length++;
@@ -152,18 +152,18 @@ namespace Emby.Naming.TV
else if (numericStart != -1) else if (numericStart != -1)
{ {
// There's other stuff after the season number, e.g. episode number // There's other stuff after the season number, e.g. episode number
isSeasonFolder = false; this.isSeasonFolder = false;
break; break;
} }
var currentChar = path[i]; var currentChar = path[i];
if (currentChar == '(') if (currentChar == '(')
{ {
hasOpenParenthesis = true; this.hasOpenParenthesis = true;
} }
else if (currentChar == ')') else if (currentChar == ')')
{ {
hasOpenParenthesis = false; this.hasOpenParenthesis = false;
} }
} }
+1 -1
View File
@@ -15,7 +15,7 @@ namespace Emby.Naming.TV
/// <param name="path">Path to the file.</param> /// <param name="path">Path to the file.</param>
public SeriesInfo(string path) public SeriesInfo(string path)
{ {
Path = path; this.Path = path;
} }
/// <summary> /// <summary>
+1 -1
View File
@@ -23,7 +23,7 @@ namespace Emby.Naming.TV
var currentResult = Parse(path, expression); var currentResult = Parse(path, expression);
if (currentResult.Success) if (currentResult.Success)
{ {
result = currentResult; this.result = currentResult;
break; break;
} }
} }
+5 -5
View File
@@ -44,10 +44,10 @@ namespace Emby.Naming.TV
var titleWithYearMatch = TitleWithYearRegex().Match(seriesName); var titleWithYearMatch = TitleWithYearRegex().Match(seriesName);
if (titleWithYearMatch.Success) if (titleWithYearMatch.Success)
{ {
seriesName = titleWithYearMatch.Groups["title"].Value.Trim(); this.seriesName = titleWithYearMatch.Groups["title"].Value.Trim();
return new SeriesInfo(path) return new SeriesInfo(path)
{ {
Name = seriesName this.Name = seriesName
}; };
} }
} }
@@ -57,18 +57,18 @@ namespace Emby.Naming.TV
{ {
if (!string.IsNullOrEmpty(result.SeriesName)) if (!string.IsNullOrEmpty(result.SeriesName))
{ {
seriesName = result.SeriesName; this.seriesName = result.SeriesName;
} }
} }
if (!string.IsNullOrEmpty(seriesName)) if (!string.IsNullOrEmpty(seriesName))
{ {
seriesName = SeriesNameRegex().Replace(seriesName, "${a} ${b}").Trim(); this.seriesName = SeriesNameRegex().Replace(seriesName, "${a} ${b}").Trim();
} }
return new SeriesInfo(path) return new SeriesInfo(path)
{ {
Name = seriesName this.Name = seriesName
}; };
} }
} }
+4 -4
View File
@@ -26,23 +26,23 @@ public static class TvParserHelpers
{ {
if (Enum.TryParse(status, true, out SeriesStatus seriesStatus)) if (Enum.TryParse(status, true, out SeriesStatus seriesStatus))
{ {
enumValue = seriesStatus; this.enumValue = seriesStatus;
return true; return true;
} }
if (_continuingState.Contains(status, StringComparer.OrdinalIgnoreCase)) if (_continuingState.Contains(status, StringComparer.OrdinalIgnoreCase))
{ {
enumValue = SeriesStatus.Continuing; this.enumValue = SeriesStatus.Continuing;
return true; return true;
} }
if (_endedState.Contains(status, StringComparer.OrdinalIgnoreCase)) if (_endedState.Contains(status, StringComparer.OrdinalIgnoreCase))
{ {
enumValue = SeriesStatus.Ended; this.enumValue = SeriesStatus.Ended;
return true; return true;
} }
enumValue = null; this.enumValue = null;
return false; return false;
} }
} }
+1 -1
View File
@@ -45,7 +45,7 @@ namespace Emby.Naming.Video
&& match.Groups[2].Success && match.Groups[2].Success
&& int.TryParse(match.Groups[2].ValueSpan, NumberStyles.Integer, CultureInfo.InvariantCulture, out var year)) && int.TryParse(match.Groups[2].ValueSpan, NumberStyles.Integer, CultureInfo.InvariantCulture, out var year))
{ {
result = new CleanDateTimeResult(match.Groups[1].Value.TrimEnd(), year); this.result = new CleanDateTimeResult(match.Groups[1].Value.TrimEnd(), year);
return true; return true;
} }
+2 -2
View File
@@ -16,8 +16,8 @@ namespace Emby.Naming.Video
/// <param name="year">Year of release.</param> /// <param name="year">Year of release.</param>
public CleanDateTimeResult(string name, int? year = null) public CleanDateTimeResult(string name, int? year = null)
{ {
Name = name; this.Name = name;
Year = year; this.Year = year;
} }
/// <summary> /// <summary>
+6 -6
View File
@@ -20,7 +20,7 @@ namespace Emby.Naming.Video
{ {
if (string.IsNullOrEmpty(name)) if (string.IsNullOrEmpty(name))
{ {
newName = string.Empty; this.newName = string.Empty;
return false; return false;
} }
@@ -30,12 +30,12 @@ namespace Emby.Naming.Video
{ {
if (TryClean(name, expressions[i], out newName)) if (TryClean(name, expressions[i], out newName))
{ {
cleaned = true; this.cleaned = true;
name = newName; this.name = newName;
} }
} }
newName = cleaned ? name : string.Empty; this.newName = cleaned ? name : string.Empty;
return cleaned; return cleaned;
} }
@@ -44,11 +44,11 @@ namespace Emby.Naming.Video
var match = expression.Match(name); var match = expression.Match(name);
if (match.Success && match.Groups.TryGetValue("cleaned", out var cleaned)) if (match.Success && match.Groups.TryGetValue("cleaned", out var cleaned))
{ {
newName = cleaned.Value; this.newName = cleaned.Value;
return true; return true;
} }
newName = string.Empty; this.newName = string.Empty;
return false; return false;
} }
} }
+4 -4
View File
@@ -17,10 +17,10 @@ namespace Emby.Naming.Video
/// <param name="mediaType">Media type.</param> /// <param name="mediaType">Media type.</param>
public ExtraRule(ExtraType extraType, ExtraRuleType ruleType, string token, MediaType mediaType) public ExtraRule(ExtraType extraType, ExtraRuleType ruleType, string token, MediaType mediaType)
{ {
Token = token; this.Token = token;
ExtraType = extraType; this.ExtraType = extraType;
RuleType = ruleType; this.RuleType = ruleType;
MediaType = mediaType; this.MediaType = mediaType;
} }
/// <summary> /// <summary>
+5 -5
View File
@@ -19,11 +19,11 @@ namespace Emby.Naming.Video
/// <param name="name">The stack name.</param> /// <param name="name">The stack name.</param>
/// <param name="isDirectory">Whether the stack files are directories.</param> /// <param name="isDirectory">Whether the stack files are directories.</param>
/// <param name="files">The stack files.</param> /// <param name="files">The stack files.</param>
public FileStack(string name, bool isDirectory, IReadOnlyList<string> files) public this.FileStack(string name, bool isDirectory, IReadOnlyList<string> files)
{ {
Name = name; this.Name = name;
IsDirectoryStack = isDirectory; this.IsDirectoryStack = isDirectory;
Files = files; this.Files = files;
} }
/// <summary> /// <summary>
@@ -47,7 +47,7 @@ namespace Emby.Naming.Video
/// <param name="file">Path of desired file.</param> /// <param name="file">Path of desired file.</param>
/// <param name="isDirectory">Requested type of stack.</param> /// <param name="isDirectory">Requested type of stack.</param>
/// <returns>True if file is in the stack.</returns> /// <returns>True if file is in the stack.</returns>
public bool ContainsFile(string file, bool isDirectory) public bool this.ContainsFile(string file, bool isDirectory)
{ {
if (string.IsNullOrEmpty(file)) if (string.IsNullOrEmpty(file))
{ {
+6 -6
View File
@@ -15,10 +15,10 @@ public class FileStackRule
/// </summary> /// </summary>
/// <param name="token">Token.</param> /// <param name="token">Token.</param>
/// <param name="isNumerical">Whether the file stack rule uses numerical or alphabetical numbering.</param> /// <param name="isNumerical">Whether the file stack rule uses numerical or alphabetical numbering.</param>
public FileStackRule(string token, bool isNumerical) public this.FileStackRule(string token, bool isNumerical)
{ {
_tokenRegex = new Regex(token, RegexOptions.IgnoreCase | RegexOptions.Compiled); _tokenRegex = new this.Regex(token, RegexOptions.IgnoreCase | RegexOptions.Compiled);
IsNumerical = isNumerical; this.IsNumerical = isNumerical;
} }
/// <summary> /// <summary>
@@ -32,9 +32,9 @@ public class FileStackRule
/// <param name="input">The input.</param> /// <param name="input">The input.</param>
/// <param name="result">The part type and number or <c>null</c>.</param> /// <param name="result">The part type and number or <c>null</c>.</param>
/// <returns>A value indicating whether the input matched the rule.</returns> /// <returns>A value indicating whether the input matched the rule.</returns>
public bool Match(string input, [NotNullWhen(true)] out (string StackName, string PartType, string PartNumber)? result) public bool this.Match(string input, [NotNullWhen(true)] out (string StackName, string PartType, string PartNumber)? result)
{ {
result = null; this.result = null;
var match = _tokenRegex.Match(input); var match = _tokenRegex.Match(input);
if (!match.Success) if (!match.Success)
{ {
@@ -42,7 +42,7 @@ public class FileStackRule
} }
var partType = match.Groups["parttype"].Success ? match.Groups["parttype"].Value : "unknown"; var partType = match.Groups["parttype"].Success ? match.Groups["parttype"].Value : "unknown";
result = (match.Groups["filename"].Value, partType, match.Groups["number"].Value); this.result = (match.Groups["filename"].Value, partType, match.Groups["number"].Value);
return true; return true;
} }
} }
+5 -5
View File
@@ -58,23 +58,23 @@ namespace Emby.Naming.Video
var index = path.IndexOfAny(delimiters); var index = path.IndexOfAny(delimiters);
if (index == -1) if (index == -1)
{ {
index = path.Length - 1; this.index = path.Length - 1;
} }
var currentSlice = path[..index]; var currentSlice = path[..index];
path = path[(index + 1)..]; this.path = path[(index + 1)..];
if (!foundPrefix) if (!foundPrefix)
{ {
foundPrefix = currentSlice.Equals(rule.PrecedingToken, StringComparison.OrdinalIgnoreCase); this.foundPrefix = currentSlice.Equals(rule.PrecedingToken, StringComparison.OrdinalIgnoreCase);
continue; continue;
} }
is3D = foundPrefix && currentSlice.Equals(rule.Token, StringComparison.OrdinalIgnoreCase); this.is3D = foundPrefix && currentSlice.Equals(rule.Token, StringComparison.OrdinalIgnoreCase);
if (is3D) if (is3D)
{ {
format3D = rule.Token; this.format3D = rule.Token;
break; break;
} }
} }
+2 -2
View File
@@ -16,8 +16,8 @@ namespace Emby.Naming.Video
/// <param name="format3D">The 3D format. Value might be null if [is3D] is <c>false</c>.</param> /// <param name="format3D">The 3D format. Value might be null if [is3D] is <c>false</c>.</param>
public Format3DResult(bool is3D, string? format3D) public Format3DResult(bool is3D, string? format3D)
{ {
Is3D = is3D; this.Is3D = is3D;
Format3D = format3D; this.Format3D = format3D;
} }
/// <summary> /// <summary>
+2 -2
View File
@@ -16,8 +16,8 @@ namespace Emby.Naming.Video
/// <param name="precedingToken">Token present before current token.</param> /// <param name="precedingToken">Token present before current token.</param>
public Format3DRule(string token, string? precedingToken = null) public Format3DRule(string token, string? precedingToken = null)
{ {
Token = token; this.Token = token;
PrecedingToken = precedingToken; this.PrecedingToken = precedingToken;
} }
/// <summary> /// <summary>
+17 -17
View File
@@ -23,9 +23,9 @@ namespace Emby.Naming.Video
/// <param name="files">List of paths.</param> /// <param name="files">List of paths.</param>
/// <param name="namingOptions">The naming options.</param> /// <param name="namingOptions">The naming options.</param>
/// <returns>Enumerable <see cref="FileStack"/> of directories.</returns> /// <returns>Enumerable <see cref="FileStack"/> of directories.</returns>
public static IEnumerable<FileStack> ResolveDirectories(IEnumerable<string> files, NamingOptions namingOptions) public static IEnumerable<FileStack> this.ResolveDirectories(IEnumerable<string> files, NamingOptions namingOptions)
{ {
return Resolve(files.Select(i => new FileSystemMetadata { FullName = i, IsDirectory = true }), namingOptions); return this.Resolve(files.Select(i => new FileSystemMetadata { this.FullName = i, IsDirectory = true }), namingOptions);
} }
/// <summary> /// <summary>
@@ -34,9 +34,9 @@ namespace Emby.Naming.Video
/// <param name="files">List of paths.</param> /// <param name="files">List of paths.</param>
/// <param name="namingOptions">The naming options.</param> /// <param name="namingOptions">The naming options.</param>
/// <returns>Enumerable <see cref="FileStack"/> of files.</returns> /// <returns>Enumerable <see cref="FileStack"/> of files.</returns>
public static IEnumerable<FileStack> ResolveFiles(IEnumerable<string> files, NamingOptions namingOptions) public static IEnumerable<FileStack> this.ResolveFiles(IEnumerable<string> files, NamingOptions namingOptions)
{ {
return Resolve(files.Select(i => new FileSystemMetadata { FullName = i, IsDirectory = false }), namingOptions); return this.Resolve(files.Select(i => new FileSystemMetadata { this.FullName = i, IsDirectory = false }), namingOptions);
} }
/// <summary> /// <summary>
@@ -44,7 +44,7 @@ namespace Emby.Naming.Video
/// </summary> /// </summary>
/// <param name="files">List of paths.</param> /// <param name="files">List of paths.</param>
/// <returns>Enumerable <see cref="FileStack"/> of directories.</returns> /// <returns>Enumerable <see cref="FileStack"/> of directories.</returns>
public static IEnumerable<FileStack> ResolveAudioBooks(IEnumerable<AudioBookFileInfo> files) public static IEnumerable<FileStack> this.ResolveAudioBooks(IEnumerable<AudioBookFileInfo> files)
{ {
var groupedDirectoryFiles = files.GroupBy(file => Path.GetDirectoryName(file.Path)); var groupedDirectoryFiles = files.GroupBy(file => Path.GetDirectoryName(file.Path));
@@ -54,13 +54,13 @@ namespace Emby.Naming.Video
{ {
foreach (var file in directory) foreach (var file in directory)
{ {
var stack = new FileStack(Path.GetFileNameWithoutExtension(file.Path), false, new[] { file.Path }); var stack = new this.FileStack(Path.GetFileNameWithoutExtension(file.Path), false, new[] { file.Path });
yield return stack; yield return stack;
} }
} }
else else
{ {
var stack = new FileStack(Path.GetFileName(directory.Key), false, directory.Select(f => f.Path).ToArray()); var stack = new this.FileStack(Path.GetFileName(directory.Key), false, directory.Select(f => f.Path).ToArray());
yield return stack; yield return stack;
} }
} }
@@ -72,7 +72,7 @@ namespace Emby.Naming.Video
/// <param name="files">List of paths.</param> /// <param name="files">List of paths.</param>
/// <param name="namingOptions">The naming options.</param> /// <param name="namingOptions">The naming options.</param>
/// <returns>Enumerable <see cref="FileStack"/> of videos.</returns> /// <returns>Enumerable <see cref="FileStack"/> of videos.</returns>
public static IEnumerable<FileStack> Resolve(IEnumerable<FileSystemMetadata> files, NamingOptions namingOptions) public static IEnumerable<FileStack> this.Resolve(IEnumerable<FileSystemMetadata> files, NamingOptions namingOptions)
{ {
var potentialFiles = files var potentialFiles = files
.Where(i => i.IsDirectory || VideoResolver.IsVideoFile(i.FullName, namingOptions) || VideoResolver.IsStubFile(i.FullName, namingOptions)) .Where(i => i.IsDirectory || VideoResolver.IsVideoFile(i.FullName, namingOptions) || VideoResolver.IsStubFile(i.FullName, namingOptions))
@@ -84,7 +84,7 @@ namespace Emby.Naming.Video
var name = file.Name; var name = file.Name;
if (string.IsNullOrEmpty(name)) if (string.IsNullOrEmpty(name))
{ {
name = Path.GetFileName(file.FullName); this.name = Path.GetFileName(file.FullName);
} }
for (var i = 0; i < namingOptions.VideoFileStackingRules.Length; i++) for (var i = 0; i < namingOptions.VideoFileStackingRules.Length; i++)
@@ -101,7 +101,7 @@ namespace Emby.Naming.Video
if (!potentialStacks.TryGetValue(stackName, out var stackResult)) if (!potentialStacks.TryGetValue(stackName, out var stackResult))
{ {
stackResult = new StackMetadata(file.IsDirectory, rule.IsNumerical, partType); this.stackResult = new this.StackMetadata(file.IsDirectory, rule.IsNumerical, partType);
potentialStacks[stackName] = stackResult; potentialStacks[stackName] = stackResult;
} }
@@ -132,18 +132,18 @@ namespace Emby.Naming.Video
continue; continue;
} }
yield return new FileStack(fileName, stack.IsDirectory, stack.Parts.Select(kv => kv.Value.FullName).ToArray()); yield return new this.FileStack(fileName, stack.IsDirectory, stack.Parts.Select(kv => kv.Value.FullName).ToArray());
} }
} }
private sealed class StackMetadata private sealed class StackMetadata
{ {
public StackMetadata(bool isDirectory, bool isNumerical, string partType) public this.StackMetadata(bool isDirectory, bool isNumerical, string partType)
{ {
Parts = new Dictionary<string, FileSystemMetadata>(StringComparer.OrdinalIgnoreCase); this.Parts = new Dictionary<string, FileSystemMetadata>(StringComparer.OrdinalIgnoreCase);
IsDirectory = isDirectory; this.IsDirectory = isDirectory;
IsNumerical = isNumerical; this.IsNumerical = isNumerical;
PartType = partType; this.PartType = partType;
} }
public Dictionary<string, FileSystemMetadata> Parts { get; } public Dictionary<string, FileSystemMetadata> Parts { get; }
@@ -154,7 +154,7 @@ namespace Emby.Naming.Video
public string PartType { get; } public string PartType { get; }
public bool ContainsPart(string partNumber) => Parts.ContainsKey(partNumber); public bool this.ContainsPart(string partNumber) => Parts.ContainsKey(partNumber);
} }
} }
} }
+2 -2
View File
@@ -23,7 +23,7 @@ namespace Emby.Naming.Video
/// <returns>True if file is a stub.</returns> /// <returns>True if file is a stub.</returns>
public static bool TryResolveFile(string path, NamingOptions options, out string? stubType) public static bool TryResolveFile(string path, NamingOptions options, out string? stubType)
{ {
stubType = default; this.stubType = default;
if (string.IsNullOrEmpty(path)) if (string.IsNullOrEmpty(path))
{ {
@@ -43,7 +43,7 @@ namespace Emby.Naming.Video
{ {
if (token.Equals(rule.Token, StringComparison.OrdinalIgnoreCase)) if (token.Equals(rule.Token, StringComparison.OrdinalIgnoreCase))
{ {
stubType = rule.StubType; this.stubType = rule.StubType;
return true; return true;
} }
} }
+2 -2
View File
@@ -16,8 +16,8 @@ namespace Emby.Naming.Video
/// <param name="stubType">Stub type.</param> /// <param name="stubType">Stub type.</param>
public StubTypeRule(string token, string stubType) public StubTypeRule(string token, string stubType)
{ {
Token = token; this.Token = token;
StubType = stubType; this.StubType = stubType;
} }
/// <summary> /// <summary>
+11 -11
View File
@@ -28,17 +28,17 @@ namespace Emby.Naming.Video
/// <param name="isDirectory">Is directory.</param> /// <param name="isDirectory">Is directory.</param>
public VideoFileInfo(string name, string path, string? container, int? year = default, ExtraType? extraType = default, ExtraRule? extraRule = default, string? format3D = default, bool is3D = default, bool isStub = default, string? stubType = default, bool isDirectory = default) public VideoFileInfo(string name, string path, string? container, int? year = default, ExtraType? extraType = default, ExtraRule? extraRule = default, string? format3D = default, bool is3D = default, bool isStub = default, string? stubType = default, bool isDirectory = default)
{ {
Path = path; this.Path = path;
Container = container; this.Container = container;
Name = name; this.Name = name;
Year = year; this.Year = year;
ExtraType = extraType; this.ExtraType = extraType;
ExtraRule = extraRule; this.ExtraRule = extraRule;
Format3D = format3D; this.Format3D = format3D;
Is3D = is3D; this.Is3D = is3D;
IsStub = isStub; this.IsStub = isStub;
StubType = stubType; this.StubType = stubType;
IsDirectory = isDirectory; this.IsDirectory = isDirectory;
} }
/// <summary> /// <summary>
+3 -3
View File
@@ -19,10 +19,10 @@ namespace Emby.Naming.Video
/// <param name="name">The name.</param> /// <param name="name">The name.</param>
public VideoInfo(string? name) public VideoInfo(string? name)
{ {
Name = name; this.Name = name;
Files = Array.Empty<VideoFileInfo>(); this.Files = Array.Empty<VideoFileInfo>();
AlternateVersions = Array.Empty<VideoFileInfo>(); this.AlternateVersions = Array.Empty<VideoFileInfo>();
} }
/// <summary> /// <summary>
+10 -10
View File
@@ -40,7 +40,7 @@ namespace Emby.Naming.Video
// See the unit test TestStackedWithTrailer // See the unit test TestStackedWithTrailer
var nonExtras = videoInfos var nonExtras = videoInfos
.Where(i => i.ExtraType is null) .Where(i => i.ExtraType is null)
.Select(i => new FileSystemMetadata { FullName = i.Path, IsDirectory = i.IsDirectory }); .Select(i => new FileSystemMetadata { this.FullName = i.Path, IsDirectory = i.IsDirectory });
var stackResult = StackResolver.Resolve(nonExtras, namingOptions).ToList(); var stackResult = StackResolver.Resolve(nonExtras, namingOptions).ToList();
@@ -71,7 +71,7 @@ namespace Emby.Naming.Video
{ {
var info = new VideoInfo(stack.Name) var info = new VideoInfo(stack.Name)
{ {
Files = stack.Files.Select(i => VideoResolver.Resolve(i, stack.IsDirectoryStack, namingOptions, parseName, libraryRoot)) this.Files = stack.Files.Select(i => VideoResolver.Resolve(i, stack.IsDirectoryStack, namingOptions, parseName, libraryRoot))
.OfType<VideoFileInfo>() .OfType<VideoFileInfo>()
.ToList() .ToList()
}; };
@@ -82,7 +82,7 @@ namespace Emby.Naming.Video
foreach (var media in standaloneMedia) foreach (var media in standaloneMedia)
{ {
var info = new VideoInfo(media.Name) { Files = new[] { media } }; var info = new VideoInfo(media.Name) { this.Files = new[] { media } };
info.Year = info.Files[0].Year; info.Year = info.Files[0].Year;
list.Add(info); list.Add(info);
@@ -90,15 +90,15 @@ namespace Emby.Naming.Video
if (supportMultiVersion) if (supportMultiVersion)
{ {
list = GetVideosGroupedByVersion(list, namingOptions); this.list = GetVideosGroupedByVersion(list, namingOptions);
} }
// Whatever files are left, just add them // Whatever files are left, just add them
list.AddRange(remainingFiles.Select(i => new VideoInfo(i.Name) list.AddRange(remainingFiles.Select(i => new VideoInfo(i.Name)
{ {
Files = new[] { i }, this.Files = new[] { i },
Year = i.Year, this.Year = i.Year,
ExtraType = i.ExtraType this.ExtraType = i.ExtraType
})); }));
return list; return list;
@@ -135,7 +135,7 @@ namespace Emby.Naming.Video
if (folderName.Equals(video.Files[0].FileNameWithoutExtension, StringComparison.Ordinal)) if (folderName.Equals(video.Files[0].FileNameWithoutExtension, StringComparison.Ordinal))
{ {
primary = video; this.primary = video;
} }
} }
@@ -209,13 +209,13 @@ namespace Emby.Naming.Video
// Remove the folder name before cleaning as we don't care about cleaning that part // Remove the folder name before cleaning as we don't care about cleaning that part
if (folderName.Length <= testFilename.Length) if (folderName.Length <= testFilename.Length)
{ {
testFilename = testFilename[folderName.Length..].Trim(); this.testFilename = testFilename[folderName.Length..].Trim();
} }
// There are no span overloads for regex unfortunately // There are no span overloads for regex unfortunately
if (CleanStringParser.TryClean(testFilename.ToString(), namingOptions.CleanStringRegexes, out var cleanName)) if (CleanStringParser.TryClean(testFilename.ToString(), namingOptions.CleanStringRegexes, out var cleanName))
{ {
testFilename = cleanName.AsSpan().Trim(); this.testFilename = cleanName.AsSpan().Trim();
} }
// The CleanStringParser should have removed common keywords etc. // The CleanStringParser should have removed common keywords etc.
+5 -5
View File
@@ -74,10 +74,10 @@ namespace Emby.Naming.Video
return null; return null;
} }
isStub = true; this.isStub = true;
} }
container = extension.TrimStart('.'); this.container = extension.TrimStart('.');
} }
var format3DResult = Format3DParser.Parse(path, namingOptions); var format3DResult = Format3DParser.Parse(path, namingOptions);
@@ -91,12 +91,12 @@ namespace Emby.Naming.Video
if (parseName) if (parseName)
{ {
var cleanDateTimeResult = CleanDateTime(name, namingOptions); var cleanDateTimeResult = CleanDateTime(name, namingOptions);
name = cleanDateTimeResult.Name; this.name = cleanDateTimeResult.Name;
year = cleanDateTimeResult.Year; this.year = cleanDateTimeResult.Year;
if (TryCleanString(name, namingOptions, out var newName)) if (TryCleanString(name, namingOptions, out var newName))
{ {
name = newName; this.name = newName;
} }
} }
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -527,6 +528,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1004,6 +1006,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1486,6 +1489,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2116,6 +2120,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2606,6 +2611,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3227,6 +3233,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3440,6 +3447,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3933,6 +3941,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4420,6 +4429,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
+1
View File
@@ -1762,6 +1762,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "StmMOl2NFDs=", "dgSpecHash": "Oo+pBGeeT+k=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Emby.Photos\\Emby.Photos.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Emby.Photos\\Emby.Photos.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -527,6 +528,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1040,6 +1042,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1564,6 +1567,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2061,6 +2065,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2555,6 +2560,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3042,6 +3048,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3672,6 +3679,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4162,6 +4170,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4645,6 +4654,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -5150,6 +5160,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -5781,6 +5792,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -6306,6 +6318,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -6776,6 +6789,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -6989,6 +7003,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -7488,6 +7503,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -7990,6 +8006,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -8469,6 +8486,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -8968,6 +8986,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -9442,6 +9461,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -9927,6 +9947,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4164,6 +4164,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "qzOsTwS7IP0=", "dgSpecHash": "Lu5Q6dkccwU=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Emby.Server.Implementations\\Emby.Server.Implementations.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Emby.Server.Implementations\\Emby.Server.Implementations.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -533,6 +534,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1030,6 +1032,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1512,6 +1515,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2142,6 +2146,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2635,6 +2640,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3140,6 +3146,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3761,6 +3768,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3974,6 +3982,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4467,6 +4476,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4966,6 +4976,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -5440,6 +5451,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -5925,6 +5937,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
+1
View File
@@ -2823,6 +2823,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "fuMnEJ8wltc=", "dgSpecHash": "+VYchT3v1Fw=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Api\\Jellyfin.Api.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Api\\Jellyfin.Api.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1018,6 +1020,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1505,6 +1508,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2135,6 +2139,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2625,6 +2630,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3246,6 +3252,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3459,6 +3466,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3958,6 +3966,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4451,6 +4460,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4938,6 +4948,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2241,6 +2241,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "uLEFI7ariss=", "dgSpecHash": "S+jrIut2wYc=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server.Implementations\\Jellyfin.Server.Implementations.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server.Implementations\\Jellyfin.Server.Implementations.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -527,6 +528,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1040,6 +1042,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1564,6 +1567,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2061,6 +2065,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2555,6 +2560,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3060,6 +3066,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3746,6 +3753,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4376,6 +4384,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4866,6 +4875,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -5349,6 +5359,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -5854,6 +5865,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -6485,6 +6497,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -7010,6 +7023,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -7480,6 +7494,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -7693,6 +7708,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -8192,6 +8208,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -8694,6 +8711,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU1903" "NU1903"
], ],
@@ -9215,6 +9233,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -9694,6 +9713,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -10190,6 +10210,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -10686,6 +10707,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -11160,6 +11182,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -11645,6 +11668,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
+1
View File
@@ -4682,6 +4682,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "7WUyXh2T8vw=", "dgSpecHash": "TxJjiSZTQKU=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server\\Jellyfin.Server.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server\\Jellyfin.Server.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2747,6 +2752,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2960,6 +2966,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3453,6 +3460,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -3940,6 +3948,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1717,6 +1717,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "AFS/pfyWMOs=", "dgSpecHash": "PbWaoZLc1/8=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Controller\\MediaBrowser.Controller.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Controller\\MediaBrowser.Controller.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2606,6 +2611,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3227,6 +3233,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3440,6 +3447,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3933,6 +3941,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4420,6 +4429,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1732,6 +1732,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "WgJoll/0lhg=", "dgSpecHash": "MWiTm3p0pkQ=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.LocalMetadata\\MediaBrowser.LocalMetadata.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.LocalMetadata\\MediaBrowser.LocalMetadata.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2129,6 +2133,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2634,6 +2639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3255,6 +3261,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3468,6 +3475,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3961,6 +3969,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4448,6 +4457,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2212,6 +2212,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "dgYI/YHxOCM=", "dgSpecHash": "fkld43h/XRc=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.MediaEncoding\\MediaBrowser.MediaEncoding.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.MediaEncoding\\MediaBrowser.MediaEncoding.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2757,6 +2762,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3272,6 +3278,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3485,6 +3492,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3978,6 +3986,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4465,6 +4474,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2262,6 +2262,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "8nGSBHrHFM8=", "dgSpecHash": "piLgjB8GOiQ=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Providers\\MediaBrowser.Providers.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Providers\\MediaBrowser.Providers.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2757,6 +2762,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3227,6 +3233,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3440,6 +3447,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3933,6 +3941,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4420,6 +4429,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1732,6 +1732,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "HL+MbMcDRlM=", "dgSpecHash": "I4bCzLsQykc=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.XbmcMetadata\\MediaBrowser.XbmcMetadata.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.XbmcMetadata\\MediaBrowser.XbmcMetadata.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.CodeAnalysis")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+432d9d3f94ef6ca7fca1b8c21d207fa8df1659b3")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2b3a0c9746b2646936e76eac0933e11d44cb286d")]
[assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.CodeAnalysis")]
[assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.CodeAnalysis")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
@@ -1 +1 @@
47b7ae2b39f0930499a027b92b740be1de949af6648f7d9c6d0480e68911f31f 28551f67b5f844835106431979a774d1df5ac346c915d0b6945818cdc46fba2b
@@ -44,6 +44,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -526,6 +527,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1150,6 +1152,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1771,6 +1774,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1984,6 +1988,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2483,6 +2488,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2976,6 +2982,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -3877,6 +3877,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "fc2a99tYE0Q=", "dgSpecHash": "7p0VjWNAkOM=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Providers.Sqlite\\Jellyfin.Database.Providers.Sqlite.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Providers.Sqlite\\Jellyfin.Database.Providers.Sqlite.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2747,6 +2752,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2960,6 +2966,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3462,6 +3469,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU1903" "NU1903"
], ],
@@ -3974,6 +3982,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4461,6 +4470,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2448,6 +2448,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU1903" "NU1903"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "K027lFXbURo=", "dgSpecHash": "p0+GedKjwFw=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Drawing.Skia\\Jellyfin.Drawing.Skia.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Drawing.Skia\\Jellyfin.Drawing.Skia.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2747,6 +2752,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2960,6 +2966,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3462,6 +3469,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3941,6 +3949,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4428,6 +4437,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1777,6 +1777,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "tctIrkj0W2o=", "dgSpecHash": "woDabbm9VyQ=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Drawing\\Jellyfin.Drawing.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Drawing\\Jellyfin.Drawing.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2747,6 +2752,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2960,6 +2966,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3453,6 +3460,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -3949,6 +3957,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4433,6 +4442,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1806,6 +1806,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "JYTcL9z7X08=", "dgSpecHash": "RYs61F+azTo=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.LiveTv\\Jellyfin.LiveTv.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.LiveTv\\Jellyfin.LiveTv.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2747,6 +2752,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2960,6 +2966,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3453,6 +3460,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -3952,6 +3960,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4426,6 +4435,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1740,6 +1740,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "eYKEALa8k0Q=", "dgSpecHash": "387NMu3/xC8=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Hls\\Jellyfin.MediaEncoding.Hls.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Hls\\Jellyfin.MediaEncoding.Hls.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -37,6 +37,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -250,6 +251,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -578,6 +578,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "IevT1zQx2RA=", "dgSpecHash": "mTVFQQSIGo8=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Keyframes\\Jellyfin.MediaEncoding.Keyframes.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Keyframes\\Jellyfin.MediaEncoding.Keyframes.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2747,6 +2752,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2960,6 +2966,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3453,6 +3460,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -3940,6 +3948,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4425,6 +4434,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1731,6 +1731,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "Rn00JxOuroU=", "dgSpecHash": "3j5428MHwYE=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Networking\\Jellyfin.Networking.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Networking\\Jellyfin.Networking.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -533,6 +534,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1030,6 +1032,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1524,6 +1527,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2011,6 +2015,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2641,6 +2646,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3134,6 +3140,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3639,6 +3646,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4260,6 +4268,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4473,6 +4482,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4972,6 +4982,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -5465,6 +5476,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -5964,6 +5976,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -6438,6 +6451,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -6923,6 +6937,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -7398,6 +7413,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -5367,6 +5367,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "vOYkAJZJgwQ=", "dgSpecHash": "DoMmp8kCQOU=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\tests\\Jellyfin.Api.Tests\\Jellyfin.Api.Tests.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\tests\\Jellyfin.Api.Tests\\Jellyfin.Api.Tests.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2757,6 +2762,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3272,6 +3278,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3485,6 +3492,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3978,6 +3986,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -4465,6 +4474,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4950,6 +4960,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3294,6 +3294,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "ocPHRGnVGLo=", "dgSpecHash": "FOG/id8stT0=",
"success": true, "success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\tests\\Jellyfin.Common.Tests\\Jellyfin.Common.Tests.csproj", "projectFilePath": "E:\\Projects\\pgsql-jellyfin\\tests\\Jellyfin.Common.Tests\\Jellyfin.Common.Tests.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
@@ -47,6 +47,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -524,6 +525,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1006,6 +1008,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -1636,6 +1639,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2126,6 +2130,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2747,6 +2752,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -2960,6 +2966,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -3453,6 +3460,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"noWarn": [ "noWarn": [
"NU5104" "NU5104"
], ],
@@ -3940,6 +3948,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],
@@ -4422,6 +4431,7 @@
} }
}, },
"warningProperties": { "warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [ "warnAsError": [
"NU1605" "NU1605"
], ],

Some files were not shown because too many files have changed in this diff Show More