Exemplo n.º 1
0
        static async Task Main(string[] args)
        {
            /* ===================================================================== *
            * 001 : ニコニコ動画からCookie情報を取得する方法.
            * ===================================================================== */

            // 1 - login を利用するために必要なパラメータを用意.
            #region
            string email = "";      // ニコニコログイン用メールアドレス
            string pass  = "";      // ニコニコログイン用パスワード
            #endregion
            // 2 - login の実行.
            //   - Cookie情報を取得可能.
            CookieContainer cookie001 = Nico2API.Login(email, pass);



            /* ===================================================================== *
            * 002 : ニコニコAPIを利用するためのクライアントを生成する.
            * ===================================================================== */

            // 1 - クライアント生成に必要なパラメータを用意.
            CookieContainer cookie002 = cookie001;  // ニコニコ動画のCookie情報
            int             liveId    = 314829021;  // ニコニコ生放送の番組ID

            // 2 - クライアントの生成.
            Nico2API client001 = new Nico2API(cookie002, liveId);       // [方法 A] newを使用してのインスタンス化.
            Nico2API client002 = Nico2API.Create(cookie002, liveId);    // [方法 B] Createメソッドを使用してのインスタンス化.



            /* ===================================================================== *
            * 003 : ニコニコ生放送番組情報を取得する.
            * ===================================================================== */

            // 1 - 生放送番組情報を取得.
            PlayerStatus info = client001.GetPlayerStatus();

            // 2 - 取得した情報を表示してみる.
            Console.WriteLine($"コミュニティID      : {info.CommunityID}");
            Console.WriteLine($"生放送番組ID        : {info.LiveID}");
            Console.WriteLine($"生放送番組タイトル  : {info.Title}");
            Console.WriteLine($"生放送番組概要      : {info.Description}");
            Console.WriteLine($"生放送番組閲覧者数  : {info.WatchCount}");
            Console.WriteLine($"生放送番組コメント数: {info.CommentCount}");



            /* ===================================================================== *
            * 004 : ニコニコ生放送からコメントを取得する.
            * ===================================================================== */

            await client001.ConsumeCommentAsync(
                comment =>                                         // ここにコメント取得時の操作を記述する.
            {
                int no                    = comment.Number;        // コメント投稿番号.
                string userId             = comment.UserID;        // コメント投稿ユーザID.
                string text               = comment.Text;          // コメント内容.
                bool is184                = comment.Anonymity;     // 184コメントの場合, true.
                bool isPremium            = comment.IsPremium;     // コメント投稿ユーザがプレミアム会員の場合, true.
                Nico2Color color          = comment.Color;         // コメント色.
                Nico2Size commentSize     = comment.Size;          // コメントサイズ.
                Nico2Locate commentLocate = comment.Locate;        // コメントの位置.
                long pos                  = comment.VideoPosition; // コメント投稿時間(放送開始からの経過秒).
                DateTime postedDate       = comment.PostDate;      // コメント投稿時刻.

                System.Drawing.Color sysColor = color.ToRGB();     // MiDNico2API.Windows版限定. コメント色をRGBに変換する.

                // コメントを表示してみる.
                Console.WriteLine($"[{no.ToString("000")}] {text}\t({userId})");
            });


            //await Nico2API.Create(cookie001, liveId).ConsumeCommentAsync(c=>{Console.WriteLine($"[{c.Number.ToString("000")}] {c.Text}");});


            Console.ReadKey();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            // ======================================================================================================================================
            // ニコニコにログインしてCookieを取得するサンプル
            // ======================================================================================================================================
            //var cookie = Nico2API.Login(email, pass);


            // ======================================================================================================================================
            // Google Chromeからクッキー情報を取得するサンプル
            // ======================================================================================================================================
            var table = ChromeCookieGetter.Prepare(ChromeCookieGetter.DefaultWindowsPath)       // Googole Chrome のCookie DBの場所を指定
                        .WithHostKey(".nicovideo.jp")                                           // ニコニコのCookieを取得するためのKeyを指定
                        .WithName("user_session")                                               // ニコニコのCookieの中でもSession情報が必要なので, それを取得するためのKeyを指定
                        .Do();
            var cookie = new ChromeNicoCookie(table);                                           // 取得したDB情報を元にCookieデータを生成する



            // ======================================================================================================================================
            // Mozilla FireFoxからクッキー情報を取得するサンプル
            // ======================================================================================================================================
            //var table = FireFoxCookieGetter.Prepare    (FireFoxCookieGetter.DefaultWindowsPath)   // Mozilla FireFox のCookie DBの場所を指定
            //                               .WithHostKey(".nicovideo.jp")                          // ニコニコのCookieを取得するためのKeyを指定
            //                               .WithName   ("user_session")                           // ニコニコのCookieの中でもSession情報が必要なので, それを取得するためのKeyを指定
            //                               .Do();
            //var cookie = new FireFoxNicoCookie(table);                                            // 取得したDB情報を元にCookieデータを生成する



            // ======================================================================================================================================
            // ニコニコ生放送の番組情報を取得するサンプル
            // ======================================================================================================================================
            PlayerStatus playerstatus = Nico2API.GetPlayerStatus(cookie, $"lv{_liveId}");

            // ------------------------------------------
            // パラメータ作成用の情報を取得
            string     userId      = playerstatus.User.ID;
            bool       ispremium   = playerstatus.User.IsPremium;
            IPEndPoint ipendpoint  = playerstatus.Ms.ToIPEndPoint();
            int        nico2thread = playerstatus.Ms.Thread;

            // ------------------------------------------
            // 各種APIで利用するパラメータを作成
            var user    = (userId, ispremium);                 // ユーザ情報
            var session = (ipendpoint, cookie, nico2thread);   // セッション情報



            // ======================================================================================================================================
            // 番組からコメントを取得するサンプル
            // ======================================================================================================================================
            var task = Nico2API.ConsumeComment(session,         // [必須] セッション情報
                                               comment =>       // [必須] コメント受信時の処理
            {
                var number  = comment.No;                       // コメント番号
                var userid  = comment.UserId;                   // コメント投稿者ユーザID
                var text    = comment.Text;                     // コメント内容
                var _184    = comment.Anonymity;                // 184かどうか
                var date    = comment.Date;                     // コメント投稿時刻
                var vpos    = comment.Vpos;                     // コメント投稿時間(生放送が開始してからの経過時間)
                var command = comment.CommandCode;              // コメントに設定されているコマンド(whiteやredなどの色指定等)

                // ------------------------------------------
                // ユーザ情報を取得するサンプル
                if (!_kotehan.TryGetValue(userid, out string name))
                {
                    var userinfo = Nico2API.GetUserInfo(userid);                                     // ユーザ情報を取得するAPI
                    _kotehan.Add(userid, userinfo.User.NickName);
                    name = userinfo.User.NickName;
                }

                // ------------------------------------------
                // コメントの出力
                Console.WriteLine($"{number} {name} {text} ({vpos})");
            },
                                               200,             // [オプション] 過去何件分まで遡ってコメントを取得するかの設定(default:100件)
                                               5120             // [オプション] 一度に何byte分のコメント情報を取得するかの設定(default:1024byte)
                                               );



            // ======================================================================================================================================
            // 番組にコメントを投稿するサンプル
            // ======================================================================================================================================
            var thread    = Nico2API.GetThreadInfo(session);     // 生放送の概要を取得する
            var postkey   = Nico2API.GetPostKey(cookie, thread); // コメントを投稿するためのキーを取得する
            var startdate = playerstatus.Stream.BaseTime;        // 生放送の開始時刻を取得する

            Nico2API.PostComment(session,                        // [必須]       セッション情報
                                 postkey,                        // [必須]       コメント投稿用キー値
                                 user,                           // [必須]       ユーザ情報
                                 _github,                        // [必須]       投稿するコメント内容
                                 startdate,                      // [必須]       生放送の開始時刻
                                 "red",                          // [オプション] 文字色
                                 "small",                        // [オプション] 文字サイズ
                                 "naka"                          // [オプション] 表示位置
                                 );



            // ======================================================================================================================================
            // 番組に運営者コメントを投稿するサンプル
            // ======================================================================================================================================
            Nico2API.PostCommentAsAdmin(session,       // [必須]       セッション情報
                                        _liveId,       // [必須]       生放送ID
                                        _github,       // [必須]       投稿するコメント内容
                                        true,          // [オプション] 表示を生主コメント欄に固定するかどうか(default:false)
                                        "blue2",       // [オプション] 文字色(default:white)
                                        "管理人"          // [オプション] コメントに付与するニックネーム(default:"")
                                        );

            //Nico2API.DeletePermComment(session, _liveId); // 生主コメント欄に固定しているコメントを削除する



            // ======================================================================================================================================
            // コメント取得を停止するサンプル
            // ======================================================================================================================================
            Console.ReadKey();
            Nico2API.StopComment(session.ipendpoint);

            Console.WriteLine("\n##### END #####");
            Console.ReadKey();
        }