private async Task <bool> doCheckUpdate() { JToken json = await NetworkUtility.GetJson("https://api.github.com/repos/aixile/etupirka/releases"); JArray jArr = (JArray)json; string str = jArr.Count > 0 ? jArr[0]["tag_name"]?.ToString() : null; if (str == null) { throw new Exception("Unable to parse Github response"); } Version lastestVersion = new Version(str); Version myVersion = new Version(FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion); if (lastestVersion > myVersion) { if (MessageBox.Show("Version " + str + " が見つかりました、更新しますか?", "Etupirkaを更新する", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { Process.Start("https://github.com/Aixile/Etupirka/releases"); } return(true); } return(false); }
public async void updateInfoFromESOnline() { if (erogameScapeID > 0) { string result = await TaskEx.Run(() => { return(NetworkUtility.GetString("http://erogamescape.dyndns.org/~ap2/ero/toukei_kaiseki/game.php?game=" + erogameScapeID)); }); //Console.Write(result); string matchTitle = "<div id=\"soft-title\"><span class=\"bold\">(?<title>.*?)</span>"; string matchBrand = "<td><a href=\"brand.php\\?brand=(?<brandid>.*?)\">(?<brand>.*?)</a></td>"; string matchSaleDay = "<td><a href=\"toukei_hatubaibi_month.php\\?.*\">(?<saleday>.*?)</a></td>"; Regex re = new Regex(matchTitle, RegexOptions.IgnoreCase); for (Match m = re.Match(result); m.Success; m = m.NextMatch()) { Title = System.Net.WebUtility.HtmlDecode(m.Groups["title"].Value); // Console.Write(title); } re = new Regex(matchBrand, RegexOptions.IgnoreCase); for (Match m = re.Match(result); m.Success; m = m.NextMatch()) { Brand = System.Net.WebUtility.HtmlDecode(m.Groups["brand"].Value); // Console.Write(brand); } re = new Regex(matchSaleDay, RegexOptions.IgnoreCase); for (Match m = re.Match(result); m.Success; m = m.NextMatch()) { string saleday = m.Groups["saleday"].Value; SaleDay = DateTime.ParseExact(saleday, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); // Console.Write(saleday); } } }
private async void UpdateOfflineDatabase_Click(object sender, RoutedEventArgs e) { var controller = await this.ShowProgressAsync("更新しています", "Downloading..."); try { controller.SetCancelable(true); var source = new CancellationTokenSource(); controller.Canceled += (_, __) => { source.Cancel(); }; var document = await NetworkUtility.PostHtmlDocument( "http://erogamescape.dyndns.org/~ap2/ero/toukei_kaiseki/sql_for_erogamer_form.php", new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("sql", @"SELECT g.id, g.gamename, g.sellday, b.brandname FROM brandlist b, gamelist g WHERE g.brandname = b.id ORDER BY g.id"), }), source.Token, timeoutMs : 30000); var infoList = new List <GameInfo>(); var table = document.GetElementbyId("query_result_main").Descendants("table").First(); foreach (var tr in table.Descendants("tr")) { var tds = tr.Descendants("td").ToList(); if (tds.Count == 4) { var info = new GameInfo(); info.ErogameScapeID = int.Parse(tds[0].InnerText); info.Title = HttpUtility.HtmlDecode(tds[1].InnerText); info.SaleDay = DateTime.ParseExact(tds[2].InnerText, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); info.Brand = HttpUtility.HtmlDecode(tds[3].InnerText); infoList.Add(info); } } controller.SetMessage("Updating database..."); Utility.im.update(infoList); await controller.CloseAsync(); await this.ShowMessageAsync("データベースを更新する", "成功しました"); } catch { await controller.CloseAsync(); await this.ShowMessageAsync("データベースを更新する", "失敗しました"); } }
public async Task updateInfoFromESOnline() { if (erogameScapeID > 0) { var document = await NetworkUtility.GetHtmlDocument("http://erogamescape.dyndns.org/~ap2/ero/toukei_kaiseki/game.php?game=" + erogameScapeID); Title = document.GetElementById("soft-title").GetElementsByTagName("span")[0].InnerText; Brand = document.GetElementById("brand").GetElementsByTagName("td")[0].InnerText; string saleday = document.GetElementById("sellday").GetElementsByTagName("td")[0].InnerText; SaleDay = DateTime.ParseExact(saleday, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); } }
private void doCheckUpdate() { string str = NetworkUtility.GetString("http://etupirka.halcyons.org/checkversion.php"); Version lastestVersion = new Version(str); Version myVersion = new Version(FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion); if (lastestVersion > myVersion) { if (MessageBox.Show("Version " + str + " が見つかりました、更新しますか?", "Etupirkaを更新する", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { Process.Start("https://github.com/Aixile/Etupirka"); } } }
public async Task updateInfoFromESOnline() { if (erogameScapeID > 0) { var uri = "http://erogamescape.dyndns.org/~ap2/ero/toukei_kaiseki/game.php?game=" + erogameScapeID; if (Properties.Settings.Default.useGoogleCache) { uri = "https://webcache.googleusercontent.com/search?q=cache:" + HttpUtility.UrlEncode(uri) + "&strip=1"; } var document = await NetworkUtility.GetHtmlDocument(uri); Title = HttpUtility.HtmlDecode(document.GetElementbyId("game_title").InnerText); Brand = HttpUtility.HtmlDecode(document.GetElementbyId("brand").Descendants("td").First().InnerText); string saleday = HttpUtility.HtmlDecode(document.GetElementbyId("sellday").Descendants("td").First().InnerText); SaleDay = DateTime.ParseExact(saleday, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); } }
private void doCheckUpdate() { try { string str = NetworkUtility.GetString("http://etupirka.halcyons.org/checkversion.php"); Version lastestVersion = new Version(str); Version myVersion = new Version(FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion); if (lastestVersion > myVersion) { if (MessageBox.Show("Version " + str + "Update found, Would you like to update?", "Update Etupirka", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { Process.Start("https://github.com/Aixile/Etupirka/releases"); } } }catch { } }
/* private Task<byte[]> getDataAsync(string url) * { * return NetworkUtility.GetData(url); * } */ private async void UpdateOfflineDatabase_Click(object sender, RoutedEventArgs e) { try { var controller = await this.ShowProgressAsync("更新しています", "Initializing..."); controller.SetCancelable(true); await TaskEx.Delay(1000); controller.SetMessage("Downloading..."); string url = Properties.Settings.Default.databaseSyncServer; url = url.TrimEnd('/') + "/" + "esdata.gz"; if (controller.IsCanceled) { await controller.CloseAsync(); await this.ShowMessageAsync("データベースを更新する", "失敗しました"); return; } var data = await TaskEx.Run(() => { return(NetworkUtility.GetData(url)); }); if (controller.IsCanceled) { await controller.CloseAsync(); await this.ShowMessageAsync("データベースを更新する", "失敗しました"); return; } controller.SetMessage("Decompressing..."); var s = await TaskEx.Run(() => { return(Encoding.UTF8.GetString(Utility.Decompress(data))); }); if (controller.IsCanceled) { await controller.CloseAsync(); await this.ShowMessageAsync("データベースを更新する", "失敗しました"); return; } controller.SetMessage("Updating database..."); bool re = await TaskEx.Run(() => { return(Utility.im.update(s.Split('\n'))); }); await controller.CloseAsync(); if (re) { await this.ShowMessageAsync("データベースを更新する", "成功しました"); } else { await this.ShowMessageAsync("データベースを更新する", "失敗しました"); } } catch { return; } }