/// <summary> /// Update Async with ExifTool /// </summary> /// <param name="updateModel">data</param> /// <param name="inputSubPaths">paths</param> /// <param name="comparedNames">changed</param> /// <param name="includeSoftware">overwrite Starsky name</param> /// <param name="renameThumbnail">update name</param> /// <returns>Tuple (command, hash)</returns> public async Task <ValueTuple <string, List <string> > > UpdateAsync(FileIndexItem updateModel, List <string> inputSubPaths, List <string> comparedNames, bool includeSoftware, bool renameThumbnail) { // Creation and update .xmp file with all available content await CreateXmpFileIsNotExist(updateModel, inputSubPaths); // Rename .dng files .xmp to update in exifTool var subPathsList = PathsListTagsFromFile(inputSubPaths); var command = ExifToolCommandLineArgs(updateModel, comparedNames, includeSoftware); var fileHashes = new List <string>(); foreach (var path in subPathsList.Where(path => _iStorage.ExistFile(path))) { // to rename to filename of the thumbnail to the new hash if (!renameThumbnail) { await _exifTool.WriteTagsAsync(path, command); continue; } fileHashes.Add((await _exifTool.WriteTagsAndRenameThumbnailAsync(path, command)).Value); } if (!string.IsNullOrEmpty(updateModel.FileHash) && _thumbnailStorage.ExistFile(updateModel.FileHash)) { await _exifTool.WriteTagsThumbnailAsync(updateModel.FileHash, command); } return(new ValueTuple <string, List <string> >(command, fileHashes)); }
public async Task <bool> WriteTagsThumbnailAsync(string fileHash, string command) { return(await _exifTool.WriteTagsThumbnailAsync(fileHash, command)); }