// ==UserScript== // @name GeoGuessr country-wise score // @version 0.1 // @description Adds an analysis tool to the GeoGuessr website // @match https://www.geoguessr.com/* // @run-at document-start // @author eru // @license MIT // @require https://greasyfork.org/scripts/460322-geoguessr-styles-scan/code/Geoguessr%20Styles%20Scan.js?version=1151654 // @icon https://www.google.com/s2/favicons?sz=64&domain=geoguessr.com // @grant none // @namespace https://greasyfork.org/users/1348455 // @downloadURL none // ==/UserScript== /* THIS SCRIPT WAS SUPPOSED TO WORK FOR BOTH SOLO AND MULTIPLAYER HOWEVER, I FOUND OUT THAT IT IS NOT ALLOWED TO QUERY THE API FROM A MULTIPLAYER GAME SO IGNORE ALL CODE SNIPPETS RELATED TO MULTIPLAYER LIKE getDuelData */ const AUTOMATIC = true; // ^^^^ Replace with false for a manual counter const API_Key = ''; // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Replace INSERT_BIGDATACLOUD_API_KEY_HERE with your API key (keep the quote marks) // THIS IS OPTIONAL: if you don't provide an API key, the script will use another method to get the country const statsServerUrl = 'https://ggstats.eu'; const DefaultCountryDict = { AF: {referent: 'AF', occ: 0, right: 0, diag: 1142.1295898452154, avgdist: 0, alpha: 175.3515519520104, avgscore: 0, wrong_guesses: {}}, AX: {referent: 'FI', occ: 0, right: 0, diag: 56.213877290220786, avgdist: 0, alpha: 25.63268878594707, avgscore: 0, wrong_guesses: {}}, AL: {referent: 'AL', occ: 0, right: 0, diag: 239.78323544401513, avgdist: 0, alpha: 46.309802998440105, avgscore: 0, wrong_guesses: {}}, DZ: {referent: 'DZ', occ: 0, right: 0, diag: 2182.5402630879457, avgdist: 0, alpha: 318.79648181423624, avgscore: 0, wrong_guesses: {}}, AS: {referent: 'US', occ: 0, right: 0, diag: 19.949937343260004, avgdist: 0, alpha: 20.632857031043354, avgscore: 0, wrong_guesses: {}}, AD: {referent: 'AD', occ: 0, right: 0, diag: 30.59411708155671, avgdist: 0, alpha: 22.100406004990372, avgscore: 0, wrong_guesses: {}}, AO: {referent: 'AO', occ: 0, right: 0, diag: 1579.0503475190396, avgdist: 0, alpha: 235.5912909817255, avgscore: 0, wrong_guesses: {}}, AI: {referent: 'GB', occ: 0, right: 0, diag: 13.490737563232042, avgdist: 0, alpha: 19.742305364051706, avgscore: 0, wrong_guesses: {}}, AQ: {referent: 'AQ', occ: 0, right: 0, diag: 5291.502622129181, avgdist: 0, alpha: 747.4396118842076, avgscore: 0, wrong_guesses: {}}, AG: {referent: 'AG', occ: 0, right: 0, diag: 29.732137494637012, avgdist: 0, alpha: 21.981561971025414, avgscore: 0, wrong_guesses: {}}, AR: {referent: 'AR', occ: 0, right: 0, diag: 2358.1348561946156, avgdist: 0, alpha: 396.0216955729648, avgscore: 0, wrong_guesses: {}}, AM: {referent: 'AM', occ: 0, right: 0, diag: 243.89751946258085, avgdist: 0, alpha: 51.50926577625275, avgscore: 0, wrong_guesses: {}}, AW: {referent: 'NL', occ: 0, right: 0, diag: 18.973665961010276, avgdist: 0, alpha: 20.498255201636095, avgscore: 0, wrong_guesses: {}}, AU: {referent: 'AU', occ: 0, right: 0, diag: 3922.2503744661685, avgdist: 0, alpha: 512.8761793857648, avgscore: 0, wrong_guesses: {}}, AT: {referent: 'AT', occ: 0, right: 0, diag: 409.56318193900194, avgdist: 0, alpha: 83.53194032530612, avgscore: 0, wrong_guesses: {}}, AZ: {referent: 'AZ', occ: 0, right: 0, diag: 416.17304093369626, avgdist: 0, alpha: 75.26147317852835, avgscore: 0, wrong_guesses: {}}, BS: {referent: 'BS', occ: 0, right: 0, diag: 166.99101772251106, avgdist: 0, alpha: 40.905906899060895, avgscore: 0, wrong_guesses: {}}, BH: {referent: 'BH', occ: 0, right: 0, diag: 39.11521443121589, avgdist: 0, alpha: 23.275238446742815, avgscore: 0, wrong_guesses: {}}, BD: {referent: 'BD', occ: 0, right: 0, diag: 543.2678897192434, avgdist: 0, alpha: 74.38755026777277, avgscore: 0, wrong_guesses: {}}, BB: {referent: 'BB', occ: 0, right: 0, diag: 29.32575659723036, avgdist: 0, alpha: 21.925532865572123, avgscore: 0, wrong_guesses: {}}, BY: {referent: 'BY', occ: 0, right: 0, diag: 644.3601477434805, avgdist: 0, alpha: 106.72239949695455, avgscore: 0, wrong_guesses: {}}, BE: {referent: 'BE', occ: 0, right: 0, diag: 247.09512338368802, avgdist: 0, alpha: 34.843829038514336, avgscore: 0, wrong_guesses: {}}, BZ: {referent: 'BZ', occ: 0, right: 0, diag: 214.31752144890066, avgdist: 0, alpha: 47.43097164728892, avgscore: 0, wrong_guesses: {}}, BJ: {referent: 'BJ', occ: 0, right: 0, diag: 474.59877791667355, avgdist: 0, alpha: 83.31682666461928, avgscore: 0, wrong_guesses: {}}, BM: {referent: 'GB', occ: 0, right: 0, diag: 10.392304845413264, avgdist: 0, alpha: 19.315113991144052, avgscore: 0, wrong_guesses: {}}, BT: {referent: 'BT', occ: 0, right: 0, diag: 277.10647773013176, avgdist: 0, alpha: 54.93711090892961, avgscore: 0, wrong_guesses: {}}, BO: {referent: 'BO', occ: 0, right: 0, diag: 1482.2826990827357, avgdist: 0, alpha: 163.17070120907988, avgscore: 0, wrong_guesses: {}}, BQ: {referent: 'NL', occ: 0, right: 0, diag: 25.612496949731394, avgdist: 0, alpha: 37.47968185947722, avgscore: 0, wrong_guesses: {}}, BA: {referent: 'BA', occ: 0, right: 0, diag: 320.0281237641467, avgdist: 0, alpha: 62.005649055722614, avgscore: 0, wrong_guesses: {}}, BW: {referent: 'BW', occ: 0, right: 0, diag: 1078.8883167408942, avgdist: 0, alpha: 134.95197865270416, avgscore: 0, wrong_guesses: {}}, BV: {referent: 'NO', occ: 0, right: 0, diag: 9.899494936611665, avgdist: 0, alpha: 19.247168626278533, avgscore: 0, wrong_guesses: {}}, BR: {referent: 'BR', occ: 0, right: 0, diag: 4126.927913109217, avgdist: 0, alpha: 591.9923561732209, avgscore: 0, wrong_guesses: {}}, BN: {referent: 'BN', occ: 0, right: 0, diag: 107.37783756436893, avgdist: 0, alpha: 32.68683661598056, avgscore: 0, wrong_guesses: {}}, BG: {referent: 'BG', occ: 0, right: 0, diag: 470.91188135361375, avgdist: 0, alpha: 60.05314384559996, avgscore: 0, wrong_guesses: {}}, BF: {referent: 'BF', occ: 0, right: 0, diag: 738.8734668398913, avgdist: 0, alpha: 119.75326968841003, avgscore: 0, wrong_guesses: {}}, BI: {referent: 'BI', occ: 0, right: 0, diag: 235.9406705084988, avgdist: 0, alpha: 50.41222816457079, avgscore: 0, wrong_guesses: {}}, KH: {referent: 'KH', occ: 0, right: 0, diag: 601.7225274160841, avgdist: 0, alpha: 71.12785351923642, avgscore: 0, wrong_guesses: {}}, CM: {referent: 'CM', occ: 0, right: 0, diag: 975.1328114672381, avgdist: 0, alpha: 152.3271426704479, avgscore: 0, wrong_guesses: {}}, CA: {referent: 'CA', occ: 0, right: 0, diag: 4468.706748042436, avgdist: 0, alpha: 546.2232473698027, avgscore: 0, wrong_guesses: {}}, CV: {referent: 'CV', occ: 0, right: 0, diag: 89.81091247727082, avgdist: 0, alpha: 30.26482538347385, avgscore: 0, wrong_guesses: {}}, KY: {referent: 'UK', occ: 0, right: 0, diag: 22.978250586152114, avgdist: 0, alpha: 21.050380795359988, avgscore: 0, wrong_guesses: {}}, CF: {referent: 'CF', occ: 0, right: 0, diag: 1116.2293671105415, avgdist: 0, alpha: 171.78060085631307, avgscore: 0, wrong_guesses: {}}, TD: {referent: 'TD', occ: 0, right: 0, diag: 1602.4980499208104, avgdist: 0, alpha: 238.82410482432982, avgscore: 0, wrong_guesses: {}}, CL: {referent: 'CL', occ: 0, right: 0, diag: 1229.7170406235737, avgdist: 0, alpha: 412.0259548379801, avgscore: 0, wrong_guesses: {}}, CN: {referent: 'CN', occ: 0, right: 0, diag: 4406.123239311401, avgdist: 0, alpha: 625.3693691079427, avgscore: 0, wrong_guesses: {}}, CX: {referent: 'AU', occ: 0, right: 0, diag: 16.431676725154983, avgdist: 0, alpha: 20.147782569025253, avgscore: 0, wrong_guesses: {}}, CC: {referent: 'AU', occ: 0, right: 0, diag: 5.291502622129181, avgdist: 0, alpha: 18.611849178529653, avgscore: 0, wrong_guesses: {}}, CO: {referent: 'CO', occ: 0, right: 0, diag: 1511.1240849116264, avgdist: 0, alpha: 234.99234152503587, avgscore: 0, wrong_guesses: {}}, KM: {referent: 'KM', occ: 0, right: 0, diag: 61.02458520956943, avgdist: 0, alpha: 26.295957318100648, avgscore: 0, wrong_guesses: {}}, CG: {referent: 'CG', occ: 0, right: 0, diag: 827.0429251254133, avgdist: 0, alpha: 131.90949038570238, avgscore: 0, wrong_guesses: {}}, CD: {referent: 'CD', occ: 0, right: 0, diag: 2165.575212270403, avgdist: 0, alpha: 316.45745301799496, avgscore: 0, wrong_guesses: {}}, CK: {referent: 'NZ', occ: 0, right: 0, diag: 21.72556098240043, avgdist: 0, alpha: 20.877668253120067, avgscore: 0, wrong_guesses: {}}, CR: {referent: 'CR', occ: 0, right: 0, diag: 319.68734726291564, avgdist: 0, alpha: 61.95866504971907, avgscore: 0, wrong_guesses: {}}, CI: {referent: 'CI', occ: 0, right: 0, diag: 803.072848501305, avgdist: 0, alpha: 128.60465504657546, avgscore: 0, wrong_guesses: {}}, HR: {referent: 'HR', occ: 0, right: 0, diag: 336.4342432036311, avgdist: 0, alpha: 65.25113670334214, avgscore: 0, wrong_guesses: {}}, CU: {referent: 'CU', occ: 0, right: 0, diag: 468.7941979163138, avgdist: 0, alpha: 82.51652963533552, avgscore: 0, wrong_guesses: {}}, CW: {referent: 'NL', occ: 0, right: 0, diag: 29.79932885150268, avgdist: 0, alpha: 21.990825870099904, avgscore: 0, wrong_guesses: {}}, CY: {referent: 'CY', occ: 0, right: 0, diag: 136.02205703487945, avgdist: 0, alpha: 36.63611179988381, avgscore: 0, wrong_guesses: {}}, CZ: {referent: 'CZ', occ: 0, right: 0, diag: 397.1523637094459, avgdist: 0, alpha: 58.35867535139994, avgscore: 0, wrong_guesses: {}}, DK: {referent: 'DK', occ: 0, right: 0, diag: 293.5779283256832, avgdist: 0, alpha: 55.4021156649218, avgscore: 0, wrong_guesses: {}}, DJ: {referent: 'DJ', occ: 0, right: 0, diag: 215.40659228538016, avgdist: 0, alpha: 47.58112551803583, avgscore: 0, wrong_guesses: {}}, DM: {referent: 'DM', occ: 0, right: 0, diag: 38.7556447501522, avgdist: 0, alpha: 23.22566336162762, avgscore: 0, wrong_guesses: {}}, DO: {referent: 'DO', occ: 0, right: 0, diag: 311.9967948553318, avgdist: 0, alpha: 56.78039086631456, avgscore: 0, wrong_guesses: {}}, EC: {referent: 'EC', occ: 0, right: 0, diag: 744.0981118105327, avgdist: 0, alpha: 176.45960606370554, avgscore: 0, wrong_guesses: {}}, EG: {referent: 'EG', occ: 0, right: 0, diag: 1415.9449141827517, avgdist: 0, alpha: 213.1033945704463, avgscore: 0, wrong_guesses: {}}, SV: {referent: 'SV', occ: 0, right: 0, diag: 205.1389772812568, avgdist: 0, alpha: 46.16549479451749, avgscore: 0, wrong_guesses: {}}, GQ: {referent: 'GQ', occ: 0, right: 0, diag: 236.85860761222085, avgdist: 0, alpha: 50.538787250177776, avgscore: 0, wrong_guesses: {}}, ER: {referent: 'ER', occ: 0, right: 0, diag: 484.9742261192856, avgdist: 0, alpha: 84.74732471504213, avgscore: 0, wrong_guesses: {}}, EE: {referent: 'EE', occ: 0, right: 0, diag: 300.7557148251717, avgdist: 0, alpha: 43.71043395836512, avgscore: 0, wrong_guesses: {}}, ET: {referent: 'ET', occ: 0, right: 0, diag: 1486.1359291801002, avgdist: 0, alpha: 222.7808666323886, avgscore: 0, wrong_guesses: {}}, FK: {referent: 'GB', occ: 0, right: 0, diag: 156.0320479901485, avgdist: 0, alpha: 39.39495676653159, avgscore: 0, wrong_guesses: {}}, FO: {referent: 'DK', occ: 0, right: 0, diag: 52.78257288158659, avgdist: 0, alpha: 25.159603269918684, avgscore: 0, wrong_guesses: {}}, FJ: {referent: 'FJ', occ: 0, right: 0, diag: 191.16485032557634, avgdist: 0, alpha: 44.23883476247862, avgscore: 0, wrong_guesses: {}}, FI: {referent: 'FI', occ: 0, right: 0, diag: 822.7077245291915, avgdist: 0, alpha: 123.88775064268542, avgscore: 0, wrong_guesses: {}}, FR: {referent: 'FR', occ: 0, right: 0, diag: 1050.4237240275945, avgdist: 0, alpha: 151.68231721060795, avgscore: 0, wrong_guesses: {}}, GF: {referent: 'FR', occ: 0, right: 0, diag: 408.7395258596849, avgdist: 0, alpha: 74.23658937461856, avgscore: 0, wrong_guesses: {}}, PF: {referent: 'FR', occ: 0, right: 0, diag: 91.29074432821763, avgdist: 0, alpha: 30.46885479371177, avgscore: 0, wrong_guesses: {}}, TF: {referent: 'FR', occ: 0, right: 0, diag: 124.47489706764172, avgdist: 0, alpha: 35.04406589512031, avgscore: 0, wrong_guesses: {}}, GA: {referent: 'GA', occ: 0, right: 0, diag: 731.6665907365185, avgdist: 0, alpha: 118.75963336406133, avgscore: 0, wrong_guesses: {}}, GM: {referent: 'GM', occ: 0, right: 0, diag: 146.21217459568817, avgdist: 0, alpha: 38.041057689416235, avgscore: 0, wrong_guesses: {}}, GE: {referent: 'GE', occ: 0, right: 0, diag: 373.3630940518894, avgdist: 0, alpha: 69.35912136131117, avgscore: 0, wrong_guesses: {}}, DE: {referent: 'DE', occ: 0, right: 0, diag: 845.1201098068842, avgdist: 0, alpha: 101.1560583838771, avgscore: 0, wrong_guesses: {}}, GH: {referent: 'GH', occ: 0, right: 0, diag: 690.6996452872985, avgdist: 0, alpha: 109.92069520635856, avgscore: 0, wrong_guesses: {}}, GI: {referent: 'UK', occ: 0, right: 0, diag: 3.4641016151377544, avgdist: 0, alpha: 18.359899236050648, avgscore: 0, wrong_guesses: {}}, GR: {referent: 'GR', occ: 0, right: 0, diag: 513.7898403043797, avgdist: 0, alpha: 105.77687733352258, avgscore: 0, wrong_guesses: {}}, GL: {referent: 'DK', occ: 0, right: 0, diag: 2081.3870375305023, avgdist: 0, alpha: 200.87644835734, avgscore: 0, wrong_guesses: {}}, GD: {referent: 'GD', occ: 0, right: 0, diag: 26.229754097208, avgdist: 0, alpha: 21.498676554991604, avgscore: 0, wrong_guesses: {}}, GP: {referent: 'FR', occ: 0, right: 0, diag: 57.06137047074842, avgdist: 0, alpha: 25.749535530185668, avgscore: 0, wrong_guesses: {}}, GU: {referent: 'US', occ: 0, right: 0, diag: 33.13608305156178, avgdist: 0, alpha: 22.450875429859945, avgscore: 0, wrong_guesses: {}}, GT: {referent: 'GT', occ: 0, right: 0, diag: 466.666904761844, avgdist: 0, alpha: 66.61979619942836, avgscore: 0, wrong_guesses: {}}, GG: {referent: 'GB', occ: 0, right: 0, diag: 12.489995996796797, avgdist: 0, alpha: 19.604329747788466, avgscore: 0, wrong_guesses: {}}, GN: {referent: 'GN', occ: 0, right: 0, diag: 701.2232169573394, avgdist: 0, alpha: 114.56230270528113, avgscore: 0, wrong_guesses: {}}, GW: {referent: 'GW', occ: 0, right: 0, diag: 268.79360111431225, avgdist: 0, alpha: 54.941772552876024, avgscore: 0, wrong_guesses: {}}, GY: {referent: 'GY', occ: 0, right: 0, diag: 655.6965761691912, avgdist: 0, alpha: 108.28539113308017, avgscore: 0, wrong_guesses: {}}, HT: {referent: 'HT', occ: 0, right: 0, diag: 235.58437978779492, avgdist: 0, alpha: 50.363105160783604, avgscore: 0, wrong_guesses: {}}, HM: {referent: 'AU', occ: 0, right: 0, diag: 28.705400188814647, avgdist: 0, alpha: 21.84000223446333, avgscore: 0, wrong_guesses: {}}, VA: {referent: 'VA', occ: 0, right: 0, diag: 0.938083151964686, avgdist: 0, alpha: 18.011628547754842, avgscore: 0, wrong_guesses: {}}, HN: {referent: 'HN', occ: 0, right: 0, diag: 474.3247832445612, avgdist: 0, alpha: 83.27905009471802, avgscore: 0, wrong_guesses: {}}, HK: {referent: 'CN', occ: 0, right: 0, diag: 46.98936049788292, avgdist: 0, alpha: 24.360873532297592, avgscore: 0, wrong_guesses: {}}, HU: {referent: 'HU', occ: 0, right: 0, diag: 431.34209161638745, avgdist: 0, alpha: 59.582088688244326, avgscore: 0, wrong_guesses: {}}, IS: {referent: 'IS', occ: 0, right: 0, diag: 453.8722287164087, avgdist: 0, alpha: 56.83853033920002, avgscore: 0, wrong_guesses: {}}, IN: {referent: 'IN', occ: 0, right: 0, diag: 2564.2113797423176, avgdist: 0, alpha: 371.4187664244891, avgscore: 0, wrong_guesses: {}}, ID: {referent: 'ID', occ: 0, right: 0, diag: 1951.7013091146914, avgdist: 0, alpha: 348.24172495205454, avgscore: 0, wrong_guesses: {}}, IR: {referent: 'IR', occ: 0, right: 0, diag: 1815.5963207717732, avgdist: 0, alpha: 268.2046824194295, avgscore: 0, wrong_guesses: {}}, IQ: {referent: 'IQ', occ: 0, right: 0, diag: 936.2873490547654, avgdist: 0, alpha: 146.9713877031756, avgscore: 0, wrong_guesses: {}}, IE: {referent: 'IE', occ: 0, right: 0, diag: 374.8946518690284, avgdist: 0, alpha: 69.57028240503124, avgscore: 0, wrong_guesses: {}}, IM: {referent: 'GB', occ: 0, right: 0, diag: 33.823069050575526, avgdist: 0, alpha: 22.54559250743251, avgscore: 0, wrong_guesses: {}}, IL: {referent: 'IL', occ: 0, right: 0, diag: 203.81364036786155, avgdist: 0, alpha: 42.81847201865375, avgscore: 0, wrong_guesses: {}}, IT: {referent: 'IT', occ: 0, right: 0, diag: 776.3195218465139, avgdist: 0, alpha: 161.12895676195018, avgscore: 0, wrong_guesses: {}}, JM: {referent: 'JM', occ: 0, right: 0, diag: 148.26327933780502, avgdist: 0, alpha: 38.32385042063267, avgscore: 0, wrong_guesses: {}}, JP: {referent: 'JP', occ: 0, right: 0, diag: 869.4020933952253, avgdist: 0, alpha: 212.824360424015, avgscore: 0, wrong_guesses: {}}, JE: {referent: 'GB', occ: 0, right: 0, diag: 15.231546211727817, avgdist: 0, alpha: 19.982316525902576, avgscore: 0, wrong_guesses: {}}, JO: {referent: 'JO', occ: 0, right: 0, diag: 422.71030268967894, avgdist: 0, alpha: 70.89211961461133, avgscore: 0, wrong_guesses: {}}, KZ: {referent: 'KZ', occ: 0, right: 0, diag: 2334.480670299071, avgdist: 0, alpha: 339.7450184028771, avgscore: 0, wrong_guesses: {}}, KE: {referent: 'KE', occ: 0, right: 0, diag: 1077.3736584862284, avgdist: 0, alpha: 146.3362641686688, avgscore: 0, wrong_guesses: {}}, KI: {referent: 'KI', occ: 0, right: 0, diag: 40.27406113120453, avgdist: 0, alpha: 23.435012551215273, avgscore: 0, wrong_guesses: {}}, KR: {referent: 'KR', occ: 0, right: 0, diag: 447.6829235072519, avgdist: 0, alpha: 65.55828785694067, avgscore: 0, wrong_guesses: {}}, KW: {referent: 'KW', occ: 0, right: 0, diag: 188.7749983445901, avgdist: 0, alpha: 43.90933780650718, avgscore: 0, wrong_guesses: {}}, KG: {referent: 'KG', occ: 0, right: 0, diag: 632.3780514850274, avgdist: 0, alpha: 121.69263454224145, avgscore: 0, wrong_guesses: {}}, LA: {referent: 'LA', occ: 0, right: 0, diag: 688.1860213634102, avgdist: 0, alpha: 143.57699299871368, avgscore: 0, wrong_guesses: {}}, LV: {referent: 'LV', occ: 0, right: 0, diag: 359.32993195669076, avgdist: 0, alpha: 50.97009828511159, avgscore: 0, wrong_guesses: {}}, LB: {referent: 'LB', occ: 0, right: 0, diag: 144.58215657542254, avgdist: 0, alpha: 37.81632160528668, avgscore: 0, wrong_guesses: {}}, LS: {referent: 'LS', occ: 0, right: 0, diag: 246.39399343328157, avgdist: 0, alpha: 34.56557529652339, avgscore: 0, wrong_guesses: {}}, LR: {referent: 'LR', occ: 0, right: 0, diag: 471.9512686708237, avgdist: 0, alpha: 82.95180563220632, avgscore: 0, wrong_guesses: {}}, LY: {referent: 'LY', occ: 0, right: 0, diag: 1875.9211070831311, avgdist: 0, alpha: 276.52186424381057, avgscore: 0, wrong_guesses: {}}, LI: {referent: 'LI', occ: 0, right: 0, diag: 17.88854381999832, avgdist: 0, alpha: 20.34864575085618, avgscore: 0, wrong_guesses: {}}, LT: {referent: 'LT', occ: 0, right: 0, diag: 361.386219991853, avgdist: 0, alpha: 46.406637166782296, avgscore: 0, wrong_guesses: {}}, LU: {referent: 'LU', occ: 0, right: 0, diag: 71.91661838546081, avgdist: 0, alpha: 27.797678681745545, avgscore: 0, wrong_guesses: {}}, MO: {referent: 'CN', occ: 0, right: 0, diag: 7.745966692414834, avgdist: 0, alpha: 18.950254421253778, avgscore: 0, wrong_guesses: {}}, MK: {referent: 'MK', occ: 0, right: 0, diag: 226.77301426757109, avgdist: 0, alpha: 30.07702057954948, avgscore: 0, wrong_guesses: {}}, MG: {referent: 'MG', occ: 0, right: 0, diag: 1083.5506448708338, avgdist: 0, alpha: 202.3942422420552, avgscore: 0, wrong_guesses: {}}, MW: {referent: 'MW', occ: 0, right: 0, diag: 486.7935907548496, avgdist: 0, alpha: 84.99816665587774, avgscore: 0, wrong_guesses: {}}, MY: {referent: 'MY', occ: 0, right: 0, diag: 813.3916645749451, avgdist: 0, alpha: 222.18464770088195, avgscore: 0, wrong_guesses: {}}, MV: {referent: 'MV', occ: 0, right: 0, diag: 24.49489742783178, avgdist: 0, alpha: 21.25948601258391, avgscore: 0, wrong_guesses: {}}, ML: {referent: 'ML', occ: 0, right: 0, diag: 1574.9234902051592, avgdist: 0, alpha: 235.02230723985758, avgscore: 0, wrong_guesses: {}}, MT: {referent: 'MT', occ: 0, right: 0, diag: 25.13961017995307, avgdist: 0, alpha: 21.348374734977615, avgscore: 0, wrong_guesses: {}}, MH: {referent: 'MH', occ: 0, right: 0, diag: 19.026297590440446, avgdist: 0, alpha: 20.50551170196458, avgscore: 0, wrong_guesses: {}}, MQ: {referent: 'FR', occ: 0, right: 0, diag: 47.49736834815167, avgdist: 0, alpha: 24.430914288630987, avgscore: 0, wrong_guesses: {}}, MR: {referent: 'MR', occ: 0, right: 0, diag: 1435.7576397150042, avgdist: 0, alpha: 215.8350418876499, avgscore: 0, wrong_guesses: {}}, MU: {referent: 'MU', occ: 0, right: 0, diag: 63.874877690685246, avgdist: 0, alpha: 26.68893675934971, avgscore: 0, wrong_guesses: {}}, YT: {referent: 'FR', occ: 0, right: 0, diag: 27.349588662354687, avgdist: 0, alpha: 21.653071924806586, avgscore: 0, wrong_guesses: {}}, MX: {referent: 'MX', occ: 0, right: 0, diag: 1982.1074642914798, avgdist: 0, alpha: 367.3607466315442, avgscore: 0, wrong_guesses: {}}, FM: {referent: 'FM', occ: 0, right: 0, diag: 37.469987990390386, avgdist: 0, alpha: 23.048405526357506, avgscore: 0, wrong_guesses: {}}, MD: {referent: 'MD', occ: 0, right: 0, diag: 260.1768629221284, avgdist: 0, alpha: 53.75375378547282, avgscore: 0, wrong_guesses: {}}, MC: {referent: 'MC', occ: 0, right: 0, diag: 2.009975124224178, avgdist: 0, alpha: 18.15941391053031, avgscore: 0, wrong_guesses: {}}, MN: {referent: 'MN', occ: 0, right: 0, diag: 1768.67747201122, avgdist: 0, alpha: 230.1442050070954, avgscore: 0, wrong_guesses: {}}, ME: {referent: 'ME', occ: 0, right: 0, diag: 166.20469307453385, avgdist: 0, alpha: 28.331453632251147, avgscore: 0, wrong_guesses: {}}, MS: {referent: 'GB', occ: 0, right: 0, diag: 14.2828568570857, avgdist: 0, alpha: 19.85151752370325, avgscore: 0, wrong_guesses: {}}, MA: {referent: 'MA', occ: 0, right: 0, diag: 945.0396817065408, avgdist: 0, alpha: 148.17810133621796, avgscore: 0, wrong_guesses: {}}, MZ: {referent: 'MZ', occ: 0, right: 0, diag: 1266.1674454826266, avgdist: 0, alpha: 192.45306961206452, avgscore: 0, wrong_guesses: {}}, MM: {referent: 'MM', occ: 0, right: 0, diag: 1163.2523371994573, avgdist: 0, alpha: 178.26381639782107, avgscore: 0, wrong_guesses: {}}, NA: {referent: 'NA', occ: 0, right: 0, diag: 1285.0019455238191, avgdist: 0, alpha: 195.049845680286, avgscore: 0, wrong_guesses: {}}, NR: {referent: 'NR', occ: 0, right: 0, diag: 6.48074069840786, avgdist: 0, alpha: 18.77581344459162, avgscore: 0, wrong_guesses: {}}, NP: {referent: 'NP', occ: 0, right: 0, diag: 542.5513800553824, avgdist: 0, alpha: 92.68568119334317, avgscore: 0, wrong_guesses: {}}, NL: {referent: 'NL', occ: 0, right: 0, diag: 289.30952282978865, avgdist: 0, alpha: 57.77037190044235, avgscore: 0, wrong_guesses: {}}, NC: {referent: 'FR', occ: 0, right: 0, diag: 192.74335267396384, avgdist: 0, alpha: 44.45646820711263, avgscore: 0, wrong_guesses: {}}, NZ: {referent: 'NZ', occ: 0, right: 0, diag: 735.4821547801143, avgdist: 0, alpha: 165.76579835292438, avgscore: 0, wrong_guesses: {}}, NI: {referent: 'NI', occ: 0, right: 0, diag: 510.63294057473416, avgdist: 0, alpha: 88.2849782494345, avgscore: 0, wrong_guesses: {}}, NE: {referent: 'NE', occ: 0, right: 0, diag: 1591.8542646863123, avgdist: 0, alpha: 237.35661024195255, avgscore: 0, wrong_guesses: {}}, NG: {referent: 'NG', occ: 0, right: 0, diag: 1359.2409646563776, avgdist: 0, alpha: 184.09473252281128, avgscore: 0, wrong_guesses: {}}, NU: {referent: 'NZ', occ: 0, right: 0, diag: 22.80350850198276, avgdist: 0, alpha: 21.02628851463633, avgscore: 0, wrong_guesses: {}}, NF: {referent: 'AU', occ: 0, right: 0, diag: 8.48528137423857, avgdist: 0, alpha: 19.052186230882164, avgscore: 0, wrong_guesses: {}}, MP: {referent: 'US', occ: 0, right: 0, diag: 30.463092423455635, avgdist: 0, alpha: 22.082341193301204, avgscore: 0, wrong_guesses: {}}, NO: {referent: 'NO', occ: 0, right: 0, diag: 804.738466832548, avgdist: 0, alpha: 189.7558067445318, avgscore: 0, wrong_guesses: {}}, OM: {referent: 'OM', occ: 0, right: 0, diag: 786.7655305108377, avgdist: 0, alpha: 126.35631009439152, avgscore: 0, wrong_guesses: {}}, PK: {referent: 'PK', occ: 0, right: 0, diag: 1328.0903583717488, avgdist: 0, alpha: 200.99059053979585, avgscore: 0, wrong_guesses: {}}, PW: {referent: 'PW', occ: 0, right: 0, diag: 30.298514815086232, avgdist: 0, alpha: 22.059650323150997, avgscore: 0, wrong_guesses: {}}, PS: {referent: 'IL', occ: 0, right: 0, diag: 111.53474794878949, avgdist: 0, alpha: 33.259963876082836, avgscore: 0, wrong_guesses: {}}, PA: {referent: 'PA', occ: 0, right: 0, diag: 388.37353153890393, avgdist: 0, alpha: 69.64419635716979, avgscore: 0, wrong_guesses: {}}, PG: {referent: 'PG', occ: 0, right: 0, diag: 962.1226533036212, avgdist: 0, alpha: 150.53338826819842, avgscore: 0, wrong_guesses: {}}, PY: {referent: 'PY', occ: 0, right: 0, diag: 901.9445659240927, avgdist: 0, alpha: 142.2364323205104, avgscore: 0, wrong_guesses: {}}, PE: {referent: 'PE', occ: 0, right: 0, diag: 1603.256685624607, avgdist: 0, alpha: 212.25094932780146, avgscore: 0, wrong_guesses: {}}, PH: {referent: 'PH', occ: 0, right: 0, diag: 827.4696369051858, avgdist: 0, alpha: 173.4537925435466, avgscore: 0, wrong_guesses: {}}, PN: {referent: 'GB', occ: 0, right: 0, diag: 9.695359714832659, avgdist: 0, alpha: 19.219023814500282, avgscore: 0, wrong_guesses: {}}, PL: {referent: 'PL', occ: 0, right: 0, diag: 790.7958017086332, avgdist: 0, alpha: 93.6377393081947, avgscore: 0, wrong_guesses: {}}, PT: {referent: 'PT', occ: 0, right: 0, diag: 429.1619740843776, avgdist: 0, alpha: 104.32658196010533, avgscore: 0, wrong_guesses: {}}, PR: {referent: 'US', occ: 0, right: 0, diag: 133.19159132617943, avgdist: 0, alpha: 34.953005904661474, avgscore: 0, wrong_guesses: {}}, QA: {referent: 'QA', occ: 0, right: 0, diag: 152.22351986470423, avgdist: 0, alpha: 26.61177089955384, avgscore: 0, wrong_guesses: {}}, RE: {referent: 'FR', occ: 0, right: 0, diag: 70.8660708661063, avgdist: 0, alpha: 27.6528361507082, avgscore: 0, wrong_guesses: {}}, RO: {referent: 'RO', occ: 0, right: 0, diag: 690.4940260422244, avgdist: 0, alpha: 87.61241886754098, avgscore: 0, wrong_guesses: {}}, RU: {referent: 'RU', occ: 0, right: 0, diag: 5847.775987501574, avgdist: 0, alpha: 714.131946328906, avgscore: 0, wrong_guesses: {}}, RW: {referent: 'RW', occ: 0, right: 0, diag: 229.5125268912353, avgdist: 0, alpha: 47.34913940834831, avgscore: 0, wrong_guesses: {}}, BL: {referent: 'FR', occ: 0, right: 0, diag: 6.48074069840786, avgdist: 0, alpha: 18.77581344459162, avgscore: 0, wrong_guesses: {}}, SH: {referent: 'GB', occ: 0, right: 0, diag: 28.071337695236398, avgdist: 0, alpha: 21.752581899148893, avgscore: 0, wrong_guesses: {}}, KN: {referent: 'KN', occ: 0, right: 0, diag: 22.847319317591726, avgdist: 0, alpha: 21.03232885960189, avgscore: 0, wrong_guesses: {}}, LC: {referent: 'LC', occ: 0, right: 0, diag: 35.09985754956849, avgdist: 0, alpha: 22.721627645668942, avgscore: 0, wrong_guesses: {}}, MF: {referent: 'FR', occ: 0, right: 0, diag: 10.295630140987, avgdist: 0, alpha: 19.30178512346466, avgscore: 0, wrong_guesses: {}}, PM: {referent: 'FR', occ: 0, right: 0, diag: 22.0, avgdist: 0, alpha: 20.915506086432877, avgscore: 0, wrong_guesses: {}}, VC: {referent: 'VC', occ: 0, right: 0, diag: 27.892651361962706, avgdist: 0, alpha: 21.727945811493335, avgscore: 0, wrong_guesses: {}}, WS: {referent: 'WS', occ: 0, right: 0, diag: 75.39230729988306, avgdist: 0, alpha: 28.276883639340106, avgscore: 0, wrong_guesses: {}}, SM: {referent: 'SM', occ: 0, right: 0, diag: 11.045361017187261, avgdist: 0, alpha: 19.405153048955945, avgscore: 0, wrong_guesses: {}}, ST: {referent: 'ST', occ: 0, right: 0, diag: 43.9089968002003, avgdist: 0, alpha: 23.936173396160925, avgscore: 0, wrong_guesses: {}}, SA: {referent: 'SA', occ: 0, right: 0, diag: 2073.4946346687275, avgdist: 0, alpha: 303.76199310448055, avgscore: 0, wrong_guesses: {}}, SN: {referent: 'SN', occ: 0, right: 0, diag: 627.2511458738039, avgdist: 0, alpha: 73.10745326166858, avgscore: 0, wrong_guesses: {}}, RS: {referent: 'RS', occ: 0, right: 0, diag: 420.3831585589508, avgdist: 0, alpha: 51.7064056273538, avgscore: 0, wrong_guesses: {}}, SC: {referent: 'SC', occ: 0, right: 0, diag: 30.066592756745816, avgdist: 0, alpha: 22.027674446463326, avgscore: 0, wrong_guesses: {}}, SL: {referent: 'SL', occ: 0, right: 0, diag: 378.78753939378737, avgdist: 0, alpha: 70.10700794265969, avgscore: 0, wrong_guesses: {}}, SG: {referent: 'SG', occ: 0, right: 0, diag: 37.68288736283355, avgdist: 0, alpha: 23.07775868115804, avgscore: 0, wrong_guesses: {}}, SX: {referent: 'NL', occ: 0, right: 0, diag: 8.246211251235321, avgdist: 0, alpha: 19.019224826401885, avgscore: 0, wrong_guesses: {}}, SK: {referent: 'SK', occ: 0, right: 0, diag: 313.16768671112925, avgdist: 0, alpha: 45.22964025118811, avgscore: 0, wrong_guesses: {}}, SI: {referent: 'SI', occ: 0, right: 0, diag: 201.36037346012247, avgdist: 0, alpha: 27.89763900562601, avgscore: 0, wrong_guesses: {}}, SB: {referent: 'SB', occ: 0, right: 0, diag: 240.39966722106752, avgdist: 0, alpha: 51.027005085973144, avgscore: 0, wrong_guesses: {}}, SO: {referent: 'SO', occ: 0, right: 0, diag: 1129.2980120411087, avgdist: 0, alpha: 173.58241902645614, avgscore: 0, wrong_guesses: {}}, ZA: {referent: 'ZA', occ: 0, right: 0, diag: 1562.7136653910723, avgdist: 0, alpha: 211.7170385175186, avgscore: 0, wrong_guesses: {}}, GS: {referent: 'GB', occ: 0, right: 0, diag: 88.35157044444654, avgdist: 0, alpha: 30.06362097359306, avgscore: 0, wrong_guesses: {}}, ES: {referent: 'ES', occ: 0, right: 0, diag: 1005.9741547375856, avgdist: 0, alpha: 179.63389384946177, avgscore: 0, wrong_guesses: {}}, LK: {referent: 'LK', occ: 0, right: 0, diag: 362.2430123549659, avgdist: 0, alpha: 70.56614661578718, avgscore: 0, wrong_guesses: {}}, SD: {referent: 'SD', occ: 0, right: 0, diag: 1942.1987539899205, avgdist: 0, alpha: 285.6597870434162, avgscore: 0, wrong_guesses: {}}, SR: {referent: 'SR', occ: 0, right: 0, diag: 572.3984626114924, avgdist: 0, alpha: 96.80079916931417, avgscore: 0, wrong_guesses: {}}, SJ: {referent: 'NO', occ: 0, right: 0, diag: 349.413794805, avgdist: 0, alpha: 66.05715066928423, avgscore: 0, wrong_guesses: {}}, SZ: {referent: 'SZ', occ: 0, right: 0, diag: 186.35450088473848, avgdist: 0, alpha: 30.704782861375946, avgscore: 0, wrong_guesses: {}}, SE: {referent: 'SE', occ: 0, right: 0, diag: 948.9942044080143, avgdist: 0, alpha: 143.33914546925385, avgscore: 0, wrong_guesses: {}}, CH: {referent: 'CH', occ: 0, right: 0, diag: 287.34648075102643, avgdist: 0, alpha: 39.74273384806, avgscore: 0, wrong_guesses: {}}, SY: {referent: 'SY', occ: 0, right: 0, diag: 608.5720992618706, avgdist: 0, alpha: 101.78818050403503, avgscore: 0, wrong_guesses: {}}, TW: {referent: 'TW', occ: 0, right: 0, diag: 269.04646438858845, avgdist: 0, alpha: 46.64074741475143, avgscore: 0, wrong_guesses: {}}, TJ: {referent: 'TJ', occ: 0, right: 0, diag: 534.9766350038102, avgdist: 0, alpha: 91.64132553591757, avgscore: 0, wrong_guesses: {}}, TZ: {referent: 'TZ', occ: 0, right: 0, diag: 1374.8359902184698, avgdist: 0, alpha: 207.4355685221141, avgscore: 0, wrong_guesses: {}}, TH: {referent: 'TH', occ: 0, right: 0, diag: 1013.0350438163529, avgdist: 0, alpha: 182.84593457002995, avgscore: 0, wrong_guesses: {}}, TL: {referent: 'TL', occ: 0, right: 0, diag: 172.4760852988031, avgdist: 0, alpha: 41.66215167240456, avgscore: 0, wrong_guesses: {}}, TG: {referent: 'TG', occ: 0, right: 0, diag: 337.0014836762592, avgdist: 0, alpha: 64.34582345486709, avgscore: 0, wrong_guesses: {}}, TK: {referent: 'NZ', occ: 0, right: 0, diag: 4.898979485566356, avgdist: 0, alpha: 18.55773068931994, avgscore: 0, wrong_guesses: {}}, TO: {referent: 'TO', occ: 0, right: 0, diag: 38.65229618017538, avgdist: 0, alpha: 23.211414345587176, avgscore: 0, wrong_guesses: {}}, TT: {referent: 'TT', occ: 0, right: 0, diag: 101.2916580968048, avgdist: 0, alpha: 31.84771451803763, avgscore: 0, wrong_guesses: {}}, TN: {referent: 'TN', occ: 0, right: 0, diag: 572.0314676658969, avgdist: 0, alpha: 128.11079046380638, avgscore: 0, wrong_guesses: {}}, TR: {referent: 'TR', occ: 0, right: 0, diag: 1251.8482336130046, avgdist: 0, alpha: 172.31151042579748, avgscore: 0, wrong_guesses: {}}, TM: {referent: 'TM', occ: 0, right: 0, diag: 988.0283396745257, avgdist: 0, alpha: 154.10509265385716, avgscore: 0, wrong_guesses: {}}, TC: {referent: 'GB', occ: 0, right: 0, diag: 43.54308211415448, avgdist: 0, alpha: 23.88572350380082, avgscore: 0, wrong_guesses: {}}, TV: {referent: 'TV', occ: 0, right: 0, diag: 7.211102550927978, avgdist: 0, alpha: 18.8765108974371, avgscore: 0, wrong_guesses: {}}, UG: {referent: 'UG', occ: 0, right: 0, diag: 695.0539547402058, avgdist: 0, alpha: 93.43761686271378, avgscore: 0, wrong_guesses: {}}, UA: {referent: 'UA', occ: 0, right: 0, diag: 1098.6355173577815, avgdist: 0, alpha: 131.27558206096515, avgscore: 0, wrong_guesses: {}}, AE: {referent: 'AE', occ: 0, right: 0, diag: 408.90096600521747, avgdist: 0, alpha: 74.25884767218167, avgscore: 0, wrong_guesses: {}}, GB: {referent: 'GB', occ: 0, right: 0, diag: 696.993543729065, avgdist: 0, alpha: 52.34154686594558, avgscore: 0, wrong_guesses: {}}, US: {referent: 'US', occ: 0, right: 0, diag: 4329.57503688295, avgdist: 0, alpha: 833.0938531816965, avgscore: 0, wrong_guesses: {}}, UM: {referent: 'US', occ: 0, right: 0, diag: 8.270429251254134, avgdist: 0, alpha: 19.02256384377593, avgscore: 0, wrong_guesses: {}}, UY: {referent: 'UY', occ: 0, right: 0, diag: 601.7208655182235, avgdist: 0, alpha: 68.601955692236, avgscore: 0, wrong_guesses: {}}, UZ: {referent: 'UZ', occ: 0, right: 0, diag: 945.9386872308373, avgdist: 0, alpha: 148.30205026109445, avgscore: 0, wrong_guesses: {}}, VU: {referent: 'VU', occ: 0, right: 0, diag: 156.13455735358525, avgdist: 0, alpha: 39.409090078334884, avgscore: 0, wrong_guesses: {}}, VE: {referent: 'VE', occ: 0, right: 0, diag: 1353.8426791913453, avgdist: 0, alpha: 204.54114989944085, avgscore: 0, wrong_guesses: {}}, VN: {referent: 'VN', occ: 0, right: 0, diag: 813.8943420370975, avgdist: 0, alpha: 130.09665087203942, avgscore: 0, wrong_guesses: {}}, VG: {referent: 'GB', occ: 0, right: 0, diag: 17.378147196982766, avgdist: 0, alpha: 20.278275646364467, avgscore: 0, wrong_guesses: {}}, VI: {referent: 'US', occ: 0, right: 0, diag: 26.343879744638983, avgdist: 0, alpha: 21.51441144306248, avgscore: 0, wrong_guesses: {}}, WF: {referent: 'FR', occ: 0, right: 0, diag: 16.852299546352718, avgdist: 0, alpha: 20.205775256563825, avgscore: 0, wrong_guesses: {}}, EH: {referent: 'MA', occ: 0, right: 0, diag: 729.3833011524188, avgdist: 0, alpha: 118.44482852528982, avgscore: 0, wrong_guesses: {}}, YE: {referent: 'YE', occ: 0, right: 0, diag: 1027.5874658636121, avgdist: 0, alpha: 159.55924285391046, avgscore: 0, wrong_guesses: {}}, ZM: {referent: 'ZM', occ: 0, right: 0, diag: 1226.8757068260827, avgdist: 0, alpha: 187.0357850332875, avgscore: 0, wrong_guesses: {}}, ZW: {referent: 'ZW', occ: 0, right: 0, diag: 884.0328048211786, avgdist: 0, alpha: 139.76687738302752, avgscore: 0, wrong_guesses: {}} }; const estimate_score = (d, a) => 5000*Math.exp(-d/a); const ERROR_RESP = -1000000; let state = JSON.parse(localStorage.getItem("CountryData")) || DefaultCountryDict; let userNick = null; let userHexId = null; let apiUrl = null; let solo = null; let ranked = null; let mode = null; let teams = null; let updateUI = true; function checkGameMode() { if (location.pathname.includes("/game/")) { solo = true; ranked = false; teams = false; const gameTag = location.href.substring(location.href.lastIndexOf('/') + 1); apiUrl = "https://www.geoguessr.com/api/v3/games/"+gameTag; return true; } if (location.pathname.includes("/duels/")) { return false; // Not possible to query the game server api from a duel game solo = false; const gameTag = location.href.substring(location.href.lastIndexOf('/') + 1); apiUrl = "https://game-server.geoguessr.com/api/duels/"+gameTag; return true; } return false; }; if (updateUI) { var style = document.createElement("style"); document.head.appendChild(style); style.sheet.insertRule("div[class*='round-result_wrapper__'] { transform: translateX(0); justify-content: space-between }") style.sheet.insertRule("div[class*='round-result_distanceIndicatorWrapper__'] { animation-delay: 0s, 0s; animation-duration: 0s, 0s; margin-right: 28px }") style.sheet.insertRule("div[class*='round-result_actions__'] { animation-delay: 0s; animation-duration: 0s; margin: 0px; margin-top: 10px; margin-bottom: 10px }") style.sheet.insertRule("div[class*='round-result_pointsIndicatorWrapper__'] { animation-delay: 0s, 0s; animation-duration: 0s, 0s; margin-right: 28px }") } function parseScore(number) { const numberString = parseInt(number).toString(); if (number >= 1000) { const firstDigit = numberString[0]; const restOfDigits = numberString.slice(1); return firstDigit + ',' + restOfDigits; } else { return numberString; } }; const shadowStyle = ` text-shadow: 0 .25rem 0 #006400, .125rem .125rem .5rem #32CD32, 0 -.25rem .5rem #7CFC00, -.25rem .5rem .5rem #20B2AA, 0 .375rem 2rem #32CD32, 0 0 0 #20B2AA, 0 0 1.5rem rgba(102, 255, 102, .65), .25rem .25rem 1rem #66CDAA; `; const newFormat = (score) => `
${parseScore(score)} 

