Procházet zdrojové kódy

Ensure all matches are collected

theenglishway (time) před 2 roky
rodič
revize
a74756026e

+ 13 - 8
src/main/scala/BallDontLie.scala

@@ -17,6 +17,7 @@ object ResponseMetadata {
 
 object Utils {
   val get_json = (endpoint: String, params: Iterable[(String, String)]) => {
+    Thread.sleep(200) // A dirty way to not flood the server with requests
     val r = requests.get(
       endpoint,
       params = params
@@ -36,15 +37,19 @@ object GamesResponse {
   val endpoint = "https://www.balldontlie.io/api/v1/games"
 
   val getGames = (season: Int, teams: List[Int]) => {
-    val baseParams = Map(
-      "seasons[]" -> List(season).mkString(","),
-      "team_ids[]" -> teams.mkString(",")
-    )
-    val json =
-      Utils.get_json(endpoint, baseParams)
+    // Using an array as param to team_ids[] yields a 500 error so we make
+    // several requests instead
+    teams.flatMap(team => {
+      val baseParams = Map(
+        "seasons[]" -> List(season).mkString(","),
+        "team_ids[]" -> team.toString()
+      )
+      val json =
+        Utils.get_json(endpoint, baseParams)
 
-    val response: GamesResponse = upickle.default.read[GamesResponse](json)
-    response.data
+      val response: GamesResponse = upickle.default.read[GamesResponse](json)
+      response.data
+    })
   }
 }
 

+ 20 - 0
src/main/scala/Extract.scala

@@ -0,0 +1,20 @@
+package extract
+
+import balldontlie._
+import game.GameData
+
+object Extract {
+  val selectedTeams = List(
+    "Phoenix Suns",
+    "Atlanta Hawks",
+    "Los Angeles Lakers",
+    "Milwaukee Bucks"
+  )
+
+  val getStats: List[GameData] = {
+    val teamIds = TeamsResponse.getTeams
+      .filter(team => selectedTeams.contains(team.full_name))
+      .map(_.id)
+    GamesResponse.getGames(2021, teamIds)
+  }
+}

+ 2 - 3
src/main/scala/main.worksheet.sc

@@ -1,9 +1,8 @@
-import Extract._
+import extract._
 import balldontlie._
 
 val resp = TeamsResponse.getTeams
-resp.meta
 
 val team_ids = List(24)
 
-val games = Games.getGames(2021, team_ids)
+Extract.getStats