public PreparePlayVideoResult(VideoId contentId, NiconicoSession niconicoSession, PreparePlayVideoFailedReason failedReason, DmcWatchApiData dmcWatchData = null) : this(contentId, niconicoSession) { AvailableQualities = ImmutableArray <NicoVideoQualityEntity> .Empty; IsSuccess = false; FailedReason = failedReason; _dmcWatchData = dmcWatchData; }
public PreparePlayVideoResult(VideoId contentId, NiconicoSession niconicoSession, NicoVideoSessionOwnershipManager ownershipManager, DmcWatchApiData dmcWatchData) : this(contentId, niconicoSession) { _ownershipManager = ownershipManager; _dmcWatchData = dmcWatchData; IsSuccess = _dmcWatchData != null; if (_dmcWatchData?.Media.Delivery is not null and var delivery) { AvailableQualities = delivery.Movie.Videos .Select(x => new NicoVideoQualityEntity(x.IsAvailable, QualityIdToNicoVideoQuality(x.Id), x.Id, (int)x.Metadata.Bitrate, (int)x.Metadata.Resolution.Width, (int)x.Metadata.Resolution.Height)) .ToImmutableArray(); }
private async Task <DmcSessionResponse> GetDmcSessionAsync() { if (_dmcWatchData?.Media == null) { return(null); } if (VideoContent == null) { return(null); } try { // 直前に同一動画を見ていた場合には、動画ページに再アクセスする DmcSessionResponse clearPreviousSession = null; if (_dmcSessionResponse != null) { if (_dmcSessionResponse.Data.Session.RecipeId.EndsWith(_dmcWatchData.Video.Id)) { clearPreviousSession = _dmcSessionResponse; _dmcSessionResponse = null; _dmcWatchData = await NiconicoSession.ToolkitContext.Video.VideoWatch.GetDmcWatchJsonAsync(_dmcWatchData.Client.WatchId, NiconicoSession.IsLoggedIn, _dmcWatchData.Client.WatchTrackId); } } _dmcSessionResponse = await NiconicoSession.ToolkitContext.Video.VideoWatch.GetDmcSessionResponseAsync(_dmcWatchData, VideoContent, null, hlsMode : false); if (_dmcSessionResponse == null) { return(null); } if (clearPreviousSession != null) { await NiconicoSession.ToolkitContext.Video.VideoWatch.DmcSessionExitHeartbeatAsync(_dmcWatchData, clearPreviousSession); } } catch { return(null); } return(_dmcSessionResponse); }
public DmcVideoStreamingSession(string qualityId, DmcWatchApiData res, NiconicoSession niconicoSession, NicoVideoSessionOwnershipManager.VideoSessionOwnership videoSessionOwnership, bool forCacheDownload = false) : base(niconicoSession, videoSessionOwnership) { _dmcWatchData = res; _forCacheDownload = forCacheDownload; QualityId = qualityId; Quality = res.ToNicoVideoQuality(qualityId); #if DEBUG Debug.WriteLine($"Id/Bitrate/Resolution/Available"); foreach (var q in _dmcWatchData.Media.Delivery.Movie.Videos) { Debug.WriteLine($"{q.Id}/{q.Metadata.Bitrate}/{q.IsAvailable}/{q.Metadata.Resolution}"); } #endif VideoContent = _dmcWatchData.Media.Delivery.Movie.Videos.FirstOrDefault(x => x.Id == qualityId); if (VideoContent != null) { Debug.WriteLine($"{VideoContent.Id}/{VideoContent.Metadata.Bitrate}/{VideoContent.IsAvailable}/w={VideoContent.Metadata.Resolution.Width} h={VideoContent.Metadata.Resolution.Height}"); } }
internal DmcVideoDetails(DmcWatchApiData dmcWatchData) { _dmcWatchRes = dmcWatchData; Tags = _dmcWatchRes.Tag.Items.Select(x => new NicoVideoTag(x.Name)).ToArray(); }