Videos
This commit is contained in:
parent
96c479e639
commit
82de27ce61
@ -61,7 +61,7 @@ public class Rename : IRename
|
||||
results.AddRange(Directory.GetFiles(filePath.DirectoryName, $"{filePath.Name}-*.jpg", SearchOption.TopDirectoryOnly));
|
||||
if (results.Count == 0)
|
||||
throw new Exception();
|
||||
result = IId.GetFilePath(renameConfiguration.MetadataConfiguration, results[0]);
|
||||
result = IId.GetFilePath(renameConfiguration.MetadataConfiguration, results[0], index: null);
|
||||
if (!result.Name.EndsWith("-0001.jpg"))
|
||||
throw new Exception();
|
||||
isValidImageFormatExtension = renameConfiguration.ValidImageFormatExtensions.Contains(result.ExtensionLowered);
|
||||
@ -111,6 +111,7 @@ public class Rename : IRename
|
||||
|
||||
private static void GetExifDirectoryCollection(IRename rename, RenameConfiguration renameConfiguration, List<(string, FileInfo, ExifDirectory)> exifDirectories, IEnumerable<string> files, A_Metadata metadata)
|
||||
{
|
||||
int index = -1;
|
||||
FileInfo fileInfo;
|
||||
FilePath filePath;
|
||||
FilePath? ffmpegFilePath;
|
||||
@ -119,8 +120,9 @@ public class Rename : IRename
|
||||
DeterministicHashCode deterministicHashCode;
|
||||
foreach (string file in files)
|
||||
{
|
||||
index += 1;
|
||||
rename.Tick();
|
||||
filePath = IId.GetFilePath(renameConfiguration.MetadataConfiguration, file);
|
||||
filePath = IId.GetFilePath(renameConfiguration.MetadataConfiguration, file, index);
|
||||
if (renameConfiguration.SkipIdFiles && filePath.Id is not null && (filePath.IsIntelligentIdFormat || filePath.SortOrder is not null))
|
||||
continue;
|
||||
(ffmpegFiles, ffmpegFilePath) = rename.ConvertAndGetFfmpegFiles(renameConfiguration, filePath);
|
||||
|
@ -6,6 +6,20 @@ namespace View_by_Distance.Shared.Models.Stateless;
|
||||
internal abstract class Id
|
||||
{
|
||||
|
||||
internal static bool NameWithoutExtensionIsIdFormat(string fileNameFirstSegment)
|
||||
{
|
||||
bool result;
|
||||
int intMinValueLength = int.MinValue.ToString().Length;
|
||||
if (fileNameFirstSegment.Length < 5 || fileNameFirstSegment.Length > intMinValueLength)
|
||||
result = false;
|
||||
else
|
||||
{
|
||||
bool skipOneAllAreNumbers = fileNameFirstSegment[1..].All(l => char.IsNumber(l));
|
||||
result = (skipOneAllAreNumbers && fileNameFirstSegment[0] == '-') || (skipOneAllAreNumbers && char.IsNumber(fileNameFirstSegment[0]));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int GetId(MetadataConfiguration metadataConfiguration, string intelligentId)
|
||||
{
|
||||
int result;
|
||||
@ -62,7 +76,7 @@ internal abstract class Id
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static FilePath GetFilePath(MetadataConfiguration metadataConfiguration, string file)
|
||||
internal static FilePath GetFilePath(MetadataConfiguration metadataConfiguration, string file, int? index)
|
||||
{
|
||||
FilePath result;
|
||||
int? id;
|
||||
@ -76,7 +90,16 @@ internal abstract class Id
|
||||
string fileNameFirstSegment = segments[0];
|
||||
bool fileNameFirstSegmentIsIntelligentIdFormat = IId.NameWithoutExtensionIsIntelligentIdFormat(metadataConfiguration, fileNameFirstSegment);
|
||||
bool fileNameFirstSegmentIsPaddedIntelligentIdFormat = IId.NameWithoutExtensionIsPaddedIntelligentIdFormat(metadataConfiguration, sortOrderOnlyLengthIndex, fileNameFirstSegment);
|
||||
if (!fileNameFirstSegmentIsIntelligentIdFormat && !fileNameFirstSegmentIsPaddedIntelligentIdFormat)
|
||||
bool fileNameFirstSegmentIsIdFormat = !fileNameFirstSegmentIsPaddedIntelligentIdFormat && !fileNameFirstSegmentIsIntelligentIdFormat && IId.NameWithoutExtensionIsIdFormat(fileNameFirstSegment);
|
||||
if (fileNameFirstSegmentIsIdFormat)
|
||||
{
|
||||
if (index is null)
|
||||
throw new NullReferenceException(nameof(index));
|
||||
if (!int.TryParse(fileNameFirstSegment, out int valueOfFileNameFirstSegment))
|
||||
throw new NotSupportedException();
|
||||
(id, sortOder) = (valueOfFileNameFirstSegment, metadataConfiguration.Offset + index);
|
||||
}
|
||||
else if (!fileNameFirstSegmentIsIntelligentIdFormat && !fileNameFirstSegmentIsPaddedIntelligentIdFormat)
|
||||
(id, sortOder) = (null, null);
|
||||
else if (fileNameFirstSegmentIsIntelligentIdFormat)
|
||||
(id, sortOder) = (GetId(metadataConfiguration, fileNameFirstSegment), null);
|
||||
|
@ -25,15 +25,20 @@ public interface IId
|
||||
&& fileNameFirstSegment[^1] is '1' or '2' or '8' or '9'
|
||||
&& fileNameFirstSegment.All(char.IsNumber);
|
||||
|
||||
bool TestStatic_NameWithoutExtensionIsIdFormat(string fileNameFirstSegment) =>
|
||||
NameWithoutExtensionIsIdFormat(fileNameFirstSegment);
|
||||
static bool NameWithoutExtensionIsIdFormat(string fileNameFirstSegment) =>
|
||||
Id.NameWithoutExtensionIsIdFormat(fileNameFirstSegment);
|
||||
|
||||
short TestStatic_GetSortOrderOnlyLengthIndex(MetadataConfiguration metadataConfiguration) =>
|
||||
GetSortOrderOnlyLengthIndex(metadataConfiguration);
|
||||
static short GetSortOrderOnlyLengthIndex(MetadataConfiguration metadataConfiguration) =>
|
||||
(short)metadataConfiguration.Offset.ToString().Length;
|
||||
|
||||
FilePath TestStatic_GetFilePath(MetadataConfiguration metadataConfiguration, string file) =>
|
||||
GetFilePath(metadataConfiguration, file);
|
||||
static FilePath GetFilePath(MetadataConfiguration metadataConfiguration, string file) =>
|
||||
Id.GetFilePath(metadataConfiguration, file);
|
||||
FilePath TestStatic_GetFilePath(MetadataConfiguration metadataConfiguration, string file, int? index) =>
|
||||
GetFilePath(metadataConfiguration, file, index);
|
||||
static FilePath GetFilePath(MetadataConfiguration metadataConfiguration, string file, int? index) =>
|
||||
Id.GetFilePath(metadataConfiguration, file, index);
|
||||
|
||||
int TestStatic_GetDeterministicHashCode(byte[] value) =>
|
||||
GetDeterministicHashCode(value);
|
||||
|
Loading…
x
Reference in New Issue
Block a user