Package: hw2-spy
HW2-SpyShow curated information about the given Halo Wars 2 players, including a brief overview of their most recent matches' first 12 minutes, by accessing the public API available athttps://developer.haloapi.com(a free subscription key is needed).Installpipx ensurepath
pipx install hw2-spyUsage examplesTUI Modehw2-spy --key your_key_here --red xandy92 --yellow american_sklz --tuihw2-spy --key your_key_here --blue edgreenall --cyan seanagone --green motoguzzi91 --tuiJSON Modehw2-spy --key your_key_here --red btc_hosticide

{
    "data": {
        "red": {
            "gamertag": "btc hosticide",
            "xp": 1947672,
            "level": "99",
            "mmr1vs1": "2.09",
            "csr1vs1": "1 Onyx",
            "tier1vs1": "1",
            "designation1vs1": "Onyx",
            "mmr2vs2": "3.26",
            "csr2vs2": "1 Onyx",
            "tier2vs2": "1",
            "designation2vs2": "Onyx",
            "mmr3vs3": "2.91",
            "csr3vs3": "1 Onyx",
            "tier3vs3": "1",
            "designation3vs3": "Onyx",
            "matches": [
                {
                    "Population": [
                        0,
                        12,
                        39,
                        24,
                        65,
                        70,
                        56
                    ],
                    "Units": {
                        "Marine": 16,
                        "Cyclop": 7,
                        "Hornet": 10,
                        "Flame": 13,
                        "Nightingale": 5,
                        "FlameCyclop": 1,
                        "Flamehog": 3,
                        "Scorpion": 1
                    },
                    "Turrets": [
                        "05:30"
                    ],
                    "Bases": [
                        "04:34",
                        "10:44"
                    ],
                    "Minis": [
                        "01:35",
                        "01:50",
                        "09:21"
                    ],
                    "GameMode": 3,
                    "MatchType": 3,
                    "PlaylistId": "548d864e-8666-430e-9140-8dd2ad8fbfcd",
                    "Leader": "Kinsano",
                    "T2": "04:40",
                    "T3": "16:52",
                    "Duration": "21:41",
                    "Date": "2023-09-24 01:36:09",
                    "Result": "Defeat"
                },
                {
                    "Population": [
                        0,
                        15,
                        33,
                        63,
                        57
                    ],
                    "Units": {
                        "Marine": 17,
                        "Sniper": 6,
                        "Flame": 29,
                        "FlameCyclop": 1,
                        "Flamehog": 3
                    },
                    "Turrets": [
                        "05:13"
                    ],
                    "Bases": [],
                    "Minis": [
                        "01:43",
                        "02:02",
                        "05:28"
                    ],
                    "GameMode": 3,
                    "MatchType": 3,
                    "PlaylistId": "548d864e-8666-430e-9140-8dd2ad8fbfcd",
                    "Leader": "Kinsano",
                    "Duration": "08:29",
                    "Date": "2023-09-24 01:24:41",
                    "Result": "Victory"
                },
                {
                    "Population": [
                        0,
                        10,
                        18,
                        12,
                        40,
                        20,
                        24
                    ],
                    "Units": {
                        "Grunt": 12,
                        "Shipmaster": 1,
                        "Marauder": 13,
                        "Elite": 13,
                        "Locust": 1,
                        "Reaver": 1
                    },
                    "Turrets": [],
                    "Bases": [
                        "10:15"
                    ],
                    "Minis": [
                        "03:02",
                        "03:10",
                        "09:57",
                        "12:04"
                    ],
                    "GameMode": 3,
                    "MatchType": 3,
                    "PlaylistId": "548d864e-8666-430e-9140-8dd2ad8fbfcd",
                    "Leader": "Shipmaster",
                    "T2": "05:00",
                    "T3": "12:16",
                    "Duration": "14:47",
                    "Date": "2023-09-24 01:07:51",
                    "Result": "Defeat"
                }
            ]
        }
    },
    "status": "Success"
}TODOFinish unit translationsTUI improvementsTcss file cleanupUse gutter between grid cellsAdjust yellow / orange colors for population displayUse async + workers for api calls and improve reactivenessSwitch method between 1vs1 2vs2 3vs3 from tuiMultiline (using rich?) for units as info may be trunked in 3vs3 depending on the screenFix color of text when in light mode using textual builtin varsWeb mode, generate html & copy to webserverOCR mode