.NET(C#)でRSSフィードを受信する

アメブロのアレ関連でもありますが、海外(英語圏)のサイトをクロールして、まとめブログを作ろうかなと。

Google のクロール目当てなので、Wordpress で立てるだけで十分なので、

手順としては、

  1. 主要な英語圏のプログラム系ブログから、RSS を受信
  2. 適当にサマリを整形して、定期的にブログにアップ

を自動化させます。

英語圏のブログを集めるのは、Google のクロールに対応するためです。このブログもそうですが、英単語(コンピュータ系の用語)が入っているブログは、結構 Google からのアクセス数があります。まぁ、ロボットのアクセスがあったところで、どうということもないのですが、アメブロのアレをするためには、ロボットであってもアクセスがあるほうがいいので。

という訳で、定期的に2,000PV/日ぐらいあるサイトを作ります。

RSS で集めるときに、PHP で書いてもいいんですが、まぁ、.NET のクライアントを作ります。

.NET には、RSS フィードのクラスがあって、

System.ServiceModel.Syndication を参照設定します。

RSS 2.0/ATOM 1.0フィードを処理するには?[3.5、C#、VB]http://www.atmarkit.co.jp/fdotnet/dotnettips/753rssfeed/rssfeed.html

を参考にして、作ったのがこれ(ほとんど同じですが)。

class Program
{
    static void Main(string[] args)
    {
        if (args.Count() != 1)
        {
            Usage();
            return;
        }
        string url = args[0];

        using (XmlReader rd = XmlReader.Create(url))
        {
            SyndicationFeed feed = SyndicationFeed.Load(rd);
            Console.WriteLine(“題名: {0}”, feed.Title.Text);
            Console.WriteLine(“詳細: {0}”, feed.Description.Text);
            foreach (SyndicationItem item in feed.Items)
            {
                Console.WriteLine(“—“);
                Console.WriteLine(“件名: {0}”, item.Title.Text);
                Console.WriteLine(“日付: {0}”, item.PublishDate.ToString());
                Console.WriteLine(“内容: {0}”, item.Summary.Text);
            }
            Console.WriteLine(“—“);
        }

    }

    static void Usage()
    {
        Console.WriteLine(“ReadRSS [URL]”);
        Console.WriteLine(“URL: RSS配信のURL”);
        return;
    }
}

引数にURLを指定して、RSSフィールドを受信します。

これをバッチにするか、常駐プログラムにするかすればOKですね。RSSリーダーを作る気はないので、UIはどうでもいいのです。DBに入れるか、XML形式で保存するか、というところです。

もう一方のブログへのアップロードですが、XML-RPCを使うか、Atom Publishing を使います。どうやら、

XML-RPC.Net
http://www.xml-rpc.net/

のライブラリを使って、さっくりと WordPress にアップロードできれば、それで十分かも、と思っています。

で、

ふと思ったのですが、アップロードを自動にするのであれば、何も wordpress などを経由する必要はないんですよね。直接 HTML を吐き出して、ftp でアップロードする、バッチを書けばいいわけで…こっちのほうが私的には簡単そう。

wordpress を利用したほうが、デザイン面でテンプレートの流用ができるのですが、今回の目的は「アメブロのアレ」のためのサイトなので、人間に対するデザインは必要ありません。

まあ、電子書籍サイトの技術調査も含めて、XML-RPC.NET を使ってみますか。ちょっと思案。

 

 

カテゴリー: 開発 パーマリンク