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