private void findCurseCompleted(object sender, DownloadStringCompletedEventArgs e) { if (e != null && e.Error == null && !String.IsNullOrEmpty(e.Result)) { using (StringReader sr = new StringReader(e.Result)) { List <string> results = new List <string>(); while (true) { try { string currentline = sr.ReadLine().Trim(); if (currentline.Contains("<a href=\"/mc-mods/")) { results.Add(currentline); } } catch { break; } } foreach (string result in results) { char[] startCharList = new char[] { '"', '>' }; char[] endCharList = new char[] { '<' }; string foundModname = MiscFunctions.ExtractSection(result, endCharList, startCharList); if (MiscFunctions.CleanString(foundModname) == MiscFunctions.CleanString(modFileName)) { startCharList = new char[] { '=', '"' }; endCharList = new char[] { '"' }; string linkSection = MiscFunctions.ExtractSection(result, endCharList, startCharList); website = ParseCurseUri("http://minecraft.curseforge.com" + linkSection); break; } } } UpdateModValues(); FindWebsiteUri(); //debug return; //debug if (siteMode == "NONE") { FindWebsiteUri(); } else { progress = 0; findMode = 0; findQueued = false; findBusy = false; updateList = true; } } else { FindWebsiteUri(); } }
public static string ExtractSection(string s, char[] endChars) { string _s = "##" + s; char[] startCharList = new char[] { '#', '#' }; return(MiscFunctions.ExtractSection(_s, endChars, startCharList)); }
private string GetWebsiteFromResults(string webpage, string delim, char[] startChars, char[] endChars) { List <string> results = new List <string>(); using (StringReader sr = new StringReader(webpage)) { string currentLine = ""; while (true) { currentLine = sr.ReadLine(); if (currentLine != null) { if (currentLine.Contains(delim)) { string[] delims = new string[] { delim }; results.AddRange(currentLine.Split(delims, StringSplitOptions.RemoveEmptyEntries)); } } else { break; } } string curseLink = "NONE"; string forumLink = "NONE"; for (int i = 1; i < results.Count; i++) { results[i] = MiscFunctions.ExtractSection(results[i], endChars, startChars).Replace("%2f", "/").Replace("%3a", ":"); char[] startCharList = new char[] { 'm', 'o', 'd', 's', '/' }; char[] endCharList = new char[] { }; string foundModname = MiscFunctions.ExtractSection(results[i], endCharList, startCharList); if (curseLink == "NONE" && results[i].Contains(curseIdentifier) && MiscFunctions.PartialMatch(modFileName, foundModname)) { curseLink = ParseCurseUri(results[i]); } if (forumLink == "NONE" && results[i].Contains(forumIdentifier) && MiscFunctions.PartialMatch(modFileName, foundModname)) { forumLink = ParseForumUri(results[i]); } } if (curseLink != "NONE") { return(curseLink); } else { return(forumLink); } } }
public void UpdateModValues() { cd = Directory.GetCurrentDirectory(); //Manage local version versionLocal = MiscFunctions.RemoveLetters(modFileName); //Determine site mode if (website == "") { website = "NONE"; } if (website.Contains(curseIdentifier)) { siteMode = "curse"; website = ParseCurseUri(website); } else if (website.Contains(forumIdentifier)) { siteMode = "forum"; website = ParseForumUri(website); } else if (website.Contains(githubIdentifier)) { siteMode = "github"; website = ParseGithubUri(website); } else { siteMode = "NONE"; } //Manage download site if (siteMode == "curse") { char[] startCharList = new char[] { 'f', 'i', 'l', 'e', 's', '/' }; char[] endCharList = new char[] { '\"' }; string modBit = MiscFunctions.ExtractSection(versionLatestRaw, endCharList, startCharList); dlSite = website + "/files/" + modBit + "/download"; } else if (siteMode == "github") { string bit = website.Replace("https://github.com", "").Replace("/latest", "/download"); string appendage = versionLatestRaw.Replace("<a href=\"", "").Replace(bit, "").Replace("\" rel=\"nofollow\">", ""); dlSite = website.Replace("/latest", "/download") + appendage; } else { dlSite = "NONE"; } }
private void findLuckyCompleted(object sender, DownloadStringCompletedEventArgs e) { if (e != null && e.Error == null && !String.IsNullOrEmpty(e.Result)) { using (StringReader sr = new StringReader(e.Result)) { try { string currentline = ""; while (!currentline.Contains("<a href=\"/mc-mods/")) { currentline = sr.ReadLine().Trim(); } char[] startCharList = new char[] { '=', '"' }; char[] endCharList = new char[] { '"' }; string linkSection = MiscFunctions.ExtractSection(currentline, endCharList, startCharList); startCharList = new char[] { '"', '>' }; endCharList = new char[] { '<' }; string foundModname = MiscFunctions.ExtractSection(currentline, endCharList, startCharList); if (!MiscFunctions.PartialMatch(modFileName, foundModname)) { website = "No Patial Match: "; //debug } website += ParseCurseUri("http://minecraft.curseforge.com" + linkSection); } catch { website = "NONE"; } } UpdateModValues(); FindWebsiteUri(); //debug return; //debug if (siteMode == "NONE") { FindWebsiteUri(); } else { progress = 0; findMode = 0; findQueued = false; findBusy = false; updateList = true; } } else { FindWebsiteUri(); } }
public void ForceSetSite(string modName, string uri) { string cleanName = MiscFunctions.CleanString(modName); if (userDatabase.ContainsKey(cleanName)) { userDatabase[cleanName] = uri; } else { userDatabase.Add(cleanName, uri); } }
private string ParseForumUri(string uri) { if (!uri.Contains(forumIdentifier) || uri == "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods") { uri = "NONE"; } if (uri.Contains("?page=")) { char[] endCharList = new char[] { '?' }; uri = MiscFunctions.ExtractSection(uri, endCharList); } return(uri); }
public string GetSite(string modName) { string cleanName = MiscFunctions.CleanString(modName); if (userDatabase.ContainsKey(cleanName) && userDatabase[cleanName] != "NONE") { return(userDatabase[cleanName]); } else if (globalDatabase.ContainsKey(cleanName) && globalDatabase[cleanName] != "NONE") { return(globalDatabase[cleanName]); } else { return("NONE"); } }
private string ParseCurseUri(string uri) { if (!uri.Contains(curseIdentifier) || uri == "http://minecraft.curseforge.com/mc-mods/minecraft") { uri = "NONE"; } if (uri.EndsWith("/files")) { uri = uri.Replace("/files", ""); } else if (uri.Contains("/files/")) { char[] startCharList = new char[] { 'f', 'i', 'l', 'e', 's', '/' }; char[] endCharList = new char[] { }; string garbage = "/files/" + MiscFunctions.ExtractSection(uri, endCharList, startCharList); uri = uri.Replace(garbage, ""); } return(uri); }
private void googleButton_Click(object sender, EventArgs e) { Process.Start("https://www.google.com/?gws_rd=ssl#q=" + selectedMod.modFileName.Replace(" ", "") + "+minecraft"); Process.Start("https://www.google.com/?gws_rd=ssl#q=" + MiscFunctions.CleanString(selectedMod.modFileName) + "+minecraft"); }
private void checkDownloadCompleted(object sender, DownloadStringCompletedEventArgs e) { if (e != null && e.Error == null && !String.IsNullOrEmpty(e.Result)) { progress = 100; using (StringReader sr = new StringReader(e.Result)) { string newVersion = ""; string newFile = ""; releaseDate = "N/A"; versionLatestRaw = "N/A"; versionLatest = "N/A"; newFileName = ""; if (siteMode == "curse") { while (true) { while (!newVersion.Contains("<h4 class=\"e-sidebar-subheader overflow-tip\">Minecraft")) { newVersion = sr.ReadLine(); if (newVersion == null) { versionLatest = "MC version not found"; progress = 0; checkQueued = false; checkBusy = false; updateList = true; return; } newVersion = newVersion.Trim(); } char[] startCharList = new char[] { '>', 'm', 'i', 'n', 'e', 'c', 'r', 'a', 'f', 't' }; char[] endCharList = new char[] { '<' }; string siteVersion = MiscFunctions.ExtractSection(newVersion.ToLower(), endCharList, startCharList).Trim(); string thisVersion = ""; try { char[] delim = new char[] { '.' }; thisVersion = mcVersion.Split(delim)[0] + "." + mcVersion.Split(delim)[1]; } catch { } if (siteVersion == thisVersion) { while (!newVersion.Contains("<a class=\"overflow-tip\" href=\"/projects/")) { newVersion = sr.ReadLine().Trim(); } startCharList = new char[] { '>' }; endCharList = new char[] { '<' }; newFile = MiscFunctions.ExtractSection(newVersion, endCharList, startCharList).Replace(" ", "").ToLower().Replace("'", "").Replace("+", ""); string[] modNames = new string[] { "reliquary", "carpentersblocks", "hardcoreenderexpansion" }; foreach (string mod in modNames) { if (MiscFunctions.CleanString(website).Contains(mod) && !MiscFunctions.CleanString(newFile).Contains(mod)) { newFile = mod + "-" + newFile; } } string dateLine = sr.ReadLine().Trim(); startCharList = new char[] { '"', '>' }; endCharList = new char[] { '<' }; releaseDate = MiscFunctions.ExtractSection(dateLine, endCharList, startCharList); break; } else { newVersion = sr.ReadLine().Trim(); } } } if (siteMode == "forum") { while (!newVersion.Contains("<title>")) { newVersion = sr.ReadLine().Trim(); } newFile = "undefined-" + MiscFunctions.RemoveLetters(newVersion); } if (siteMode == "github") { while (!newVersion.Contains("<a href=\"" + website.Replace("https://github.com", "").Replace("/latest", "/download/"))) { newVersion = sr.ReadLine().Trim(); } char[] startCharList = new char[] { '/' }; char[] endCharList = new char[] { '"' }; newFile = MiscFunctions.ExtractSection(newVersion, endCharList, startCharList).Replace(" ", "").ToLower(); } if (!newFile.Contains(".zip") && !newFile.Contains(".jar")) { newFile += ".jar"; } if (disabled && !newFile.Contains(".disabled")) { newFile += ".disabled"; } versionLatestRaw = newVersion; newFileName = Path.GetFileName(newFile); versionLatest = MiscFunctions.RemoveLetters(newFileName); if (versionLatestRaw != versionLocalRaw) { canUpdate = true; } else { canUpdate = false; } } UpdateModValues(); progress = 0; checkQueued = false; checkBusy = false; updateList = true; } else { progress = 0; checkQueued = false; checkBusy = false; } }
public void FindWebsiteUri() { findBusy = true; WebClient client1 = new WebClient(); client1.DownloadStringCompleted += new DownloadStringCompletedEventHandler(findCurseCompleted); WebClient client2 = new WebClient(); client2.DownloadStringCompleted += new DownloadStringCompletedEventHandler(findLuckyCompleted); WebClient client3 = new WebClient(); client3.DownloadStringCompleted += new DownloadStringCompletedEventHandler(findGoogleCompleted); WebClient client4 = new WebClient(); client4.DownloadStringCompleted += new DownloadStringCompletedEventHandler(findYahooCompleted); progress = 0; findMode++; switch (findMode) { case 1: website = "NONE"; //debug client1.DownloadStringAsync(new Uri("http://minecraft.curseforge.com/search?search=" + MiscFunctions.CleanModName(modFileName))); break; case 2: website1 = website; website = "NONE"; //debug client3.DownloadStringAsync(new Uri("http://www.google.com/search?sourceid=navclient&btnI=I&q=" + modFileName.Replace(" ", "") + "+minecraft")); break; case 3: website2 = website; website = "NONE"; //debug client4.DownloadStringAsync(new Uri("https://search.yahoo.com/search?p=" + modFileName.Replace(" ", "") + "+minecraft")); break; case 4: website3 = website; website = "NONE"; //debug client4.DownloadStringAsync(new Uri("https://search.yahoo.com/search?p=" + MiscFunctions.CleanString(modFileName) + "+minecraft")); break; default: website4 = website; website = "NONE"; //debug if (website1 != "NONE") { website = website1; } else if (website2 != "NONE") { website = website2; } else if (website3 != "NONE") { website = website3; } else if (website4 != "NONE") { website = website4; } website1 = website1.Replace(forumIdentifier, "").Replace(curseIdentifier, "").Replace("http://", "").Replace("www.", ""); website2 = website2.Replace(forumIdentifier, "").Replace(curseIdentifier, "").Replace("http://", "").Replace("www.", ""); website3 = website3.Replace(forumIdentifier, "").Replace(curseIdentifier, "").Replace("http://", "").Replace("www.", ""); website4 = website4.Replace(forumIdentifier, "").Replace(curseIdentifier, "").Replace("http://", "").Replace("www.", ""); //client2.DownloadStringAsync(new Uri("http://www.google.com/search?&sourceid=navclient&btnI=I&q=" + MiscFunctions.CleanString(modFilename) + "+curseforge")); //client3.DownloadStringAsync(new Uri("http://www.google.com/search?sourceid=navclient&btnI=I&q=" + MiscFunctions.CleanString(modFilename) + "+minecraft")); progress = 0; findMode = 0; findQueued = false; findBusy = false; updateList = true; //debug break; } }