Esempio n. 1
0
    public static BloggerCollection LoadFromFile(string file)
    {
        BloggerCollection coll = (BloggerCollection)serializer.Deserialize(new XmlTextReader(file));

        coll.Bloggers = coll.bloggers;
        return(coll);
    }
Esempio n. 2
0
    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 ();
    }
Esempio n. 3
0
    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();
    }