File size: 4,538 Bytes
21504cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import torch
import os
import sys
from huggingface_hub import login

# Force CPU usage if needed
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using device: {device}")

# More details about the environment
print(f"Gradio version: {gr.__version__}")
print(f"Python version: {sys.version}")

# Hugging Face API token'ı - önce environment variable olarak ara, 
# sonra Hugging Face Secrets sisteminde ara
hf_token = os.environ.get("HUGGINGFACE_TOKEN")
if hf_token:
    print("Found HUGGINGFACE_TOKEN in environment variables")
    # Token ile giriş yap
    login(token=hf_token)
    print("Logged in with Hugging Face token")
else:
    print("HUGGINGFACE_TOKEN not found in environment variables")

def generate_3d_icon(prompt):
    try:
        print(f"Generating 3D icon with prompt: {prompt}")
        
        # Try different methods to load the actual model
        try:
            print("Trying to load goofyai/3d_render_style_xl...")
            
            # Method 1: Direct model loading
            model = gr.load("goofyai/3d_render_style_xl", src="models")
            result = model(prompt)
            print("Model loaded and generated successfully")
            return result
            
        except Exception as e1:
            print(f"Method 1 failed: {str(e1)}")
            
            try:
                # Method 2: Try spaces source
                print("Trying spaces source...")
                model = gr.load("goofyai/3d_render_style_xl", src="spaces")
                result = model(prompt)
                print("Spaces model loaded successfully")
                return result
                
            except Exception as e2:
                print(f"Method 2 failed: {str(e2)}")
                
                try:
                    # Method 3: Try huggingface source
                    print("Trying huggingface source...")
                    model = gr.load("goofyai/3d_render_style_xl", src="huggingface")
                    result = model(prompt)
                    print("HuggingFace model loaded successfully")
                    return result
                    
                except Exception as e3:
                    print(f"Method 3 failed: {str(e3)}")
                    
                    try:
                        # Method 4: Try with Interface.load
                        print("Trying Interface.load...")
                        model = gr.Interface.load("models/goofyai/3d_render_style_xl")
                        result = model(prompt)
                        print("Interface.load successful")
                        return result
                        
                    except Exception as e4:
                        print(f"Method 4 failed: {str(e4)}")
                        
                        # Final fallback - create error message
                        from PIL import Image, ImageDraw, ImageFont
                        
                        image = Image.new('RGB', (512, 512), color='red')
                        draw = ImageDraw.Draw(image)
                        
                        error_text = "Model loading failed"
                        draw.text((200, 250), error_text, fill=(255, 255, 255))
                        
                        print("All methods failed, returning error image")
                        return image
            
    except Exception as e:
        print(f"General error: {str(e)}")
        # Return error image
        from PIL import Image, ImageDraw
        
        image = Image.new('RGB', (512, 512), color='gray')
        draw = ImageDraw.Draw(image)
        draw.text((200, 250), "Error", fill=(255, 0, 0))
        return image

# Create Gradio interface
def create_interface():
    interface = gr.Interface(
        fn=generate_3d_icon,
        inputs=[
            gr.Textbox(label="Prompt", placeholder="Describe your game icon", value="galatasaray")
        ],
        outputs=gr.Image(type="pil", label="Generated Game Icon"),
        title="3D Game Icon Generator",
        description="Generate 3D-style game icons using AI"
    )
    
    return interface

# Launch the interface
if __name__ == "__main__":
    try:
        interface = create_interface()
        print("Launching interface...")
        interface.launch(
            share=False,
            server_name="0.0.0.0",
            server_port=7860,
            show_error=True
        )
    except Exception as e:
        print(f"Error launching interface: {str(e)}")