public override EventResult PerformLogin(string username, string password) { Cursor.Hide(); Application.DoEvents(); showLoading = username.Contains("SHOWLOADING"); username = username.Replace("SHOWLOADING", string.Empty); isPremium = username.Contains("PREMIUM"); username = username.Replace("PREMIUM", string.Empty); string[] userStrings = username.Split('¥'); username = userStrings[0]; string videoId = userStrings[1]; if (showLoading) { ShowLoading(); } this.username = username; this.password = password; if (!HaveCredentials) { ProcessComplete.Finished = true; ProcessComplete.Success = false; return(EventResult.Error("No login credantials")); } Url = string.Format(loginUrl, videoId); ProcessComplete.Finished = false; ProcessComplete.Success = false; return(EventResult.Complete()); }
public override Entities.EventResult BrowserDocumentComplete() { if (!_connectorSettings.disableLogging) { MessageHandler.Info("Netflix. Url: {0}, State: {1}", Url, _currentState.ToString()); } switch (_currentState) { case State.Login: { if (Url.ToLowerInvariant().Contains("/browse") && !_connectorSettings.enableIEDebug) { _currentState = State.None; return(EventResult.Error("ignore this")); } break; } case State.Playing: { if (_connectorSettings.showLoadingSpinner) { HideLoading(); } ProcessComplete.Finished = true; ProcessComplete.Success = true; break; } } return(EventResult.Complete()); }
/// <summary> /// Document loaded - see what state we're in and react accordingly /// </summary> /// <returns></returns> public override EventResult BrowserDocumentComplete() { switch (_currentState) { case State.LoggingIn: if (Url.EndsWith("nav_signin_btn")) { var jsCode = @"document.getElementById('ap_email').value = '" + _username + @"'; var r=document.getElementById('ap_signin_existing_radio'); if (r)r.checked='checked'; document.getElementById('ap_password').value = '" + _password + @"'; var fm=document.getElementById('ap_signin_form')||document.forms['signIn']; if(fm)fm.submit();"; InvokeScript(jsCode); _currentState = State.LoginResult; } break; case State.LoginResult: if (Url.Contains("yourstore/home")) { _currentState = State.None; ProcessComplete.Finished = true; ProcessComplete.Success = true; } else { return(EventResult.Error("AmazonPrimeConnector/BrowserDocumentComplete/Expected home page after log in, was actually " + Url)); } break; case State.PlayPage: _currentState = State.PlayPage1; break; case State.PlayPage1: // Retry play every 1 second(s) /* var jsPlay = "var mpOVPlay = function() { "; * jsPlay += " try {"; * jsPlay += " AMZNDetails.dvPlayer.play();"; * jsPlay += " amzn.webGlobalVideoPlayer._mainPlayer._enableFullWindowPlaybackMode();"; * jsPlay += " } catch(err) {"; * jsPlay += " setTimeout(mpOVPlay,1000);"; * jsPlay += " }"; * jsPlay += "};"; * jsPlay += "mpOVPlay();"; * * InvokeScript(jsPlay);*/ // Hide the scroll bar - can't get the webpage to do this nicely :-( /* _blankPanel.Height = Browser.Height; * _blankPanel.Width = 35; * _blankPanel.BackColor = Color.Black; * _blankPanel.Left = Browser.FindForm().Right - 35; * * // Browser.FindForm().Controls.Add(_blankPanel); * _blankPanel.BringToFront();*/ HideLoading(); ProcessComplete.Finished = true; ProcessComplete.Success = true; break; } return(EventResult.Complete()); }
/// <summary> /// Process a message from the web browser /// </summary> /// <returns></returns> public override EventResult BrowserDocumentComplete() { switch (_currentState) { case State.LoggingIn: if (Url.EndsWith("/signin/skygo")) { var jsCode = "document.getElementById('username').value = '" + _username + "';"; jsCode += "document.getElementById('password').value = '" + _password + "';"; jsCode += "document.getElementById('signinform').submit();"; InvokeScript(jsCode); _currentState = State.LoginResult; } break; case State.LoginResult: if (Url == "http://go.sky.com/") { _currentState = State.None; ProcessComplete.Finished = true; ProcessComplete.Success = true; } else { return(EventResult.Error("SkyGoGeneralConnector/ProcessMessage/Expected home page after log in, was actually " + Url)); } break; case State.PlayPage: if (Url.Contains("/content/videos")) { //Browser.Refresh(WebBrowserRefreshOption.Completely);// Need to do this for some reason _currentState = State.None; // The js code to wait for the video to appear var jsCode = "setTimeout('doMaximise()', 1000);"; jsCode += "function doMaximise() {"; jsCode += "if(document.getElementsByClassName('silverlightVodPlayerWrapper') != null) {"; jsCode += " document.getElementsByClassName('silverlightVodPlayerWrapper')[0].setAttribute('style', 'position: fixed; width: 100%; height: 100%; left: 0; top: 0; background: rgba(51,51,51,0.7); z-index: 10;');"; jsCode += "}"; jsCode += "else setTimeout('doMaximise()', 1000);"; jsCode += "}"; InvokeScript(jsCode); var startTime = DateTime.Now; _playPressThread = new Thread(new ParameterizedThreadStart(ClickPlayAfterFullScreen)); _playPressThread.Start(); ProcessComplete.Finished = true; ProcessComplete.Success = true; // Wait 15 seconds for the video to start before disabling app storage - we'll do this in a separate thread if (_disableAppStorageThread == null) { _disableAppStorageThread = new Thread(new ParameterizedThreadStart(DisableAppStorage)); _disableAppStorageThread.Start(); } Browser.FindForm().Activate(); Browser.FindForm().Focus(); } else { if (!Url.EndsWith("/content/videos")) { return(EventResult.Error("SkyGoOnDemandConnector/ProcessMessage/Expected video play page, was actually " + Url)); } } break; case State.PlayPageLiveTv: if (Url.Contains("/detachedLiveTv.do") || Url.Contains("/live/")) { // After 4 seconds we'll assume the page has loaded and will click in the top corner /*var endDate = DateTime.Now.AddSeconds(4); * while (DateTime.Now < endDate) * { * Application.DoEvents(); * System.Threading.Thread.Sleep(200); * } * * TemporaryCursorHelper.MoveMouseTo(50, 50); * Application.DoEvents(); * TemporaryCursorHelper.DoLeftMouseClick(); * Application.DoEvents();*/ // The js code to wait for the video to appear var jsCode = "setTimeout('doMaximise()', 1000);"; jsCode += "function doMaximise() {"; jsCode += "if( document.getElementById('silverlightWrapper') != null) {"; jsCode += " document.getElementById('silverlightWrapper').setAttribute('style', 'position: fixed; width: 100%; height: 100%; left: 0; top: 0; background: rgba(51,51,51,0.7); z-index: 50;');"; jsCode += "}"; jsCode += "else setTimeout('doMaximise()', 1000);"; jsCode += "}"; //InvokeScript(jsCode); _playPressThread = new Thread(new ParameterizedThreadStart(ClickFullScreen)); _playPressThread.Start(); HideLoading(); Browser.FindForm().Activate(); Browser.FindForm().Focus(); ProcessComplete.Finished = true; ProcessComplete.Success = true; } break; } return(EventResult.Complete()); }