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