From 0ee2bf90f5bdd7d6d1822af9c079d518a10a1bae Mon Sep 17 00:00:00 2001 From: Adam R Grey Date: Mon, 4 Dec 2023 21:31:31 -0500 Subject: [PATCH] basically works --- Program.cs | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Program.cs b/Program.cs index fa173de..10bd3d0 100644 --- a/Program.cs +++ b/Program.cs @@ -1,11 +1,34 @@ - -namespace podcast_agent +namespace podcast_agent { + using System.Xml.Linq; + class Program { static async Task Main(string[] args) { - Console.WriteLine("hello world"); + 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()); + } + } } }