Skip to content

Feature: parry.gg integration#950

Open
itsjust-vy wants to merge 74 commits into
joaorb64:mainfrom
itsjust-vy:feature/parry.gg
Open

Feature: parry.gg integration#950
itsjust-vy wants to merge 74 commits into
joaorb64:mainfrom
itsjust-vy:feature/parry.gg

Conversation

@itsjust-vy
Copy link
Copy Markdown
Contributor

@itsjust-vy itsjust-vy commented Apr 1, 2026

Started working on this a few months back, haven't touched it in a little while, but getting back into it now.

As of right now, it supports enough to not crash when a parry.gg tournament is set, this includes:

  • GetIconURL
  • GetEntrants
  • GetTournamentData
  • GetTournamentPhases

In order to implement the above, a new setting was added to store the user's parry.gg API key.

Plenty still left to implement and fix though, definitely not ready to use at events as of yet. Additionally, some functionality is not yet supported by parry.gg (Mainly Stations/Streams), and as such cannot be fully implemented until that changes.

  • GetMatch
  • GetMatches
  • GetStations
  • GetStreamQueue
  • GetStreamMatchId
  • GetStationMatchId (parry.gg has no station concept, currently returns None)
  • GetStationMatchsId
  • GetUserMatchId
  • GetRecentSets
  • GetLastSets
  • GetCompletedSets
  • GetPlayerHistoryStandings
  • GetTournamentPhaseGroup
  • GetStandings
  • GetFutureMatch
  • GetFutureMatchesList

Now also matches on parry.gg urls
Now also matches on parry.gg urls. Includes commented code that will be uncommented once the parry.gg integration is further along.
Mostly boilerplate with lots of imports, but will be worked on. Just need a starting point.
Services can be created as they're required with _create_service
_initialize_grpc_connection was unnecessary, and the channel is now setup in __init__.
Will verify the service is none before creating it, rather than relying on the service being verified as none before it is called.
Errors for:
Tournament or Event Not Found
Unauthenticated (Incorrect or No API Key)
Likely unnecessary but good to do before I forget.
Need to be added manually into the game's config.json, but this is an issue for later in StreamHelperAssets

Examples for ssbm and ssbu respectively if you want it to work in the meantime
- "parrygg_game_id": "01920676-416e-7838-b6aa-8d4453256f05"
- "parrygg_game_id": "01920676-416e-7b49-a669-7157bd4a6934"
Requested by parry.gg team.

Examples are now:
"parrygg_game_id": "super-smash-bros-ultimate"
"parrygg_game_id": "super-smash-bros-melee"
One last example for a game's config.json:
"parrygg_game_slug": "super-smash-bros-melee"
itsjust-vy and others added 18 commits April 10, 2026 11:28
Now requires parrygg 0.1.6
  - Load tournaments by parry.gg URL (event slugs, manage URLs, profile URLs all parsed)
  - Tournament metadata: name, banner, entrant count, start time
  - Phase + bracket browsing with pool-local seed renumbering and progressions in/out
  - Bracket viewer with proper double-elim winners/losers separation, multi-pool support
  - Player list / standings tab populated from event entrants
  - Match loading: GetMatch, GetMatches (active + completed), team support
  - Stream queue + station assignment via StreamService
  - Recent completed sets (Pull Latest Completed Sets button, provider-aware)
  - Player history standings via UserService.GetUserPlacements
  - Last sets per player in current event
  - Head-to-head sets between two players
  - Load tournament + scoreboard from a parry.gg user profile URL
  - Future-set / stream-queue match preview shape compatible with start.gg layouts
  - Cross-platform fallback for users with a linked start.gg account:
    - H2H history merge (delegates to StartGG's GetRecentSets)
    - Character mains lookup (new GetUserMains on StartGG, lazy fetch on slot load via EnrichPlayerData hook)
  - Provider-aware UI: parry.gg icon + labels for "Pull Latest Completed Sets" and "Load tournament from user" buttons; settings dialog prompts for parry profile URL when parry is active
  - Parry API key setting (Settings → API Keys → ParryGG)
  - 43 game-slug mappings to TSH's StreamHelperAssets (forked at parry-gg/StreamHelperAssets)
  - Doubles team names now show both players (or the parry-supplied team name) in the scoreboard, stream queue, and bracket — not just the first player's tag.
  - Bracket tab now shows projected entrants for unfilled progression seeds, matching start.gg's bracket view.
  - Recent results denominator is fixed (4th/12 instead of 4th/0), and now includes tournament name + banner image alongside event name. Doubles events are filtered out when the scoreboard is in singles mode.
  - Recent sets (H2H) no longer counts doubles matches where the two players happened to face each other across opposing teams — only true 1v1 sets between the two players are tallied.
@Grantismo
Copy link
Copy Markdown

This PR adds full parry.gg support, including.

Loading parry.gg tournaments

  • Load tournaments from parry.gg// URLs alongside start.gg. Admin (/_manage/) URLs are accepted too.
  • Settings has a new "API Keys" tab with a parry.gg API key field; parry tournaments won't load until it's set.
  • Loading a parry tournament auto-selects the matching TSH game by IGDB id.

User-account flow

  • "Load tournament and sets from user" and "Pull Latest Completed Sets" buttons swap label and icon between StartGG and ParryGG based on which provider is active (or which has a user configured if no tournament
    is loaded).
  • The gear menu can prompt for a parry.gg profile URL the same way it does for a start.gg profile.
  • Triggering "Load user set" from a parry profile resolves the user's current match and loads its tournament automatically — no tournament needs to be open first.

Stream queue / stations

  • Selecting a stream (not just a station) populates the upcoming-match queue.
  • Parry streams support multi-up broadcasts (one stream showing N matches at once, e.g. capacity 4 = quadstream). Each slot shows up in the station picker as its own "Side Stream (Slot 1/4)" entry and resolves to
    the match currently on-stream in that slot.

Doubles

  • Scoreboard, stream queue, and bracket show both teammates' tags (or the parry-supplied team name).
  • Doubles events are filtered out of the singles scoreboard.

Bracket / standings / H2H

  • Bracket tab shows projected entrants in unfilled progression seeds, matching start.gg's bracket view.
  • Recent results card includes the tournament name and banner alongside the event name.
  • Recent sets (H2H) ignores doubles matches where the two players happened to land on opposing teams — only true 1v1 sets count.
  • For parry players with a linked start.gg account, mains, H2H, and player-history standings are pulled from start.gg automatically.

Misc

  • Start.gg-only actions (player tracking, etc.) are correctly disabled while a parry tournament is loaded.

@itsjust-vy itsjust-vy marked this pull request as ready for review May 13, 2026 22:23
@joaorb64
Copy link
Copy Markdown
Owner

Looks good to me! Thank you for this feature!

Silly of me to miss this one lol, sorry!
Not quite the way to handle this properly, but the bracket display doesn't seem to use round -1 or -2, and in some cases, -3 either? Thanks startgg
Brackets with a round number of participants (2, 4, 8, 16, etc) have an offset of 2 losers rounds, other brackets have an offset of 3 losers rounds.
Traverse the bracket backwards from Grand Finals (or GFs Reset) using DFS to build the bracket in order as we go.
@itsjust-vy
Copy link
Copy Markdown
Contributor Author

Bugs raised in discord relating to bracket display and round robin round names have been addressed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants