コード例 #1
0
        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()
                    )
            });
        }
コード例 #2
0
 private DownloadReleaseVideoEntity GetNextDownloadItem(DownloadReleaseEntity downloadRelease)
 {
     return(downloadRelease.Videos
            .Where(a => !a.IsDownloaded)
            .OrderByDescending(a => a.IsProgress)
            .ThenBy(a => a.Id)
            .FirstOrDefault());
 }
コード例 #3
0
        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)
            });
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        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
                }
                    );
            }
        }