Example #1
0
        public DmcRequest::DmcPostData GetPostData(IDomainVideoInfo videoInfo)
        {
            var data         = DmcRequest::DmcPostData.GetInstance();
            var sessionIfnfo = videoInfo.DmcInfo.SessionInfo;

            //nullチェック
            var nullList   = new List <string>();
            var type       = sessionIfnfo.GetType();
            var properties = type.GetProperties();

            foreach (var prop in properties)
            {
                string name  = prop.Name;
                object?value = prop.GetValue(sessionIfnfo);
                if (value is null)
                {
                    nullList.Add(name);
                }
            }

            if (nullList.Count > 0)
            {
                throw new InvalidOperationException($"DMCサーバーへのPOSTに必要なデータがnullです。(一覧: {string.Join(',', nullList)})");
            }

            data.Session.Recipe_id    = sessionIfnfo.RecipeId;
            data.Session.Content_id   = sessionIfnfo.ContentId;
            data.Session.Content_type = "movie";
            data.Session.Content_src_id_sets.Add(this.GetContentSrcIdSets(sessionIfnfo));
            data.Session.Timing_constraint = "unlimited";
            data.Session.Keep_method.Heartbeat.Lifetime = sessionIfnfo.HeartbeatLifetime;
            data.Session.Protocol.Name = "http";
            data.Session.Protocol.Parameters.Http_parameters.Parameters.Hls_parameters.Use_ssl             = "yes";
            data.Session.Protocol.Parameters.Http_parameters.Parameters.Hls_parameters.Use_well_known_port = "yes";
            data.Session.Protocol.Parameters.Http_parameters.Parameters.Hls_parameters.Transfer_preset     = sessionIfnfo.TransferPriset;
            data.Session.Protocol.Parameters.Http_parameters.Parameters.Hls_parameters.Segment_duration    = 6000;
            data.Session.Session_operation_auth.Session_operation_auth_by_signature.Signature = sessionIfnfo.Signature;
            data.Session.Session_operation_auth.Session_operation_auth_by_signature.Token     = sessionIfnfo.Token;
            data.Session.Content_auth.Auth_type           = sessionIfnfo.AuthType;
            data.Session.Content_auth.Service_id          = "nicovideo";
            data.Session.Content_auth.Service_user_id     = sessionIfnfo.ServiceUserId;
            data.Session.Content_auth.Content_key_timeout = sessionIfnfo.ContentKeyTimeout;
            data.Session.Client_info.Player_id            = sessionIfnfo.PlayerId;
            data.Session.Priority = sessionIfnfo.Priority;


            return(data);
        }
        /// <summary>
        /// Domainの動画情報を変換する
        /// </summary>
        /// <param name="videoInfo"></param>
        /// <returns></returns>
        public void ConvertDomainVideoInfoToListVideoInfo(IListVideoInfo info, IDomainVideoInfo domainVideoInfo)
        {
            //タイトル
            info.Title.Value = domainVideoInfo.Title;

            //ID
            info.NiconicoId.Value = domainVideoInfo.Id;

            //タグ
            info.Tags = domainVideoInfo.Tags;

            //再生回数
            info.ViewCount.Value    = domainVideoInfo.ViewCount;
            info.CommentCount.Value = domainVideoInfo.CommentCount;
            info.MylistCount.Value  = domainVideoInfo.MylistCount;
            info.LikeCount.Value    = domainVideoInfo.LikeCount;

            //チャンネル情報
            info.ChannelID.Value   = domainVideoInfo.ChannelID;
            info.ChannelName.Value = domainVideoInfo.ChannelName;

            //投稿者情報
            info.OwnerID.Value   = domainVideoInfo.OwnerID;
            info.OwnerName.Value = domainVideoInfo.Owner;

            //再生時間
            info.Duration.Value = domainVideoInfo.Duration;

            //投稿日時
            if (domainVideoInfo.DmcInfo is not null)
            {
                info.UploadedOn.Value = domainVideoInfo.DmcInfo.UploadedOn;
            }

            //サムネイル
            if (domainVideoInfo.DmcInfo is not null && domainVideoInfo.DmcInfo.ThumbInfo is not null)
            {
                info.ThumbUrl.Value = domainVideoInfo.DmcInfo.ThumbInfo.GetSpecifiedThumbnail(ThumbSize.Large);
            }
        }
Example #3
0
        /// <summary>
        /// セッション情報を取得する
        /// </summary>
        /// <param name="videoinfo"></param>
        /// <returns></returns>
        public Task <IWatchSessionInfo> GetSessionInfoAsync(IDomainVideoInfo videoinfo)
        {
            var postData = this.GetPostData(videoinfo);

            return(this.GetSessionInfoAsync(postData));
        }