Extract.scala 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package extract
  2. import balldontlie._
  3. import game.{Team, PlayerGameStats}
  4. import upickle.default._
  5. object Extract {
  6. val selectedTeams = List(
  7. "Phoenix Suns",
  8. "Atlanta Hawks",
  9. "Los Angeles Lakers",
  10. "Milwaukee Bucks"
  11. ).take(4)
  12. def writeOrReadBack[T: ReadWriter](
  13. file: os.Path,
  14. getRemoteData: () => T
  15. ): T = {
  16. if (!os.exists(file)) {
  17. val data = getRemoteData()
  18. Utils.writeToFile[T](data, file)
  19. data
  20. } else {
  21. println(s"file $file already exists, reading back from it")
  22. Utils.readFromFile[T](file)
  23. }
  24. }
  25. def getTeams(output: os.Path, filterTeams: Team => Boolean) = {
  26. def getData() = {
  27. EndpointResponse
  28. .getTeams()
  29. .filter(filterTeams)
  30. }
  31. writeOrReadBack(output, getData)
  32. }
  33. def getGames(output: os.Path, season: Int, teamIds: List[Int]) = {
  34. def getData() = {
  35. EndpointResponse.getGames(2021, teamIds)
  36. }
  37. writeOrReadBack(output, getData)
  38. }
  39. def getStats(file: os.Path, gameIds: List[Int]) = {
  40. if (!os.exists(file)) {
  41. val data = EndpointResponse.getStats(gameIds)
  42. Utils.writeToFile(PlayerGameStats.as_json_value(data), file)
  43. data
  44. } else {
  45. println(s"file $file already exists, reading back from it")
  46. Utils.readFromFile[List[PlayerGameStats]](file)
  47. }
  48. }
  49. }