public async Task SyncAsync(string folderToUpload) { _logger.LogInformation("SyncAsync Started"); _logger.LogDebug($"Getting existing videos from devBetter API"); var allExistingVideos = await GetExistingVideosAsync(); _logger.LogDebug($"Found {allExistingVideos.Count} videos in devBetter API."); // TODO: Change this to use an async enumerable or yield return pattern var videosToUpload = GetVideos(folderToUpload, allExistingVideos); _logger.LogInformation($"Found {videosToUpload.Count} videos in {folderToUpload}."); foreach (var video in videosToUpload) { var vimeoVideo = allExistingVideos.FirstOrDefault(x => x.Name.ToLower() == video.Name.ToLower()); // TODO: Why doesn't this work with some videos like 2022-05-09 and 2022-04-08 Afternoon which are re-uploaded every time? if (vimeoVideo != null) { _logger.LogWarning($"{video.Name} already exists on vimeo."); _logger.LogInformation($"{video.Name} updating video info."); await UpdateVideoInfoAsync(video, long.Parse(vimeoVideo.Id), false); var uploadSubtitleToVideoRequest = new UploadSubtitleToVideoRequest(vimeoVideo.Id, video.Subtitle, "en"); _ = await _uploadSubtitleToVideoService.ExecuteAsync(uploadSubtitleToVideoRequest); continue; } _logger.LogInformation($"Starting Uploading {video.Name}"); // TODO: Would be good to have some progress indicator here... await UploadVideoAsync(video); } }
public async Task SyncAsync(string folderToUpload) { _logger.LogInformation("SyncAsync Started"); _logger.LogDebug($"Getting existing videos from devBetter API"); var allExistingVideos = await GetExistingVideosAsync(); _logger.LogDebug($"Found {allExistingVideos.Count} videos in devBetter API."); var videosToUpload = GetVideos(folderToUpload, allExistingVideos); _logger.LogInformation($"Found {videosToUpload.Count} videos in {folderToUpload}."); foreach (var video in videosToUpload) { var vimeoVideo = allExistingVideos.FirstOrDefault(x => x.Name.ToLower() == video.Name.ToLower()); if (vimeoVideo != null) { _logger.LogWarning($"{video.Name} already exists on vimeo."); _logger.LogInformation($"{video.Name} updating video info."); await UpdateVideoInfoAsync(video, long.Parse(vimeoVideo.Id), false); var uploadSubtitleToVideoRequest = new UploadSubtitleToVideoRequest(vimeoVideo.Id, video.Subtitle, "en"); _ = await _uploadSubtitleToVideoService.ExecuteAsync(uploadSubtitleToVideoRequest); continue; } _logger.LogInformation($"Starting Uploading {video.Name}"); // TODO: Would be good to have some progress indicator here... await UploadVideoAsync(video); } }
public async Task <IActionResult> UploadSubtitleAsync([FromForm] UploadSubtitleRequest request) { var uploadSubtitleToVideoRequest = new UploadSubtitleToVideoRequest(request.VideoId, request.Subtitle, request.Language); var response = await _uploadSubtitleToVideoService.ExecuteAsync(uploadSubtitleToVideoRequest); if (!response.Data || response.Code != System.Net.HttpStatusCode.OK) { return(NotFound($"Subtitle Not Found {request.VideoId}")); } return(Ok()); }
private async Task UploadVideoAsync(Video video) { if (string.IsNullOrEmpty(video.Description)) { _logger.LogWarning($"{video.Name} has no associated MD file(s)..."); } var request = new UploadVideoRequest(ServiceConstants.ME, video.Data, video, _configInfo.ApiLink .Replace("https://", string.Empty) .Replace("http://", string.Empty) .Replace("/", string.Empty)); request.FileData = video.Data; var response = await _uploadVideoService.ExecuteAsync(request); var videoId = response.Data; if (videoId > 0) { if (string.IsNullOrEmpty(video.Subtitle)) { _logger.LogWarning($"{video.Name} has no associated Subtitle file(s)..."); } else { var uploadSubtitleToVideoRequest = new UploadSubtitleToVideoRequest(videoId.ToString(), video.Subtitle, "en"); _ = await _uploadSubtitleToVideoService.ExecuteAsync(uploadSubtitleToVideoRequest); } _logger.LogInformation($"{video.Name} Uploaded!"); await UpdateVideoInfoAsync(video, videoId, false); } else { _logger.LogError($"{video.Name} Upload Error!"); } }