public static BloggerCollection LoadFromFile(string file) { BloggerCollection coll = (BloggerCollection)serializer.Deserialize(new XmlTextReader(file)); coll.Bloggers = coll.bloggers; return(coll); }
static void RunOnce() { if (bloggers == null || File.GetLastWriteTime (bloggersFile) > lastReadOfBloggersFile) { lastReadOfBloggersFile = File.GetLastWriteTime (bloggersFile); bloggers = BloggerCollection.LoadFromFile (bloggersFile); } disable_load = false; all = (Blogger []) bloggers.Bloggers.ToArray (typeof (Blogger)); lock (all) { next = 10; for (int i = 0; i < 10 && i < all.Length; i++) { Blogger b = all [i]; ReadDelegate d = new ReadDelegate (FeedCache.Read); d.BeginInvoke (b.Name, b.RssUrl, feed_done, b); } } wait_handle.WaitOne (300000, false); disable_load = true; for (int i = 0; i < (int) UpdateStatus.MAX; i++) { Console.WriteLine ("{0}: {1}", (UpdateStatus) i, counters [i]); } int error = counters [(int) UpdateStatus.Error]; int downloaded = counters [(int) UpdateStatus.Downloaded]; int updated = counters [(int) UpdateStatus.Updated]; if (error == 0 && downloaded == 0 && updated == 0) return; outFeed = new RssFeed (); RssChannel ch = new RssChannel (); ch.Title = "Monologue"; ch.Generator = "Monologue worker: b-diddy powered"; ch.Description = "The voices of Mono"; ch.Link = new Uri ("http://www.go-mono.com/monologue/"); ArrayList stories = new ArrayList (); DateTime minPubDate = DateTime.Now.AddDays (-14); foreach (Blogger b in bloggers.BloggersByUrl) { if (b.Channel == null) continue; foreach (RssItem i in b.Channel.Items) { if (i.PubDate == DateTime.MinValue) { b.DateError = true; } else if (i.PubDate >= minPubDate) { i.Title = b.Name + ": " + i.Title; i.PubDate = i.PubDate.ToUniversalTime (); stories.Add (i); } } } stories.Sort (new ReverseRssItemComparer ()); foreach (RssItem itm in stories) ch.Items.Add (itm); if (ch.Items.Count == 0) { Settings.Log ("No feeds to store."); return; } outFeed.Channels.Add (ch); outFeed.Write (rssOutFile); Render (); }
static void RunOnce() { if (bloggers == null || File.GetLastWriteTime(bloggersFile) > lastReadOfBloggersFile) { lastReadOfBloggersFile = File.GetLastWriteTime(bloggersFile); bloggers = BloggerCollection.LoadFromFile(bloggersFile); } disable_load = false; all = (Blogger [])bloggers.Bloggers.ToArray(typeof(Blogger)); lock (all) { next = 10; for (int i = 0; i < 10 && i < all.Length; i++) { Blogger b = all [i]; ReadDelegate d = new ReadDelegate(FeedCache.Read); d.BeginInvoke(b.Name, b.RssUrl, feed_done, b); } } wait_handle.WaitOne(300000, false); disable_load = true; for (int i = 0; i < (int)UpdateStatus.MAX; i++) { Console.WriteLine("{0}: {1}", (UpdateStatus)i, counters [i]); } int error = counters [(int)UpdateStatus.Error]; int downloaded = counters [(int)UpdateStatus.Downloaded]; int updated = counters [(int)UpdateStatus.Updated]; if (error == 0 && downloaded == 0 && updated == 0) { return; } outFeed = new RssFeed(); RssChannel ch = new RssChannel(); ch.Title = "Monologue"; ch.Generator = "Monologue worker: b-diddy powered"; ch.Description = "The voices of Mono"; ch.Link = new Uri("http://www.go-mono.com/monologue/"); ArrayList stories = new ArrayList(); DateTime minPubDate = DateTime.Now.AddDays(-14); foreach (Blogger b in bloggers.BloggersByUrl) { if (b.Channel == null) { continue; } foreach (RssItem i in b.Channel.Items) { if (i.PubDate == DateTime.MinValue) { b.DateError = true; } else if (i.PubDate >= minPubDate) { i.Title = b.Name + ": " + i.Title; i.PubDate = i.PubDate.ToUniversalTime(); stories.Add(i); } } } stories.Sort(new ReverseRssItemComparer()); foreach (RssItem itm in stories) { ch.Items.Add(itm); } if (ch.Items.Count == 0) { Settings.Log("No feeds to store."); return; } outFeed.Channels.Add(ch); outFeed.Write(rssOutFile); Render(); }