Athspi commited on
Commit
60a386b
·
verified ·
1 Parent(s): 8a2b2ef

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -24
app.py CHANGED
@@ -1,4 +1,4 @@
1
- # app.py - Flask Backend with Correct spoo.me API Integration
2
  from flask import Flask, request, jsonify, send_from_directory, make_response
3
  import google.generativeai as genai
4
  from dotenv import load_dotenv
@@ -37,7 +37,7 @@ You are a helpful AI assistant named Athspi. When responding:
37
  """
38
 
39
  genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
40
- model = genai.GenerativeModel('gemini-2.5-flash', system_instruction=system_instruction)
41
 
42
  # In-memory session storage
43
  chat_sessions = {}
@@ -73,19 +73,15 @@ def generate_audio(text):
73
  return filename
74
 
75
  def shorten_url_with_spoo_me(url):
76
- """Shorten URL using spoo.me API with full options"""
77
  try:
78
- # Clean the URL
79
  clean_url = url.strip()
80
  if not clean_url.startswith(('http://', 'https://')):
81
  clean_url = 'https://' + clean_url
82
 
83
  payload = {
84
- "url": clean_url,
85
- "alias": "", # Auto-generate
86
- "password": "", # No password
87
- "max-clicks": "", # No limit
88
- "block-bots": "false" # Don't block bots
89
  }
90
  headers = {
91
  "Accept": "application/json",
@@ -101,24 +97,19 @@ def shorten_url_with_spoo_me(url):
101
 
102
  if response.status_code == 200:
103
  try:
104
- # Try JSON first
105
- result = response.json()
106
- short_url = result.get("url") or result.get("shorturl")
107
- if short_url and short_url.startswith('http'):
108
- return short_url
109
- except ValueError:
110
- # If not JSON, treat as plain text
111
- short_url = response.text.strip()
112
- if short_url.startswith('http'):
113
- return short_url
114
- elif len(short_url) > 1:
115
- return f"https://spoo.me/{short_url}"
116
 
117
  print(f"spoo.me error: {response.status_code} - {response.text}")
118
  return None
119
 
120
  except Exception as e:
121
- print(f"Request failed: {str(e)}")
122
  return None
123
 
124
  @app.route('/chat', methods=['POST'])
@@ -143,7 +134,7 @@ def chat():
143
  # Auto-detect any URL and shorten it
144
  url_match = re.search(r'https?://[^\s<>"{}|\\^`\[\]]+', user_message)
145
  if url_match:
146
- original_url = url_match.group(0)
147
  short_url = shorten_url_with_spoo_me(original_url)
148
  if short_url and "[SHORTEN]" not in full_text:
149
  short_tag = f"[SHORTEN]{original_url}|{short_url}[/SHORTEN]"
@@ -186,7 +177,7 @@ def download_audio(filename):
186
  try:
187
  return send_from_directory(AUDIO_FOLDER, filename, as_attachment=True)
188
  except FileNotFoundError:
189
- return jsonify({"error": "File not found"}), 404
190
 
191
  @app.route('/')
192
  def serve_index():
 
1
+ # app.py - Flask Backend with CORRECT spoo.me URL Shortening
2
  from flask import Flask, request, jsonify, send_from_directory, make_response
3
  import google.generativeai as genai
4
  from dotenv import load_dotenv
 
37
  """
38
 
39
  genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
40
+ model = genai.GenerativeModel('https://tinyurl.com/athspi-spacegemini-1.5-pro', system_instruction=system_instruction)
41
 
42
  # In-memory session storage
43
  chat_sessions = {}
 
73
  return filename
74
 
75
  def shorten_url_with_spoo_me(url):
76
+ """Shorten URL using spoo.me API - FIXED WITH STRIP & CORRECT JSON KEY"""
77
  try:
78
+ # Clean the input URL
79
  clean_url = url.strip()
80
  if not clean_url.startswith(('http://', 'https://')):
81
  clean_url = 'https://' + clean_url
82
 
83
  payload = {
84
+ "url": clean_url
 
 
 
 
85
  }
86
  headers = {
87
  "Accept": "application/json",
 
97
 
98
  if response.status_code == 200:
99
  try:
100
+ result = response.json() # This is now correct
101
+ short_url = result.get("short_url") # Use "short_url", not "url"
102
+ if short_url:
103
+ return short_url.strip() # CRITICAL: strip whitespace
104
+ except Exception as json_error:
105
+ print("JSON parse error:", str(json_error))
106
+ return None
 
 
 
 
 
107
 
108
  print(f"spoo.me error: {response.status_code} - {response.text}")
109
  return None
110
 
111
  except Exception as e:
112
+ print("Request failed:", str(e))
113
  return None
114
 
115
  @app.route('/chat', methods=['POST'])
 
134
  # Auto-detect any URL and shorten it
135
  url_match = re.search(r'https?://[^\s<>"{}|\\^`\[\]]+', user_message)
136
  if url_match:
137
+ original_url = url_match.group(0).strip() # Strip detected URL
138
  short_url = shorten_url_with_spoo_me(original_url)
139
  if short_url and "[SHORTEN]" not in full_text:
140
  short_tag = f"[SHORTEN]{original_url}|{short_url}[/SHORTEN]"
 
177
  try:
178
  return send_from_directory(AUDIO_FOLDER, filename, as_attachment=True)
179
  except FileNotFoundError:
180
+ return jsonify({"error": "Audio file not found"}), 404
181
 
182
  @app.route('/')
183
  def serve_index():