"""Identify a majority review language for up to twenty quantitatively selected cases.

This adaptive diagnostic is separate from the random language-profile sample.
It stops querying a game once an observed language alone exceeds half its total.
Unqueried languages are not interpreted as zero.
"""
from net import *
import pandas as pd
d=pd.read_parquet(R/'observations.parquet');assert len(d)==480
strict=d[d.substantial_elsewhere_low_english].sort_values(['nonenglish_count','appid'],ascending=[False,True]).head(20).copy();strict['selection_reason']='strict discovery threshold'
t=pd.read_parquet(R.parent/'fable-verification-2026-09-06/tags.parquet')
buildtags={'Roguelike Deckbuilder','Deckbuilding','Card Battler','Auto Battler','Tower Defense','Action RPG','CRPG','Party-Based RPG','Turn-Based Tactics'}
buildids=set(t[t.tag.isin(buildtags)].appid)
extra=d[d.low_english_10&d.total.ge(1000)&d.english_count.le(500)&d.appid.isin(buildids)&~d.appid.isin(strict.appid)].sort_values(['nonenglish_count','appid'],ascending=[False,True]).head(8).copy();extra['selection_reason']='additional low-English build-tag example; <=500 English reviews'
chosen=pd.concat([strict,extra])
chosen[['appid','name','english_count','total','english_support','selection_reason']].to_csv(R/'discovery_language_targets.csv',index=False)
client=Client();langs=['schinese','russian','japanese','koreana','brazilian','tchinese','spanish','latam','german','french','polish','turkish','thai','ukrainian','portuguese','italian']
rows=[]
for x in chosen.itertuples():
    total=client.summary(x.appid,'all')['total_reviews'];measured=[]
    for lang in langs:
        q=client.summary(x.appid,lang);n=q['total_reviews'];measured.append(dict(language=lang,count=n,positive=q['total_positive']))
        if n>total/2:break
    largest=max(measured,key=lambda z:z['count'])
    rows.append(dict(appid=x.appid,name=x.name,total=total,largest_measured_language=largest['language'],largest_measured_count=largest['count'],share=largest['count']/total if total else None,confirmed_majority=largest['count']>total/2,queried_languages=';'.join(z['language'] for z in measured)))
    print(json.dumps(rows[-1],ensure_ascii=False),flush=True)
pd.DataFrame(rows).to_csv(R/'discovery_majority_languages.csv',index=False)
