예제 #1
0
        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());
        }
예제 #3
0
        /// <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());
        }
예제 #4
0
        /// <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());
        }