示例#1
0
        private List <double> GetCardPrices(SSGame game, out int cardsCount)
        {
            string        url   = baseUrl.Replace("*gameID*", game.Link.Split(new[] { "app/" }, StringSplitOptions.None)[1].Split('/')[0]);
            List <double> cards = new List <double>();

            using (var client = new WebClient()) {
                var html     = client.DownloadString(url);
                var document = new HtmlDocument();
                document.LoadHtml(html);

                var cardNodes = document.DocumentNode.SelectNodes(@"//div[@id = 'searchResults']/div[@id = 'searchResultsTable']/div[@id = 'searchResultsRows']/a[@class = 'market_listing_row_link']");

                foreach (var node in cardNodes)
                {
                    var price = node.SelectSingleNode(@"div[1]/div[1]/div[2]/span[1]/span[1]").InnerText;
                    price = price.Split(new[] { " " }, StringSplitOptions.None)[0].Remove(0, 1).Replace('.', ',');

                    cards.Add(double.Parse(price) * OneUSDinRUB);
                }

                cardsCount = int.Parse(document.DocumentNode.SelectSingleNode(@"//div[@id = 'searchResults_ctn']/div[2]/span[@id = 'searchResults_total']").InnerText);
            }

            return(cards);
        }
示例#2
0
        private Dictionary <string, SSGame> SteamShopParse(double maxPrice)
        {
            var url = baseUrl;
            Dictionary <string, SSGame> games = new Dictionary <string, SSGame>();

            using (var client = new WebClient()) {
                double currPrice = 0;
                do
                {
                    var html     = client.DownloadString(url);
                    var document = new HtmlDocument();
                    document.LoadHtml(html);

                    var gameNodes = document.DocumentNode.SelectNodes(@"//div[@id = 'search_results']/div[@id = 'search_result_container']/div[2]/a");
                    if (gameNodes == null)
                    {
                        continue;
                    }
                    foreach (var node in gameNodes)
                    {
                        var title = node.SelectSingleNode(@"div[2]/div[1]/span[@class = 'title']").InnerText;
                        var price = node.SelectSingleNode(@"div[2]/div[4]/div[2]").InnerText;
                        var href  = node.GetAttributeValue(@"href", "error");

                        if (!price.Contains('.'))
                        {
                            continue;
                        }

                        var arr = price.Split(new[] { "pСѓР±." }, StringSplitOptions.None);     //разбиение по подстроке "руб."
                        price = (arr.Count() > 2) ? arr[1] : arr[0];

                        var game = new SSGame()
                        {
                            Title = title,
                            Price = double.Parse(price),
                            Link  = href
                        };
                        currPrice = game.Price;

                        try {
                            games.Add(game.Title, game);
                        }
                        catch (ArgumentException) {
                            continue;
                        }
                    }

                    var nextPageButtons = document.DocumentNode.SelectNodes(@"//div[@class = 'search_pagination_right']/a[@class = 'pagebtn']");
                    foreach (var button in nextPageButtons)
                    {
                        if (button.InnerText == "&gt;")         //знак >
                        {
                            url = button.GetAttributeValue(@"href", "error");
                        }
                        else
                        {
                            url = "end";
                        }
                    }
                } while (currPrice <= maxPrice && url != "end");
            }

            return(games);
        }
示例#3
0
        static void Main(string[] args)
        {
            Globals.Server       = true;
            Globals.ListenServer = true;
            const int serverPort = 51010;

            if (Globals.Server && !Globals.ListenServer) // Launch dedicated server
            {
                throw new NotImplementedException("Dedicated server mode not supported yet.");
            }
            //else if (Globals.Server && Globals.ListenServer) // Launch listen server
            //{
            //    using (var game = new SSGame(true))
            //    {
            //        game.Run();
            //    }
            //}
            else // Launch client
            {
                using (var game = new SSGame())
                {
                    game.Run();
                }
            }

            //var server = new NetworkServer(serverPort);
            //
            //server.AddIncomingMessageHandler<HailRequest>(Intent.Hail, (connection, hailRequest) =>
            //                                                           {
            //                                                               Console.WriteLine("[SERVER] " + hailRequest.Name + " approved to join.");
            //                                                               connection.Approve(new HailResponse(true, hailRequest.Name));
            //                                                           });
            //server.AddIncomingMessageHandler<ConnectionStatusChanged>(Intent.StatusChanged, (connection, message) =>
            //                                                            {
            //                                                                Console.WriteLine("[SERVER] New status for client: " + message.NewStatus + " (" + message.Reason + ")");
            //                                                            });
            //
            //server.AddIncomingMessageHandler<TestMessage>(Intent.TestMessage, (connection, message) =>
            //                                                                  {
            //                                                                      TestMessageHandler(connection, message);
            //                                                                      server.SendMessage(connection, Intent.TestMessage, new TestMessage(10, false, 'f', "char is f", new Vector2(20.50235f, 30.4568f), 5030, "a", "bcd"));
            //                                                                  });
            //
            //server.Start();
            //
            //new Thread(() =>
            //{
            //    while (server.netServer.Status == NetPeerStatus.Running)
            //    {
            //        server.Poll();
            //        Thread.Sleep(33);
            //    }
            //}).Start();
            //
            //var client = new NetworkClient();
            //
            //client.AddIncomingMessageHandler<ConnectionStatusChanged>(Intent.StatusChanged, (connection, message) =>
            //                                                            {
            //                                                                Console.WriteLine("[CLIENT] New status: " + message.NewStatus);
            //                                                                if (message.NewStatus == NetConnectionStatus.Connected)
            //                                                                {
            //                                                                    Console.WriteLine("[CLIENT] HailResponse received: CanJoin = " + message.HailResponse.CanJoin);
            //                                                                    if (message.HailResponse.CanJoin)
            //                                                                        Console.WriteLine("\t[CLIENT] My name is " + message.HailResponse.Name + ".");
            //
            //                                                                    client.SendMessage(Intent.TestMessage, new TestMessage(100, true, 'G', "The char is G", Vector2.One, long.MaxValue, "hello", "world"));
            //                                                                }
            //                                                            });
            //client.AddIncomingMessageHandler<TestMessage>(Intent.TestMessage, TestMessageHandler);
            //
            //client.Connect("localhost", 51010, new HailRequest("Skippy"));
            //
            //new Thread(() =>
            //{
            //    while (client.netClient.Status == NetPeerStatus.Running)
            //    {
            //        client.Poll();
            //        Thread.Sleep(1);
            //    }
            //}).Start();
            //
            //while (true)
            //{
            //    Thread.Sleep(100);
            //}
        }