mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-06-16 12:40:27 +01:00
Fix more warnings
This commit is contained in:
@@ -27,8 +27,8 @@ namespace Emby.Naming.Video
|
||||
{
|
||||
var extension = Path.GetExtension(name) ?? string.Empty;
|
||||
// Check supported extensions
|
||||
if (!_options.VideoFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase) &&
|
||||
!_options.AudioFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
|
||||
if (!_options.VideoFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase)
|
||||
&& !_options.AudioFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
// Dummy up a file extension because the expressions will fail without one
|
||||
// This is tricky because we can't just check Path.GetExtension for empty
|
||||
@@ -38,7 +38,6 @@ namespace Emby.Naming.Video
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
var result = _options.CleanDateTimeRegexes.Select(i => Clean(name, i))
|
||||
@@ -69,14 +68,15 @@ namespace Emby.Naming.Video
|
||||
|
||||
var match = expression.Match(name);
|
||||
|
||||
if (match.Success && match.Groups.Count == 4)
|
||||
if (match.Success
|
||||
&& match.Groups.Count == 4
|
||||
&& match.Groups[1].Success
|
||||
&& match.Groups[2].Success
|
||||
&& int.TryParse(match.Groups[2].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var year))
|
||||
{
|
||||
if (match.Groups[1].Success && match.Groups[2].Success && int.TryParse(match.Groups[2].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var year))
|
||||
{
|
||||
name = match.Groups[1].Value;
|
||||
result.Year = year;
|
||||
result.HasChanged = true;
|
||||
}
|
||||
name = match.Groups[1].Value;
|
||||
result.Year = year;
|
||||
result.HasChanged = true;
|
||||
}
|
||||
|
||||
result.Name = name;
|
||||
|
||||
@@ -56,7 +56,6 @@ namespace Emby.Naming.Video
|
||||
result.Rule = rule;
|
||||
}
|
||||
}
|
||||
|
||||
else if (rule.RuleType == ExtraRuleType.Suffix)
|
||||
{
|
||||
var filename = Path.GetFileNameWithoutExtension(path);
|
||||
@@ -67,7 +66,6 @@ namespace Emby.Naming.Video
|
||||
result.Rule = rule;
|
||||
}
|
||||
}
|
||||
|
||||
else if (rule.RuleType == ExtraRuleType.Regex)
|
||||
{
|
||||
var filename = Path.GetFileName(path);
|
||||
|
||||
@@ -15,9 +15,9 @@ namespace Emby.Naming.Video
|
||||
Files = new List<string>();
|
||||
}
|
||||
|
||||
public bool ContainsFile(string file, bool IsDirectory)
|
||||
public bool ContainsFile(string file, bool isDirectory)
|
||||
{
|
||||
if (IsDirectoryStack == IsDirectory)
|
||||
if (IsDirectoryStack == isDirectory)
|
||||
{
|
||||
return Files.Contains(file, StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
@@ -15,10 +15,12 @@ namespace Emby.Naming.Video
|
||||
|
||||
public Format3DResult Parse(string path)
|
||||
{
|
||||
var delimeters = _options.VideoFlagDelimiters.ToList();
|
||||
delimeters.Add(' ');
|
||||
int oldLen = _options.VideoFlagDelimiters.Length;
|
||||
var delimeters = new char[oldLen + 1];
|
||||
_options.VideoFlagDelimiters.CopyTo(delimeters, 0);
|
||||
delimeters[oldLen] = ' ';
|
||||
|
||||
return Parse(new FlagParser(_options).GetFlags(path, delimeters.ToArray()));
|
||||
return Parse(new FlagParser(_options).GetFlags(path, delimeters));
|
||||
}
|
||||
|
||||
internal Format3DResult Parse(string[] videoFlags)
|
||||
@@ -66,8 +68,10 @@ namespace Emby.Naming.Video
|
||||
format = flag;
|
||||
result.Tokens.Add(rule.Token);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
foundPrefix = string.Equals(flag, rule.PreceedingToken, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,25 +4,27 @@ namespace Emby.Naming.Video
|
||||
{
|
||||
public class Format3DResult
|
||||
{
|
||||
public Format3DResult()
|
||||
{
|
||||
Tokens = new List<string>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether [is3 d].
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if [is3 d]; otherwise, <c>false</c>.</value>
|
||||
public bool Is3D { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the format3 d.
|
||||
/// </summary>
|
||||
/// <value>The format3 d.</value>
|
||||
public string Format3D { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the tokens.
|
||||
/// </summary>
|
||||
/// <value>The tokens.</value>
|
||||
public List<string> Tokens { get; set; }
|
||||
|
||||
public Format3DResult()
|
||||
{
|
||||
Tokens = new List<string>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,17 +40,24 @@ namespace Emby.Naming.Video
|
||||
var result = new StackResult();
|
||||
foreach (var directory in files.GroupBy(file => file.IsDirectory ? file.FullName : Path.GetDirectoryName(file.FullName)))
|
||||
{
|
||||
var stack = new FileStack();
|
||||
stack.Name = Path.GetFileName(directory.Key);
|
||||
stack.IsDirectoryStack = false;
|
||||
var stack = new FileStack()
|
||||
{
|
||||
Name = Path.GetFileName(directory.Key),
|
||||
IsDirectoryStack = false
|
||||
};
|
||||
foreach (var file in directory)
|
||||
{
|
||||
if (file.IsDirectory)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
stack.Files.Add(file.FullName);
|
||||
}
|
||||
|
||||
result.Stacks.Add(stack);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -114,16 +121,16 @@ namespace Emby.Naming.Video
|
||||
{
|
||||
if (!string.Equals(volume1, volume2, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (string.Equals(ignore1, ignore2, StringComparison.OrdinalIgnoreCase) &&
|
||||
string.Equals(extension1, extension2, StringComparison.OrdinalIgnoreCase))
|
||||
if (string.Equals(ignore1, ignore2, StringComparison.OrdinalIgnoreCase)
|
||||
&& string.Equals(extension1, extension2, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (stack.Files.Count == 0)
|
||||
{
|
||||
stack.Name = title1 + ignore1;
|
||||
stack.IsDirectoryStack = file1.IsDirectory;
|
||||
//stack.Name = title1 + ignore1 + extension1;
|
||||
stack.Files.Add(file1.FullName);
|
||||
}
|
||||
|
||||
stack.Files.Add(file2.FullName);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -9,24 +9,32 @@ namespace Emby.Naming.Video
|
||||
{
|
||||
public static StubResult ResolveFile(string path, NamingOptions options)
|
||||
{
|
||||
var result = new StubResult();
|
||||
var extension = Path.GetExtension(path) ?? string.Empty;
|
||||
|
||||
if (options.StubFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
|
||||
if (path == null)
|
||||
{
|
||||
result.IsStub = true;
|
||||
return default(StubResult);
|
||||
}
|
||||
|
||||
path = Path.GetFileNameWithoutExtension(path);
|
||||
var extension = Path.GetExtension(path);
|
||||
|
||||
var token = (Path.GetExtension(path) ?? string.Empty).TrimStart('.');
|
||||
if (!options.StubFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
return default(StubResult);
|
||||
}
|
||||
|
||||
foreach (var rule in options.StubTypes)
|
||||
var result = new StubResult()
|
||||
{
|
||||
IsStub = true
|
||||
};
|
||||
|
||||
path = Path.GetFileNameWithoutExtension(path);
|
||||
var token = Path.GetExtension(path).TrimStart('.');
|
||||
|
||||
foreach (var rule in options.StubTypes)
|
||||
{
|
||||
if (string.Equals(rule.Token, token, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (string.Equals(rule.Token, token, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
result.StubType = rule.StubType;
|
||||
break;
|
||||
}
|
||||
result.StubType = rule.StubType;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace Emby.Naming.Video
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if this instance is stub; otherwise, <c>false</c>.</value>
|
||||
public bool IsStub { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the type of the stub.
|
||||
/// </summary>
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace Emby.Naming.Video
|
||||
/// </summary>
|
||||
/// <value>The token.</value>
|
||||
public string Token { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the type of the stub.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
namespace Emby.Naming.Video
|
||||
{
|
||||
/// <summary>
|
||||
@@ -11,56 +10,67 @@ namespace Emby.Naming.Video
|
||||
/// </summary>
|
||||
/// <value>The path.</value>
|
||||
public string Path { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the container.
|
||||
/// </summary>
|
||||
/// <value>The container.</value>
|
||||
public string Container { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the name.
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the year.
|
||||
/// </summary>
|
||||
/// <value>The year.</value>
|
||||
public int? Year { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the type of the extra, e.g. trailer, theme song, behing the scenes, etc.
|
||||
/// </summary>
|
||||
/// <value>The type of the extra.</value>
|
||||
public string ExtraType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the extra rule.
|
||||
/// </summary>
|
||||
/// <value>The extra rule.</value>
|
||||
public ExtraRule ExtraRule { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the format3 d.
|
||||
/// </summary>
|
||||
/// <value>The format3 d.</value>
|
||||
public string Format3D { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether [is3 d].
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if [is3 d]; otherwise, <c>false</c>.</value>
|
||||
public bool Is3D { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this instance is stub.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if this instance is stub; otherwise, <c>false</c>.</value>
|
||||
public bool IsStub { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the type of the stub.
|
||||
/// </summary>
|
||||
/// <value>The type of the stub.</value>
|
||||
public string StubType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the type.
|
||||
/// </summary>
|
||||
/// <value>The type.</value>
|
||||
public bool IsDirectory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the file name without extension.
|
||||
/// </summary>
|
||||
|
||||
@@ -12,21 +12,25 @@ namespace Emby.Naming.Video
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the year.
|
||||
/// </summary>
|
||||
/// <value>The year.</value>
|
||||
public int? Year { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the files.
|
||||
/// </summary>
|
||||
/// <value>The files.</value>
|
||||
public List<VideoFileInfo> Files { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the extras.
|
||||
/// </summary>
|
||||
/// <value>The extras.</value>
|
||||
public List<VideoFileInfo> Extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the alternate versions.
|
||||
/// </summary>
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace Emby.Naming.Video
|
||||
Name = stack.Name
|
||||
};
|
||||
|
||||
info.Year = info.Files.First().Year;
|
||||
info.Year = info.Files[0].Year;
|
||||
|
||||
var extraBaseNames = new List<string>
|
||||
{
|
||||
@@ -87,7 +87,7 @@ namespace Emby.Naming.Video
|
||||
Name = media.Name
|
||||
};
|
||||
|
||||
info.Year = info.Files.First().Year;
|
||||
info.Year = info.Files[0].Year;
|
||||
|
||||
var extras = GetExtras(remainingFiles, new List<string> { media.FileNameWithoutExtension });
|
||||
|
||||
@@ -115,7 +115,7 @@ namespace Emby.Naming.Video
|
||||
|
||||
if (!string.IsNullOrEmpty(parentPath))
|
||||
{
|
||||
var folderName = Path.GetFileName(Path.GetDirectoryName(videoPath));
|
||||
var folderName = Path.GetFileName(parentPath);
|
||||
if (!string.IsNullOrEmpty(folderName))
|
||||
{
|
||||
var extras = GetExtras(remainingFiles, new List<string> { folderName });
|
||||
@@ -163,9 +163,7 @@ namespace Emby.Naming.Video
|
||||
Year = i.Year
|
||||
}));
|
||||
|
||||
var orderedList = list.OrderBy(i => i.Name);
|
||||
|
||||
return orderedList;
|
||||
return list.OrderBy(i => i.Name);
|
||||
}
|
||||
|
||||
private IEnumerable<VideoInfo> GetVideosGroupedByVersion(List<VideoInfo> videos)
|
||||
@@ -179,23 +177,21 @@ namespace Emby.Naming.Video
|
||||
|
||||
var folderName = Path.GetFileName(Path.GetDirectoryName(videos[0].Files[0].Path));
|
||||
|
||||
if (!string.IsNullOrEmpty(folderName) && folderName.Length > 1)
|
||||
if (!string.IsNullOrEmpty(folderName)
|
||||
&& folderName.Length > 1
|
||||
&& videos.All(i => i.Files.Count == 1
|
||||
&& IsEligibleForMultiVersion(folderName, i.Files[0].Path))
|
||||
&& HaveSameYear(videos))
|
||||
{
|
||||
if (videos.All(i => i.Files.Count == 1 && IsEligibleForMultiVersion(folderName, i.Files[0].Path)))
|
||||
{
|
||||
if (HaveSameYear(videos))
|
||||
{
|
||||
var ordered = videos.OrderBy(i => i.Name).ToList();
|
||||
var ordered = videos.OrderBy(i => i.Name).ToList();
|
||||
|
||||
list.Add(ordered[0]);
|
||||
list.Add(ordered[0]);
|
||||
|
||||
list[0].AlternateVersions = ordered.Skip(1).Select(i => i.Files[0]).ToList();
|
||||
list[0].Name = folderName;
|
||||
list[0].Extras.AddRange(ordered.Skip(1).SelectMany(i => i.Extras));
|
||||
list[0].AlternateVersions = ordered.Skip(1).Select(i => i.Files[0]).ToList();
|
||||
list[0].Name = folderName;
|
||||
list[0].Extras.AddRange(ordered.Skip(1).SelectMany(i => i.Extras));
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
return videos;
|
||||
@@ -213,9 +209,9 @@ namespace Emby.Naming.Video
|
||||
if (testFilename.StartsWith(folderName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
testFilename = testFilename.Substring(folderName.Length).Trim();
|
||||
return string.IsNullOrEmpty(testFilename) ||
|
||||
testFilename.StartsWith("-") ||
|
||||
string.IsNullOrWhiteSpace(Regex.Replace(testFilename, @"\[([^]]*)\]", string.Empty)) ;
|
||||
return string.IsNullOrEmpty(testFilename)
|
||||
|| testFilename[0] == '-'
|
||||
|| string.IsNullOrWhiteSpace(Regex.Replace(testFilename, @"\[([^]]*)\]", string.Empty));
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -38,10 +38,11 @@ namespace Emby.Naming.Video
|
||||
/// Resolves the specified path.
|
||||
/// </summary>
|
||||
/// <param name="path">The path.</param>
|
||||
/// <param name="IsDirectory">if set to <c>true</c> [is folder].</param>
|
||||
/// <param name="isDirectory">if set to <c>true</c> [is folder].</param>
|
||||
/// <param name="parseName">Whether or not the name should be parsed for info</param>
|
||||
/// <returns>VideoFileInfo.</returns>
|
||||
/// <exception cref="ArgumentNullException">path</exception>
|
||||
public VideoFileInfo Resolve(string path, bool IsDirectory, bool parseName = true)
|
||||
public VideoFileInfo Resolve(string path, bool isDirectory, bool parseName = true)
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
@@ -52,9 +53,10 @@ namespace Emby.Naming.Video
|
||||
string container = null;
|
||||
string stubType = null;
|
||||
|
||||
if (!IsDirectory)
|
||||
if (!isDirectory)
|
||||
{
|
||||
var extension = Path.GetExtension(path);
|
||||
|
||||
// Check supported extensions
|
||||
if (!_options.VideoFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -79,7 +81,7 @@ namespace Emby.Naming.Video
|
||||
|
||||
var extraResult = new ExtraResolver(_options).GetExtraInfo(path);
|
||||
|
||||
var name = IsDirectory
|
||||
var name = isDirectory
|
||||
? Path.GetFileName(path)
|
||||
: Path.GetFileNameWithoutExtension(path);
|
||||
|
||||
@@ -108,7 +110,7 @@ namespace Emby.Naming.Video
|
||||
Is3D = format3DResult.Is3D,
|
||||
Format3D = format3DResult.Format3D,
|
||||
ExtraType = extraResult.ExtraType,
|
||||
IsDirectory = IsDirectory,
|
||||
IsDirectory = isDirectory,
|
||||
ExtraRule = extraResult.Rule
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user