示例#1
0
        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);
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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("データベースを更新する", "失敗しました");
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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");
                }
            }
        }
示例#6
0
        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);
            }
        }
示例#7
0
 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
     {
     }
 }
示例#8
0
        /*	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;
            }
        }