diff --git a/src/main/java/org/example/StandingsScraper.java b/src/main/java/org/example/StandingsScraper.java index fc0b99c..72df917 100644 --- a/src/main/java/org/example/StandingsScraper.java +++ b/src/main/java/org/example/StandingsScraper.java @@ -150,13 +150,90 @@ public class StandingsScraper { posicao++; } - // Enviar para Firebase + // Enviar para Firebase (Classificações) DatabaseReference refClassificacoes = FirebaseDatabase.getInstance() .getReference("classificacoes").child(escalao); refClassificacoes.setValueAsync(sortedStandings); System.out.println("-> Classificação de " + escalao + " enviada para o Firebase."); + // Enviar para Firebase (Jornadas) + DatabaseReference refJornadas = FirebaseDatabase.getInstance() + .getReference("jornadas").child(escalao); + + for (Map.Entry>> entry : matchdays.entrySet()) { + String jornadaNumber = entry.getKey(); + for (Map match : entry.getValue()) { + try { + int homeId = parseId(match.get("Home")); + int awayId = parseId(match.get("Away")); + + // Ignorar jogos com equipas placeholder / de descanso + if (homeId < 0 || awayId < 0) continue; + + Club homeClub = clubesMap.get(homeId); + Club awayClub = clubesMap.get(awayId); + + String homeName = homeClub != null ? homeClub.getName() : "Equipa " + homeId; + String homeLogo = homeClub != null ? homeClub.getImageUrl() : ""; + String awayName = awayClub != null ? awayClub.getName() : "Equipa " + awayId; + String awayLogo = awayClub != null ? awayClub.getImageUrl() : ""; + + Map matchMap = new HashMap<>(); + matchMap.put("home_nome", homeName); + matchMap.put("away_nome", awayName); + matchMap.put("home_logo", homeLogo); + matchMap.put("away_logo", awayLogo); + + String homeGoalsStr = String.valueOf(match.get("homeGoals")); + if (homeGoalsStr != null && !homeGoalsStr.equals("null") && !homeGoalsStr.trim().isEmpty()) { + matchMap.put("home_golos", (int) Double.parseDouble(homeGoalsStr)); + } + + String awayGoalsStr = String.valueOf(match.get("awayGoals")); + if (awayGoalsStr != null && !awayGoalsStr.equals("null") && !awayGoalsStr.trim().isEmpty()) { + matchMap.put("away_golos", (int) Double.parseDouble(awayGoalsStr)); + } + + Object dateObj = match.get("date"); + if (dateObj != null && !String.valueOf(dateObj).equals("null")) { + String dateStr = String.valueOf(dateObj); + if (dateStr.contains("T")) { + String[] parts = dateStr.split("T"); + matchMap.put("data", parts[0]); + if (parts[1].length() >= 5) { + matchMap.put("hora", parts[1].substring(0, 5)); + } + } else { + matchMap.put("data", dateStr); + } + } + + Object fieldObj = match.get("field"); + if (fieldObj != null && !String.valueOf(fieldObj).equals("null") && !String.valueOf(fieldObj).trim().isEmpty()) { + matchMap.put("campo", String.valueOf(fieldObj)); + } + + Object reportUrlObj = match.get("reportURL"); + if (reportUrlObj != null && !String.valueOf(reportUrlObj).equals("null") && !String.valueOf(reportUrlObj).trim().isEmpty()) { + matchMap.put("matchReportUrl", "https://api.afavcd.pt" + String.valueOf(reportUrlObj)); + } + + String jorneyID = String.valueOf(match.get("jorneyID")); + if (jorneyID != null && !jorneyID.equals("null")) { + if (jorneyID.contains(".")) { + jorneyID = jorneyID.substring(0, jorneyID.indexOf(".")); + } + refJornadas.child(jornadaNumber).child(jorneyID).setValueAsync(matchMap); + } + + } catch (Exception ex) { + System.err.println("Erro ao processar jogo na jornada " + jornadaNumber + ": " + ex.getMessage()); + } + } + } + System.out.println("-> Jornadas de " + escalao + " enviadas para o Firebase."); + } catch (Exception e) { System.err.println("Erro a processar " + escalao); e.printStackTrace();