public async Task <FileInfo> Write(InternalVideo internalVideo, string content) { var fileInfo = await _srtFileWriter.Write(internalVideo, content); _logger.Information($"Wrote SRT file to {fileInfo.FullName}."); return(fileInfo); }
public async Task Write(InternalVideo internalVideo) { _logger.Information($"Saving video {internalVideo.Name}."); await _videoWriter.Write(internalVideo); _logger.Information("Done saving video chat."); }
public async Task Write(InternalVideo video, IEnumerable <InternalComment> comments) { var srtLines = _srtLineWriter.Write(comments); var content = string.Join("", srtLines.Select((srtLine, index) => $"{index + 1}\n{srtLine.StartTime:hh\\:mm\\:ss\\,fff} --> {srtLine.EndTime:hh\\:mm\\:ss\\,fff}\n{srtLine.Message}\n")); await _srtFileWriter.Write(video, content); }
public async Task <FileInfo> Write(InternalVideo internalVideo, string content) { var safeName = string.Concat(internalVideo.Name.Split(Path.GetInvalidFileNameChars())); var path = Path.Combine(_srtFileSettings.OutputDirectory.FullName, $"{safeName}-v{internalVideo.Id}.srt"); await File.WriteAllTextAsync(path, content); return(new FileInfo(path)); }
public async Task <IEnumerable <InternalComment> > GetComments(InternalVideo video) { var comments = await _twitchApi.Undocumented.GetAllCommentsAsync(video.Id.ToString()); return(comments .SelectMany(page => page.Comments) .Select(comment => new InternalComment( comment.Commenter.DisplayName ?? comment.Commenter.Name, comment.Message.UserColor, comment.Message.Body, TimeSpan.FromSeconds(comment.ContentOffsetSeconds)))); }
public async Task <IEnumerable <InternalComment> > GetComments(InternalVideo video) { _logger.Information($"Getting comments for video {video.Name}, ID {video.Id}."); var comments = (await _commentsRetriever.GetComments(video)).ToList(); if (comments.Count == 0) { _logger.Warning("No comments found for video."); } else { _logger.Information($"Got {comments.Count} comments for video."); } return(comments); }
public async Task <IEnumerable <InternalComment> > GetComments(InternalVideo video) { var cachePath = GetCachePath(video); if (File.Exists(cachePath)) { var text = await File.ReadAllTextAsync(cachePath); return(JsonConvert.DeserializeObject <IEnumerable <InternalComment> >(text)); } var comments = await _commentsRetriever.GetComments(video); await File.WriteAllTextAsync(cachePath, JsonConvert.SerializeObject(comments)); return(comments); }
public async Task Write(InternalVideo internalVideo) { var comments = await _commentsRetriever.GetComments(internalVideo); await _srtWriter.Write(internalVideo, comments); }
private string GetCachePath(InternalVideo internalVideo) => Path.Combine(_commentsCacheSettings.CacheDirectory.FullName, $"{internalVideo.Id}.json");