Welcome to the WSC 2026!

Some human players have the string “bot” in their name

No bot games are not allowed. So if you are found playing bot games then it doesn’t matter if you signed up or not, you won’t get anything.

Maybe @anoek knows a way to filter bots?

What about the way to filter bots that I proposed? Did you try that?

1 Like

Edit: Maybe that won’t work.

I’m getting the call from this Player Games – Django REST framework - with my own settings

And using the count variable. I’m not going through each page. Is there a parameter I can add to the url?

How about something like:

for player_id in LIST:
    for game in requests.get(API).json()["results"]:
        if "bot" not in game["players"]["black"].get("ui_class", "").lower() and "bot" not in game["players"]["white"].get("ui_class", "").lower():
            counts[player_id] += 1

You’ve replied to @Clossius1 3 times, did you know you could send them a personal message instead?

That’s some funny advice, kind of undermining the purpose of a forum thread :grin:

So not sure what programming language you use but assuming python3 you can copy-paste this. It should be performant enough and work out of the box:

import requests
PLAYER_LIST = ["1966942", "1174388", "625243"] # Here of course you need to use the actual list from your database

def get_player_nobot_game_count(player_results):
    count = 0
    for game in player_results:
        if "bot" not in game["players"]["black"].get("ui_class", "").lower() and "bot" not in game["players"]["white"].get("ui_class", "").lower():
            count += 1

    return count

def get_player_ranked_games(player_id):
    url = f"https://online-go.com/api/v1/players/{player_id}/games/?annulled=false&ranked=true&ended__gte=2026-03-01+00%3A00Z&ended__isnull=false&ordering=-ended&page_size=100"

    games = []

    while url:
        r = requests.get(url)
        r.raise_for_status()
        data = r.json()
    
        games.extend(data["results"])
    
        url = data["next"]

    return games

results = {}
for player_id in PLAYER_LIST:
    games = get_player_ranked_games(player_id)
    nonbot_game_count = get_player_nobot_game_count(games)
    results[player_id] = nonbot_game_count

results

Reach out if you have any questions. I hope this helps :smiley:

2 Likes

Hey @Clossius1 For players there is a tag for bots:
"is_bot": false,

https://online-go.com/api/v1/players/1

1 Like

Thanks, I did see that but i was hoping for an easier solution for the filtered api call which anoek very kindly provided. So now i can add it as a parameter in the get filtered games api call and just grab the count variable.

The bots are filtered out now.

1 Like

One day before the end of the challenge… just realised the 100 games had to be all of the same board size

2 Likes

Yes, that definitely dissuaded me from “wasting” any time on 19x19 over the month. In my opinion a better rule would be to let larger boards qualify you for the smaller-board awards.

1 Like

It’s not mentioned in the rules so it’s hard to notice.

I don’t agree. Moreover I think we need separate ranks in automatcher for different boards. I’m good in 9x9 but very bad in other boards.