Пример #1
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log)
        {
            try
            {
                NotifyRequest notifyRequest = await req.Content.ReadAsAsync <NotifyRequest>();

                string[] pushbulletAccessTokens = Environment.GetEnvironmentVariable("PushbulletAccessTokens").Split(';');

                Parallel.ForEach(pushbulletAccessTokens, pushbulletAccessToken =>
                {
                    var pushbulletClient = new PushbulletClient(pushbulletAccessToken);
                    var result           = pushbulletClient.PushNote(new PushNoteRequest()
                    {
                        Body  = notifyRequest.message,
                        Title = notifyRequest.subject
                    });
                });

                return(req.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception e)
            {
                return(req.CreateResponse(HttpStatusCode.InternalServerError, e.Message));
            }
        }
Пример #2
0
        protected override void OnSendNotification(string title, string message, string testing)
        {
            if (!MainControl.PushBulletCheckbox.Checked)
            {
                Logger.Write("UI: Pushbullet notifications are disabled", LogLevel.Debug);
                return;
            }

            if (string.IsNullOrWhiteSpace(MainControl.PushBulletTokenTextBox.Text))
            {
                Logger.Write("UI: Pushbullet Token is missing", LogLevel.Error);
                return;
            }

            try
            {
                var client  = new PushbulletClient(MainControl.PushBulletTokenTextBox.Text);
                var request = new PushNoteRequest {
                    Body = message, Title = title
                };
                if (!string.IsNullOrWhiteSpace(MainControl.PushBulletDeviceIdTextBox.Text))
                {
                    request.DeviceIden = MainControl.PushBulletDeviceIdTextBox.Text;
                }

                var response = client.PushNote(request);

                Logger.Write($"UI: Message pushed to Pushbullet with Id {response.ReceiverIden}", LogLevel.Info);
            }
            catch (Exception ex)
            {
                Logger.Write(ex, "UI: Unable to push Pushbullet notification", LogLevel.Error);
            }
        }
        public void Send(string title, string message)
        {
            Console.WriteLine();
            Console.WriteLine("--- " + title);
            Console.WriteLine("> " + message);
            Console.WriteLine("---");

            if (!string.IsNullOrWhiteSpace(_apiKey))
            {
                var client = new PushbulletClient(_apiKey);
                var currentUserInformation = client.CurrentUsersInformation();

                if (currentUserInformation != null)
                {
                    PushNoteRequest reqeust = new PushNoteRequest()
                    {
                        Email = currentUserInformation.Email,
                        Title = title,
                        Body  = message
                    };

                    client.PushNote(reqeust);
                }
            }
        }
Пример #4
0
        public void SendNotification(Sites sites)
        {
            PushbulletClient client = new PushbulletClient("o.gPbFYLv0VHGepKmD77nJElg9FWSbGQca");

            //If you don't know your device_iden, you can always query your devices
            var devices = client.CurrentUsersDevices();

            var device = devices.Devices.Where(o => o.Iden == "ujuXuA1sqOqsjAnjr1gpPw");

            String message = "";

            for (int x = 0; x < sites.siteCount(); x++)
            {
                message = message + "Site " + sites.getSite(x).id + " has a value of: " + sites.getSite(x).price + "\n";
            }

            if (device != null)
            {
                PushNoteRequest request = new PushNoteRequest()
                {
                    DeviceIden = "ujuXuA1sqOqsjAnjr1gpPw",
                    Title      = "Value has changed",
                    Body       = message
                };
                PushResponse response = client.PushNote(request);
            }
        }
Пример #5
0
        public static void SendPushbulletMessage(string title, string message)
        {
            try
            {
                PushbulletClient client;

                User currentUserInformation;

                client = new PushbulletClient("o.7DsY57f3IS7FXOejdR8ncoIXvU3n2yF0");

                currentUserInformation = client.CurrentUsersInformation();

                if (currentUserInformation != null)
                {
                    PushNoteRequest request = new PushNoteRequest()
                    {
                        Email = currentUserInformation.Email,
                        Title = title,
                        Body  = message
                    };

                    PushResponse response = client.PushNote(request);
                }
            }
            catch (Exception)
            {
                // we ignore any pushbullet problems
            }
        }
Пример #6
0
        // PushBullet 메세지용
        public void MsgPush(string Token, string title, string Msg)
        {
            PushbulletClient Client = new PushbulletClient(Token);

            try
            {
                var current = Client.CurrentUsersInformation();

                PushbulletSharp.Models.Requests.PushNoteRequest reqeust = new PushbulletSharp.Models.Requests.PushNoteRequest()
                {
                    Email = current.Email,
                    Title = title,
                    Body  = Msg
                };

                var response = Client.PushNote(reqeust);
            }
            catch (Exception)
            {
                MessageBox.Show("MsgPush 함수 오류, 제목과 내용을 작성 하세요.");
                timer1.Stop();
            }

            timer1.Stop();
        }
        public void PushNote(string title, string body)
        {
            PushNoteRequest request = new PushNoteRequest();

            request.Title = title;
            request.Body  = body;
            Client.PushNote(request);
        }
Пример #8
0
        public override void OnExecute()
        {
            PushBullet = Context.CredentialProvider.Get <PushBulletCredential, PushbulletClient>();

            var response = PushBullet.PushNote(new PushbulletSharp.Models.Requests.PushNoteRequest()
            {
                Title = Title,
                Body  = Body
            });
        }
Пример #9
0
        private void Envianotificação(string texto)
        {
            PushbulletClient client   = new PushbulletClient("o.ijhfmbKRI8JAAAjaorTvs3n1I1oHo4qH");
            PushNoteRequest  request1 = new PushNoteRequest
            {
                DeviceIden = "ujy7mvFtukmsjE5NB4jvkO",
                Title      = texto,
                Body       = texto
            };

            PushResponse    response1 = client.PushNote(request1);
            PushNoteRequest request2  = new PushNoteRequest
            {
                DeviceIden = "ujy7mvFtukmsjBmQj6ywIS",
                Title      = texto,
                Body       = texto
            };

            PushResponse response2 = client.PushNote(request2);
        }
Пример #10
0
        private void Envianotificação(string texto)
        {
            PushbulletClient client = new PushbulletClient("o.ijhfmbKRI8JAAAjaorTvs3n1I1oHo4qH");
            //var devices = client.CurrentUsersDevices();
            //var device = devices.Devices.Where(o => o.Manufacturer == "Apple").FirstOrDefault();
            PushNoteRequest request1 = new PushNoteRequest
            {
                DeviceIden = "ujy7mvFtukmsjE5NB4jvkO",
                Title      = texto,
                Body       = texto
            };

            PushResponse response1 = client.PushNote(request1);
        }
        public void Notify(Notification notification, IEnumerable <string> deviceIds)
        {
            if (deviceIds == null)
            {
                return;
            }
            if (!deviceIds.Any())
            {
                return;
            }
            if (!IsPusbulletApiKeyValid())
            {
                return;
            }

            PushbulletClient client = new PushbulletClient(ApiKey);
            var response            = client.CurrentUsersDevices();

            List <Device> devices = new List <Device>();

            foreach (var device in response.Devices)
            {
                if (deviceIds.Any(_ => _ == device.Iden))
                {
                    devices.Add(device);
                }
            }

            foreach (var device in devices)
            {
                PushNoteRequest reqeust = new PushNoteRequest()
                {
                    DeviceIden = device.Iden,
                    Title      = notification.Title,
                    Body       = notification.Body
                };

                try {
                    client.PushNote(reqeust);
                }
                catch (Exception e) {
                    if (Debugger.IsAttached)
                    {
                        throw e;
                    }
                }
            }
        }
Пример #12
0
        public void Push(string title, string message)
        {
            var device = GetDevice();

            if (device != null)
            {
                var request = new PushNoteRequest
                {
                    DeviceIden = device.Iden,
                    Title      = title,
                    Body       = message
                };

                var response = _client.PushNote(request);
            }
        }
Пример #13
0
        public void pushNotification(string message, string pbKey)
        {
            if (pbClient == null)
            {
                pbClient = new PushbulletClient(pbKey);
            }
            if (pbClient.CurrentUsersInformation() == null)
            {
                showBalloon("Your Pushbullet key is invalid", SystemIcons.Error);
                return;
            }
            PushNoteRequest note = new PushNoteRequest {
                Title = "ALC",
                Body  = message,
            };

            pbClient.PushNote(note);
        }
Пример #14
0
        private void sendAlert(String title, String text)
        {
            PushbulletClient client = new PushbulletClient(txt_APIKey.Text);

            var currentUserInformation = client.CurrentUsersInformation();

            if (currentUserInformation != null)
            {
                PushNoteRequest reqeust = new PushNoteRequest()
                {
                    Email = currentUserInformation.Email,
                    Title = title,
                    Body  = text
                };

                txt_Log.AppendText(DateTime.Now.ToString("HH:mm:ss") + " - " + text + "\r\n");
                if (!DEBUG)
                {
                    PushResponse response = client.PushNote(reqeust);
                }
            }
        }
Пример #15
0
        private void SendPushBullet(string Message, string _Title, string API, int UserNotifyId)
        {
            ///TODO: Add Client API Keys in DB
            ///TODO: Retreive Client API Key

            // v1Tftuzx00PyhMzoOdJMMbvnrDwUCvz2ZQujvKinowKOW
            PushbulletClient client = new PushbulletClient(API);

            var currentUserInformation = client.CurrentUsersInformation();

            if (currentUserInformation != null)
            {
                PushNoteRequest reqeust = new PushNoteRequest()
                {
                    Email = currentUserInformation.Email,
                    Title = _Title,
                    Body  = Message
                };

                PushResponse response = client.PushNote(reqeust);

                LogNotification(UserNotifyId, Message);
            }
        }
Пример #16
0
        public static void SendNotification(String notification)
        {
            DrySafe.Logger.Info($"Send notification : {notification}");

            PushbulletClient client = new PushbulletClient(_apiKey);

            //If you don't know your device_iden, you can always query your devices
            var devices = client.CurrentUsersDevices();

            foreach (var device in devices.Devices.Where(d => d.Fingerprint != null))
            {
                if (device != null)
                {
                    PushNoteRequest request = new PushNoteRequest
                    {
                        DeviceIden = device.Iden,
                        Title      = "Alerte pluie",
                        Body       = notification
                    };

                    PushResponse response = client.PushNote(request);
                }
            }
        }
        public static NotifycationMessages Notify(string token)
        {
            PushbulletClient client = new PushbulletClient(token);
            var devices             = client.CurrentUsersDevices();
            var device = devices.Devices.Where(o => o.Active == true).FirstOrDefault();

            if (device != null)
            {
                PushNoteRequest reqeust = new PushNoteRequest()
                {
                    DeviceIden = device.Iden,
                    Title      = "Auto Accepter for Dota 2",
                    Body       = "YOUR GAME IS READY!!!"
                };

                PushResponse response = client.PushNote(reqeust, false);

                return(NotifycationMessages.OK);
            }
            else
            {
                return(NotifycationMessages.Has_no_device);
            }
        }
Пример #18
0
        private bool Respond(SteamID toID, SteamID userID, string message, bool room)
        {
            CheckIfDBExists(userID);
            Dictionary <ulong, DB> db = Options.NotificationOptions.DB;

            db[userID].userID = userID.ConvertToUInt64();
            db[userID].seen   = DateTime.Now;
            db[userID].name   = Bot.steamFriends.GetFriendPersonaName(userID);

            string[] query = StripCommand(message, Options.NotificationOptions.SeenCommand);
            if (query != null && query.Length == 1)
            {
                SendMessageAfterDelay(toID, "Usage: " + Options.NotificationOptions.SeenCommand + " <steamid64>", room);
                return(true);
            }
            if (query != null && query.Length == 2)
            {
                if (!db.ContainsKey(Convert.ToUInt64(query[1])) || db[Convert.ToUInt64(query[1])] == null)
                {
                    SendMessageAfterDelay(toID, "The user " + query[1] + " was not found.", room);
                    return(true);
                }
                else
                {
                    SendMessageAfterDelay(toID, string.Format("I last saw {0} on {1} at {2}", db[Convert.ToUInt64(query[1])].name, db[Convert.ToUInt64(query[1])].seen.ToShortDateString(), db[Convert.ToUInt64(query[1])].seen.ToShortTimeString()), room);
                    return(true);
                }
            }

            query = StripCommand(message, Options.NotificationOptions.APICommand);
            if (query != null && userID != toID)
            {
                SendMessageAfterDelay(toID, "This command will only work in private to protect privacy.", room);
                return(true);
            }
            else if (query != null && userID == toID && query.Length == 1)
            {
                SendMessageAfterDelay(toID, "Usage: " + Options.NotificationOptions.APICommand + " <apikey>", room);
                return(true);
            }
            else if (query != null && query.Length == 2 && userID == toID)
            {
                CheckIfDBExists(userID);
                string api = query[1];
                db[userID.ConvertToUInt64()].pb.apikey = api;
                PushbulletClient client = new PushbulletClient(api);
                PushNoteRequest  note   = new PushNoteRequest()
                {
                    Title = "Test note",
                    Body  = "This is a test. If you receive this then you have successfully registered an API key with the bot."
                };

                PushResponse response = client.PushNote(note);
                if (response == null)
                {
                    SendMessageAfterDelay(toID, "Your push failed. Most likely your API key is incorrect.", room);
                    return(true);
                }
                else
                {
                    SendMessageAfterDelay(toID, "Your push was a success.", room);
                    return(true);
                }
            }

            query = StripCommand(message, Options.NotificationOptions.FilterCommand);
            if (query != null && query.Length == 1)
            {
                SendMessageAfterDelay(toID, "Usage: " + Options.NotificationOptions.FilterCommand + "<subcommand> [query]\nAvailable sub commands: add, list, clear, delete", room);
                return(true);
            }
            else if (query != null && query.Length >= 2)
            {
                if (query[1] == "add" && query.Length >= 3)
                {
                    List <string> words = new List <string>();
                    words = db[userID].pb.filter;
                    // !filter add banshee test 1 2 3
                    for (int i = 2; i < query.Length; i++)
                    {
                        words.Add(query[i]);
                    }

                    db[userID].pb.filter = words;
                    SendMessageAfterDelay(toID, "Your filter has been successfully modified.", room);
                    return(true);
                }
                else if (query[1] == "list" && query.Length == 2)
                {
                    if (db[userID].pb.filter.Count > 0)
                    {
                        string words = string.Join(", ", db[userID].pb.filter);
                        SendMessageAfterDelay(userID, "Your filter: " + words, false);
                        return(true);
                    }
                    else
                    {
                        SendMessageAfterDelay(userID, "Your filter is empty. Use \"!filter add <words>\" to add to your filter", false);
                        return(true);
                    }
                }
                else if (query[1] == "clear" && query.Length == 2)
                {
                    db[userID].pb.filter.Clear();
                    SendMessageAfterDelay(toID, "Your filter has been cleared", room);
                    return(true);
                }
                else if (query[1] == "delete" && query.Length == 3)
                {
                    db[userID].pb.filter.Remove(query[2]);
                    SendMessageAfterDelay(toID, "The filter \"" + query[2] + "\" has been removed", room);
                    return(true);
                }
            }

            query = StripCommand(message, Options.NotificationOptions.ClearCommand);
            if (query != null)
            {
                db[userID] = null;
                SendMessageAfterDelay(toID, "Your database file has been cleared.", room);
                return(true);
            }


            foreach (DB d in db.Values)
            {
                if (d == null || d.pb == null || d.pb.filter == null || d.pb.filter.Count == 0)
                {
                    return(false);
                }
                foreach (string word in d.pb.filter)
                {
                    if (message.ToLower().Contains(word.ToLower()) && userID.ConvertToUInt64() != d.userID)
                    {
                        if (d.pb.apikey != null && d.pb.apikey != "")
                        {
                            PushbulletClient client = new PushbulletClient(d.pb.apikey);
                            PushNoteRequest  note   = new PushNoteRequest();
                            note.Title = string.Format("Steam message from {0}/{1} in {2}", db[userID.ConvertToUInt64()].name, userID.ConvertToUInt64(), toID.ConvertToUInt64());
                            note.Body  = message;
                            client.PushNote(note);
                            Log.Instance.Verbose("{0}/{1}: Sending pushbullet for {2}/{3}", Bot.username, Name, db[d.userID].name, db[d.userID].userID);
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
Пример #19
0
        public static void Notify(string messageFormat, params object[] args)
        {
            #if DEBUG
            return;
            #endif
            PushbulletClient client = new PushbulletClient(Settings.PushbulletApiKey);

            //If you don't know your device_iden, you can always query your devices
            var userDevices = client.CurrentUsersDevices();

            //search for specified device, otherwise send to all devices
            var recipientDevices = new List<PushbulletSharp.Models.Responses.Device>();

            bool isUserSpecifiedDeviceFound = false;
            if (!string.IsNullOrWhiteSpace(Settings.PushbulletDeviceName))
            {
                foreach (var device in userDevices.Devices)
                {
                    if (device.Nickname.ToLowerInvariant().Contains(Settings.PushbulletDeviceName.ToLower()))
                    {
                        recipientDevices.Add(device);
                        isUserSpecifiedDeviceFound = true;
                        break;
                    }
                }
            }

            if (!isUserSpecifiedDeviceFound)
            {
                recipientDevices.AddRange(userDevices.Devices);
            }

            foreach (var device in recipientDevices)
            {
                if (device != null)
                {
                    var request = new PushNoteRequest()
                    {
                        DeviceIden = device.Iden,
                        Title = "Notification from dlm",
                        Body = string.Format(messageFormat, args)
                    };
                    var response = client.PushNote(request);
                }
            }
        }
        private bool Respond(SteamID toID, SteamID userID, string message, bool room)
        {
            bool messageSent = false;
            CheckIfDBExists(userID);
            Dictionary<ulong, DB> db = Options.NotificationOptions.DB;

            db[userID].userID = userID.ConvertToUInt64();
            db[userID].seen = DateTime.Now;
            db[userID].name = Bot.steamFriends.GetFriendPersonaName(userID);

            string[] query = StripCommand(message, Options.NotificationOptions.SeenCommand);
            if (query != null && query.Length == 2)
            {
                if (!db.ContainsKey(Convert.ToUInt64(query[1])) || db[Convert.ToUInt64(query[1])] == null)
                {
                    SendMessageAfterDelay(toID, "The user " + query[1] + " was not found.", room);
                    messageSent = true;
                }
                else
                {
                    SendMessageAfterDelay(toID, string.Format("I last saw {0} on {1} at {2}", db[Convert.ToUInt64(query[1])].name, db[Convert.ToUInt64(query[1])].seen.ToShortDateString(), db[Convert.ToUInt64(query[1])].seen.ToShortTimeString()), room);
                    messageSent = true;
                }
            }

            query = StripCommand(message, Options.NotificationOptions.APICommand);
            if(query != null && userID != toID)
            {
                SendMessageAfterDelay(toID, "This command will only work in private to protect privacy.", room);
                messageSent = true;
            }
            else if(query != null && query.Length == 2 && userID == toID)
            {
                CheckIfDBExists(userID);
                string api = query[1];
                db[userID.ConvertToUInt64()].pb.apikey = api;
                PushbulletClient client = new PushbulletClient(api);
                PushNoteRequest note = new PushNoteRequest()
                {
                    Title = "Test note",
                    Body = "This is a test. If you receive this then you have successfully registered an API key with the bot."
                };

                PushResponse response = client.PushNote(note);
                if(response == null)
                {
                    SendMessageAfterDelay(toID, "Your push failed. Most likely your API key is incorrect.", room);
                    messageSent = true;
                }
                else
                {
                    SendMessageAfterDelay(toID, "Your push was a success.", room);
                    messageSent = true;
                }
            }

            query = StripCommand(message, Options.NotificationOptions.FilterCommand);
            if(query != null && query.Length == 1)
            {
                SendMessageAfterDelay(toID, "Available sub commands: add, list, clear, delete", room);
                messageSent = true;
            }
            else if(query != null && query.Length >= 2)
            {
                if(query[1] == "add" && query.Length >= 3)
                {

                    List<string> words = new List<string>();
                    words = db[userID].pb.filter;
                    // !filter add banshee test 1 2 3
                    for (int i = 2; i < query.Length; i++)
                    {
                        words.Add(query[i]);
                    }

                    db[userID].pb.filter = words;
                    SendMessageAfterDelay(toID, "Your filter has been successfully modified.", room);
                    messageSent = true;
                }
                else if(query[1] == "list" && query.Length == 2)
                {
                    if (db[userID].pb.filter.Count > 0)
                    {
                        string words = string.Join(", ", db[userID].pb.filter);
                        SendMessageAfterDelay(userID, "Your filter: " + words, false);
                        messageSent = true;
                    }
                    else
                    {
                        SendMessageAfterDelay(userID, "Your filter is empty. Use \"!filter add <words>\" to add to your filter", false);
                        messageSent = true;
                    }
                }
                else if(query[1] == "clear" && query.Length == 2)
                {
                    db[userID].pb.filter.Clear();
                    SendMessageAfterDelay(toID, "Your filter has been cleared", room);
                    messageSent = true;
                }
                else if(query[1] == "delete" && query.Length == 3)
                {
                    db[userID].pb.filter.Remove(query[2]);
                    SendMessageAfterDelay(toID, "The filter \"" + query[2] + "\" has been removed", room);
                    messageSent = true;
                }
            }

            query = StripCommand(message, Options.NotificationOptions.ClearCommand);
            if(query != null)
            {
                db[userID] = null;
                SendMessageAfterDelay(toID, "Your database file has been cleared.", room);
                messageSent = true;
            }

            foreach (DB d in db.Values)
            {
                if (d == null || d.pb == null || d.pb.filter == null || d.pb.filter.Count == 0)
                {
                    return false;
                }
                foreach (string word in d.pb.filter)
                {
                    if (message.ToLower().Contains(word.ToLower()) && userID.ConvertToUInt64() != d.userID)
                    {
                        if (d.pb.apikey != null && d.pb.apikey != "")
                        {
                            PushbulletClient client = new PushbulletClient(d.pb.apikey);
                            PushNoteRequest note = new PushNoteRequest();
                            note.Title = string.Format("Steam message from {0}/{1} in {2}", db[userID.ConvertToUInt64()].name, userID.ConvertToUInt64(), toID.ConvertToUInt64());
                            note.Body = message;
                            client.PushNote(note);
                            Log.Instance.Verbose("{0}/{1}: Sending pushbullet for {2}/{3}", Bot.username, Name, db[d.userID].name, db[d.userID].userID);
                            return true;
                        }
                    }
                }
            }

            return messageSent;
        }
Пример #21
0
        public async Task <bool> UpdateRound()
        {
            Form1 mainForm = (Form1)Application.OpenForms[0];


            //Run Updateround

            /*
             *
             *  1   Capture area that is located under the application
             *  2   Save Captured area as JPG to temporary location
             *  3   Run Tesseract OCR on the image
             *  4   Find relevant data
             *  -- Realm is Full <-- Can be used to find out if capture is from right location
             *  -- Position in queue: 12345 <-- Relevant data
             *  -- Estimated time: 123 min <-- Non relevant, inaccurate
             *  -- Change Realm <-- Can be used to find out if capture is from right location
             *  5   Send notification
             *
             ++ Watch for dangerous words
             ++  Disconnected
             ++  Error
             ++  WOW51900319
             ++  BLZ51901016
             ++
             ++ You have been disconnected from the server.
             ++
             */
            try
            {
                //0 Hide text elements from UI (while snipping
                mainForm.btn_autoRefresh.Visible = false;
                mainForm.txt_currPosi.Visible    = false;
                mainForm.txt_loglabel.Visible    = false;
                mainForm.label1.Visible          = false;
                mainForm.txt_speed.Visible       = false;
                mainForm.txt_etrlabel.Visible    = false;
                mainForm.Text = "";

                //1
                Point     bounds       = new Point(mainForm.Bounds.Top, mainForm.Bounds.Left);
                Rectangle canvasBounds = Screen.GetBounds(bounds);
                Graphics  graphics;


                using (Image image = new Bitmap(mainForm.Width, mainForm.Height))
                {
                    using (graphics = Graphics.FromImage(image))
                    {
                        graphics.CopyFromScreen(new Point
                                                    (mainForm.Bounds.Left, mainForm.Bounds.Top), Point.Empty, canvasBounds.Size);
                    }

                    //2
                    var bmresult = image;
                    //File.Delete(Application.StartupPath + "\\ocr.png"); --keep incase things break

                    bmresult.Save(Application.StartupPath + "\\ocr.png", System.Drawing.Imaging.ImageFormat.Png);
                    //bmresult.Dispose(); --keep incase things break
                    //graphics.Dispose(); --keep incase things break
                }


                //2 Manipulate image a bit with MagickImage

                // Read from file
                using (MagickImage image = new MagickImage(Application.StartupPath + "\\ocr.png"))
                {
                    Percentage percentage = new Percentage(ProgHelpers.threshold);

                    image.Threshold(percentage); // 50 is OK, range from 45-60 with various results. TODO: Finetuning.
                    image.Depth = 1;
                    image.Write(Application.StartupPath + "\\ocrMagick.png");
                }

                //3
                var ocrimage = new Bitmap(Application.StartupPath + "\\ocrMagick.png");
                var ocr      = new TesseractEngine(Application.StartupPath + "TessData", "eng");

                //4
                string stringresult = ocr.Process(ocrimage).GetText();



                string positiontxt = "";
                int    position    = 99999;


                ocrimage.Dispose();

                //Return hidden values
                mainForm.btn_autoRefresh.Visible = true;
                mainForm.txt_currPosi.Visible    = true;
                mainForm.txt_loglabel.Visible    = true;
                mainForm.label1.Visible          = true;
                mainForm.txt_speed.Visible       = true;
                mainForm.txt_etrlabel.Visible    = true;
                mainForm.Text = "K8 Gnomish Queuing Device";

                //4a - Assign relevant data


                //Find things that you expect to see to gauge whether data is reliable or not
                //Then check if it contains common "dangerous words
                if (stringresult.Contains("queue") | stringresult.Contains("Realm is Full") | stringresult.Contains("Position") | stringresult.Contains("Estimated"))
                {
                    //Expected input, find position of text, get next 5 letters (queue position)
                    ProgHelpers.pushtype = 1;

                    positiontxt = getBetween(stringresult, "queue:", "\n");

                    //Additional step, replace l and | as 1 (common OCR mistake)
                    //Add more obvious OCR common errors as we go
                    positiontxt = positiontxt.Replace("l", "1");
                    positiontxt = positiontxt.Replace("|", "1");
                    positiontxt = positiontxt.ToUpper().Replace("O", "0");

                    positiontxt = Regex.Replace(positiontxt, "[^0-9]", "");

                    if (Int32.TryParse(positiontxt, out position))
                    {
                        if (ProgHelpers.startingPosition == 99999)
                        {
                            ProgHelpers.startingPosition = position;
                            ProgHelpers.qpositions.Add(position);
                            ProgHelpers.qtimes.Add(DateTime.Now);
                        }

                        if (ProgHelpers.startingPosition < position)
                        {
                            //Handling for the event that the starting position has been assumed wrongly
                            //Replace Max position from the List, let the DateTime be (for now at least), it reduces accuracy a bit but it can't be helped
                            //NOTE: This skips adding to the qpositions list
                            int indexofStartingPosition = ProgHelpers.qpositions.IndexOf(ProgHelpers.startingPosition);
                            ProgHelpers.qpositions[indexofStartingPosition] = position;
                            ProgHelpers.startingPosition = position;
                        }
                        else
                        {
                            ProgHelpers.qpositions.Add(position);
                            ProgHelpers.qtimes.Add(DateTime.Now);
                        }


                        //get index of latest Datetime (we might do some scrutiny later on)
                        int indexOflatest = ProgHelpers.qtimes.IndexOf(ProgHelpers.qtimes.Max());

                        /*
                         * UNDER CONSTRUCTION ZONE: ETA CALCULATOR PART
                         */
                        //Progress
                        if (ProgHelpers.qpositions.Count > 3)
                        {
                            decimal progressed = Convert.ToDecimal(ProgHelpers.startingPosition) - Convert.ToDecimal(ProgHelpers.qpositions[indexOflatest]);
                            decimal progStatus = progressed / Convert.ToDecimal(ProgHelpers.startingPosition);

                            float etaUp = (float)progStatus;

                            //Add to ETACalc
                            ProgHelpers.etaCalc.Update(etaUp);
                            //Update ETA if possible
                            bool etaAvail = ProgHelpers.etaCalc.ETAIsAvailable;
                            if (etaAvail == true)
                            {
                                //ETA Available, get time Remaining and time of arrival

                                TimeSpan etaSpan = ProgHelpers.etaCalc.ETR;
                                ProgHelpers.etaString      = "Estimated time remaining: " + etaSpan.Hours + " Hours, " + etaSpan.Minutes + " Minutes.";
                                mainForm.txt_etrlabel.Text = ProgHelpers.etaString;
                            }
                        }

                        /*
                         * UNDER CONSTRUCTION ZONE ENDS
                         */

                        //Update label
                        DateTime nowtime = DateTime.Now;
                        TimeSpan span    = nowtime.Subtract(ProgHelpers.startingTime);

                        mainForm.txt_currPosi.Text = ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " / " + span.Hours + " H " + span.Minutes + " M " + span.Seconds + " S";

                        //Update speed to form
                        var    hoursform  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                        double passedform = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest]);
                        double speedform  = passedform / hoursform;
                        mainForm.txt_speed.Text = "Speed: " + (int)speedform + " / Hour";
                        LogWriter.LogWrite(mainForm.txt_etrlabel.Text + " | " + mainForm.txt_currPosi.Text + " | " + mainForm.txt_speed.Text + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.");
                    }
                }
                else if (stringresult.Contains("Error") | stringresult.Contains("Disconnected") | stringresult.Contains("WOW51900319") | stringresult.Contains("BLZ51901016") | stringresult.Contains("disconnected") | stringresult.Contains("You have been disconnected from the server.") | stringresult.Contains("Account Name"))
                {
                    //Expected error input, no need to parse though
                    ProgHelpers.pushtype = 2;
                }
                else
                {
                    //Unexpected input, dont parse.
                    ProgHelpers.pushtype = 3;
                }

                //5

                //
                if (ProgHelpers.pushMode == 1 | ProgHelpers.pushMode == 0)
                {
                    //Using Pushbullet, Default
                    PushbulletClient client    = new PushbulletClient(ProgHelpers.pushApi);
                    var currentUserInformation = client.CurrentUsersInformation();

                    //If error, send immediately (check warning count towards)
                    if (ProgHelpers.pushtype == 2 | ProgHelpers.pushtype == 3)
                    {
                        string bodymsg = "WARNING! Unexpected error occured! No queue status available!";

                        if (ProgHelpers.pushtype == 2)
                        {
                            bodymsg = "WARNING! You have been disconnected from the queue!!!";
                        }
                        else
                        {
                            bodymsg = "WARNING! Unexpected error occured! No queue status available!";
                        }

                        if (ProgHelpers.errorCount >= ProgHelpers.concurErrors)
                        {
                            //More than threshhold -> Run

                            if (ProgHelpers.sentErrors < ProgHelpers.maxErrors)
                            {
                                //Send only a limited amount of errors
                                if (currentUserInformation != null)
                                {
                                    PushNoteRequest request = new PushNoteRequest
                                    {
                                        Email = currentUserInformation.Email,
                                        Title = "WARN! Gnomish Queuing Device",
                                        Body  = bodymsg
                                    };

                                    PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);
                                    ProgHelpers.sentErrors++;
                                    mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Error message sent.");

                                    return(false);
                                }
                            }
                        }
                        else
                        {
                            //Add errorcount
                            ProgHelpers.errorCount++;
                        }
                    }
                    else
                    {
                        //Normal message

                        if (ProgHelpers.qpositions.Count > 0)
                        {
                            if (ProgHelpers.startingMsgsent == false)
                            {
                                string bodymsg = "Queue Watcher started, no position information yet.";

                                if (currentUserInformation != null)
                                {
                                    PushNoteRequest request = new PushNoteRequest
                                    {
                                        Email = currentUserInformation.Email,
                                        Title = "Gnomish Queuing Device",
                                        Body  = bodymsg
                                    };

                                    PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);
                                }

                                //Starting message done
                                ProgHelpers.startingMsgsent = true;
                                LogWriter.LogWrite("Push message sent.");
                            }
                            else
                            {
                                //Elapsed time
                                DateTime nowtime = DateTime.Now;
                                TimeSpan span    = nowtime.Subtract(ProgHelpers.startingTime);

                                //Sent recently? Send every 3 minutes when under 1000 in queue
                                TimeSpan sincelastsend = nowtime.Subtract(ProgHelpers.pushTime);

                                int indexOflatest = ProgHelpers.qtimes.IndexOf(ProgHelpers.qtimes.Max());

                                if (ProgHelpers.qpositions[indexOflatest] < 1000)
                                {
                                    if (sincelastsend.TotalMinutes > ProgHelpers.sendIntervalSoon)
                                    {
                                        var    hours  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                                        double passed = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest]);
                                        double speed  = passed / hours;

                                        string bodymsg = "";

                                        if (ProgHelpers.qpositions.Count < 5)
                                        {
                                            //Too little data to measure speed
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.";
                                        }
                                        else
                                        {
                                            //Give speed info
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes. | Speed: " + (int)speed + " / Hour. | " + ProgHelpers.etaString;
                                        }


                                        if (currentUserInformation != null)
                                        {
                                            PushNoteRequest request = new PushNoteRequest
                                            {
                                                Email = currentUserInformation.Email,
                                                Title = "SOON! Gnomish Queuing Device",
                                                Body  = bodymsg
                                            };

                                            PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);

                                            //Update Pushtime
                                            ProgHelpers.pushTime   = DateTime.Now;
                                            ProgHelpers.errorCount = 0; //Reset errors
                                            ProgHelpers.sentErrors = 0;

                                            LogWriter.LogWrite("Push message sent.");
                                        }
                                    }
                                }
                                else
                                {
                                    //Send status update every 15 mins
                                    if (sincelastsend.TotalMinutes > ProgHelpers.sendInterval)
                                    {
                                        var    hours  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                                        double passed = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest]);
                                        double speed  = passed / hours;

                                        string bodymsg = "";

                                        if (ProgHelpers.qpositions.Count < 5)
                                        {
                                            //Too little data to measure speed
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.";
                                        }
                                        else
                                        {
                                            //Give speed info
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes. | Speed: " + (int)speed + " / Hour. | " + ProgHelpers.etaString;
                                        }

                                        if (currentUserInformation != null)
                                        {
                                            PushNoteRequest request = new PushNoteRequest
                                            {
                                                Email = currentUserInformation.Email,
                                                Title = "Gnomish Queuing Device",
                                                Body  = bodymsg
                                            };

                                            PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);

                                            //Update Pushtime
                                            ProgHelpers.pushTime   = DateTime.Now;
                                            ProgHelpers.errorCount = 0; //Reset errors
                                            ProgHelpers.sentErrors = 0;

                                            LogWriter.LogWrite("Push message sent.");
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (ProgHelpers.startingMsgsent == false)
                            {
                                string bodymsg = "Queue Watcher started, no position information yet.";

                                if (currentUserInformation != null)
                                {
                                    PushNoteRequest request = new PushNoteRequest
                                    {
                                        Email = currentUserInformation.Email,
                                        Title = "Gnomish Queuing Device",
                                        Body  = bodymsg
                                    };

                                    PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);
                                }

                                //Starting message done
                                ProgHelpers.startingMsgsent = true;
                                LogWriter.LogWrite("Push message sent.");
                            }
                        }

                        mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Refresh complete.");
                        return(true);
                    }
                }
                if (ProgHelpers.pushMode == 2)
                {
                    //Using Pushover
                    Pushover pclient = new Pushover(ProgHelpers.pushApi);

                    //If error, send immediately (check warning count towards)
                    if (ProgHelpers.pushtype == 2 | ProgHelpers.pushtype == 3)
                    {
                        string bodymsg = "WARNING! Unexpected error occured! No queue status available!";

                        if (ProgHelpers.pushtype == 2)
                        {
                            bodymsg = "WARNING! You have been disconnected from the queue!!!";
                        }
                        else
                        {
                            bodymsg = "WARNING! Unexpected error occured! No queue status available!";
                        }

                        if (ProgHelpers.errorCount >= ProgHelpers.concurErrors)
                        {
                            if (ProgHelpers.sentErrors < ProgHelpers.maxErrors)
                            {
                                PushoverClient.PushResponse response = pclient.Push(
                                    "WARN! Gnomish Queuing Device",
                                    bodymsg,
                                    ProgHelpers.pushoverTargetkey,
                                    priority: Priority.Emergency,
                                    notificationSound: NotificationSound.Alien
                                    );

                                ProgHelpers.sentErrors++;
                                mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Error message sent.");
                                //Send only a limited amount of errors
                                LogWriter.LogWrite("Push message sent.");
                            }
                            return(false);
                        }
                        else
                        {
                            //Add errorcount
                            ProgHelpers.errorCount++;
                        }
                    }
                    else
                    {
                        //Normal message

                        if (ProgHelpers.qpositions.Count > 0)
                        {
                            if (ProgHelpers.startingMsgsent == false)
                            {
                                string bodymsg = "Queue Watcher started, no position information yet.";

                                PushoverClient.PushResponse response = pclient.Push(
                                    "Gnomish Queuing Device",
                                    bodymsg,
                                    ProgHelpers.pushoverTargetkey
                                    );

                                //Starting message done
                                ProgHelpers.startingMsgsent = true;
                                mainForm.txt_loglabel.Text  = (DateTime.Now.ToLongTimeString() + " Starting message sent.");
                                LogWriter.LogWrite("Push message sent.");
                                return(true);
                            }
                            else
                            {
                                //Elapsed time
                                DateTime nowtime = DateTime.Now;
                                TimeSpan span    = nowtime.Subtract(ProgHelpers.startingTime);

                                //Sent recently? Send every 3 minutes when under 1000 in queue
                                TimeSpan sincelastsend = nowtime.Subtract(ProgHelpers.pushTime);

                                int indexOflatest2 = ProgHelpers.qtimes.IndexOf(ProgHelpers.qtimes.Max());

                                if (ProgHelpers.qpositions[indexOflatest2] < ProgHelpers.whenPriorityMsg)
                                {
                                    if (sincelastsend.TotalMinutes > ProgHelpers.sendIntervalSoon)
                                    {
                                        var    hours  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                                        double passed = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest2]);
                                        double speed  = passed / hours;

                                        string bodymsg = "";

                                        if (ProgHelpers.qpositions.Count < 5)
                                        {
                                            //Too little data to measure speed
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest2].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.";
                                        }
                                        else
                                        {
                                            //Give speed info
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest2].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes. | Speed: " + (int)speed + " / Hour. | " + ProgHelpers.etaString;
                                        }


                                        PushoverClient.PushResponse response = pclient.Push(
                                            "SOON! Gnomish Queuing Device",
                                            bodymsg,
                                            ProgHelpers.pushoverTargetkey,
                                            priority: Priority.High,
                                            notificationSound: NotificationSound.Tugboat
                                            );

                                        //Update Pushtime
                                        ProgHelpers.pushTime = DateTime.Now;
                                        //Reset errors
                                        ProgHelpers.errorCount = 0;
                                        ProgHelpers.sentErrors = 0;

                                        mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Position updated");
                                        LogWriter.LogWrite("Push message sent.");
                                        return(true);
                                    }
                                    return(true);
                                }
                                else
                                {
                                    //Send status update every 15 mins
                                    if (sincelastsend.TotalMinutes > ProgHelpers.sendInterval)
                                    {
                                        var    hours  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                                        double passed = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest2]);
                                        double speed  = passed / hours;

                                        string bodymsg = "";

                                        if (ProgHelpers.qpositions.Count < 5)
                                        {
                                            //Too little data to measure speed
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest2].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.";
                                        }
                                        else
                                        {
                                            //Give speed info
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest2].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes. | Speed: " + (int)speed + " / Hour. | " + ProgHelpers.etaString;
                                        }



                                        PushoverClient.PushResponse response = pclient.Push(
                                            "Gnomish Queuing Device",
                                            bodymsg,
                                            ProgHelpers.pushoverTargetkey
                                            );

                                        //Update Pushtime
                                        ProgHelpers.pushTime = DateTime.Now;
                                        //Reset errors
                                        ProgHelpers.errorCount = 0;
                                        ProgHelpers.sentErrors = 0;

                                        mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Position updated");
                                        LogWriter.LogWrite("Push message sent.");
                                        return(true);
                                    }
                                    return(true);
                                }
                            }
                        }
                        else
                        {
                            if (ProgHelpers.startingMsgsent == false)
                            {
                                string bodymsg = "Queue Watcher started, no position information yet.";

                                PushoverClient.PushResponse response = pclient.Push(
                                    "Gnomish Queuing Device",
                                    bodymsg,
                                    ProgHelpers.pushoverTargetkey
                                    );

                                //Starting message done
                                ProgHelpers.startingMsgsent = true;
                                LogWriter.LogWrite("Push message sent.");
                            }
                        }

                        //Update speed to form
                        int    indexOflatest = ProgHelpers.qtimes.IndexOf(ProgHelpers.qtimes.Max());
                        var    hoursform     = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                        double passedform    = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest]);
                        double speedform     = passedform / hoursform;
                        mainForm.txt_speed.Text = "Speed: " + (int)speedform + " / Hour";

                        mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Refresh complete.");
                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
                //Disable autorefresh while updating API

                mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Something went wrong...");
                LogWriter.LogWrite("Something went wrong...");

                //ConsoleLog.AppendText(DateTime.Now.ToLongTimeString() + " Something went wrong...");
                //logform.ConsoleLog.AppendText(Environment.NewLine);

                return(false);
            }
            return(true);
        }
