private DownloadItemModel MapToModel(DownloadReleaseEntity downloadRelease) { var release = m_Releases.FirstOrDefault(a => a.Id == downloadRelease.ReleaseId); return(new DownloadItemModel { ReleaseId = downloadRelease.ReleaseId, Order = downloadRelease.Order, Active = downloadRelease.Active && downloadRelease.Videos.Any(a => a.IsProgress), Title = release?.Title, Poster = ApiService.Current().GetUrl(release?.Poster), DownloadedHdVideos = downloadRelease.Videos.Count(a => a.IsDownloaded && a.Quality == VideoQuality.HD), AllDownloadedSize = downloadRelease.Videos.Any() ? FileHelper.GetFileSize((long)downloadRelease.Videos.Sum(a => (long)a.DownloadedSize)) : FileHelper.GetFileSize(0), DownloadedSdVideos = downloadRelease.Videos.Count(a => a.IsDownloaded && a.Quality == VideoQuality.SD), DownloadingVideos = 0, DownloadSpeed = "", NotDownloadedVideos = downloadRelease.Videos.Count(a => !a.IsDownloaded), Videos = new ObservableCollection <DownloadVideoItemModel> ( downloadRelease.Videos .OrderBy(a => a.Id) .Select( a => new DownloadVideoItemModel { Identifier = $"{a.Id}{a.Quality}", Order = a.Id, Name = $"Серия {a.Id}", DownloadedSize = FileHelper.GetFileSize(Convert.ToInt64(a.DownloadedSize)), IsDownloaded = a.IsDownloaded, Quality = GetDisplayQuality(a.Quality), IsProgress = a.IsProgress } ) .ToList() ) }); }
private DownloadReleaseVideoEntity GetNextDownloadItem(DownloadReleaseEntity downloadRelease) { return(downloadRelease.Videos .Where(a => !a.IsDownloaded) .OrderByDescending(a => a.IsProgress) .ThenBy(a => a.Id) .FirstOrDefault()); }
private DownloadItemModel MapToModel(DownloadReleaseEntity downloadRelease) { var release = m_Releases.FirstOrDefault(a => a.Id == downloadRelease.ReleaseId); return(new DownloadItemModel { ReleaseId = downloadRelease.ReleaseId, Order = downloadRelease.Order, Active = downloadRelease.Active, Title = release?.Title, Poster = ApiService.Current().GetUrl(release?.Poster), DownloadedHdVideos = downloadRelease.Videos.Count(a => a.IsDownloaded), DownloadingVideos = 0, DownloadSpeed = "", NotDownloadedVideos = downloadRelease.Videos.Count(a => !a.IsDownloaded) }); }
private void FinishHandler(DownloadReleaseEntity downloadRelease, int videoId) { var release = m_Downloads.FirstOrDefault(a => a.ReleaseId == downloadRelease.ReleaseId); if (release == null) { return; } release.CurrentDownloadVideo = downloadRelease.Videos.FirstOrDefault(a => a.IsProgress)?.Id ?? 0; release.DownloadProgress = downloadRelease.Videos.Count(a => a.IsProgress); release.DownloadedHdVideos = downloadRelease.Videos.Count(a => a.IsDownloaded && a.Quality == VideoQuality.HD); release.DownloadedSdVideos = downloadRelease.Videos.Count(a => a.IsDownloaded && a.Quality == VideoQuality.SD); release.DownloadSpeed = ""; release.NotDownloadedVideos = downloadRelease.Videos.Count(a => !a.IsDownloaded && !a.IsProgress); release.Active = downloadRelease.Active; }
/// <summary> /// Set download file. /// </summary> /// <param name="releaseId">Release identifier.</param> /// <param name="videoId">Video identifier.</param> /// <param name="quality">Quality.</param> public void AddDownloadFile(long releaseId, OnlineVideoModel videoInfo, VideoQuality quality) { var releaseItem = m_Entity.DownloadingReleases.FirstOrDefault(a => a.ReleaseId == releaseId); if (releaseItem == null) { releaseItem = new DownloadReleaseEntity { ReleaseId = releaseId, Active = true, Videos = new List <DownloadReleaseVideoEntity> { new DownloadReleaseVideoEntity { IsDownloaded = false, Quality = quality, DownloadUrl = quality == VideoQuality.HD ? videoInfo.DownloadableHD.ToString() : videoInfo.DownloadableSD.ToString(), DownloadedSize = 0, Id = videoInfo.Order } } }; var list = m_Entity.DownloadingReleases.ToList(); list.Add(releaseItem); m_Entity.DownloadingReleases = list; } else { var video = releaseItem.Videos.Where(a => a.Id == videoInfo.Order && a.Quality == quality).FirstOrDefault(); if (video == null) { video = new DownloadReleaseVideoEntity { IsDownloaded = false, Quality = quality, DownloadUrl = quality == VideoQuality.HD ? videoInfo.DownloadableHD.ToString() : videoInfo.DownloadableSD.ToString(), DownloadedSize = 0, Id = videoInfo.Order }; var videos = releaseItem.Videos.ToList(); videos.Add(video); releaseItem.Videos = videos; releaseItem.Active = true; } } m_Collection.Update(m_Entity); }
private void FinishHandler(DownloadReleaseEntity downloadRelease, int videoId, long downloaded, VideoQuality videoQuality) { var release = m_Downloads.FirstOrDefault(a => a.ReleaseId == downloadRelease.ReleaseId); if (release == null) { return; } release.CurrentDownloadVideo = downloadRelease.Videos.FirstOrDefault(a => a.IsProgress)?.Id ?? 0; release.DownloadProgress = downloadRelease.Videos.Count(a => a.IsProgress); release.DownloadedHdVideos = downloadRelease.Videos.Count(a => a.IsDownloaded && a.Quality == VideoQuality.HD); release.AllDownloadedSize = downloadRelease.Videos.Any() ? FileHelper.GetFileSize((long)downloadRelease.Videos.Sum(a => (long)a.DownloadedSize)) : FileHelper.GetFileSize(0); release.DownloadedSdVideos = downloadRelease.Videos.Count(a => a.IsDownloaded && a.Quality == VideoQuality.SD); release.DownloadSpeed = ""; release.NotDownloadedVideos = downloadRelease.Videos.Count(a => !a.IsDownloaded && !a.IsProgress); release.Active = downloadRelease.Active && downloadRelease.Videos.Any(a => a.IsProgress); var displayQuality = GetDisplayQuality(videoQuality); var video = release.Videos.Where(a => a.Order == videoId && a.Quality == displayQuality).FirstOrDefault(); if (video == null) { return; } video.IsProgress = false; video.DownloadedSize = FileHelper.GetFileSize(downloaded); video.IsDownloaded = true; if (IsFullNotification) { ObserverEvents.FireEvent( "showMessage", new MessageModel { Header = $"Скачана {video.Name} {video.Quality}", Message = $"В релизе " + release.Title } ); } }