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); }
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); }
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); }
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 }))); }
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); }
public void UpDateRssFeed(RssFeedDto feedDto) { var rssFeedEntity = Mapper.Map <RssFeed>(feedDto); _context.RssFeed.Remove(rssFeedEntity); }
public void DeleteRssFeed(RssFeedDto feedToBeDelete) { var rssFeedEntity = Mapper.Map <RssFeed>(feedToBeDelete); _context.RssFeed.Remove(rssFeedEntity); }
public void CreateRssFeed(RssFeedDto feedToBeCreatedDto) { var rssFeedEntity = Mapper.Map <RssFeed>(feedToBeCreatedDto); _context.RssFeed.Add(rssFeedEntity); }