public override async Task <Uri> GenerateVideoContentUrl() { if (_DmcWatchResponse == null) { return(null); } if (_DmcWatchResponse.Video.DmcInfo == null) { return(null); } VideoContent videoQuality = Video; if (Video == null) { return(null); } try { _DmcSessionResponse = await HohoemaApp.NiconicoContext.Video.GetDmcSessionResponse(_DmcWatchResponse, videoQuality); return(new Uri(_DmcSessionResponse.Data.Session.ContentUri)); } catch { return(null); } }
public override async Task <Uri> GenerateVideoContentUrl() { if (DmcWatchResponse == null) { return(null); } if (DmcWatchResponse.Video.DmcInfo == null) { return(null); } VideoContent videoQuality = Video; if (Video == null) { return(null); } try { // 直前に同一動画を見ていた場合には、動画ページに再アクセスする DmcSessionResponse clearPreviousSession = null; if (_DmcSessionResponse != null && DmcWatchEnvironment != null) { if (_DmcSessionResponse.Data.Session.RecipeId.EndsWith(RawVideoId)) { clearPreviousSession = _DmcSessionResponse; _DmcSessionResponse = null; _DmcWatchResponse = await HohoemaApp.NiconicoContext.Video.GetDmcWatchJsonAsync(RawVideoId, DmcWatchEnvironment.PlaylistToken); videoQuality = Video; } } _DmcSessionResponse = await HohoemaApp.NiconicoContext.Video.GetDmcSessionResponse(DmcWatchResponse, videoQuality); if (_DmcSessionResponse == null) { return(null); } if (clearPreviousSession != null) { await HohoemaApp.NiconicoContext.Video.DmcSessionExitHeartbeatAsync(DmcWatchResponse, clearPreviousSession); } return(new Uri(_DmcSessionResponse.Data.Session.ContentUri)); } catch { return(null); } }
private async Task OpenProgressiveMp4Async(DmcSessionResponse session) { Assert.IsTrue(HttpStatusCodeHelper.IsSuccessStatusCode(session.Meta.Status)); Debug.WriteLineIf(session.Meta.Message is not null, session.Meta.Message); Assert.IsNotNull(session.Data.Session.ContentUri); // Try open media using (var mediaSource = MediaSource.CreateFromUri(session.Data.Session.ContentUri)) { await mediaSource.OpenAsync(); } }
protected override async Task <Uri> GetVideoContentUri() { if (DmcWatchResponse == null) { return(null); } if (DmcWatchResponse.Video.DmcInfo == null) { return(null); } if (VideoContent == null) { return(null); } try { // 直前に同一動画を見ていた場合には、動画ページに再アクセスする DmcSessionResponse clearPreviousSession = null; if (_DmcSessionResponse != null) { if (_DmcSessionResponse.Data.Session.RecipeId.EndsWith(DmcWatchResponse.Video.Id)) { clearPreviousSession = _DmcSessionResponse; _DmcSessionResponse = null; DmcWatchResponse = await _Context.Video.GetDmcWatchJsonAsync(DmcWatchResponse.Video.Id, _DmcWatchData.DmcWatchEnvironment.PlaylistToken); } } _DmcSessionResponse = await _Context.Video.GetDmcSessionResponse(DmcWatchResponse, VideoContent); if (_DmcSessionResponse == null) { return(null); } if (clearPreviousSession != null) { await _Context.Video.DmcSessionExitHeartbeatAsync(DmcWatchResponse, clearPreviousSession); } return(new Uri(_DmcSessionResponse.Data.Session.ContentUri)); } catch { return(null); } }
private async Task OpenHlsAsync(DmcSessionResponse session) { Assert.IsTrue(HttpStatusCodeHelper.IsSuccessStatusCode(session.Meta.Status)); Debug.WriteLineIf(session.Meta.Message is not null, session.Meta.Message); Assert.IsNotNull(session.Data.Session.ContentUri); Assert.AreEqual("mpeg2ts", session.Data.Session.Protocol.Parameters.HttpParameters.Parameters.HlsParameters.MediaSegmentFormat); // Try open media var ams = await AdaptiveMediaSource.CreateFromUriAsync(session.Data.Session.ContentUri, _context.HttpClient); Assert.AreEqual(ams.Status, AdaptiveMediaSourceCreationStatus.Success); using (var mediaSource = MediaSource.CreateFromAdaptiveMediaSource(ams.MediaSource)) { await mediaSource.OpenAsync(); } }
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); }