Ejemplo n.º 1
0
        private static void RunWithConfig(Config config)
        {
            string courseUrl = TUI.GetCourseUrl();

            Log.Information("Logging in...");
            Console.WriteLine(TUI.continueGlyph + "Logging in...");
            try
            {
                Extractor.InitializeDriver(config.Browser);
                Extractor.Login(config.AuthenticationToken, courseUrl).Wait();
            }
            catch (InvalidTokenException ex)
            {
                Log.Error(ex, "Failed to log in with course url : {0} and token of {1} characters", courseUrl, config.AuthenticationToken.Length);
                TUI.ShowError("The token or the course url you provided is invalid. Please make sure you entered the right token and course url");
                RunWithoutConfig();
                return;
            }
            catch (Exception e) when(e.InnerException is InvalidTokenException ex)
            {
                Log.Error(ex, "Failed to log in with course url : {0} and token of {1} characters", courseUrl, config.AuthenticationToken.Length);
                TUI.ShowError("The token or the course url you provided is invalid. Please make sure you entered the right token and course url");
                RunWithoutConfig();
                return;
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Unknown Exception");
                TUI.ShowError("Unknown Error occured - " + ex.Message);
                RunWithoutConfig();
                return;
            }
            Log.Information("Logged in successfully");
            Console.WriteLine(TUI.continueGlyph + "Logged in successfully");
            Log.Information("Intializing Course Extractor");
            Console.WriteLine(TUI.endGlyph + "Intializing Course Extractor");
            Course course = ExtractCourse(config);

            if (course is null)
            {
                RunWithConfig(config);
                return;
            }
            Log.Information("Course Extracted. Downloading...");
            Console.WriteLine();
            CourseDownloader.DownloadCourse(course, config.CourseDirectory);
        }
Ejemplo n.º 2
0
        private static void RunWithConfig(Config config)
        {
            while (true)
            {
                try
                {
                    string courseUrl = TUI.GetCourseUrl();
                    Console.WriteLine(TUI.continueGlyph + "Logging in...");
                    var extractor          = new Extractor();
                    var initializationTask = extractor.InitializeDriver(config.Browser);
                    initializationTask.Start();

                    try
                    {
                        extractor.Login(config.AuthenticationToken, courseUrl, initializationTask).Wait();
                        Console.WriteLine(TUI.continueGlyph + "Logged in successfully");
                        Console.WriteLine(TUI.endGlyph + "Intializing Course Extractor");
                        Course course = new Course();
                        int    videosCount;
                        extractor.ExtractCourseStructure(out videosCount);
                        using (pbarExtractor = new ProgressBar(videosCount, "Extracting Course Links - This will take some time", optionPbarExtractor))
                        {
                            extractor.ExtractionProgressChanged += Extractor_ExtractionProgressChanged;
                            course = extractor.ExtractCourse(config.Quality);
                        }

                        CourseDownloader.DownloadCourse(course, config.CourseDirectory);
                        return;
                    }
                    catch (InvalidTokenException)
                    {
                        TUI.ShowError("The token you supplied is invalid - Login Failed");
                        Console.WriteLine("Creating new config file");
                        RunWithoutConfig();
                        return;
                    }
                    catch (WebDriverException ex)
                    {
                        TUI.ShowError("An error occured in the driver : " + ex.Message);
                        TUI.ShowError("Error details : " + ex.StackTrace);
                        TUI.ShowError("Trying again...");
                        RunWithConfig(config);
                        return;
                    }
                    catch (Exception ex)
                    {
                        TUI.ShowError("An error occured while extracting the course data : " + ex.Message);
                        TUI.ShowError("Error details : " + ex.StackTrace);
                        TUI.ShowError("Trying again...");
                        RunWithConfig(config);
                        return;
                    }
                }
                catch (WebDriverException ex)
                {
                    TUI.ShowError("An error occured in the driver : " + ex.Message);
                    TUI.ShowError("Error details : " + ex.StackTrace);
                    TUI.ShowError("Trying again...");
                    RunWithConfig(config);
                    return;
                }
                catch (Exception ex)
                {
                    TUI.ShowError("An error occured : " + ex.Message);
                    TUI.ShowError("Error details : " + ex.StackTrace);
                    RunWithConfig(config);
                    return;
                }
            }
        }
