Ejemplo n.º 1
0
        static void Main()
        {
            using var tmr = new Timer(1000);
            tmr.Elapsed  += UptimeTimer_Elapsed;
            tmr.Start();
            Console.Gradient("Stock Checker!", gradient: new[] { ConsoleColor.DarkGray, ConsoleColor.DarkBlue, }, pattern: GradientPattern.Word);

            //Console.AddStatusBar(ProgressStatusBar);
            Console.AddStatusBar(UptimeStatusBar);

            Run().Wait();

            tmr.Stop();
        }
Ejemplo n.º 2
0
        static async Task Run()
        {
            ItemNumber = null;
            while (Items.Count > 0)
            {
                ItemNumber = 0;
                foreach (var task in Items.ToArray())
                {
                    ItemNumber++;
                    UptimeTimer_Elapsed();

                    await Task.Delay(500);

                    var html = await WebScanner.HttpBrowser.GetHtmlAsync(task.FormattedUrl);

                    if (!String.IsNullOrWhiteSpace(html))
                    {
                        var has_changed = task.Process(html, out string status);
                        if (has_changed)
                        {
                            if (task.LastStatus != status)
                            {
                                task.LastStatus = status;
                                SysConsole.Beep(5000, 5000); // scare the user into knowing the item they wanted can be purchased. a few minutes late via an email can be a problem in the case of amd/nvidia cpu/gpus etc.
                                SendNotice(task.Title, $"Stock status change detected `{status}`. If this is an in stock status get on this asap to aquire your item.<br/> - " + task.FormattedUrl);
                            }
                        }

                        Console.LocalTime(ConsoleColor.DarkGray)
                        .DarkCyan($" {task.TaskCategory}")
                        .DarkGray($"> ")
                        .Write($"{task.Title} ", ConsoleColor.White)
                        .WriteLine(status, has_changed ? ConsoleColor.Green : ConsoleColor.Red);
                    }
                    else
                    {
                        Console.LocalTime(ConsoleColor.DarkGray)
                        .DarkCyan($" {task.TaskCategory}")
                        .DarkGray($"> ")
                        .Write($"{task.Title} ", ConsoleColor.White)
                        .WriteLine("Failed to fetch", ConsoleColor.Red);
                    }
                }

                await Task.Delay(1000 * 30);
            }
        }
Ejemplo n.º 3
0
        static void SendNotice(string title, string notice)
        {
            try
            {
                var fromAddress = new MailAddress("--- INSERT EMAIL TO SEND FROM ---", "Aus Stock Checker");
                var toAddress   = new MailAddress("--- INSERT EMAIL ADDRESS TO NOTIFY ---", "Customer");

                var smtp = new SmtpClient
                {
                    Host                  = "smtp.gmail.com", // INSERT YOUR HOST IF NOT GMAIL
                    Port                  = 587,              // INSERT YOUR PORT
                    EnableSsl             = true,
                    DeliveryMethod        = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = false,
                    Credentials           = new NetworkCredential(fromAddress.Address, "--- INSERT YOUR EMAIL PASSWORD TO SEND FROM ---")
                };
                using (var message = new MailMessage(fromAddress, toAddress)
                {
                    Subject = "Stock Notification: " + title,
                    Body = notice,
                    IsBodyHtml = true,
                    Priority = MailPriority.High,
                })
                {
                    message.Headers.Add("Importance", "High");
                    smtp.Send(message);
                }
            }
            catch (Exception ex)
            {
                Console.LocalTime(ConsoleColor.DarkGray)
                .DarkCyan($" ERR")
                .DarkGray($"> ")
                .WriteLine(ex, ConsoleColor.Red);

                Console.LocalTime(ConsoleColor.DarkGray)
                .DarkCyan($" ERR")
                .DarkGray($"> ")
                .WriteLine("--- ENSURE YOU UPDATE THE EMAIL INFORMATION! ---", ConsoleColor.Red);
            }
        }