public async Task <bool> sendCompleteAsync(Offer offer) { switch (provider) { case "Pushover": if (offer.thumb_url == "https://c.tutti.ch/gallery/") { pushover.pushText(offer.ToString()); } else { await pushover.pushImage(offer.ToString(), offer.thumb_url); } break; case "Telegram": if (offer.thumb_url == "https://c.tutti.ch/gallery/") { await telegram.TelegramTextAsync(offer.ToString()); await Task.Delay(5000); } else { await telegram.TelegramImgAsync(offer.ToString(), offer.thumb_url); } await Task.Delay(5000); break; } return(true); }
public async void sendTextOnly(Offer offer) { switch (provider) { case "Pushover": pushover.pushText(offer.ToString()); break; case "Telegram": await telegram.TelegramTextAsync(offer.ToString()); break; } }
//LOADING TUTTI.CH SEARCH HTML AND CREATES OFFER LIST WITH HTMLAGILITYPACK WITH HEADLESSCHROME //OBSOLETE DOES NOT WORK ATM public List <Offer> loadNextract() { //TODO: CHROMESTUFF VIELLEICHT IN EIGENE KLASSE SCHIEBEN var chromeOptions = new ChromeOptions(); chromeOptions.AddArguments(new List <string>() { "--silent-launch", "--no-startup-window", "no-sandbox", "headless", }); var chromeDriverService = ChromeDriverService.CreateDefaultService(); chromeDriverService.HideCommandPromptWindow = true; // This is to hide the console. ChromeDriver driver = new ChromeDriver(chromeDriverService, chromeOptions); driver.Navigate().GoToUrl(this.url); //SCROLLING IJavaScriptExecutor jse = (IJavaScriptExecutor)driver; for (int second = 0; ; second++) { if (second >= 12) { break; } jse.ExecuteScript("window.scrollBy(0, 480)", ""); //480px nach unten scrollen Thread.Sleep(300); } //TODO: CHROMESTUFF VIELLEICHT IN EIGENE KLASSE SCHIEBEN //HTMLDOCUMENT FROM HTML AGILITY PACK var doc = new HtmlDocument(); doc.LoadHtml(driver.PageSource); HtmlNodeCollection htmlNodes = doc.DocumentNode.SelectNodes("//div[@class='_228GQ _3HmX7']"); List <Offer> offers = new List <Offer>(); //RUNS FOR EVERY "CLASS=_228GQ _3HmX7"-DIV FOUND IN THE ROOT HTML foreach (HtmlNode node in htmlNodes) { Offer offer = new Offer(); //IN "CLASS=_228GQ _3HmX7"-DIV ARE THE INFOS FOR ID, PUBLISHED, PRICE, THUMB, TITLE, DESCRIPTION, LINK try { offer.offer_id = sanitize(node.SelectSingleNode("./div[@class='_1abn1 _2KsM3']").Id); offer.published = sanitize(node.SelectSingleNode("//*[@id='" + offer.offer_id + "']/div/div[1]/div[2]/span").InnerText); offer.price = sanitize(node.SelectSingleNode("//*[@id=" + offer.offer_id + "]/div/div[3]/strong").InnerText); offer.thumb_url = sanitize(node.SelectSingleNode("//*[@id=" + offer.offer_id + "]/a/div/img/@src").GetAttributeValue("src", string.Empty)); offer.title = sanitize(node.SelectSingleNode("//*[@id=" + offer.offer_id + "]/div/div[2]/div/a/h4").InnerText); offer.description = sanitize(node.SelectSingleNode("//*[@id=" + offer.offer_id + "]/div/div[2]/div/p").InnerText); offer.link = sanitize("https://tutti.ch" + node.SelectSingleNode("//*[@id=" + offer.offer_id + "]/div/div[2]/div/a/@href").GetAttributeValue("href", string.Empty)); offers.Add(offer); Console.WriteLine(offer.ToString()); } catch (NullReferenceException e) { //PRO ENTRIES HAVE A DIFFENT XPATH "./div[@class='_1abn1 _2KsM3 _2g4HX']" THIS LEADS TO A NULLPOINTER-EXEPTION Console.WriteLine(e.ToString()); } } return(offers); }