예제 #1
0
    public List<Match> GetUpcomingMatches(int seriesID)
    {
        List<Match> Upcoming = (List<Match>)Utilities.GetFromCache(seriesID + ":Upcoming");

            if (Upcoming == null)
            {
                Upcoming = new List<Match>();

                DOM Document = new DOM(GetWidgetUrl("cominginleague", seriesID));

                var TableRows = Document.Query("tr");
                char[] querystringSplitChar = { '=' };

                int RowCount = 0;
                foreach (XmlNode Row in TableRows)
                {
                    try
                    {
                        if (RowCount > 2)
                        {
                            var Columns = Row.SelectNodes("td");

                            Match match = new Match();
                            match.Time = DateTime.Parse(Columns.ValueOfIndex(0));
                            match.MatchName = Columns.ValueOfIndex(1);
                            string MatchURI = Columns[1].SelectSingleNode("a").GetAttributeValue("href");
                            match.ID = MatchURI.Split(querystringSplitChar).LastOrDefault().ToString();

                            PopulateMatchDetails(match);
                            Upcoming.Add(match);

                        }
                        RowCount = RowCount + 1;
                    }
                    catch (Exception ex)
                    {

                    }
                }

                Utilities.InsertToCache(seriesID + ":Upcoming", Upcoming);

            }

            return Upcoming;
    }
예제 #2
0
    public List<TeamResults> GetScoreTable(int seriesID)
    {
        List<TeamResults> ScoreTable = (List<TeamResults>)Utilities.GetFromCache(seriesID + ":Scores");

            if (ScoreTable == null)
            {

                ScoreTable = new List<TeamResults>();

                DOM Document = new DOM(GetWidgetUrl("table", seriesID));

                var TableRows = Document.Query("table//tr");

                int RowCount = 0;
                foreach (XmlNode Row in TableRows)
                {
                    if (RowCount > 2)
                    {
                        var Columns = Row.SelectNodes("td");

                        TeamResults score = new TeamResults();

                        score.TeamName = Columns.ValueOfIndex(0);

                        score.MatchesPlayed = Columns.ValueOfIndex(1);
                        score.MatchesWon = Columns.ValueOfIndex(2);
                        score.MatchesDraw = Columns.ValueOfIndex(3);
                        score.MatchesLost = Columns.ValueOfIndex(4);
                        score.GoalsMadeAndReceived = Columns.ValueOfIndex(5);
                        score.Difference = Columns.ValueOfIndex(6);
                        score.Points = Columns.ValueOfIndex(7);

                        ScoreTable.Add(score);
                    }
                    RowCount = RowCount + 1;
                }
                    Utilities.InsertToCache(seriesID + ":Scores", ScoreTable);
                }

            return ScoreTable;
    }
예제 #3
0
    public List<Series> GetSeries()
    {
        List<Series> AllSeries = (List<Series>)Utilities.GetFromCache("AllSeries");

            if (AllSeries == null) {
                AllSeries = new List<Series>();
                DOM Document = new DOM("http://www.svenskfotboll.se");
                var Series = Document.Query("select[@id='ftid-stickybar']//option");
                foreach(XmlNode node in Series){
                    Series serie = new Series();
                    serie.ID = int.Parse(node.GetAttributeValue("value"));
                    serie.Name = node.InnerText;
                    AllSeries.Add(serie);
                }

               Utilities.InsertToCache("AllSeries", AllSeries);

            }

            return AllSeries;
    }
예제 #4
0
    private void PopulateMatchDetails(Match match)
    {
        DOM Document = new DOM("http://svenskfotboll.se/ovriga-serier/information/?widget=1&scr=result&fmid=" + match.ID);

            var DetailRows = Document.Query("table[@id='iMatchInfo']//tr");
            match.Venue = DetailRows.GetCellValueByFirstColumn("Spelplats");
            match.Referee = DetailRows.GetCellValueByFirstColumn("Domare");
            match.AssistingReferee1 = DetailRows.GetCellValueByFirstColumn("Ass. domare 1");
            match.AssistingReferee2 = DetailRows.GetCellValueByFirstColumn("Ass. domare 2");

            if (match.Venue != "")
            {
                var VenueLocation = GeoCoder.GeoCodeAddress(match.Venue);
                if (VenueLocation != null)
                {
                    match.VenueLongitude = VenueLocation.Longitude;
                    match.VenueLatitude = VenueLocation.Latitude;
                }
            }

            var Logotypes = Document.Query("table[@class='clTblMatch']//img");

            if (Logotypes.Count > 1)
            {
                match.Team1Logo = "http://svenskfotboll.se" + Logotypes[0].GetAttributeValue("src");
                match.Team2Logo = "http://svenskfotboll.se" + Logotypes[1].GetAttributeValue("src");

                match.Team1Logo = match.Team1Logo.Replace("/width_125", "");
                match.Team2Logo = match.Team1Logo.Replace("/width_125", "");
            }

            var PlayerTables = Document.GetTableByHeader("Laguppställning");
            var SecondaryPlayerTables = Document.GetTableByHeader("Ersättare");

            if (PlayerTables.Count > 1)
            {
                match.Team1Players = GetPlayers(PlayerTables[0]);
                match.Team2Players = GetPlayers(PlayerTables[1]);
            }

            if (SecondaryPlayerTables.Count > 1)
            {
                match.Team1SecondaryPlayers = GetPlayers(SecondaryPlayerTables[0]);
                match.Team2SecondaryPlayers = GetPlayers(SecondaryPlayerTables[1]);
            }

            // To not flood their server
            System.Threading.Thread.Sleep(200);
    }