public static int GetAlternativeCode(Guid ListViewId, Guid DestinationViewId) { int key = ListViewId.GetHashCode(); if (!cachelist.ContainsKey(key)) { AlternativeView record = new AlternativeView(); record.ListViewId = ListViewId; record.DestinationViewId = DestinationViewId; record.Id = key; cachelist[key] = record; return(key); } else { while (cachelist.ContainsKey(key)) { var result = cachelist[key]; if (result.ListViewId == ListViewId && result.DestinationViewId == DestinationViewId) { return(result.Id); } else { key = key.GetHashCode(); } } AlternativeView record = new AlternativeView(); record.ListViewId = ListViewId; record.DestinationViewId = DestinationViewId; record.Id = key; cachelist[key] = record; return(key); } }
private async Task <bool> ConvertToFileAsync( Connection api, string tmpInput, string outputExtension, string newFileName, FileModel fileModel, string arguments, string contentType ) { string tmpOutput = null; if (!string.IsNullOrWhiteSpace(outputExtension)) { tmpOutput = tmpInput + outputExtension; } if (!string.IsNullOrWhiteSpace(fileModel.Name) && !string.IsNullOrWhiteSpace(newFileName)) { UseVar(ref newFileName, "original", fileModel.Name); } if (FFMPEGExecute(tmpInput, tmpOutput, arguments)) { if (!string.IsNullOrWhiteSpace(newFileName)) { Console.WriteLine($"Uploading {newFileName}"); var newFile = await api.File.FileModelFromLocalFileAsync( tmpOutput, new FileIdentifier(fileModel.Identifier as FolderIdentifier, null)); newFile.Name = newFileName; newFile.MimeType = contentType; newFile.Write(MetadataKeyConstants.HIDDEN, true); newFile.Write(MetadataKeyConstants.CHILDOF, fileModel.Identifier); newFile = await api.File.UploadLocalFileAsync(tmpOutput, newFile); var alternativeView = new AlternativeView() { FileIdentifier = newFile.Identifier, MimeType = contentType, Name = "transcode" }; await base.TagAlternativeView(fileModel.Identifier, newFile.Identifier, alternativeView); } return(true); } return(false); }
protected override async Task Process() { var originalFileModel = await GetFileAsync(); await base.DownloadAsync(); var pdfFileName = Path.GetTempFileName(); Logger.LogInformation("uploading to unoconv"); using (var content = new MultipartFormDataContent( "Upload----" + DateTime.Now.ToString(CultureInfo.InvariantCulture)) ) using (var fs = new FileStream(base.LocalFilePath, FileMode.Open)) { content.Add(new StreamContent(fs), "file", originalFileModel.Name); using (var response = await Client.PostAsync(Configuration.UnoConvUri, content)) { response.EnsureSuccessStatusCode(); using (var pdfStream = await response.Content.ReadAsStreamAsync()) using (var output = new FileStream(pdfFileName, FileMode.Open, FileAccess.Write)) await pdfStream.CopyToAsync(output); } var newFile = await API.File.FileModelFromLocalFileAsync( pdfFileName, new FileIdentifier( originalFileModel.Identifier as FolderIdentifier, null ) ); newFile.Name = Path.GetFileNameWithoutExtension(originalFileModel.Name) + ".pdf"; newFile.MimeType = "application/pdf"; newFile.Write(MetadataKeyConstants.HIDDEN, true); newFile.Write(MetadataKeyConstants.CHILDOF, originalFileModel.Identifier); newFile = await API.File.UploadLocalFileAsync(pdfFileName, newFile); var alternativeView = new AlternativeView() { FileIdentifier = newFile.Identifier, MimeType = "application/pdf", Name = "pdf" }; await base.TagAlternativeView(originalFileModel.Identifier, newFile.Identifier, alternativeView); } }
private async Task UpdateAlternativeViewMetadata(FileModel original, FileModel newFile, Image <Rgba32> image, ImageGenMessage config) { var alternativeView = new AlternativeView() { FileIdentifier = newFile.Identifier, Height = image.Height, Width = image.Width, ImageFormat = config.Format, IsGreyscale = config.IsGreyscale, Quality = config.Quality, MimeType = config.AlternativeViewType, SizeType = config.AlternativeViewSizeType }; await base.TagAlternativeView(original.Identifier, newFile.Identifier, alternativeView); }
protected async Task TagAlternativeView(FileIdentifier originalFileIdentifier, FileIdentifier newFileIdentifier, AlternativeView alternativeView) { await this.API.ConcurrencyRetryBlock(async() => { var originalFile = await API.File.GetAsync(originalFileIdentifier); var views = originalFile.Read <List <AlternativeView> >(MetadataKeyConstants.ALTERNATIVE_VIEWS) ?? new List <AlternativeView>(); views.Add(alternativeView); originalFile.Write(MetadataKeyConstants.ALTERNATIVE_VIEWS, views); await API.File.PutAsync(originalFile); }); }