Пример #22
0
        private void SendPushBullet(string Message, string _Title, string API, int UserNotifyId)
        {
            ///TODO: Add Client API Keys in DB
            ///TODO: Retreive Client API Key

            // v1Tftuzx00PyhMzoOdJMMbvnrDwUCvz2ZQujvKinowKOW
            PushbulletClient client = new PushbulletClient(API);

            var currentUserInformation = client.CurrentUsersInformation();

            if (currentUserInformation != null)
            {
                PushNoteRequest reqeust = new PushNoteRequest()
                {
                    Email = currentUserInformation.Email,
                    Title = _Title,
                    Body = Message
                };

                PushResponse response = client.PushNote(reqeust);

                LogNotification(UserNotifyId, Message);
            }
        }
Пример #23
0
        //static int reneScore = 0;

        static void Main(string[] args)
        {
            Console.Title = "Deathlist " + year;
            //dlInit();                               //Befüllen der Link-Liste

            //Befüllen der Deathlists
            emil   = new int[] { 0, 1, 2, 12, 13, 17, 19, 42, 55, 57, 60, 62, 78, 79, 91, 93, 96, 97, 103, 108, 111, 120, 125, 126, 127, 135, 136, 138, 139, 142 };
            fabian = new int[] { 0, 2, 3, 18, 25, 31, 35, 45, 46, 47, 60, 62, 69, 84, 90, 92, 96, 97, 103, 107, 116, 117, 120, 120, 124, 125, 126, 127, 138, 139 };
            jasi   = new int[] { 6, 8, 9, 13, 16, 26, 29, 30, 32, 34, 36, 38, 48, 52, 53, 80, 85, 86, 87, 88, 89, 94, 97, 98, 112, 120, 123, 136, 138, 146 };
            manu   = new int[] { 3, 7, 10, 26, 34, 36, 37, 38, 39, 48, 64, 67, 70, 71, 79, 85, 86, 89, 97, 98, 99, 100, 103, 115, 118, 121, 124, 129, 137, 143 };
            michi  = new int[] { 19, 21, 26, 28, 33, 34, 44, 48, 58, 64, 72, 73, 86, 88, 89, 95, 97, 102, 103, 104, 106, 118, 119, 122, 132, 136, 137, 138, 139, 145 };
            //rene        = new int[] { 4, 13, 21, 23, 28, 36, 44, 49, 52, 55, 57, 58, 59, 63, 65, 72, 78, 87, 87, 96, 103, 105, 109, 118, 119, 120, 121, 133, 139, 146 };
            valentin = new int[] { 6, 13, 14, 19, 24, 27, 29, 43, 50, 59, 66, 67, 77, 83, 85, 87, 88, 98, 101, 105, 38, 111, 112, 128, 131, 134, 141, 144, 147, 148 };
            miri     = new int[] { 11, 16, 22, 23, 26, 33, 36, 48, 49, 52, 54, 54, 56, 63, 67, 74, 76, 81, 82, 85, 89, 107, 109, 110, 112, 113, 123, 144, 146, 148 };
            volker   = new int[] { 4, 5, 13, 15, 20, 33, 35, 40, 41, 46, 51, 60, 61, 65, 68, 75, 88, 97, 103, 107, 114, 117, 126, 127, 130, 133, 136, 138, 140, 148 };


            for (int i = 0; i < d.Length; i++)                                                                          //Jeden Link im Array durchgehen
            {
                string urlAddress = d[i];                                                                               //und die jeweilige URL verwenden
                string data       = "-";

                HttpWebRequest  request  = (HttpWebRequest)WebRequest.Create(urlAddress);                               //HTTP Anfrage
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();                                      //HTTP Antwort

                if (response.StatusCode == HttpStatusCode.OK)                                                           //Wenn die Antwort ohne Fehler ankommt (Code: 200) dann weitermachen
                {
                    Stream       receiveStream = response.GetResponseStream();                                          //Stream um den Text der Webseite verwenden zu können
                    StreamReader readStream    = null;

                    if (response.CharacterSet == null)
                    {
                        readStream = new StreamReader(receiveStream);
                        Console.WriteLine("");
                    }
                    else
                    {
                        readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
                        //Console.WriteLine("");
                    }

                    data = readStream.ReadToEnd();                                                                      //String data beinhaltet den Quellcode

                    if (data.Contains(year + " deaths"))                                                                //Abfrage ob "2021 deaths" in den Categories vorkommt (engl. Wiki)
                    {
                        dl.Add(i);                                                                                      //In die Todes-Liste hinzufügen
                        string s = d[i].Substring(30).Replace("_", " ");                                                //Vorbereitung für Console-Output
                        Console.WriteLine(i + " - " + s);                                                               //Console-Output
                    }
                    else if (data.Contains("Gestorben " + year))                                                        //Abfrage ob "Gestorben 2021" in den Categories vorkommt (deu. Wiki)
                    {
                        dl.Add(i);                                                                                      //Das gleiche in Deutsch
                        string s = d[i].Substring(30).Replace("_", " ");                                                //
                        Console.WriteLine(i + " - " + s);                                                               //
                    }                                                                                                   //

                    response.Close();                                                                                   //Die Streams müssen geschlossen werden.
                    readStream.Close();
                }
            }

            //Console.WriteLine(data);
            //Console.ReadKey();
            //System.Environment.Exit(0);
            Console.WriteLine();


            //Nachdem alle Einträge der Link-Liste durch sind wird die Liste der Verstorbenen mit den Deathlists der Teilnehmer verglichen.
            //Dazu dient ein Unterprogramm "fastSearch" selbstgeschrieben als Platzhalter. (unten weiter zu finden)
            emilScore   = fastSearch(dl, emil);
            fabianScore = fastSearch(dl, fabian);
            jasiScore   = fastSearch(dl, jasi);
            manuScore   = fastSearch(dl, manu);
            michiScore  = fastSearch(dl, michi);
            //reneScore = fastSearch(dl, rene);
            valentinScore = fastSearch(dl, valentin);
            miriScore     = fastSearch(dl, miri);
            volkerScore   = fastSearch(dl, volker);


            //Console-Output mit allen Teilnehmern und deren Punkten
            Console.WriteLine("Emil: " + emilScore);
            Console.WriteLine("Fabian: " + fabianScore);
            Console.WriteLine("Jasi: " + jasiScore);
            Console.WriteLine("Manu: " + manuScore);
            Console.WriteLine("Michi: " + michiScore);
            //Console.WriteLine("Rene: " + reneScore);
            Console.WriteLine("Valentin: " + valentinScore);
            Console.WriteLine("Miri: " + miriScore);
            Console.WriteLine("Volker: " + volkerScore);


            string[] pD = { };
            try {
                pD = File.ReadAllLines(AppDomain.CurrentDomain.BaseDirectory + "pD.txt");                          //Einlesen des Text-Files mit den Verstorbenen, die bereits vor der Abfrage abgedankt haben
            }catch (FileNotFoundException e) {
                File.WriteAllLines(AppDomain.CurrentDomain.BaseDirectory + "pD.txt", pD);
            }
            string[] caster = new string[dl.Count];                                                                     //Umwandeln der ArrayList zu String Array
            for (int i = 0; i < dl.Count; i++)                                                                          //
            {
                caster[i] = (dl[i] + "");                                                                               //
                //Console.WriteLine(i+" "+dl[i]);                                                                       //
            }                                                                                                           //


            if (pD.SequenceEqual(caster))                                                                               //Besteht ein Unterschied zwischen der letzten Abfrage und der gerade abgefragten Liste?
            {
                Console.WriteLine("Meh");                                                                               //Nein: Kein weiterer ist verstorben
            }
            else
            {
                string oDiff = "";                                                                                      //Ja:
                foreach (string diff in caster)                                                                         //Wer mit welchem Index
                {
                    if (!pD.Contains(diff))                                                                             //
                    {
                        oDiff = diff;                                                                                   //
                    }                                                                                                   //
                }                                                                                                       //

                Console.WriteLine("Heureka");

                String whoPointed = "";                                                                                 //String wird der Nachricht für Pushbullet angefügt und zeigt, wer gepunktet hat

                whoPointed += pointSearch(Int32.Parse(oDiff), emil, "Emil ");                                           //Ist der Index des neuverstorbenen in der jeweiligen Liste?
                whoPointed += pointSearch(Int32.Parse(oDiff), fabian, "Fabian ");
                whoPointed += pointSearch(Int32.Parse(oDiff), jasi, "Jasi ");
                whoPointed += pointSearch(Int32.Parse(oDiff), manu, "Manu ");
                whoPointed += pointSearch(Int32.Parse(oDiff), michi, "Michi ");
                //whoPointed += pointSearch(Int32.Parse(oDiff), rene, "Rene ");
                whoPointed += pointSearch(Int32.Parse(oDiff), valentin, "Valentin ");
                whoPointed += pointSearch(Int32.Parse(oDiff), miri, "Miri ");
                whoPointed += pointSearch(Int32.Parse(oDiff), volker, "Volker ");


                //Client erstellen
                PushbulletClient client = new PushbulletClient("o.xbEidwElVYGVSDK5F1uX0r1ZyVe5ovSt");

                //Informationen über unseren Account abholen
                var currentUserInformation = client.CurrentUsersInformation();

                //Prüfen, ob Accountinfos geladen wurden
                if (currentUserInformation != null)
                {
                    //Anfrage erzeugen
                    PushNoteRequest request = new PushNoteRequest {
                        Email = currentUserInformation.Email,
                        Title = "Deathlist " + year,
                        Body  = "RIP " + d[Int32.Parse(oDiff)].Substring(30).Replace("_", " ") + "\n" + whoPointed
                    };

                    PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);
                }

                Pushover pclient = new Pushover("asf1vbpvec3x6h288p46nu8xj2i6xb");
                PushoverClient.PushResponse responsePO = pclient.Push(
                    "Deathlist " + year,
                    "RIP " + d[Int32.Parse(oDiff)].Substring(30).Replace("_", " ") + "\n" + whoPointed,
                    "g3kf5dfnarwrkemmf35vimf2hxcyyz"
                    );
            }

            File.WriteAllLines(AppDomain.CurrentDomain.BaseDirectory + "pD.txt", caster);                               //Neue Liste in die Datei zurückschreiben
        }