Improvement and bug fixes

master
Laurent Morvillier 4 years ago
parent 4a5949cf4c
commit 25b7a3a795
  1. 36
      TournamentStats.xcodeproj/xcuserdata/laurent.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  2. 3
      TournamentStats/NotablePlayers.swift
  3. 3
      TournamentStats/RowImporter.swift
  4. 11
      TournamentStats/core/Formatters.swift
  5. 4
      TournamentStats/core/Realm+Extensions.swift
  6. 10
      TournamentStats/report/Queries.swift
  7. 43
      TournamentStats/scrapper/Downloader.swift

@ -40,9 +40,9 @@
filePath = "TournamentStats/scrapper/Downloader.swift" filePath = "TournamentStats/scrapper/Downloader.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "152" startingLineNumber = "162"
endingLineNumber = "152" endingLineNumber = "162"
landmarkName = "downloadWSOPResults(tournamentId:)" landmarkName = "downloadWSOPResults(tournamentInfo:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
@ -56,9 +56,9 @@
filePath = "TournamentStats/scrapper/Downloader.swift" filePath = "TournamentStats/scrapper/Downloader.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "126" startingLineNumber = "135"
endingLineNumber = "126" endingLineNumber = "135"
landmarkName = "downloadWSOPResults(tournamentId:)" landmarkName = "downloadWSOPResults(tournamentInfo:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
@ -72,9 +72,9 @@
filePath = "TournamentStats/scrapper/Downloader.swift" filePath = "TournamentStats/scrapper/Downloader.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "102" startingLineNumber = "111"
endingLineNumber = "102" endingLineNumber = "111"
landmarkName = "downloadWSOPResults(tournamentId:)" landmarkName = "downloadWSOPResults(tournamentInfo:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
@ -88,9 +88,9 @@
filePath = "TournamentStats/scrapper/Downloader.swift" filePath = "TournamentStats/scrapper/Downloader.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "95" startingLineNumber = "104"
endingLineNumber = "95" endingLineNumber = "104"
landmarkName = "downloadWSOPResults(tournamentId:)" landmarkName = "downloadWSOPResults(tournamentInfo:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
@ -104,9 +104,9 @@
filePath = "TournamentStats/scrapper/Downloader.swift" filePath = "TournamentStats/scrapper/Downloader.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "103" startingLineNumber = "112"
endingLineNumber = "103" endingLineNumber = "112"
landmarkName = "downloadWSOPResults(tournamentId:)" landmarkName = "downloadWSOPResults(tournamentInfo:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
@ -120,9 +120,9 @@
filePath = "TournamentStats/scrapper/Downloader.swift" filePath = "TournamentStats/scrapper/Downloader.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "118" startingLineNumber = "127"
endingLineNumber = "118" endingLineNumber = "127"
landmarkName = "downloadWSOPResults(tournamentId:)" landmarkName = "downloadWSOPResults(tournamentInfo:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>

@ -96,7 +96,8 @@ class NotablePlayers {
"Mike Leah", "Mike Leah",
"Joao Vieira", "Joao Vieira",
"Tony Dunst", "Tony Dunst",
"Jonathan Little" "Jonathan Little",
"Michael Addamo"
] ]
} }

@ -112,8 +112,7 @@ class RowImporter {
state = row state = row
case .country: case .country:
country = row country = row
let notable: Bool = NotablePlayers.all.contains(playerName) player = realm.getOrCreatePlayer(name: playerName, city: city, state: state, country: country)
player = realm.getOrCreatePlayer(name: playerName, city: city, state: state, country: country, notable: notable)
result?.player = player result?.player = player
} }

