Ejemplo n.º 1
0
        /// <summary>
        /// publishstatusの取得を開始します。
        /// </summary>
        private static void BeginGetPublishStatus(long liveId,
                                                  InternalData internalData,
                                                  AutoResetEvent ev)
        {
            WebUtil.RequestHttpAsync(
                NicoString.GetPublishStatusUrl(liveId),
                null,
                internalData.Cookie,
                (result, data) =>
            {
                try
                {
                    // publishstatusは放送主でないと取得できません。
                    var v = PublishStatus.CreateFromXml(liveId, NicoUtil.GetXml(data));

                    internalData.LiveStreamInfo.PublishStatus = v;
                }
                catch (Exception ex)
                {
                    internalData.Exception = ex;
                }

                ev.Set();
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// playerstatusの取得を開始します。
        /// </summary>
        private static void BeginGetPlayerStatus(long liveId,
                                                 InternalData internalData,
                                                 AutoResetEvent ev)
        {
            WebUtil.RequestHttpAsync(
                NicoString.GetPlayerStatusUrl(liveId),
                null,
                internalData.Cookie,
                (result, data) =>
            {
                try
                {
                    // ステータスがおかしければエラーとします。
                    var v = PlayerStatus.CreateFromXml(liveId, NicoUtil.GetXml(data));

                    internalData.LiveStreamInfo.PlayerStatus = v;
                }
                catch (Exception ex)
                {
                    internalData.Exception = ex;
                }

                ev.Set();
            });
        }
Ejemplo n.º 3
0
        /// <summary>
        /// アラート情報を作成します。
        /// </summary>
        public static AlertInfo Create()
        {
            var node = NicoUtil.GetXml(
                "http://video.nicovideo.jp/api/getalertinfo",
                null);

            if (node == null)
            {
                throw new NicoLiveException(NicoStatusCode.NetworkError);
            }

            return(new AlertInfo(node));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// ニコニコ生放送の情報を取得します。
        /// </summary>
        public static PlayerStatus Create(long liveId, CookieContainer cc)
        {
            // 生放送IDから放送情報を取得します。
            var node = NicoUtil.GetXml(
                NicoString.GetPlayerStatusUrl(liveId),
                cc);

            if (node == null)
            {
                throw new NicoLiveException(
                          NicoStatusCode.NetworkError,
                          NicoString.LiveIdString(liveId));
            }

            return(CreateFromXml(liveId, node));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// ニコニコのgetthumbinfo APIから動画情報を取得します。
        /// </summary>
        /// <remarks>
        /// 参考URL)
        /// http://dic.nicovideo.jp/a/%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E5%8B%95%E7%94%BBapi
        /// </remarks>
        public static VideoData CreateFromApi(string videoStr)
        {
            if (string.IsNullOrEmpty(videoStr))
            {
                throw new ArgumentNullException("videoStr");
            }

            var videoId = VideoUtil.GetVideoId(videoStr);

            if (string.IsNullOrEmpty(videoId))
            {
                throw new NicoVideoException(
                          $"{videoStr}: 不正な動画IDです。");
            }

            var url = string.Format(
                "http://ext.nicovideo.jp/api/getthumbinfo/{0}",
                videoId);
            var node = NicoUtil.GetXml(url, null);

            return(new VideoData(videoId, node));
        }