Spaces:
Sleeping
Sleeping
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():
|