diff --git a/ConsoleApp3/Program.cs b/ConsoleApp3/Program.cs index 2117fb5..873fccf 100644 --- a/ConsoleApp3/Program.cs +++ b/ConsoleApp3/Program.cs @@ -5,8 +5,7 @@ using OpenQA.Selenium; using System.Diagnostics; using System.Net; using System.Text; - -Console.WriteLine("Hello, World!"); +using static System.Collections.Specialized.BitVector32; /* * @@ -16,32 +15,252 @@ userPassword: Magnatpower310!! /de/OnePiece/PostGetAction/User_Login */ - - -ChromeOptions options = new ChromeOptions(); -options.AddArgument("start-maximized"); -ChromeDriver cd = new ChromeDriver(options); -cd.Url = @"https://www.cardmarket.com/de/OnePiece"; - -cd.Navigate(); -cd.FindElement(By.CssSelector("#CookiesConsent > div > div > form > button")).Click(); -cd.FindElement(By.Name("username")).Click(); -cd.FindElement(By.Name("username")).SendKeys("Skywalkerex"); -cd.FindElement(By.Name("userPassword")).Click(); - - -cd.FindElement(By.Name("userPassword")).SendKeys("Magnatpower310!!"); -cd.FindElement(By.CssSelector("#header-login > input.btn.AB-login-btn.btn-outline-primary.btn-sm")).Click(); - - -CookieContainer cookieContainer = new CookieContainer(); -foreach (var c in cd.Manage().Cookies.AllCookies) +namespace CardmarketBot { - string name = c.Name; - string value = c.Value; - cookieContainer.Add(new System.Net.Cookie(name, value,c.Path,c.Domain)); + internal class Programm + { + + static void Main(string[] args) + { + + Dictionary portoberechnung = new Dictionary() + { + {"1,15 €", Helper.Porto.BRIEF085 }, + {"1,30 €", Helper.Porto.BRIEF100 }, + {"2,10 €", Helper.Porto.BRIEF160 }, + {"3,25 €", Helper.Porto.BRIEF275 }, + {"2,60 €", Helper.Porto.PRIO210 }, + {"3,20 €", Helper.Porto.PRIO270 }, + }; + ChromeOptions options = new ChromeOptions(); + options.AddArgument("start-maximized"); + IWebDriver cd = new ChromeDriver(options); + cd.Url = @"https://www.cardmarket.com/de/OnePiece"; + + cd.Navigate(); + cd.FindElement(By.CssSelector("#CookiesConsent > div > div > form > button")).Click(); + cd.FindElement(By.Name("username")).Click(); + cd.FindElement(By.Name("username")).SendKeys("Skywalkerex"); + cd.FindElement(By.Name("userPassword")).Click(); + + + cd.FindElement(By.Name("userPassword")).SendKeys("Magnatpower310!!"); + cd.FindElement(By.CssSelector("#header-login > input.btn.AB-login-btn.btn-outline-primary.btn-sm")).Click(); + + + CookieContainer cookieContainer = new CookieContainer(); + foreach (var c in cd.Manage().Cookies.AllCookies) + { + string name = c.Name; + string value = c.Value; + cookieContainer.Add(new System.Net.Cookie(name, value, c.Path, c.Domain)); + } + + //cd.Navigate().GoToUrl(@"https://www.cardmarket.com/de/OnePiece/Orders/Sales/Paid"); + cd.Navigate().GoToUrl(@"https://www.cardmarket.com/de/OnePiece/Orders/Sales/Sent"); + + IWebElement element = cd.FindElement(By.XPath("/html/body/main/section/div[3]/div[3]/div[2]")); + string content = element.Text; + + string[] datas = content.Split("\r\n"); + + List ids = new List(); + for(int i =0; i < datas.Length; i+= 7) + { + ids.Add(datas[i]); + } + + + //cd.Navigate().GoToUrl(@"https://www.cardmarket.com/de/OnePiece/Orders/1117521790"); + + + Debugger.Break(); + + + + + List kunden = new List(); + + int maxCounter = 4; + int counter = 0; + foreach (string id in ids) + { + if (counter > maxCounter) break; + Thread.Sleep(TimeSpan.FromSeconds(5)); + Console.WriteLine(id); + cd.Navigate().GoToUrl(string.Format(@"https://www.cardmarket.com/de/OnePiece/Orders/{0}", id)); + element = cd.FindElement(By.XPath("/html/body/main/section/div/div[1]/div/div[3]/div[2]/div[2]/div/div")); + + Kunde kunde = Helper.ConvertToKunde(element.Text); + + + // Versandkosten + element = cd.FindElement(By.XPath("/html/body/main/section/div/div[1]/div/div[3]/div[1]/div[2]/div/div[3]/span[2]")); + kunde.Versandskosten = portoberechnung[element.Text]; + kunde.BestellungID = id; + + + + // Artikeln + element = cd.FindElement(By.XPath("/html/body/main/section/div/div[1]/div/div[5]/table/tbody")); + string artikeln = element.Text; + kunde.Artikels = Helper.ParseArtikeln(element.Text); + + + kunden.Add(kunde); + counter++; + + } + + IEnumerable> groupedPorto = kunden.GroupBy(x => x.Versandskosten).Distinct(); + + foreach(IGrouping gkunde in groupedPorto) + { + //FileStream stream = File.Create(string.Format("test_{0}.csv", gkunde.Key.ToString())); + Helper.Porto porto = gkunde.Key; + using (StreamWriter writer = new StreamWriter(string.Format("./test_{0}.csv", gkunde.Key.ToString()),false,Encoding.Latin1)) + { + + string header = "NAME;ZUSATZ;STRASSE;NUMMER;PLZ;STADT;LAND;ADRESS_TYP;REFERENZ"; + writer.WriteLine(header); + string absender = "W&W TECH UG;Lukas Winkelmann;Schwedenschanze;70;49808;LINGEN;DEU;HOUSE"; + writer.WriteLine(absender); + foreach (Kunde n in gkunde) + { + string empfanger = string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8}", + n.Name, + "", + n.Strasse, + n.Hausnummer, + n.Plz, + n.Ort, + "DEU", + //n.Land, + "HOUSE", + n.BestellungID + ); + writer.WriteLine(empfanger); + } + writer.Close(); + } + } + + Console.WriteLine("Fertig"); + Console.ReadLine(); + } + } } +static class Helper +{ + public enum Porto + { + BRIEF085, + BRIEF100, + BRIEF160, + BRIEF275, + PRIO210, + PRIO270 + } + internal static Kunde ConvertToKunde(string text) + { + + string[] datas = text.Split("\r\n"); + string name = datas[0]; + string adresseUNDHausnummer = datas[1]; + string plzUNDOrt = datas[2]; + string land = datas[3]; + + datas = plzUNDOrt.Split(" "); + string plz = datas[0]; + string ort = datas[1]; + + datas = adresseUNDHausnummer.Split(" "); + string strasse = ""; + for(int i = 0; i < datas.Length - 1; i++) + { + strasse += datas[i] + " "; + } + strasse = strasse.Trim(); + string hausnummer = datas[datas.Length -1]; + + return new Kunde(name,strasse,hausnummer, plz, ort,land); + + } + + internal static List ParseArtikeln(string text) + { + List result = new List(); + string[] datas = text.Split("\r\n"); + + + int anzahl = datas.Length / 6; + + for(int i = 0; i < datas.Length; i+=6) + { + Artikel temp = new Artikel(); + var xFound = datas[i].IndexOf("x"); + var am = datas[i].Substring(0, xFound); + temp.Amount = Convert.ToInt32(am); + temp.GERName = datas[i].Substring(xFound+1); + temp.ENGName = datas[i+1]; + temp.CardNumber = datas[i+2]; + temp.Source = datas[i+3]; + temp.Raritaet = datas[i+4]; + temp.Preis = datas[i+5]; + result.Add(temp); + } + return result; + } +} + +internal class Artikel +{ + public int Amount { get; set; } + public string GERName { get; set; } = ""; + public string ENGName { get; set; } = ""; + public string CardNumber { get; set; } = ""; + public string Source { get; set; } = ""; + public string Raritaet { get; set; } = ""; + public string Preis { get; set; } = ""; +} + +class Kunde +{ + string bestellungID = ""; + Helper.Porto versandskosten; + string name; + string strasse; + string hausnummer; + string plz; + string ort; + string land; + List artikels = new List(); + + public string Name { get => name; set => name = value; } + public string Strasse { get => strasse; set => strasse = value; } + public string Plz { get => plz; set => plz = value; } + public string Ort { get => ort; set => ort = value; } + public string Land { get => land; set => land = value; } + public string BestellungID { get => bestellungID; set => bestellungID = value; } + public Helper.Porto Versandskosten { get => versandskosten; set => versandskosten = value; } + public string Hausnummer { get => hausnummer; set => hausnummer = value; } + internal List Artikels { get => artikels; set => artikels = value; } + + public Kunde(string Name, string Strasse,string Hausnummer, string PLZ, string Ort, string Land) + { + name = Name; + hausnummer = Hausnummer; + strasse = Strasse; + plz = PLZ; + ort = Ort; + land = Land; + } +} + + + +/* HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(@"https://www.cardmarket.com/de/OnePiece/Orders/Sales/Paid"); hwr.CookieContainer = cookieContainer; hwr.Method = "GET"; @@ -57,4 +276,6 @@ string GetHashKey(string line) var m = d.IndexOf("\""); var a = d.Substring(0, m); return a; -} \ No newline at end of file +} + +*/ \ No newline at end of file