|
|
@@ -251,6 +251,8 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
|
|
|
|
|
|
setTeamsInfo(result, firstResultsDiv);
|
|
|
|
|
|
+ setScoring(result, firstResultsDiv);
|
|
|
+
|
|
|
setOdds(result, firstResultsDiv);
|
|
|
|
|
|
} else if (subDivs.size() == 1) {
|
|
|
@@ -262,6 +264,8 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
|
|
|
setGameDate(result, firstResultsDiv);
|
|
|
setTeamsInfo(result, firstResultsDiv);
|
|
|
|
|
|
+ setScoring(result, firstResultsDiv);
|
|
|
+
|
|
|
setOdds(result, firstResultsDiv);
|
|
|
} else {
|
|
|
somethingWrong = true;
|
|
|
@@ -301,6 +305,27 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
|
|
|
driver.quit();
|
|
|
}
|
|
|
|
|
|
+ private List<WebElement> scrollAndGetAllMatchDivs(ChromeDriver driver, List<WebElement> divs, int divsCount)
|
|
|
+ throws InterruptedException {
|
|
|
+ if (divsCount > 0) {
|
|
|
+ scrollElementIntoViewCenter(driver, divs.get(divsCount - 1));
|
|
|
+ Thread.sleep(2000);
|
|
|
+ divs = driver
|
|
|
+ .findElements(By.xpath(DIV_CONTAINS_CLASS_TABS_DIV_NOT_CLASS_DIV_1_DIV));
|
|
|
+ }
|
|
|
+
|
|
|
+ while (divsCount < divs.size()) {
|
|
|
+ if (divsCount > 0) {
|
|
|
+ divsCount = divs.size();
|
|
|
+ scrollElementIntoViewCenter(driver, divs.get(divsCount - 1));
|
|
|
+ Thread.sleep(2000);
|
|
|
+ divs = driver
|
|
|
+ .findElements(By.xpath(DIV_CONTAINS_CLASS_TABS_DIV_NOT_CLASS_DIV_1_DIV));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return divs;
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* Behöver göras om till Selenium
|
|
|
* private void parseTournamentTable(int sportId, int countryId, int leagueId,
|
|
|
@@ -403,27 +428,6 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
|
|
|
* }
|
|
|
*/
|
|
|
|
|
|
- private List<WebElement> scrollAndGetAllMatchDivs(ChromeDriver driver, List<WebElement> divs, int divsCount)
|
|
|
- throws InterruptedException {
|
|
|
- if (divsCount > 0) {
|
|
|
- scrollElementIntoViewCenter(driver, divs.get(divsCount - 1));
|
|
|
- Thread.sleep(2000);
|
|
|
- divs = driver
|
|
|
- .findElements(By.xpath(DIV_CONTAINS_CLASS_TABS_DIV_NOT_CLASS_DIV_1_DIV));
|
|
|
- }
|
|
|
-
|
|
|
- while (divsCount < divs.size()) {
|
|
|
- if (divsCount > 0) {
|
|
|
- divsCount = divs.size();
|
|
|
- scrollElementIntoViewCenter(driver, divs.get(divsCount - 1));
|
|
|
- Thread.sleep(2000);
|
|
|
- divs = driver
|
|
|
- .findElements(By.xpath(DIV_CONTAINS_CLASS_TABS_DIV_NOT_CLASS_DIV_1_DIV));
|
|
|
- }
|
|
|
- }
|
|
|
- return divs;
|
|
|
- }
|
|
|
-
|
|
|
private void setGameDate(ResultDTO result, WebElement firstResultsDiv) {
|
|
|
final List<Integer> time = new ArrayList<>();
|
|
|
if (checkIfElementExists(firstResultsDiv, "./div/a/div[1]/div/p")) {
|
|
|
@@ -448,54 +452,33 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
|
|
|
}
|
|
|
|
|
|
private void setOdds(ResultDTO result, WebElement firstResultsDiv) {
|
|
|
- final int addToOddsDivPosition;
|
|
|
- if (checkIfElementExists(firstResultsDiv, "./div/div[1]/div")) {
|
|
|
- String resultsText = firstResultsDiv.findElement(By.xpath("./div/div[1]/div")).getText();
|
|
|
+ List<WebElement> oddsDivs = firstResultsDiv.findElements(By.xpath("./div/div"));
|
|
|
|
|
|
- String[] results = resultsText.split(":");
|
|
|
+ try {
|
|
|
+ result.setOdds1(Float.parseFloat(oddsDivs.get(0).getText().toString()));
|
|
|
+ result.setOddsX(Float.parseFloat(oddsDivs.get(1).getText().toString()));
|
|
|
+ result.setOdds2(Float.parseFloat(oddsDivs.get(2).getText().toString()));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ System.out.println(
|
|
|
+ "failed to parse odds " + oddsDivs.get(0).getText() + ", " + oddsDivs.get(1).getText() + ", "
|
|
|
+ + oddsDivs.get(2).getText());
|
|
|
+ } catch (IndexOutOfBoundsException e) {
|
|
|
+ System.out.println(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setScoring(ResultDTO result, WebElement firstResultsDiv) {
|
|
|
+ if (checkIfElementExists(firstResultsDiv, "./div/a/div[2]/div/div/div/div/div")) {
|
|
|
+ List<WebElement> scoringDivs = firstResultsDiv.findElements(By.xpath("./div/a/div[2]/div/div/div/div/div"));
|
|
|
+ try {
|
|
|
+ result.setHomeScore(Integer.parseInt(scoringDivs.get(0).getText()));
|
|
|
+ result.setAwayScore(Integer.parseInt(scoringDivs.get(2).getText()));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
|
|
|
- if (results.length == 2) {
|
|
|
- result.setHomeScore(Integer.parseInt(results[0]));
|
|
|
- if (!results[1].matches("[0-9]*")) {
|
|
|
- result.setOvertime(true);
|
|
|
- result.setAwayScore(Integer.parseInt(results[1].replaceAll("[^0-9]", "")));
|
|
|
- } else {
|
|
|
- result.setAwayScore(Integer.parseInt(results[1]));
|
|
|
- }
|
|
|
- addToOddsDivPosition = 1;
|
|
|
- } else {
|
|
|
- addToOddsDivPosition = 0;
|
|
|
}
|
|
|
- } else {
|
|
|
- addToOddsDivPosition = 0;
|
|
|
}
|
|
|
|
|
|
- String divStartString = "./div/div[";
|
|
|
- String divEndString = "]/div/span/p";
|
|
|
- if (checkIfElementExists(firstResultsDiv,
|
|
|
- divStartString + (1 + addToOddsDivPosition) + divEndString)) {
|
|
|
- result.setOdds1(formatFloat(
|
|
|
- firstResultsDiv
|
|
|
- .findElement(
|
|
|
- By.xpath(divStartString + (1 + addToOddsDivPosition) + divEndString))
|
|
|
- .getText().trim()));
|
|
|
- }
|
|
|
- if (checkIfElementExists(firstResultsDiv,
|
|
|
- divStartString + (2 + addToOddsDivPosition) + divEndString)) {
|
|
|
- result.setOddsX(formatFloat(
|
|
|
- firstResultsDiv
|
|
|
- .findElement(
|
|
|
- By.xpath(divStartString + (2 + addToOddsDivPosition) + divEndString))
|
|
|
- .getText().trim()));
|
|
|
- }
|
|
|
- if (checkIfElementExists(firstResultsDiv,
|
|
|
- divStartString + (3 + addToOddsDivPosition) + divEndString)) {
|
|
|
- result.setOdds2(formatFloat(
|
|
|
- firstResultsDiv
|
|
|
- .findElement(
|
|
|
- By.xpath(divStartString + (3 + addToOddsDivPosition) + divEndString))
|
|
|
- .getText().trim()));
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
private void setTeamsInfo(ResultDTO result, WebElement firstResultsDiv) {
|