テスターですが何か?

ホビープログラマ略してHPです

Linq To XMLを使用してニコニコ動画の総合ランキング動画を取得するプログラム

with 2 comments

.NETラボ1月勉強会のビギナーズセッションを聞きながら衝動的に作ったプログラムです。あれから何も推敲していないのでところどころおかしなところがあるかもしれませんが、ちゃんとデータは取得できてコンソールに出力できているので、このままブログにアップします。

  • RSSはXML形式でレスポンスを取得します
  • LinqToXMLでの処理がイマイチ洗練されていませんが、それはご愛嬌です
  • URLをHttpUtility.UrlEncodeを使ってURLエンコードをしようとしたけど、なぜかSystem.Webが参照できない
  • 次は取得したデータをLinqToEntitiesを使ってSQLServerのテーブルに格納したい

——————-  ソースここから  —————

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Web;

namespace F14.DT31Demo.Con
{
    class Program
    {

        /// <summary>
        /// ニコニコ動画のAPIから取得したXMLをLinq to XMLを使って処理するプログラム
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {

            // ニコニコ動画総合ランキングのRSSURL
            string RankingURL = "
http://www.nicovideo.jp/ranking/?rss=2.0";

            // 動画情報取得APIURL
            string MovieAPIURL = "
http://ext.nicovideo.jp/api/getthumbinfo/";

            var rss = XDocument.Load(RankingURL);

            // ランキング上位の動画情報をAPIから取得
            var MovieURLList = from item in rss.Root.Element("channel").Elements("item")
                               select item.Element("link").Value;

            // 取得した動画数ループ
            foreach (var MovieURL in MovieURLList)
            {
                var MovieID = MovieURL.Split(‘/’).Last();
                var MovieAPIResult = XDocument.Load(MovieAPIURL + MovieID);

                var MovieInfoElement = MovieAPIResult.Root.Elements("thumb");

                // — 動画情報はこのタグで表現されている —-
                // video_id
                // title
                // description
                // watch_url

                // —— タグはこんな感じ ——–
                // <tags domain="jp">
                //    <tag category="1" lock="1">音楽</tag>
                //    <tag lock="1">アレンジ</tag>
                //    <tag lock="1">組曲『ニコニコ動画』</tag>
                //    <tag lock="1">空気の読めるWMP</tag>
                //    <tag lock="1">ニコニコオールスター</tag>
                //    <tag>しも</tag>
                //    <tag>700万再生予備軍</tag>
                //    <tag>ニコニコメドレーシリーズ</tag>
                //  </tags>

                // 動画ID、URL、タイトル、動画説明文
                Console.WriteLine("ID:         " + MovieInfoElement.Elements("video_id").First().Value);
                Console.WriteLine("URL:        " + MovieInfoElement.Elements("watch_url").First().Value);
                Console.WriteLine("Title:      " + MovieInfoElement.Elements("title").First().Value);
                Console.WriteLine("Description:" + MovieInfoElement.Elements("description").First().Value);

                // 動画に登録されているタグの情報を取得
                var TagElement = from tags in MovieInfoElement.Elements("tags")
                                 where tags.Attribute("domain").Value.Equals("jp")
                                 select tags.Elements("tag");

                // タグ一覧
                foreach (var tag in TagElement.First())
                {
                    Console.WriteLine("tag:        " + tag.Value);
                }

            }

        }
    }
}
——————-  ソースここまで  —————

Written by david9142

2011年1月26日 @ 12:27 AM

カテゴリー: DT31Demo

Tagged with , ,

コメント / トラックバック2件

Subscribe to comments with RSS.

  1. […] This post was mentioned on Twitter by LINQ Feeds, david9142. david9142 said: ブログを更新しました「Linq To XMLを使用してニコニコ動画の総合ランキング動画を取得するプログラム」 http://bit.ly/f0qz9N […]


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。