From 25b7a3a795e0e3365ea9c1509001dd49f63bd711 Mon Sep 17 00:00:00 2001 From: Laurent Morvillier Date: Sun, 3 Oct 2021 11:55:41 +0200 Subject: [PATCH] Improvement and bug fixes --- .../xcdebugger/Breakpoints_v2.xcbkptlist | 36 ++++++++-------- TournamentStats/NotablePlayers.swift | 3 +- TournamentStats/RowImporter.swift | 3 +- TournamentStats/core/Formatters.swift | 11 ++++- TournamentStats/core/Realm+Extensions.swift | 4 +- TournamentStats/report/Queries.swift | 12 +++--- TournamentStats/scrapper/Downloader.swift | 43 +++++++++++-------- 7 files changed, 65 insertions(+), 47 deletions(-) diff --git a/TournamentStats.xcodeproj/xcuserdata/laurent.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/TournamentStats.xcodeproj/xcuserdata/laurent.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 4d014f8..3ee4b92 100644 --- a/TournamentStats.xcodeproj/xcuserdata/laurent.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/TournamentStats.xcodeproj/xcuserdata/laurent.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -40,9 +40,9 @@ filePath = "TournamentStats/scrapper/Downloader.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "152" - endingLineNumber = "152" - landmarkName = "downloadWSOPResults(tournamentId:)" + startingLineNumber = "162" + endingLineNumber = "162" + landmarkName = "downloadWSOPResults(tournamentInfo:)" landmarkType = "7"> @@ -56,9 +56,9 @@ filePath = "TournamentStats/scrapper/Downloader.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "126" - endingLineNumber = "126" - landmarkName = "downloadWSOPResults(tournamentId:)" + startingLineNumber = "135" + endingLineNumber = "135" + landmarkName = "downloadWSOPResults(tournamentInfo:)" landmarkType = "7"> @@ -72,9 +72,9 @@ filePath = "TournamentStats/scrapper/Downloader.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "102" - endingLineNumber = "102" - landmarkName = "downloadWSOPResults(tournamentId:)" + startingLineNumber = "111" + endingLineNumber = "111" + landmarkName = "downloadWSOPResults(tournamentInfo:)" landmarkType = "7"> @@ -88,9 +88,9 @@ filePath = "TournamentStats/scrapper/Downloader.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "95" - endingLineNumber = "95" - landmarkName = "downloadWSOPResults(tournamentId:)" + startingLineNumber = "104" + endingLineNumber = "104" + landmarkName = "downloadWSOPResults(tournamentInfo:)" landmarkType = "7"> @@ -104,9 +104,9 @@ filePath = "TournamentStats/scrapper/Downloader.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "103" - endingLineNumber = "103" - landmarkName = "downloadWSOPResults(tournamentId:)" + startingLineNumber = "112" + endingLineNumber = "112" + landmarkName = "downloadWSOPResults(tournamentInfo:)" landmarkType = "7"> @@ -120,9 +120,9 @@ filePath = "TournamentStats/scrapper/Downloader.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "118" - endingLineNumber = "118" - landmarkName = "downloadWSOPResults(tournamentId:)" + startingLineNumber = "127" + endingLineNumber = "127" + landmarkName = "downloadWSOPResults(tournamentInfo:)" landmarkType = "7"> diff --git a/TournamentStats/NotablePlayers.swift b/TournamentStats/NotablePlayers.swift index 4ab6673..437b628 100644 --- a/TournamentStats/NotablePlayers.swift +++ b/TournamentStats/NotablePlayers.swift @@ -96,7 +96,8 @@ class NotablePlayers { "Mike Leah", "Joao Vieira", "Tony Dunst", - "Jonathan Little" + "Jonathan Little", + "Michael Addamo" ] } diff --git a/TournamentStats/RowImporter.swift b/TournamentStats/RowImporter.swift index 917da40..b0604fd 100644 --- a/TournamentStats/RowImporter.swift +++ b/TournamentStats/RowImporter.swift @@ -112,8 +112,7 @@ class RowImporter { state = row case .country: country = row - let notable: Bool = NotablePlayers.all.contains(playerName) - player = realm.getOrCreatePlayer(name: playerName, city: city, state: state, country: country, notable: notable) + player = realm.getOrCreatePlayer(name: playerName, city: city, state: state, country: country) result?.player = player } diff --git a/TournamentStats/core/Formatters.swift b/TournamentStats/core/Formatters.swift index 1355bbc..bc14c32 100644 --- a/TournamentStats/core/Formatters.swift +++ b/TournamentStats/core/Formatters.swift @@ -17,6 +17,10 @@ extension Locale { } } + func validCountryCode(code: String) -> Bool { + return NSLocale.isoCountryCodes.contains(code) + } + func flagoji(from countryName: String) -> String? { var adaptedCountryName = countryName @@ -29,7 +33,12 @@ extension Locale { break } - if let countryCode = self.countryCode(from: adaptedCountryName) { + var code: String? = self.countryCode(from: adaptedCountryName) + if code == nil && self.validCountryCode(code: countryName) { + code = countryName + } + + if let countryCode = code { let base : UInt32 = 127397 var s = "" for v in countryCode.uppercased().unicodeScalars { diff --git a/TournamentStats/core/Realm+Extensions.swift b/TournamentStats/core/Realm+Extensions.swift index 8ea8fd7..1d5412e 100644 --- a/TournamentStats/core/Realm+Extensions.swift +++ b/TournamentStats/core/Realm+Extensions.swift @@ -26,7 +26,7 @@ extension Realm { return new } - func getOrCreatePlayer(name: String, city: String, state: String, country: String, notable: Bool = false) -> Player { + func getOrCreatePlayer(name: String, city: String, state: String, country: String) -> Player { let items = self.objects(Player.self).filter("name = %@ && state = %@ && country = %@", name, state, country) if let item = items.first { return item @@ -36,7 +36,7 @@ extension Realm { new.city = city new.country = country new.state = state - new.notable = notable + new.notable = NotablePlayers.all.contains(name) return new } diff --git a/TournamentStats/report/Queries.swift b/TournamentStats/report/Queries.swift index 29ada8f..8428034 100644 --- a/TournamentStats/report/Queries.swift +++ b/TournamentStats/report/Queries.swift @@ -92,12 +92,12 @@ class Queries { static func allWinnersSortedByEvent(realm: Realm, date: Date? = nil) -> [TournamentWinner] { let winners: Results -// if let day = date { -// winners = realm.objects(Result.self).filter("rank == 1 && ANY tournaments.date IN %@", [day]) -// } else { -// winners = realm.objects(Result.self).filter("rank == 1") -// } - winners = realm.objects(Result.self).filter("rank == 1") + if let day = date { + winners = realm.objects(Result.self).filter("rank == 1 && ANY tournaments.date IN %@", [day]) + } else { + winners = realm.objects(Result.self).filter("rank == 1") + } +// winners = realm.objects(Result.self).filter("rank == 1") var tws: [TournamentWinner] = [] diff --git a/TournamentStats/scrapper/Downloader.swift b/TournamentStats/scrapper/Downloader.swift index 4f61d15..dd850ab 100644 --- a/TournamentStats/scrapper/Downloader.swift +++ b/TournamentStats/scrapper/Downloader.swift @@ -11,10 +11,20 @@ import RealmSwift class Downloader { + struct TS { + var id: String + var date: String + } + static func downloadWSOPResults() { - downloadWSOPResults(tournamentId: "19728") - downloadWSOPResults(tournamentId: "19730") + let infos = [TS(id: "19728", date: "02/10/2021"), + TS(id: "19729", date: "03/10/2021"), + TS(id: "19730", date: "02/10/2021")] + + for info in infos { + downloadWSOPResults(tournamentInfo: info) + } // for i in 19728...19732 { // DispatchQueue.global(qos: .utility).async { @@ -26,23 +36,14 @@ class Downloader { } - fileprivate static func downloadWSOPResults(tournamentId: String) { + fileprivate static func downloadWSOPResults(tournamentInfo: TS) { - print("Importing tournament \(tournamentId)") + print("Importing tournament \(tournamentInfo.id)") - guard let url = URL(string: "https://www.wsop.com/tournaments/results/?aid=2&grid=4865&tid=\(tournamentId)&rr=5") else { + guard let url = URL(string: "https://www.wsop.com/tournaments/results/?aid=2&grid=4865&tid=\(tournamentInfo.id)&rr=5") else { return } - /* - - */ - let realm = try! Realm() let nf = NumberFormatter() @@ -61,12 +62,20 @@ class Downloader { if let name = infos.slice(from: "

", to: "

") { tournament.name = name - tournament.date = Date() + tournament.date = Formatter.basicDate.date(from: tournamentInfo.date) ?? Date() if let strNumber = name.slice(from: "Event #", to: ":"), let number = nf.number(from: strNumber) { tournament.number = number.intValue } + if name.contains("6-Handed") { + tournament.tableSize = 6 + } else if name.contains("8-Handed") { + tournament.tableSize = 8 + } else if name.contains("Heads-Up") { + tournament.tableSize = 2 + } + } else { print("no name = \(infos)") } @@ -146,7 +155,8 @@ class Downloader { let countryIndex = hasPOY ? 6 : 5 if let countryraw = cells[countryIndex].components(separatedBy: "\'>").last { - country = countryraw.replacingOccurrences(of: "", with: "") + country = String(countryraw.prefix(2)) +// country = countrytmp.prefix(2) } guard let rank = rank, let name = name, let earnings = earnings else { @@ -165,7 +175,6 @@ class Downloader { } - //
  • 1
  • United StatesJames Barnett
  • $39,013
  • Tulare
  • CA
  • US
  • } else { print("Bad page strresultsblock") }