public static async Task <List <KworkRecord> > Parse(ChromiumWebBrowser wv)
        {
            var res     = new List <KworkRecord>();
            var strList = (await GetFromPage(wv)).Split(new string[] { "^^^" }, StringSplitOptions.None);

            for (int i = 0; i < strList.Length - 1; i++)
            {
                try
                {
                    var recordArr = strList[i].Split(new string[] { "###" }, StringSplitOptions.None);
                    var newRecord = new KworkRecord()
                    {
                        Title     = recordArr[0],
                        Text      = recordArr[1],
                        Info      = recordArr[2],
                        ParseDate = DateTime.Now
                    };
                    if (newRecord.Text.EndsWith("Скрыть"))
                    {
                        newRecord.Text = newRecord.Text.Remove(newRecord.Text.Length - 6);
                    }
                    newRecord.Text = newRecord.Text.Trim();
                    res.Add(newRecord);

                    WindowLogger.Log($"Parsed record *{newRecord.Title}*.");
                }
                catch (Exception ex)
                {
                    WindowLogger.Log("Error while parsing record.");
                    WindowLogger.Log(ex.ToString());
                }
            }
            return(res);
        }
        public MainWindow()
        {
            InitializeComponent();
            Inst = this;
            try
            {
                Uri iconUri = new Uri(System.IO.Path.Combine(Environment.CurrentDirectory, "icon.jpg"), UriKind.Absolute);
                Icon = BitmapFrame.Create(iconUri);
            }
            catch { }

            WebViewWindow.Inst.Visibility = Visibility.Visible;
            WebViewWindow.Inst.Visibility = Visibility.Hidden;
            LoadSettings();
            TelegramBotHandler.Restart();
            KworkEventsFacade.OnNewRecords += (records) =>
            {
                WindowLogger.Log("Send to telegram");
                TelegramBotHandler.Send(records);
            };
//#if RELEASE
            KworkEventsFacade.RestartChecking();
//#endif

            TrayIconHelper.InitTrayIcon(TrayIconHelper.MenuFromDict(new Dictionary <string, Action>()
            {
                {
                    "Show",
                    () =>
                    {
                        Dispatcher.Invoke(() => {
                            MainWindow.Inst.Visibility = Visibility.Visible;
                        });
                    }
                },
                {
                    "Exit",
                    () =>
                    {
                        Application.Current.Shutdown();
                    }
                }
            }));

            TrayIconHelper.ShowNotification("", "Kwork telegram bot launched successfully.");

            if (App.IsLaunchedWithSystem)
            {
                Task.Run(async() =>
                {
                    await Task.Delay(500);
                    Dispatcher.Invoke(() =>
                    {
                        this.Visibility = Visibility.Hidden;
                        WebViewWindow.Inst.Visibility = Visibility.Hidden;
                    });
                });
            }
        }
        public static async Task Send(string text)
        {
            try
            {
                await _client.SendTextMessageAsync(chatId : _chatUsername, text : text);

                WindowLogger.Log("Sended to telegram successfully.");
            }
            catch (Exception ex)
            {
                WindowLogger.Log("Error while sending to telegram.");
                WindowLogger.Log(ex.ToString());
            }
        }
Example #4
0
        static void Check()
        {
            var task = Task.Run(async() =>
            {
                var newRecords = await GetNew(WebViewWindow.Inst.WV);
                OnNewRecords?.Invoke(newRecords);
            });

            task.ContinueWith((t) =>
            {
                if (task.Exception != null)
                {
                    WindowLogger.Log(task.Exception.ToString());
                }
            });
        }
Example #5
0
        static async Task <List <KworkRecord> > GetNew(ChromiumWebBrowser wv)
        {
            var savedList = await StorageHardDrive.Get <List <KworkRecord> >(SavedMessagesKey) ?? new List <KworkRecord>();

            foreach (var item in savedList.ToArray())
            {
                if (DateTime.Now - item.ParseDate > TimeSpan.FromDays(5))
                {
                    savedList.Remove(item);
                }
            }

            var parsedList = await KworkParser.Parse(wv);

            //magic here
            var savedListClone = savedList.ToArray();

            foreach (var itemP in parsedList.ToArray())
            {
                bool breaked = false;
                foreach (var itemS in savedListClone)
                {
                    if (itemS.Title == itemP.Title)
                    {
                        parsedList.Remove(itemP);
                        breaked = true;
                        break;
                    }
                }

                if (!breaked)
                {
                    WindowLogger.Log("NEW record!!!");
                    WindowLogger.Log(itemP.ToJsonStr());
                    savedList.Add(itemP);
                }
            }

            await StorageHardDrive.Set(SavedMessagesKey, savedList);

            return(parsedList);
        }
        /// <summary>
        /// Возвращает строку со значениями.
        /// </summary>
        /// <param name="wv"></param>
        /// <returns></returns>
        static Task <string> GetFromPage(ChromiumWebBrowser wv)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                wv.Address = "https://google.com";
            });
            var promise = new TaskCompletionSource <string>();

            WindowLogger.Log("Start page inspection.");
            AttachOneRiseEventHandler(
                wv,
                () =>
            {
                var script = File.ReadAllText("kwork_parse.js");
                Application.Current.Dispatcher.Invoke(() =>
                {
                    Task <JavascriptResponse> jsResTask = wv.EvaluateScriptAsync(script);
                    jsResTask.ContinueWith((jsRes) =>
                    {
                        var res = jsRes.Result.Result.ToString();
                        WindowLogger.Log("Get page data as string.");
                        promise.SetResult(res);
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            wv.Address = "https://google.com";
                        });
                    });
                });
            }
                );
            Application.Current.Dispatcher.Invoke(() =>
            {
                wv.Address = "https://kwork.ru/projects";
            });
            return(promise.Task);
        }
 private void Button_ClearSaved(object sender, RoutedEventArgs e)
 {
     KworkEventsFacade.ClearSaved();
     WindowLogger.Log("Cleanr.");
 }