private async Task PrepareUserFeeds(FeedItemResponse item)
        {
            var seriesName    = item.GetSeriesName();
            var quality       = item.GetQuality();
            var subscriptions = await this.subscriptionDAO.LoadAsync(seriesName, quality);

            this.logger.Info($"{subscriptions.Count()} subscriptions should be updated for series '{seriesName}' with quality '{quality}'");
            foreach (var subscription in subscriptions)
            {
                var torrentId    = item.GetTorrentId();
                var link         = Extensions.GenerateTorrentLink(this.configuration.BaseUrl, subscription.UserId, torrentId);
                var userFeedItem = new FeedItem(item.Title, link, item.PublishDateParsed);
                var userFeed     = await this.feedDAO.LoadUserFeedAsync(subscription.UserId);

                if (userFeed == null)
                {
                    userFeed = new SortedSet <FeedItem>();
                }

                userFeed.Add(userFeedItem);
                await this.feedDAO.SaveUserFeedAsync(subscription.UserId, userFeed.Take(15).ToArray());

                this.logger.Info($"Feed for user {subscription.UserId} updated.");
            }
        }
        private Series ParseSeries(FeedItemResponse feedItem)
        {
            var series = new Series()
            {
                Name            = feedItem.GetSeriesName(),
                LastEpisodeName = feedItem.GetEpisodeName(),
                LastEpisode     = feedItem.PublishDateParsed,
            };

            var quality = feedItem.GetQuality();

            switch (quality)
            {
            case Quality.H1080:
                series.LastEpisodeTorrentLink1080 = feedItem.Link;
                break;

            case Quality.H720:
                series.LastEpisodeTorrentLinkMP4 = feedItem.Link;
                break;

            case Quality.SD:
                series.LastEpisodeTorrentLinkSD = feedItem.Link;
                break;
            }

            return(series);
        }
示例#3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FeedItem"/> class.
 /// </summary>
 /// <param name="item">FeedItemResponse.</param>
 /// <param name="link">Link.</param>
 public FeedItem(FeedItemResponse item, string link)
     : this(item)
 {
     this.Link = link;
 }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FeedItem"/> class.
 /// </summary>
 /// <param name="item">FeedItemResponse.</param>
 public FeedItem(FeedItemResponse item)
 {
     this.Link = item.Link;
     this.PublishDateParsed = item.PublishDateParsed;
     this.Title             = item.Title;
 }