0

試合 ID からチームと選手の統計のリストを取得しようとしています。私にはすべて問題ないように見えますが、「for ループ」を実行して必要な統計を取得する関数を呼び出すと、try/except ブロックからエラーが出力されます。私はまだPythonにかなり慣れていません。これは私の最初のプロジェクトなので、ここ数日で考えられることはすべて試しましたが、うまくいきませんでした。問題は実際のプル リクエストにあると思いますが、Riot API を変更および更新して必要な情報を取得する際に役立つことがわかった GitHub ライブラリも使用しているため、よくわかりません。

def get_match_json(matchid):
url_pull_match = "https://{}.api.riotgames.com/lol/match/v5/matches/{}/timeline?api_key={}".format(region, matchid, api_key)
match_data_all = requests.get(url_pull_match).json()

# Check to make sure match is long enough
try:
    length_match = match_data_all['frames'][15]
    return match_data_all

except IndexError:
    return ['Match is too short. Skipping.']

そして、これは stat 関数の短縮版です:

def get_player_stats(match_data, player):
# Get player information at the fifteenth minute of the game.

player_query = match_data['frames'][15]['participantFrames'][player]
player_team = player_query['teamId']
player_total_gold = player_query['totalGold']
player_level = player_query['level']

コードには他にもいくつかの関数がありますが、それらにも欠陥があるのか​​ 、エラーを把握するために必要なのかはわかりません。しかし、これはリクエストを呼び出すための「for ループ」であり、変数「matchid」を定義します。

for matchid_batch in all_batches:
match_data = []
for match_id in matchid_batch:
    time.sleep(1.5)
    if match_id == 'MatchId':
        pass

    else:
        try:
            match_entry = get_match_row(match_id)
            if match_entry[0] == 'Match is too short. Skipping.':
                print('Match', match_id, "is too short.")

            else:
                match_entry = get_match_row(match_id).reshape(1, -1)
                match_data.append(np.array(match_entry))

        except KeyError:
            print('KeyError.')

match_data = np.array(match_data)
match_data.shape = -1, 17

df = pd.DataFrame(match_data, columns=column_titles)
df.to_csv('Match_data_Diamond.csv', mode='a')
print('Done Batch!')

これは私の最初のプロジェクトであるため、この特定のテーマに関する情報を見つけることができないため、助けていただければ幸いです。

4

0 に答える 0