Google Colaboでkaggle（カグル）API

Kaggleとは、Google傘下の会社で予測モデリングを行う会社とそのサービスを指します。読み方は「カグル」です。Kaggleでは予測モデリングや分析手法のプラットフォーム運営を行いながら、研究者がデータを投稿してモデルの良し悪しを競争し、手法のブラッシュアップを図っています。

APIの準備は以下
https://github.com/Kaggle/kaggle-api/

必須のkaggle.jsonファイルは、以下のファイル作成か、
マイドライブ直下にアップロード　
```python
!mkdir ~/.kaggle
!touch ~/.kaggle/kaggle.json

api_token = {"username":"your_name","key":"your_keyxxxxxxxxxxxxxxxxxx"}

import json

with open('/root/.kaggle/kaggle.json', 'w') as file:
    json.dump(api_token, file)

!chmod 600 ~/.kaggle/kaggle.json
!cat ~/.kaggle/kaggle.json
```

結局ファイル作成版はうまくいかなかったので
マイドライブにアップロードしました
```python
from google.colab import drive
import os
import json
import requests
from datetime import datetime

drive.mount('/content/drive')

# Kaggle APIのベースURL
BASE_URL = 'https://www.kaggle.com/api/v1'

# APIキーとユーザー名の読み取り
def load_kaggle_credentials():
    kaggle_path = '/content/drive/MyDrive/.kaggle/kaggle.json'

    if not os.path.exists(kaggle_path):
        raise FileNotFoundError(f"Kaggle API credentials not found at {kaggle_path}")
    
    with open(kaggle_path, 'r') as f:
        credentials = json.load(f)
    
    return credentials['username'], credentials['key']

# 賞金情報の取得
def get_prizes():
    try:
        username, key = load_kaggle_credentials()
        
        url = f'{BASE_URL}/competitions/list'
        
        # Basic認証を使用
        auth = (username, key)
        
        response = requests.get(url, auth=auth)
        
        # レスポンスのステータスコードをチェック
        response.raise_for_status()
        
        # レスポンスからデータを取得
        competitions = response.json()
        
        prizes = []
        for comp in competitions:
            # 賞金タイプと金額のチェック
            if comp.get('reward'):
                print(f"コンペティション名: {comp.get('title')}")
                print(f"賞金: {comp.get('reward')}")
                print(f"コンペティションURL: {comp.get('ref')}")
                print("-" * 20)

    except requests.exceptions.RequestException as e:
        print(f"APIリクエストエラー: {e}")
    except FileNotFoundError as e:
        print(e)
    except Exception as e:
        print(f"予期せぬエラーが発生しました: {e}")

# 賞金情報を取得
get_prizes()
```


うまくいけば以下の結果がでる

```
コンペティション名: AI Mathematical Olympiad - Progress Prize 2
賞金: 2,117,152 Usd
コンペティションURL: https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-2
--------------------
コンペティション名: Konwinski Prize
賞金: 1,225,000 Usd
コンペティションURL: https://www.kaggle.com/competitions/konwinski-prize
--------------------
コンペティション名: Stanford RNA 3D Folding
賞金: 75,000 Usd
コンペティションURL: https://www.kaggle.com/competitions/stanford-rna-3d-folding
--------------------
コンペティション名: CIBMTR - Equity in post-HCT Survival Predictions
賞金: 50,000 Usd
コンペティションURL: https://www.kaggle.com/competitions/equity-post-HCT-survival-predictions
--------------------
コンペティション名: NeurIPS 2024 - Lux AI Season 3
賞金: 50,000 Usd
コンペティションURL: https://www.kaggle.com/competitions/lux-ai-season-3
--------------------
コンペティション名: March Machine Learning Mania 2025
賞金: 50,000 Usd
コンペティションURL: https://www.kaggle.com/competitions/march-machine-learning-mania-2025
--------------------
コンペティション名: Drawing with LLMs
賞金: 50,000 Usd
コンペティションURL: https://www.kaggle.com/competitions/drawing-with-llms
--------------------
コンペティション名: Binary Prediction with a Rainfall Dataset
賞金: Swag
コンペティションURL: https://www.kaggle.com/competitions/playground-series-s5e3
--------------------
コンペティション名: Titanic - Machine Learning from Disaster
賞金: Knowledge
コンペティションURL: https://www.kaggle.com/competitions/titanic
--------------------
コンペティション名: Housing Prices Competition for Kaggle Learn Users
賞金: Knowledge
コンペティションURL: https://www.kaggle.com/competitions/home-data-for-ml-course
--------------------
コンペティション名: House Prices - Advanced Regression Techniques
賞金: Knowledge
コンペティションURL: https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques
```