@ -17,6 +17,10 @@ extension Locale {
} }
} }
func validCountryCode(code: String) -> Bool {
return NSLocale.isoCountryCodes.contains(code)
}
func flagoji(from countryName: String) -> String? { func flagoji(from countryName: String) -> String? {
var adaptedCountryName = countryName var adaptedCountryName = countryName
@ -29,7 +33,12 @@ extension Locale {
break 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 let base : UInt32 = 127397
var s = "" var s = ""
for v in countryCode.uppercased().unicodeScalars { for v in countryCode.uppercased().unicodeScalars {

@ -26,7 +26,7 @@ extension Realm {
return new 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) let items = self.objects(Player.self).filter("name = %@ && state = %@ && country = %@", name, state, country)
if let item = items.first { if let item = items.first {
return item return item
@ -36,7 +36,7 @@ extension Realm {
new.city = city new.city = city
new.country = country new.country = country
new.state = state new.state = state
new.notable = notable new.notable = NotablePlayers.all.contains(name)
return new return new
} }

@ -92,12 +92,12 @@ class Queries {
static func allWinnersSortedByEvent(realm: Realm, date: Date? = nil) -> [TournamentWinner] { static func allWinnersSortedByEvent(realm: Realm, date: Date? = nil) -> [TournamentWinner] {
let winners: Results<Result> let winners: Results<Result>
// if let day = date { if let day = date {
// winners = realm.objects(Result.self).filter("rank == 1 && ANY tournaments.date IN %@", [day]) winners = realm.objects(Result.self).filter("rank == 1 && ANY tournaments.date IN %@", [day])
// } else { } else {
// winners = realm.objects(Result.self).filter("rank == 1")
// }
winners = realm.objects(Result.self).filter("rank == 1") winners = realm.objects(Result.self).filter("rank == 1")
}
// winners = realm.objects(Result.self).filter("rank == 1")
var tws: [TournamentWinner] = [] var tws: [TournamentWinner] = []

@ -11,10 +11,20 @@ import RealmSwift
class Downloader { class Downloader {
struct TS {
var id: String
var date: String
}
static func downloadWSOPResults() { static func downloadWSOPResults() {
downloadWSOPResults(tournamentId: "19728") let infos = [TS(id: "19728", date: "02/10/2021"),
downloadWSOPResults(tournamentId: "19730") 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 { // for i in 19728...19732 {
// DispatchQueue.global(qos: .utility).async { // 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 return
} }
/*
<ul id="eventstats">
<li><b>Buy-in:</b> &#36;500</li>
<li><b>Prizepool:</b> &#36;175,980 </li>
<li><b>Entries:</b> 419 </li>
<li><b>Remaining:</b> 63</li>
</ul>
*/
let realm = try! Realm() let realm = try! Realm()
let nf = NumberFormatter() let nf = NumberFormatter()
@ -61,12 +62,20 @@ class Downloader {
if let name = infos.slice(from: "<h1>", to: "</h1>") { if let name = infos.slice(from: "<h1>", to: "</h1>") {
tournament.name = name 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) { if let strNumber = name.slice(from: "Event #", to: ":"), let number = nf.number(from: strNumber) {
tournament.number = number.intValue 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 { } else {
print("no name = \(infos)") print("no name = \(infos)")
} }
@ -146,7 +155,8 @@ class Downloader {
let countryIndex = hasPOY ? 6 : 5 let countryIndex = hasPOY ? 6 : 5
if let countryraw if let countryraw
= cells[countryIndex].components(separatedBy: "\'>").last { = cells[countryIndex].components(separatedBy: "\'>").last {
country = countryraw.replacingOccurrences(of: "</li>", with: "") country = String(countryraw.prefix(2))
// country = countrytmp.prefix(2)
} }
guard let rank = rank, let name = name, let earnings = earnings else { guard let rank = rank, let name = name, let earnings = earnings else {
@ -165,7 +175,6 @@ class Downloader {
} }
// <li class='place'>1</li><li class='player cellbg'><img src='/tournaments/images/flags/US.gif' border='0' title='United States' alt='United States' /><a href='/players/profile/?playerid=200597'>James Barnett</a></li><li class='award'>&#36;39,013</li><li class='city cellbg'>Tulare</li><li class='state'>CA</li><li class='country cellbg'>US</li>
} else { } else {
print("Bad page strresultsblock") print("Bad page strresultsblock")
} }

Loading…
Cancel
Save