예제 #1
0
        private void SaveHistoryChanges(ChangesEntity changes, IEntityCollection <ReleaseEntity> releaseCollection)
        {
            var allReleases         = releaseCollection.Find(a => true);
            var collection          = m_DataContext.GetCollection <HistoryChangeEntity> ();
            var historyChanges      = collection.FirstOrDefault();
            var releasesIds         = changes.NewOnlineSeries.Select(a => a.Key);
            var seriesReleases      = allReleases.Where(a => releasesIds.Contains(a.Id));
            var releaseOnlineSeries = new Dictionary <long, int> ();

            foreach (var seriesRelease in seriesReleases)
            {
                releaseOnlineSeries.Add(seriesRelease.Id, seriesRelease.Playlist?.Count() ?? 0);
            }
            if (historyChanges == null)
            {
                historyChanges = new HistoryChangeEntity {
                    NewOnlineSeries     = changes.NewOnlineSeries ?? new Dictionary <long, int> (),
                    NewReleases         = changes.NewReleases ?? new List <long> (),
                    NewTorrents         = changes.NewTorrents ?? new Dictionary <long, int> (),
                    NewTorrentSeries    = changes.NewTorrentSeries ?? new Dictionary <long, IDictionary <long, string> > (),
                    ReleaseOnlineSeries = releaseOnlineSeries
                };
                collection.Add(historyChanges);
            }
            else
            {
                historyChanges.NewOnlineSeries     = changes.NewOnlineSeries ?? new Dictionary <long, int> ();
                historyChanges.NewReleases         = changes.NewReleases ?? new List <long> ();
                historyChanges.NewTorrents         = changes.NewTorrents ?? new Dictionary <long, int> ();
                historyChanges.NewTorrentSeries    = changes.NewTorrentSeries ?? new Dictionary <long, IDictionary <long, string> > ();
                historyChanges.ReleaseOnlineSeries = releaseOnlineSeries;
                collection.Update(historyChanges);
            }
        }
예제 #2
0
        private ChangesEntity GetChanges(IEntityCollection <ChangesEntity> changesCollection)
        {
            var changes = changesCollection.FirstOrDefault();

            if (changes == null)
            {
                changes = new ChangesEntity {
                    NewOnlineSeries  = new Dictionary <long, int> (),
                    NewReleases      = new List <long> (),
                    NewTorrents      = new Dictionary <long, int> (),
                    NewTorrentSeries = new Dictionary <long, IDictionary <long, string> > ()
                };
                changesCollection.Add(changes);
            }

            return(changes);
        }
예제 #3
0
        private void UpdateCachedRelease(Release release, ReleaseEntity releaseEntity, ChangesEntity changesEntity)
        {
            var blocked       = release.BlockedInfo?.Blocked ?? false;
            var blockedReason = release.BlockedInfo?.Reason ?? "";

            if (blocked && !releaseEntity.Blocked)
            {
                //TODO: blocked changes!!!!
            }
            releaseEntity.Blocked       = blocked;
            releaseEntity.BlockedReason = blockedReason;

            if (releaseEntity.Description != release.Description)
            {
                releaseEntity.Description = release.Description;
            }
            if (releaseEntity.Type != release.Type)
            {
                releaseEntity.Type = release.Type;
            }
            if (releaseEntity.Status != release.Status)
            {
                releaseEntity.Status = release.Status;
            }
            if (releaseEntity.Series != release.Series?.TrimEnd())
            {
                releaseEntity.Series = release.Series;
            }
            if (releaseEntity.Announce != release.Announce)
            {
                releaseEntity.Announce = release.Announce;
            }
            if (releaseEntity.Season != release.Season)
            {
                releaseEntity.Season = release.Season;
            }
            releaseEntity.Rating    = release.Favorite?.Rating ?? 0;
            releaseEntity.Title     = release.Names?.FirstOrDefault() ?? "";
            releaseEntity.Names     = release.Names.ToList();
            releaseEntity.Voices    = release.Voices.ToList();
            releaseEntity.Timestamp = release.Last;
            if (releaseEntity.Poster != release.Poster)
            {
                releaseEntity.Poster = release.Poster;
                //invalidate poster's cache
                if (m_DataContext.IsFileExists("Poster", release.Id))
                {
                    m_DataContext.DeleteFile("Poster", release.Id);
                }
            }

            if (releaseEntity.Playlist.Count() != release.Playlist.Count())
            {
                if (!changesEntity.NewOnlineSeries.ContainsKey(release.Id))
                {
                    changesEntity.NewOnlineSeries.Add(release.Id, releaseEntity.Playlist.Count());
                }
            }

            releaseEntity.Playlist = release.Playlist
                                     .Select(
                a =>
                new PlaylistItemEntity {
                Id             = a.Id,
                HD             = a.HD,
                SD             = a.SD,
                FullHD         = a.FullHd,
                Title          = a.Title,
                DownloadableHD = a.SrcHd,
                DownloadableSD = a.SrcSd
            }
                )
                                     .ToList();

            if (releaseEntity.Torrents.Count() != release.Torrents.Count())
            {
                if (!changesEntity.NewTorrents.ContainsKey(release.Id))
                {
                    changesEntity.NewTorrents.Add(release.Id, releaseEntity.Torrents.Count());
                }
            }

            for (var i = 0; i < releaseEntity.Torrents.Count(); i++)
            {
                var oldTorrent = releaseEntity.Torrents.ElementAt(i);
                var newTorrent = release.Torrents.ElementAtOrDefault(i);
                if (newTorrent == null)
                {
                    break;
                }

                if (oldTorrent.Size != newTorrent.Size)
                {
                    if (!changesEntity.NewTorrentSeries.ContainsKey(release.Id))
                    {
                        changesEntity.NewTorrentSeries.Add(release.Id, new Dictionary <long, string> ());
                    }
                    if (!changesEntity.NewTorrentSeries[release.Id].ContainsKey(oldTorrent.Id))
                    {
                        changesEntity.NewTorrentSeries[release.Id].Add(oldTorrent.Id, oldTorrent.Size.ToString() ?? "");
                    }
                }
            }

            releaseEntity.Torrents = release.Torrents
                                     .Select(
                a => new TorrentItemEntity {
                Id        = a.Id,
                Completed = a.Completed,
                Hash      = a.Hash,
                Leechers  = a.Leechers,
                Quality   = a.Quality,
                Seeders   = a.Seeders,
                Series    = a.Series,
                Size      = a.Size,
                Url       = a.Url
            }
                )
                                     .ToList();
        }