protected async override Task OnConsume(string example, TaskParameters taskParameters, ClientActiveTasks cleanup) { registerTask(cleanup, "ExampleTask"); // may throw AlreadyInProgress exception _logger.LogInformation("Example Task Starting"); int captionCount = 0; int transcriptionCount = 0; using (var _context = CTDbContext.CreateDbContext()) { CaptionQueries captionQueries = new CaptionQueries(_context); var transcriptions = await _context.Transcriptions.Take(30).ToListAsync(); foreach (var transcription in transcriptions) { var transcriptionId = transcription.Id; var videoID = transcription.VideoId; var captions = await captionQueries.GetCaptionsAsync(transcriptionId); _logger.LogInformation($"{transcription.Id}: Caption count= {captions.Count}"); transcriptionCount++; } } _logger.LogInformation($"Example Task Done. transcriptionCount={transcriptionCount} captionCount={captionCount}"); }
protected async override Task OnConsume(string example, TaskParameters taskParameters, ClientActiveTasks cleanup) { registerTask(cleanup, "BuildElasticIndexTask"); // may throw AlreadyInProgress exception GetLogger().LogInformation("BuildElasticIndexTask Starting"); using (var _context = CTDbContext.CreateDbContext()) { CaptionQueries captionQueries = new CaptionQueries(_context); var all_transcriptions = await _context.Transcriptions.Where(t => t.Language == Languages.ENGLISH_AMERICAN).ToListAsync(); foreach (var transcription in all_transcriptions) { var all_captions = transcription.Captions; // each index has the unique name "index_string_unique", the current in use one has the alias "index_string_alias" var index_string_base = transcription.Id + "_" + Languages.ENGLISH_AMERICAN.ToLower(System.Globalization.CultureInfo.CurrentCulture); var index_string_unique = index_string_base + "_" + $"{DateTime.Now:yyyyMMddHHmmss}"; var index_string_alias = index_string_base + "_" + "primary"; var asyncBulkIndexResponse = await _client.BulkAsync(b => b .Index(index_string_unique) .IndexMany(all_captions) ); var alias_exist = await _client.Indices.ExistsAsync(index_string_alias); if (alias_exist.Exists) { var oldIndices = await _client.GetIndicesPointingToAliasAsync(index_string_alias); var oldIndexName = oldIndices.First().ToString(); var indexResponse = await _client.Indices.BulkAliasAsync(new BulkAliasRequest { Actions = new List <IAliasAction> { new AliasRemoveAction { Remove = new AliasRemoveOperation { Index = oldIndexName, Alias = index_string_alias } }, new AliasAddAction { Add = new AliasAddOperation { Index = index_string_unique, Alias = index_string_alias } } } }); } else { var putAliasResponse = await _client.Indices.PutAliasAsync(new PutAliasRequest(index_string_unique, index_string_alias)); } } } GetLogger().LogInformation("BuildElasticIndexTask Done"); }
public CaptionsController(WakeDownloader wakeDownloader, CTDbContext context, CaptionQueries captionQueries, ILogger <CaptionsController> logger) : base(context, logger) { _captionQueries = captionQueries; _wakeDownloader = wakeDownloader; }
public TranscriptionTask(RabbitMQConnection rabbitMQ, MSTranscriptionService msTranscriptionService, GenerateVTTFileTask generateVTTFileTask, SceneDetectionTask sceneDetectionTask, ILogger <TranscriptionTask> logger, CaptionQueries captionQueries) : base(rabbitMQ, TaskType.TranscribeVideo, logger) { _msTranscriptionService = msTranscriptionService; _generateVTTFileTask = generateVTTFileTask; _sceneDetectionTask = sceneDetectionTask; _captionQueries = captionQueries; }
protected async override Task OnConsume(string transcriptionId, TaskParameters taskParameters, ClientActiveTasks cleanup) { registerTask(cleanup, transcriptionId); // may throw AlreadyInProgress exception GetLogger().LogInformation($"Creating VTT & SRT files for ({transcriptionId})"); using (var _context = CTDbContext.CreateDbContext()) { var transcription = await _context.Transcriptions.FindAsync(transcriptionId); CaptionQueries captionQueries = new CaptionQueries(_context); var captions = await captionQueries.GetCaptionsAsync(transcription.Id); var vttfile = await FileRecord.GetNewFileRecordAsync(Caption.GenerateWebVTTFile(captions, transcription.Language), ".vtt"); FileRecord?existingVtt = await _context.FileRecords.FindAsync(transcription.FileId); if (existingVtt is null) { GetLogger().LogInformation($"{transcriptionId}: Creating new vtt file {vttfile.FileName}"); await _context.FileRecords.AddAsync(vttfile); transcription.File = vttfile; _context.Entry(transcription).State = EntityState.Modified; } else { GetLogger().LogInformation($"{transcriptionId}: replacing existing vtt file contents {existingVtt.FileName}"); existingVtt.ReplaceWith(vttfile); _context.Entry(existingVtt).State = EntityState.Modified; } var srtfile = await FileRecord.GetNewFileRecordAsync(Caption.GenerateSrtFile(captions), ".srt"); FileRecord?existingSrt = await _context.FileRecords.FindAsync(transcription.SrtFileId); if (existingSrt is null) { GetLogger().LogInformation($"{transcriptionId}: Creating new srt file {srtfile.FileName}"); await _context.FileRecords.AddAsync(srtfile); transcription.SrtFile = srtfile; _context.Entry(transcription).State = EntityState.Modified; } else { GetLogger().LogInformation($"{transcriptionId}: replacing existing srt file contents {existingSrt.FileName}"); existingSrt.ReplaceWith(srtfile); _context.Entry(existingSrt).State = EntityState.Modified; } await _context.SaveChangesAsync(); GetLogger().LogInformation($"{transcriptionId}: Database updated"); } }
protected async override Task OnConsume(string transcriptionId, TaskParameters taskParameters, ClientActiveTasks cleanup) { registerTask(cleanup, transcriptionId); // may throw AlreadyInProgress exception using (var _context = CTDbContext.CreateDbContext()) { var transcription = await _context.Transcriptions.FindAsync(transcriptionId); FileRecord existingVtt = await _context.FileRecords.FindAsync(transcription.FileId); FileRecord existingSrt = await _context.FileRecords.FindAsync(transcription.SrtFileId); CaptionQueries captionQueries = new CaptionQueries(_context); var captions = await captionQueries.GetCaptionsAsync(transcription.Id); var vttfile = await FileRecord.GetNewFileRecordAsync(Caption.GenerateWebVTTFile(captions, transcription.Language), ".vtt"); if (string.IsNullOrEmpty(transcription.FileId)) { await _context.FileRecords.AddAsync(vttfile); transcription.File = vttfile; _context.Entry(transcription).State = EntityState.Modified; } else { existingVtt.ReplaceWith(vttfile); _context.Entry(existingVtt).State = EntityState.Modified; } var srtfile = await FileRecord.GetNewFileRecordAsync(Caption.GenerateSrtFile(captions), ".srt"); if (string.IsNullOrEmpty(transcription.SrtFileId)) { await _context.FileRecords.AddAsync(srtfile); transcription.SrtFile = srtfile; _context.Entry(transcription).State = EntityState.Modified; } else { existingSrt.ReplaceWith(srtfile); _context.Entry(existingSrt).State = EntityState.Modified; } await _context.SaveChangesAsync(); } }