Ejemplo n.º 3
0
        private static void RunWithoutConfig()
        {
            while (true)
            {
                try
                {
                    var     extractor          = new Extractor();
                    Browser selectedBrowser    = TUI.GetBrowser();
                    var     initializationTask = extractor.InitializeDriver(selectedBrowser);
                    initializationTask.Start();
                    string courseUrl = TUI.GetCourseUrl();

                    while (true)
                    {
                        try
                        {
                            string token               = TUI.GetLoginToken();
                            var    loginTask           = extractor.Login(token, courseUrl, initializationTask);
                            var    courseRootDirectory = TUI.GetPath();
                            var    selectedQuality     = TUI.GetQuality();
                            Console.WriteLine(TUI.continueGlyph + "Logging in...");
                            loginTask.Wait();
                            Console.WriteLine(TUI.continueGlyph + "Logged in successfully");
                            Config config = new Config
                            {
                                AuthenticationToken = token,
                                Browser             = selectedBrowser,
                                Quality             = selectedQuality,
                                CourseDirectory     = courseRootDirectory
                            };
                            File.WriteAllText("./Config.json", config.ToJson());
                            Console.WriteLine(TUI.continueGlyph + "Saved entries to config file");
                            Console.WriteLine(TUI.endGlyph + "Intializing Course Extractor...");
                            Course course = new Course();
                            extractor.ExtractCourseStructure(out int videosCount);
                            using (pbarExtractor = new ProgressBar(videosCount, "Extracting Course Links - This will take some time", optionPbarExtractor))
                            {
                                extractor.ExtractionProgressChanged += Extractor_ExtractionProgressChanged;
                                course = extractor.ExtractCourse(selectedQuality);
                            }

                            CourseDownloader.DownloadCourse(course, courseRootDirectory);
                            return;
                        }
                        catch (InvalidTokenException)
                        {
                            TUI.ShowError("The token you supplied is invalid - Login Failed");
                        }
                    }
                }



                catch (WebDriverException ex)
                {
                    TUI.ShowError("An error occured in the driver : " + ex.Message);
                    TUI.ShowError("Error details : " + ex.StackTrace);
                    TUI.ShowError("Trying again...");
                    RunWithoutConfig();
                    return;
                }
                catch (Exception ex)
                {
                    TUI.ShowError("An error occured : " + ex.Message);
                    TUI.ShowError("Error details : " + ex.StackTrace);
                    RunWithoutConfig();
                    return;
                }
            }
        }
Ejemplo n.º 4
0
        private static void RunWithoutConfig()
        {
            Browser selectedBrowser = TUI.GetBrowser();

            Extractor.InitializeDriver(selectedBrowser);
            string courseUrl           = TUI.GetCourseUrl();
            string token               = TUI.GetLoginToken();
            var    loginTask           = Extractor.Login(token, courseUrl);
            var    courseRootDirectory = TUI.GetPath();
            var    selectedQuality     = TUI.GetQuality();

            Log.Information("Logging in...");
            Console.WriteLine(TUI.continueGlyph + "Logging in...");
            try
            {
                loginTask.Wait();
            }
            catch (InvalidTokenException ex)
            {
                Log.Error(ex, "Failed to log in with course url : {0} and token of {1} characters", courseUrl, token.Length);
                TUI.ShowError("The token or the course url you provided is invalid. Please make sure you entered the right token and course url");
                RunWithoutConfig();
                return;
            }
            catch (Exception e) when(e.InnerException is InvalidTokenException ex)
            {
                Log.Error(ex, "Failed to log in with course url : {0} and token of {1} characters", courseUrl, token.Length);
                TUI.ShowError("The token or the course url you provided is invalid. Please make sure you entered the right token and course url");
                RunWithoutConfig();
                return;
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Unknown Exception");
                TUI.ShowError("Unknown Error occured - " + ex.Message);
                RunWithoutConfig();
                return;
            }

            Log.Information("Logged in successfully");
            Console.WriteLine(TUI.continueGlyph + "Logged in successfully");

            Config config = new Config
            {
                AuthenticationToken = token,
                Browser             = selectedBrowser,
                Quality             = selectedQuality,
                CourseDirectory     = courseRootDirectory
            };

            File.WriteAllText("./Config.json", config.ToJson());
            Console.WriteLine(TUI.continueGlyph + "Saved entries to config file");
            Log.Information("Saved entries to congig file. Intializing Course Extractor");
            Console.WriteLine(TUI.endGlyph + "Intializing Course Extractor");
            Course course = ExtractCourse(config);

            if (course is null)
            {
                RunWithoutConfig();
                return;
            }
            Log.Information("Course Extracted. Downloading...");
            Console.WriteLine();
            CourseDownloader.DownloadCourse(course, courseRootDirectory);
        }