Country-wise

` function addCountryResult(score) { if (document.getElementById("results-row") == null && !!document.querySelector('div[class*="round-result_distanceIndicatorWrapper__"]')) { const resultsContainer = document.querySelector("div[class*='round-result_wrapper__']"); const topRow = document.createElement("div"); topRow.id = "results-row"; topRow.style = "display: flex;flex-direction: row"; const distanceIndicator = document.querySelector("div[class*='round-result_distanceIndicatorWrapper__']"); distanceIndicator.parentNode.removeChild(distanceIndicator); distanceIndicator.style.marginRight = '3vw'; const pointsIndicator = document.querySelector("div[class*='round-result_pointsIndicatorWrapper__']"); pointsIndicator.parentNode.removeChild(pointsIndicator); pointsIndicator.style.marginRight = '3vw'; const newDiv = document.createElement("div"); newDiv.id = "country-wise"; newDiv.className = cn("round-result_pointsIndicatorWrapper__"); newDiv.innerHTML = newFormat(score); newDiv.style.marginRight = '3vw'; topRow.appendChild(distanceIndicator); topRow.appendChild(pointsIndicator); topRow.appendChild(newDiv); resultsContainer.insertBefore(topRow, resultsContainer.firstChild); if (document.querySelector("span[class*='button_label__']").textContent == 'Next') { document.querySelector("span[class*='button_label__']").textContent += ' >'; } const nextButton = document.querySelector("div[class*='round-result_actions__']"); nextButton.style.transform = 'translateX(-2vw)'; const clone = nextButton.cloneNode(true); clone.style.opacity = '0'; resultsContainer.insertBefore(clone, resultsContainer.firstChild); }; }; function updateState(guess, ans, dist) { if ((guess === ERROR_RESP) || (ans === ERROR_RESP)) { return; } let good = (guess == ans); //state[ans].occ += 1; let score = estimate_score(dist, state[ans].alpha); if (updateUI) addCountryResult(score); const data = { username: userNick, player_hexid: userHexId, actualCountryCode: ans, guessedCountryCode: guess, mode: mode, score: score.toFixed(1), distance: dist, }; fetch(statsServerUrl+'/guess', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }).then(response => response.json()).then(data => console.log('Success:', data)).catch((error) => console.error('Error:', error)); /*if (good) { state[ans].avgdist = (state[ans].avgdist*state[ans].right + dist)/(state[ans].right+1); console.log(score); state[ans].avgscore = (state[ans].avgscore*state[ans].right + score)/(state[ans].right+1); state[ans].right += 1; } else { if (!(guess in state[ans].wrong_guesses)) { state[ans].wrong_guesses[guess] = 0; } state[ans].wrong_guesses[guess] += 1; } console.log(state[ans]); localStorage.setItem("CountryData", JSON.stringify(state));*/ }; async function getCountryCode(coords) { if (coords[0] <= -85.05) return 'AQ'; if (API_Key.toLowerCase().match("^(bdc_)?[a-f0-9]{32}$") != null) { const api = "https://api.bigdatacloud.net/data/reverse-geocode?latitude="+coords.lat+"&longitude="+coords.lng+"&localityLanguage=en&key="+API_Key; return await fetch(api) .then(res => (res.status !== 200) ? ERROR_RESP : res.json()) .then(out => (out === ERROR_RESP) ? ERROR_RESP : out.countryCode); } else { const api = `https://nominatim.openstreetmap.org/reverse.php?lat=${coords.lat}&lon=${coords.lng}&zoom=21&format=jsonv2&accept-language=en`; return await fetch(api) .then(res => (res.status !== 200) ? ERROR_RESP : res.json()) .then(out => (out === ERROR_RESP) ? ERROR_RESP : state[out?.address?.country_code?.toUpperCase()].referent); } }; function deductMode(m, p, z) { if (m && p && z) { mode = 'move'; } else if (!m && p && z) { mode = 'nm'; } else if (!m && !p && !z) { mode = 'nmpz'; } else { console.error("game mode not supported"); } } function getUserInfo() { fetch('https://www.geoguessr.com/api/v3/profiles') .then(res => res.json()) .then((out) => { userHexId = out.user.id; userNick = out.user.nick; }).catch(err => { throw err }); } function checkModesSolo(out) { const m = !out.forbidMoving; const p = !out.forbidRotating; const z = !out.forbidZooming; deductMode(m, p, z); } function checkModesDuel(out) { const m = !out.movementOptions.forbidMoving; const p = !out.movementOptions.forbidRotating; const z = !out.movementOptions.forbidZooming; deductMode(m, p, z); teams = out.options.isTeamDuels; ranked = out.options.isRated; } function checkModes() { getUserInfo(); fetch(apiUrl) .then(res => res.json()) .then((out) => { if (solo) { checkModesSolo(out); } else { checkModesDuel(out); } console.log(solo); console.log(ranked); console.log(mode); console.log(teams); console.log(apiUrl); console.log(userHexId); }).catch(err => { throw err }); } function getSoloData(out) { const guessCounter = out.player.guesses.length; const round = out.rounds[guessCounter-1]; const guess = out.player.guesses[guessCounter-1]; let dist = parseFloat(guess.distance.meters.amount); const unit = guess.distance.meters.unit; if (unit === 'm') { dist = dist/1000; } if (guess.lat == lastGuess.lat && guess.lng == lastGuess.lng) return; lastGuess = guess; const roundCountryCode = round.streakLocationCode.toUpperCase(); getCountryCode(guess).then(guessCountryCode => { console.log(guessCountryCode); console.log(roundCountryCode); if (guessCountryCode == ERROR_RESP || roundCountryCode == ERROR_RESP) { updateState(ERROR_RESP, ERROR_RESP, false, dist); } else { updateState(guessCountryCode, roundCountryCode, dist); } }); } function getDuelData(out) { const roundIdx = out.teams[0].roundResults.length - 1; const round = out.rounds[roundIdx].panorama; let guess = null; out.teams.forEach(team => { team.players.forEach(player => { if (player.playerId == userHexId) { guess = player.guesses[roundIdx]; } }); }); let dist = parseFloat(guess.distance)/1000; const roundCountryCode = round.countryCode.toUpperCase(); getCountryCode(guess).then(guessCountryCode => { console.log(guessCountryCode); console.log(roundCountryCode); if (guessCountryCode == ERROR_RESP || roundCountryCode == ERROR_RESP) { updateState(ERROR_RESP, ERROR_RESP, false, dist); } else { updateState(guessCountryCode, roundCountryCode, dist); } }); } let lastGuess = { lat: 91, lng: 0 }; function run() { fetch(apiUrl) .then(res => res.json()) .then((out) => { if (solo) { getSoloData(out); } else { getDuelData(out); } }).catch(err => { throw err }); }; let lastDoCheckCall = 0; // Any changes in the DOM triggers the MutationObserver callback new MutationObserver(async (mutations) => { // First make sure we are in a game if (!checkGameMode()) { sessionStorage.setItem("modesChecked", 0); return; } if (lastDoCheckCall >= (Date.now() - 50)) return; lastDoCheckCall = Date.now(); await scanStyles(); // Then check the different modes (solo, ranked, teams, nmpz) if ((sessionStorage.getItem("modesChecked") || 0) == 0) { // for team duels there should be a delay because it needs time to find opponents checkModes(); sessionStorage.setItem("modesChecked", 1); } // Then make sure we are in the round results screen if (!document.querySelector('div[class*="result-layout_root__"]')) { sessionStorage.setItem("roundChecked", 0); return; } else if ((sessionStorage.getItem("roundChecked") || 0) == 0) { run(); sessionStorage.setItem("roundChecked", 1); } }).observe(document.body, { subtree: true, childList: true }); // document.addEventListener('keypress', (e) => { // if (e.key == '1') { // updateStreak(streak + 1); // } else if (e.key == '2') { // updateStreak(streak - 1); // } else if (e.key == '8') { // const streakBackup = parseInt(sessionStorage.getItem("StreakBackup") || 0, 10); // updateStreak(streakBackup + 1); // } else if (e.key == '0') { // updateStreak(0); // sessionStorage.setItem("StreakBackup", 0); // }; // });