File size: 3,997 Bytes
3c67330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# app.py
import gradio as gr
import pandas as pd
import requests
import xgboost as xgb
from huggingface_hub import hf_hub_download

# Download the model from Hugging Face Hub
model_path = hf_hub_download(
    repo_id="YOUR_USERNAME/YOUR_MODEL_REPO",  # Replace with your model repo
    filename="model.json"  # Replace with your model filename
)
model = xgb.Booster()
model.load_model(model_path)

# Rest of your code remains the same as before, but remove demo.launch()
# Define your interface
with gr.Blocks() as demo:
   # Assuming you have these helper functions implemented
def get_player_stats(player_name):
    """Get player statistics from API"""
    # Placeholder - implement actual API call
    return {
        'wins': 120,
        'losses': 80,
        'winrate': '60%',
        'favorite_champions': ['Ahri', 'Zed', 'Yasuo']
    }

def get_recent_matches(player_name):
    """Get recent match history"""
    # Placeholder - implement actual API call
    return pd.DataFrame({
        'champion': ['Ahri', 'Zed', 'Yasuo'],
        'result': ['Win', 'Loss', 'Win'],
        'kda': ['8/2/10', '4/5/3', '12/3/7']
    })

def prepare_features(player_name, champions):
    """Prepare features for model prediction"""
    # Placeholder - implement actual feature engineering
    features = []  # Transform champions into model features
    return pd.DataFrame([features])

# Load the model from Hugging Face
model = xgb.Booster()  # Initialize model
# model.load_model("path_to_your_model")  # Load your model

# Define champion list for dropdowns
CHAMPIONS = [
    "Aatrox", "Ahri", "Akali", "Alistar", "Amumu",
    # Add more champions...
]

def show_stats(player_name):
    """Display player statistics and recent matches"""
    if not player_name:
        return "Please enter a player name", None
    
    stats = get_player_stats(player_name)
    recent = get_recent_matches(player_name)
    
    stats_html = f"""
    <div style='padding: 20px; background: #f5f5f5; border-radius: 10px;'>
        <h3>Player Stats: {player_name}</h3>
        <p>Wins: {stats['wins']} | Losses: {stats['losses']}</p>
        <p>Winrate: {stats['winrate']}</p>
        <p>Favorite Champions: {', '.join(stats['favorite_champions'])}</p>
    </div>
    """
    
    return stats_html, recent.to_html(index=False)

def predict_champion(player_name, *champions):
    """Make prediction based on selected champions"""
    if not player_name or None in champions:
        return "Please fill in all fields"
    
    # Prepare features
    features = prepare_features(player_name, champions)
    
    # Make prediction
    prediction = model.predict(features)
    
    # Get predicted champion name
    predicted_champion = CHAMPIONS[prediction[0]]  # Adjust based on your model output
    
    return f"Predicted champion: {predicted_champion}"

# Create Gradio interface
with gr.Blocks() as demo:
    gr.Markdown("# League of Legends Champion Prediction")
    
    with gr.Row():
        player_name = gr.Textbox(label="Player Name")
        show_button = gr.Button("Show Stats")
    
    with gr.Row():
        stats_output = gr.HTML(label="Player Statistics")
        recent_matches = gr.HTML(label="Recent Matches")
    
    with gr.Row():
        champion_dropdowns = [
            gr.Dropdown(choices=CHAMPIONS, label=f"Champion {i+1}")
            for i in range(9)
        ]
    
    with gr.Row():
        predict_button = gr.Button("Predict")
        prediction_output = gr.Text(label="Prediction")
    
    # Set up event handlers
    show_button.click(
        fn=show_stats,
        inputs=[player_name],
        outputs=[stats_output, recent_matches]
    )
    
    predict_button.click(
        fn=predict_champion,
        inputs=[player_name] + champion_dropdowns,
        outputs=prediction_output
    )

# Add this line at the end
demo.queue()  # Enable queuing for better handling of multiple users



# .gitignore
"""
__pycache__/
*.py[cod]
*$py.class
.env
.venv
env/
venv/
.DS_Store
"""