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); } }
/// <summary> /// セッション情報を取得する /// </summary> /// <param name="videoinfo"></param> /// <returns></returns> public Task <IWatchSessionInfo> GetSessionInfoAsync(IDomainVideoInfo videoinfo) { var postData = this.GetPostData(videoinfo); return(this.GetSessionInfoAsync(postData)); }