Beispiel #1
0
        private async Task AddFeed(RssFeedDto dto)
        {
            var context = _serviceScope.ServiceProvider.GetRequiredService <ZipCastsContext>();

            context.RssFeeds.Add(dto);
            await context.SaveChangesAsync();
        }
        public async Task <MediaFileProcessingResult> Process(MediaFileInfo file, RssFeedDto feed, CancellationToken ct)
        {
            string tempDirectory = null;

            try
            {
                tempDirectory = _tempDirectoryService.Create(feed.Id.ToString());
                var alternativeFileName = Guid.NewGuid().ToString();
                var downloadService     = _fileDownloadResolver(feed.Type);

                var tempFile = await downloadService
                               .DownloadMediaFile(file.Url, tempDirectory, alternativeFileName, ct)
                               .ConfigureAwait(false);

                var fileResult = await ProcessFile(tempFile, tempDirectory, ct);

                var newEntry = new MediaFileDto
                {
                    FeedId   = feed.Id,
                    Title    = file.Name,
                    FileName = fileResult,
                    Url      = file.VideoId
                };
                _context.MediaFiles.Add(newEntry);
                await _context.SaveChangesAsync();

                return(new MediaFileSuccessResult(feed.Url, newEntry.Id));
            } catch (Exception ex)
            {
                return(new MediaFileErrorResult(feed.Url, ex));
            }
        }
        public void UpdateRssFeed(int id, RssFeedDto feedToBeUpdatedDto)
        {
            var feedDto = _rssFeedRepository.GetRssFeedPassingId(id);

            feedDto.Source         = feedToBeUpdatedDto.Source;
            feedDto.Description    = feedToBeUpdatedDto.Description;
            feedDto.DateTime       = feedToBeUpdatedDto.DateTime;
            feedDto.CreateDateTime = DateTime.Now;

            _rssFeedRepository.UpDateRssFeed(feedDto);
        }
Beispiel #4
0
        public static SyndicationFeed GetFeed(RssFeedDto feedDto, Func <int, string> itemUrlGenerator)
        {
            var feed = new SyndicationFeed(feedDto.Title, string.Empty, new Uri("SiteUrl"), "RSSUrl", DateTime.Now);

            var items = new List <SyndicationItem>();

            foreach (var item in feedDto.MediaFiles)
            {
                var url   = itemUrlGenerator(item.Id);
                var title = item.Title;
                items.Add(new SyndicationItem(title, string.Empty, new Uri(url), item.Id.ToString(), item.Created));
                // todo: add all fields
            }
            feed.Items = items;
            return(feed);
        }
Beispiel #5
0
        public async Task UpdateYoutubeFeed()
        {
            var updater = _serviceProvider.GetRequiredService <FeedUpdater>();
            var feedDto = new RssFeedDto
            {
                Title = "",
                Type  = RssFeedType.Youtube,
                Url   = "https://www.youtube.com/feeds/videos.xml?playlist_id=PLK44oJEDjePJsWIh337OO08xxUilpzLKm"
            };

            await AddFeed(feedDto);

            await updater.Update(feedDto.Id, default);

            await CheckFeed(feedDto.Id);
        }
Beispiel #6
0
        public async Task <ActionResult> AddYoutube([FromQuery] string url)
        {
            var ytFeed = await _ytFeedReader.GetFeed(url);

            string normalizedUrl = normalizeUrl(url);
            var    feedDto       = await _dbContext.RssFeeds.FirstOrDefaultAsync(f => f.Url == normalizedUrl);

            if (feedDto != null)
            {
                return(Ok(Url.Action("GetFeed", new { id = feedDto.Id })));
            }
            var feed = new RssFeedDto
            {
                Title = ytFeed.Title,
                Type  = RssFeedType.Youtube
            };

            _dbContext.RssFeeds.Add(feed);
            await _dbContext.SaveChangesAsync();

            return(Ok(Url.Action("GetFeed", new { id = feed.Id })));
        }
Beispiel #7
0
        public static RssFeedDto GetDataAndParseToDto(string url)
        {
            XmlDocument rssXmlDoc = new XmlDocument();

            // Load the RSS file from the RSS URL
            rssXmlDoc.Load(url);

            // Parse the Items in the RSS file
            XmlNodeList rssNodes = rssXmlDoc.SelectNodes("rss/channel/item");

            StringBuilder rssContent = new StringBuilder();
            RssFeedDto    rss        = new RssFeedDto();

            // Iterate through the items in the RSS file
            foreach (XmlNode rssNode in rssNodes)
            {
                XmlNode rssSubNode = rssNode.SelectSingleNode("title");
                string  title      = rssSubNode != null ? rssSubNode.InnerText : "";
                rss.Header = title;

                rssSubNode = rssNode.SelectSingleNode("link");
                string link = rssSubNode != null ? rssSubNode.InnerText : "";
                rss.Source = link;

                rssSubNode = rssNode.SelectSingleNode("description");
                string description = rssSubNode != null ? rssSubNode.InnerText : "";
                rss.Description = description;

                rssSubNode = rssNode.SelectSingleNode("pubDate");
                string date = rssSubNode != null ? rssSubNode.InnerText : "";
                rss.DateTime = Convert.ToDateTime(date);

                rss.CreateDateTime = DateTime.Now;
                rssContent.Append("<a href='" + link + "'>" + title + "</a><br>" + description);
            }
            return(rss);
        }
 public void CreateRssFeed(RssFeedDto feedToBeCreatedDto)
 {
     _rssFeedRepository.CreateRssFeed(feedToBeCreatedDto);
 }
Beispiel #9
0
        public void UpDateRssFeed(RssFeedDto feedDto)
        {
            var rssFeedEntity = Mapper.Map <RssFeed>(feedDto);

            _context.RssFeed.Remove(rssFeedEntity);
        }
Beispiel #10
0
        public void DeleteRssFeed(RssFeedDto feedToBeDelete)
        {
            var rssFeedEntity = Mapper.Map <RssFeed>(feedToBeDelete);

            _context.RssFeed.Remove(rssFeedEntity);
        }
Beispiel #11
0
        public void CreateRssFeed(RssFeedDto feedToBeCreatedDto)
        {
            var rssFeedEntity = Mapper.Map <RssFeed>(feedToBeCreatedDto);

            _context.RssFeed.Add(rssFeedEntity);
        }