Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -245,20 +245,70 @@ def toggle_like():
|
|
| 245 |
if not url:
|
| 246 |
return jsonify({'success': False, 'message': 'URLμ΄ νμν©λλ€.'})
|
| 247 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 248 |
# νμ¬ μ’μμ μν νμΈ
|
| 249 |
like_status = session.get('like_status', {})
|
| 250 |
current_status = like_status.get(url, False)
|
| 251 |
|
| 252 |
-
#
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
|
|
|
|
| 256 |
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 262 |
|
| 263 |
@app.route('/api/refresh-likes', methods=['POST'])
|
| 264 |
def refresh_likes():
|
|
|
|
| 245 |
if not url:
|
| 246 |
return jsonify({'success': False, 'message': 'URLμ΄ νμν©λλ€.'})
|
| 247 |
|
| 248 |
+
token = session['token']
|
| 249 |
+
|
| 250 |
+
# URLμμ λͺ¨λΈ μ 보 μΆμΆ
|
| 251 |
+
model_info = extract_model_info(url)
|
| 252 |
+
if not model_info:
|
| 253 |
+
return jsonify({'success': False, 'message': 'μλͺ»λ URL νμμ
λλ€.'})
|
| 254 |
+
|
| 255 |
# νμ¬ μ’μμ μν νμΈ
|
| 256 |
like_status = session.get('like_status', {})
|
| 257 |
current_status = like_status.get(url, False)
|
| 258 |
|
| 259 |
+
# API μμ²μ μν ν€λ λ° λ°μ΄ν° μ€μ
|
| 260 |
+
headers = {
|
| 261 |
+
"Authorization": f"Bearer {token}",
|
| 262 |
+
"Content-Type": "application/json"
|
| 263 |
+
}
|
| 264 |
|
| 265 |
+
# API μλν¬μΈνΈ λ° λ©μλ κ²°μ
|
| 266 |
+
# Hugging Face APIμμ λͺ¨λΈ/μ€νμ΄μ€λ₯Ό μ’μμ/μ·¨μνλ μλν¬μΈνΈ
|
| 267 |
+
if model_info['type'] == 'spaces':
|
| 268 |
+
api_url = f"https://huggingface.co/api/spaces/{model_info['full_id']}/like"
|
| 269 |
+
else:
|
| 270 |
+
api_url = f"https://huggingface.co/api/models/{model_info['full_id']}/like"
|
| 271 |
+
|
| 272 |
+
# νμ¬ μνμ λ°λλ‘ λ³κ²½
|
| 273 |
+
try:
|
| 274 |
+
if current_status:
|
| 275 |
+
# μ’μμ μ·¨μ (DELETE μμ²)
|
| 276 |
+
response = requests.delete(api_url, headers=headers)
|
| 277 |
+
else:
|
| 278 |
+
# μ’μμ μΆκ° (POST μμ²)
|
| 279 |
+
response = requests.post(api_url, headers=headers, json={})
|
| 280 |
+
|
| 281 |
+
# μλ΅ νμΈ
|
| 282 |
+
if response.status_code in [200, 201, 204]:
|
| 283 |
+
# μ±κ³΅μ μΌλ‘ λ³κ²½λλ©΄ μΈμ
μν μ
λ°μ΄νΈ
|
| 284 |
+
new_status = not current_status
|
| 285 |
+
like_status[url] = new_status
|
| 286 |
+
session['like_status'] = like_status
|
| 287 |
+
|
| 288 |
+
return jsonify({
|
| 289 |
+
'success': True,
|
| 290 |
+
'is_liked': new_status,
|
| 291 |
+
'message': 'μ’μμλ₯Ό μΆκ°νμ΅λλ€.' if new_status else 'μ’μμλ₯Ό μ·¨μνμ΅λλ€.'
|
| 292 |
+
})
|
| 293 |
+
else:
|
| 294 |
+
# API μλ΅ μ€λ₯
|
| 295 |
+
error_message = f"Hugging Face API μ€λ₯ (μν μ½λ: {response.status_code})"
|
| 296 |
+
try:
|
| 297 |
+
error_data = response.json()
|
| 298 |
+
if 'error' in error_data:
|
| 299 |
+
error_message += f": {error_data['error']}"
|
| 300 |
+
except:
|
| 301 |
+
pass
|
| 302 |
+
|
| 303 |
+
logger.error(f"{error_message}, μλ΅: {response.text}")
|
| 304 |
+
return jsonify({'success': False, 'message': error_message})
|
| 305 |
+
|
| 306 |
+
except Exception as e:
|
| 307 |
+
logger.error(f"μ’μμ μν λ³κ²½ μ€ μ€λ₯: {e}")
|
| 308 |
+
return jsonify({
|
| 309 |
+
'success': False,
|
| 310 |
+
'message': f'μ’μμ μν λ³κ²½ μ€ μ€λ₯: {str(e)}'
|
| 311 |
+
})
|
| 312 |
|
| 313 |
@app.route('/api/refresh-likes', methods=['POST'])
|
| 314 |
def refresh_likes():
|