namespace podcast_agent { using System.Xml.Linq; class Program { static async Task Main(string[] args) { var downloader = new HttpClient(); downloader.DefaultRequestHeaders.UserAgent.ParseAdd("wget-is-not-a-crime"); var xml = XDocument.Load("https://feeds.npr.org/500005/podcast.xml"); XNamespace ns = "http://www.itunes.com/dtds/podcast-1.0.dtd"; foreach (var item in xml.Descendants("item")) { var title = item.Element("title")?.Value; var ext=".wav"; var attachmentLink = item.Element("enclosure")?.Attribute("url")?.Value.ToString(); var probableFilename = attachmentLink.Substring(0, attachmentLink.IndexOf('?')); if(probableFilename.LastIndexOf('.') > 0) { ext = probableFilename.Substring(probableFilename.LastIndexOf('.')); } Console.WriteLine($"{title}, {attachmentLink}"); var downloadPath = title + ext; var dlResult = (await downloader.GetAsync(attachmentLink)); File.WriteAllBytes(downloadPath, await dlResult.Content.ReadAsByteArrayAsync()); } } } }