public async Task DownloadSeason(Uri seasonUrl, IEpisodeProvider episodeProvider, CancellationToken cancellationToken = default) { _logger.LogInformation("Current season: " + seasonUrl); var episodes = await episodeProvider.GetShowSeasonEpisodesAsync(seasonUrl, cancellationToken); if (episodes == null || episodes.Length == 0) { _logger.LogInformation("No Episodes Available"); return; } foreach (var episode in episodes) { _logger.LogInformation("Current episode: " + episode); var downloaded = await _historyService.CheckIfDownloadedAsync(episode); if (downloaded) { _logger.LogInformation("Already downloaded. Skipped"); continue; } try { await DownloadEpisode(episode, episodeProvider, cancellationToken); _logger.LogInformation("Downnload Finished"); } catch (Exception ex) { _logger.LogError(ex, ex.Message); } } }
private async Task DownloadEpisode(Uri episodeUrl, IEpisodeProvider episodeProvider, CancellationToken cancellationToken = default) { var episodeInfo = await episodeProvider.GetEpisodeInfoAsync(episodeUrl, cancellationToken); _logger.LogInformation($"Downloading {episodeInfo.GetFileName()}"); var filename = _fileService.MakeValidFileName(episodeInfo.GetFileName()); var savePathBuilder = new SavePathBuilder(_fileService) .ForEpisode(episodeInfo) .SetBasePath(_configuration.SavePath); if (_configuration.SaveShowsInFolders) { savePathBuilder.AddShowFolder(); } if (_configuration.SaveSeasonsInFolders) { savePathBuilder.AddSeasonFolder(); } var savePath = savePathBuilder.Build(); var downloadFile = new File(filename, _configuration.DownloadExtension, _configuration.DownloadPath); var finalFile = downloadFile.SetPath(savePath); _fileService.EnsureFolderExists(_configuration.DownloadPath); _fileService.EnsureFolderExists(savePath); _downloadService.DownloadEpisode(episodeInfo.StreamUrl, downloadFile.GetFullPath(), episodeInfo.Skip, episodeInfo.Duration); _fileService.MoveFile(downloadFile.GetFullPath(), finalFile.GetFullPath(), _configuration.Overwrite); await _historyService.AddDownloadedAsync(episodeInfo.GetFileName(), episodeUrl, episodeInfo.StreamUrl); }
public async Task DownloadShow(Uri showUrl, IEpisodeProvider episodeProvider, CancellationToken cancellationToken = default) { _logger.LogInformation("Current show: " + showUrl); var seasons = await episodeProvider.GetShowSeasonsAsync(showUrl, cancellationToken); if (seasons == null || seasons.Length == 0) { _logger.LogInformation("No Seasons Available"); return; } foreach (var season in seasons) { await DownloadSeason(season, episodeProvider); } }
// // GET: /Series/ public SeriesController(ISyncProvider syncProvider, ISeriesProvider seriesProvider, IEpisodeProvider episodeProvider) { _seriesProvider = seriesProvider; _episodeProvider = episodeProvider; _syncProvider = syncProvider; }
public SyncProvider(ISeriesProvider seriesProvider, IEpisodeProvider episodeProvider, INotificationProvider notificationProvider) { _seriesProvider = seriesProvider; _episodeProvider = episodeProvider; _notificationProvider = notificationProvider; }