ayush2917 commited on
Commit
d144e07
·
verified ·
1 Parent(s): 276ae2a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +122 -22
app.py CHANGED
@@ -1,52 +1,152 @@
1
- from flask import Flask, render_template, request, jsonify
2
  import os
 
3
  from dotenv import load_dotenv
4
  from chatbot import get_krishna_response
5
  from image_api import generate_krishna_image, generate_comic_strip
6
  from countdown import get_countdown
 
 
 
 
 
 
 
7
  try:
8
  from firebase_config import save_chat_message, get_chat_history
9
  firebase_enabled = True
10
- except ImportError:
 
11
  firebase_enabled = False
 
12
 
13
- # Load environment variables (Hugging Face Space secrets)
14
  load_dotenv()
 
15
  app = Flask(__name__)
 
16
 
17
  @app.route('/')
18
  def home():
 
19
  return render_template('home.html')
20
 
21
  @app.route('/chat', methods=['GET', 'POST'])
22
  def chat():
 
23
  if request.method == 'POST':
24
- user_input = request.form['message']
25
- reply = get_krishna_response(user_input)
26
- if firebase_enabled:
27
- save_chat_message(user_input, reply)
28
- return jsonify({'reply': reply})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  chat_history = get_chat_history() if firebase_enabled else []
30
  return render_template('chat.html', chat_history=chat_history)
31
 
32
  @app.route('/message')
33
- def message():
 
34
  return render_template('message.html')
35
 
36
  @app.route('/image', methods=['POST'])
37
- def image():
38
- prompt = request.json['prompt']
39
- image_url = generate_krishna_image(prompt)
40
- if image_url:
41
- return jsonify({'image_url': image_url})
42
- return jsonify({'error': 'Failed to generate image'}), 500
43
-
44
- @app.route('/comic', methods=['GET'])
45
- def comic():
46
- comic_images = generate_comic_strip()
47
- return jsonify({'comic_images': comic_images})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  @app.route('/countdown')
50
  def countdown():
51
- days_left = get_countdown()
52
- return jsonify({'days': days_left})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import os
2
+ from flask import Flask, render_template, request, jsonify
3
  from dotenv import load_dotenv
4
  from chatbot import get_krishna_response
5
  from image_api import generate_krishna_image, generate_comic_strip
6
  from countdown import get_countdown
7
+ import logging
8
+
9
+ # Configure logging
10
+ logging.basicConfig(level=logging.INFO)
11
+ logger = logging.getLogger(__name__)
12
+
13
+ # Initialize Firebase if available
14
  try:
15
  from firebase_config import save_chat_message, get_chat_history
16
  firebase_enabled = True
17
+ logger.info("Firebase integration enabled")
18
+ except ImportError as e:
19
  firebase_enabled = False
20
+ logger.warning(f"Firebase disabled: {str(e)}")
21
 
22
+ # Load environment variables
23
  load_dotenv()
24
+
25
  app = Flask(__name__)
26
+ app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True
27
 
28
  @app.route('/')
29
  def home():
30
+ """Render the home page"""
31
  return render_template('home.html')
32
 
33
  @app.route('/chat', methods=['GET', 'POST'])
34
  def chat():
35
+ """Handle chat interactions"""
36
  if request.method == 'POST':
37
+ try:
38
+ user_input = request.form['message']
39
+ logger.info(f"Received message: {user_input}")
40
+
41
+ reply = get_krishna_response(user_input)
42
+
43
+ if firebase_enabled:
44
+ save_chat_message(user_input, reply)
45
+
46
+ return jsonify({
47
+ 'reply': reply,
48
+ 'status': 'success'
49
+ })
50
+
51
+ except Exception as e:
52
+ logger.error(f"Chat error: {str(e)}")
53
+ return jsonify({
54
+ 'error': 'Failed to process message',
55
+ 'status': 'error'
56
+ }), 500
57
+
58
+ # GET request - load chat history
59
  chat_history = get_chat_history() if firebase_enabled else []
60
  return render_template('chat.html', chat_history=chat_history)
61
 
62
  @app.route('/message')
63
+ def special_message():
64
+ """Render special message page"""
65
  return render_template('message.html')
66
 
67
  @app.route('/image', methods=['POST'])
68
+ def generate_image():
69
+ """Generate Krishna image from prompt"""
70
+ try:
71
+ prompt = request.json.get('prompt', 'Lord Krishna playing flute')
72
+ logger.info(f"Generating image for prompt: {prompt}")
73
+
74
+ image_url = generate_krishna_image(prompt)
75
+
76
+ if not image_url:
77
+ raise ValueError("Image generation failed")
78
+
79
+ return jsonify({
80
+ 'image_url': image_url,
81
+ 'status': 'success'
82
+ })
83
+
84
+ except Exception as e:
85
+ logger.error(f"Image generation error: {str(e)}")
86
+ return jsonify({
87
+ 'error': 'Image generation failed',
88
+ 'status': 'error'
89
+ }), 500
90
+
91
+ @app.route('/comic')
92
+ def generate_comic():
93
+ """Generate comic strip"""
94
+ try:
95
+ comic_images = generate_comic_strip()
96
+ return jsonify({
97
+ 'comic_images': comic_images,
98
+ 'status': 'success'
99
+ })
100
+ except Exception as e:
101
+ logger.error(f"Comic generation error: {str(e)}")
102
+ return jsonify({
103
+ 'error': 'Comic generation failed',
104
+ 'status': 'error'
105
+ }), 500
106
 
107
  @app.route('/countdown')
108
  def countdown():
109
+ """Get days until special event"""
110
+ try:
111
+ days_left = get_countdown()
112
+ return jsonify({
113
+ 'days': days_left,
114
+ 'status': 'success'
115
+ })
116
+ except Exception as e:
117
+ logger.error(f"Countdown error: {str(e)}")
118
+ return jsonify({
119
+ 'error': 'Could not calculate countdown',
120
+ 'status': 'error'
121
+ }), 500
122
+
123
+ @app.route('/health')
124
+ def health_check():
125
+ """Health check endpoint"""
126
+ return jsonify({
127
+ 'status': 'healthy',
128
+ 'services': {
129
+ 'firebase': firebase_enabled,
130
+ 'chatbot': True,
131
+ 'image_generation': True
132
+ }
133
+ })
134
+
135
+ @app.errorhandler(404)
136
+ def not_found(e):
137
+ return jsonify({
138
+ 'error': 'Endpoint not found',
139
+ 'status': 'error'
140
+ }), 404
141
+
142
+ @app.errorhandler(500)
143
+ def server_error(e):
144
+ logger.error(f"Server error: {str(e)}")
145
+ return jsonify({
146
+ 'error': 'Internal server error',
147
+ 'status': 'error'
148
+ }), 500
149
+
150
+ if __name__ == '__main__':
151
+ port = int(os.environ.get('PORT', 7860))
152
+ app.run(host='0.0.0.0', port=port, debug=False)