diff --git a/AudioNodes/AudioBooks/CreateAudioBook.cs b/AudioNodes/AudioBooks/CreateAudioBook.cs index ebfd46da..6da70969 100644 --- a/AudioNodes/AudioBooks/CreateAudioBook.cs +++ b/AudioNodes/AudioBooks/CreateAudioBook.cs @@ -91,7 +91,7 @@ public class CreateAudioBook: AudioNode var rgxNumbers = new Regex(@"[\d]+"); files = files.OrderBy(x => { - string extension = FileHelper.GetExtension(x); + string extension = FileHelper.GetExtension(x).TrimStart('.'); string shortname = FileHelper.GetShortFileName(x); if (string.IsNullOrEmpty(extension) == false) shortname = shortname[..^(extension.Length + 1)]; diff --git a/AudioNodes/Nodes/AudioFileNormalization.cs b/AudioNodes/Nodes/AudioFileNormalization.cs index 8136eb4d..5fa854ff 100644 --- a/AudioNodes/Nodes/AudioFileNormalization.cs +++ b/AudioNodes/Nodes/AudioFileNormalization.cs @@ -44,7 +44,7 @@ public class AudioFileNormalization : AudioNode string extension = FileHelper.GetExtension(args.WorkingFile); - string outputFile = FileHelper.Combine(args.TempPath, Guid.NewGuid() + "." + extension); + string outputFile = FileHelper.Combine(args.TempPath, Guid.NewGuid() + extension); ffArgs.Add(outputFile); var result = args.Execute(new ExecuteArgs diff --git a/BasicNodes/File/MoveFile.cs b/BasicNodes/File/MoveFile.cs index e0d6cfe3..092ae303 100644 --- a/BasicNodes/File/MoveFile.cs +++ b/BasicNodes/File/MoveFile.cs @@ -238,8 +238,8 @@ public class MoveFile : Node destFilename = args.ReplaceVariables(destinationFile); } - string destExtension = FileHelper.GetExtension(destFilename); - string workingExtension = FileHelper.GetExtension(args.WorkingFile); + string destExtension = FileHelper.GetExtension(destFilename).TrimStart('.'); + string workingExtension = FileHelper.GetExtension(args.WorkingFile).TrimStart('.'); if (string.IsNullOrEmpty(destExtension) == false && destExtension != workingExtension) { diff --git a/BasicNodes/File/ReplaceOriginal.cs b/BasicNodes/File/ReplaceOriginal.cs index b2af6344..2ba01d22 100644 --- a/BasicNodes/File/ReplaceOriginal.cs +++ b/BasicNodes/File/ReplaceOriginal.cs @@ -72,7 +72,7 @@ public class ReplaceOriginal : Node else { // different extension, we will move the file, but then delete the original - string dest = System.IO.Path.ChangeExtension(args.FileName, wfExtension); + string dest = FileHelper.ChangeExtension(args.FileName, wfExtension); if(args.MoveFile(dest) == false) { args.Logger?.ELog("Failed to move file to: " + dest); diff --git a/FileFlows.Plugin.dll b/FileFlows.Plugin.dll index fcbab8d2..6d9c715b 100644 Binary files a/FileFlows.Plugin.dll and b/FileFlows.Plugin.dll differ diff --git a/FileFlows.Plugin.pdb b/FileFlows.Plugin.pdb index 72dd58de..798e417e 100644 Binary files a/FileFlows.Plugin.pdb and b/FileFlows.Plugin.pdb differ diff --git a/FileFlowsPlugins.sln b/FileFlowsPlugins.sln index 2a12a945..f95cd04d 100644 --- a/FileFlowsPlugins.sln +++ b/FileFlowsPlugins.sln @@ -31,6 +31,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ComicNodes", "ComicNodes\Co EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Telegram", "Telegram\Telegram.csproj", "{BFAD621E-4C82-47FC-A9C8-03F09FF9926C}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SiteScraping", "SiteScraping\SiteScraping.csproj", "{A8227B00-9A44-4FE8-967B-46E289969563}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -93,6 +95,10 @@ Global {BFAD621E-4C82-47FC-A9C8-03F09FF9926C}.Debug|Any CPU.Build.0 = Debug|Any CPU {BFAD621E-4C82-47FC-A9C8-03F09FF9926C}.Release|Any CPU.ActiveCfg = Release|Any CPU {BFAD621E-4C82-47FC-A9C8-03F09FF9926C}.Release|Any CPU.Build.0 = Release|Any CPU + {A8227B00-9A44-4FE8-967B-46E289969563}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8227B00-9A44-4FE8-967B-46E289969563}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8227B00-9A44-4FE8-967B-46E289969563}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8227B00-9A44-4FE8-967B-46E289969563}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ImageNodes/Images/ImageBaseNode.cs b/ImageNodes/Images/ImageBaseNode.cs index 4fa9f3f3..8c91db45 100644 --- a/ImageNodes/Images/ImageBaseNode.cs +++ b/ImageNodes/Images/ImageBaseNode.cs @@ -44,7 +44,7 @@ public abstract class ImageBaseNode:Node protected void UpdateImageInfo(NodeParameters args, Dictionary variables = null) { - string extension = FileHelper.GetExtension(args.WorkingFile).ToLowerInvariant(); + string extension = FileHelper.GetExtension(args.WorkingFile).ToLowerInvariant().TrimStart('.'); if (extension == "heic") { using var image = new MagickImage(args.WorkingFile); @@ -105,7 +105,7 @@ public abstract class ImageBaseNode:Node /// the filename fo the image to use protected string ConvertImageIfNeeded(NodeParameters args) { - string extension = FileHelper.GetExtension(args.WorkingFile).ToLowerInvariant(); + string extension = FileHelper.GetExtension(args.WorkingFile).ToLowerInvariant().TrimStart('.'); if (extension == "heic") { // special case have to use imagemagick diff --git a/ImageNodes/Images/ImageFormat.cs b/ImageNodes/Images/ImageFormat.cs index 74ee3ff8..2e1518bd 100644 --- a/ImageNodes/Images/ImageFormat.cs +++ b/ImageNodes/Images/ImageFormat.cs @@ -22,7 +22,7 @@ public class ImageFormat: ImageNode return 2; } - string extension = FileHelper.GetExtension(args.WorkingFile).ToLowerInvariant(); + string extension = FileHelper.GetExtension(args.WorkingFile).ToLowerInvariant().TrimStart('.'); if (extension == "heic") { // special case have to use imagemagick diff --git a/ImageNodes/Images/ImageNode.cs b/ImageNodes/Images/ImageNode.cs index c0e54515..edd2eff8 100644 --- a/ImageNodes/Images/ImageNode.cs +++ b/ImageNodes/Images/ImageNode.cs @@ -99,7 +99,7 @@ public abstract class ImageNode : ImageBaseNode { string local = args.FileService.FileIsLocal(file) ? file - : FileHelper.Combine(args.TempPath, Guid.NewGuid() + "." + FileHelper.GetExtension(file)); + : FileHelper.Combine(args.TempPath, Guid.NewGuid() + FileHelper.GetExtension(file)); using var outStream = new System.IO.FileStream(local, System.IO.FileMode.Create); img.Save(outStream, format); @@ -121,12 +121,12 @@ public abstract class ImageNode : ImageBaseNode { string local = args.FileService.FileIsLocal(file) ? file - : FileHelper.Combine(args.TempPath, Guid.NewGuid() + "." + FileHelper.GetExtension(file)); + : FileHelper.Combine(args.TempPath, Guid.NewGuid() + FileHelper.GetExtension(file)); using var outStream = new System.IO.FileStream(local, System.IO.FileMode.Create); - - string origExtension = FileHelper.GetExtension(args.WorkingFile).ToLowerInvariant(); - string newExtension = FileHelper.GetExtension(file).ToLowerInvariant(); + + string origExtension = FileHelper.GetExtension(args.WorkingFile).ToLowerInvariant().TrimStart('.'); + string newExtension = FileHelper.GetExtension(file).ToLowerInvariant().TrimStart('.'); if (origExtension != newExtension) { switch (newExtension) diff --git a/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/EncoderAdjustment.cs b/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/EncoderAdjustment.cs new file mode 100644 index 00000000..f95f2097 --- /dev/null +++ b/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/EncoderAdjustment.cs @@ -0,0 +1,12 @@ +namespace FileFlows.VideoNodes.FfmpegBuilderNodes.EncoderAdjustments; + +public class EncoderAdjustment +{ + public static List Run(List args) + { + if (VaapiAdjustments.IsUsingVaapi(args)) + return new VaapiAdjustments().Run(args); + + return args; + } +} \ No newline at end of file diff --git a/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/IEncoderAdjustment.cs b/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/IEncoderAdjustment.cs new file mode 100644 index 00000000..4d83e8c8 --- /dev/null +++ b/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/IEncoderAdjustment.cs @@ -0,0 +1,6 @@ +namespace FileFlows.VideoNodes.FfmpegBuilderNodes.EncoderAdjustments; + +public interface IEncoderAdjustment +{ + List Run(List args); +} \ No newline at end of file diff --git a/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/VaapiAdjustments.cs b/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/VaapiAdjustments.cs new file mode 100644 index 00000000..89ace8a8 --- /dev/null +++ b/VideoNodes/FfmpegBuilderNodes/EncoderAdjustments/VaapiAdjustments.cs @@ -0,0 +1,44 @@ +using FileFlows.VideoNodes.Helpers; + +namespace FileFlows.VideoNodes.FfmpegBuilderNodes.EncoderAdjustments; + +/// +/// Adjustments for VAAPI +/// +public class VaapiAdjustments : IEncoderAdjustment +{ + /// + /// Gets if VAAPI hardware encoding is being used + /// + /// the ffmepg args + /// true if using VAAPI hardware encoding, otherwise false + public static bool IsUsingVaapi(List args) + => args.Any(x => x == "hevc_vaapi" || x == "h264_vaapi"); + + /// + /// Runt the adjustments + /// + /// the ffmpeg args + /// the adjusted arguments + public List Run(List args) + { + int iIndex = args.IndexOf("-i"); + if (iIndex >= 0 && VaapiHelper.VaapiLinux) + { + args.InsertRange(iIndex, new[] + { + "-vaapi_device", + VaapiHelper.VaapiRenderDevice + }); + } + + for(int i=0;i "MKV", diff --git a/VideoNodes/VideoNodes/SubtitleExtractor.cs b/VideoNodes/VideoNodes/SubtitleExtractor.cs index 68c0fe1d..ade97069 100644 --- a/VideoNodes/VideoNodes/SubtitleExtractor.cs +++ b/VideoNodes/VideoNodes/SubtitleExtractor.cs @@ -129,7 +129,7 @@ public class SubtitleExtractor : EncodingNode else { string fileFullname = args.FileName; - string fileExtension = FileHelper.GetExtension(fileFullname); + string fileExtension = FileHelper.GetExtension(fileFullname).TrimStart('.'); output = fileFullname[..fileFullname.LastIndexOf(fileExtension, StringComparison.Ordinal)]; output = output + @@ -192,7 +192,7 @@ public class SubtitleExtractor : EncodingNode args.FileService.FileDelete(output); } - var tempOutput = FileHelper.Combine(args.TempPath, Guid.NewGuid() + "." + FileHelper.GetExtension(output)); + var tempOutput = FileHelper.Combine(args.TempPath, Guid.NewGuid() + FileHelper.GetExtension(output)); bool textSubtitles = Regex.IsMatch(output.ToLower(), @"\.(sup)$") == false; // -y means it will overwrite a file if output already exists diff --git a/VideoNodes/VideoNodes/VideoExtractAudio.cs b/VideoNodes/VideoNodes/VideoExtractAudio.cs index 35e7aa9f..e960ed9e 100644 --- a/VideoNodes/VideoNodes/VideoExtractAudio.cs +++ b/VideoNodes/VideoNodes/VideoExtractAudio.cs @@ -78,7 +78,7 @@ public class VideoExtractAudio : AudioSelectionEncodingNode string _output = args.FileService.FileIsLocal(outputFile) ? outputFile - : FileHelper.Combine(args.TempPath, Guid.NewGuid() + ". " + FileHelper.GetExtension(outputFile)); + : FileHelper.Combine(args.TempPath, Guid.NewGuid() + FileHelper.GetExtension(outputFile)); var extracted = ExtractAudio(args, FFMPEG, parameters, _output); if (extracted == false) @@ -117,7 +117,7 @@ public class VideoExtractAudio : AudioSelectionEncodingNode //var file = new System.IO.FileInfo(args.FileName); string extension = FileHelper.GetExtension(args.FileName); if(string.IsNullOrEmpty(extension) == false) - outputfile = args.FileName[..^(extension.Length + 1)]; + outputfile = args.FileName[..^(extension.Length)]; else outputfile = args.FileName; }