seawolf2357 commited on
Commit
7ff41f1
ยท
verified ยท
1 Parent(s): b54a474

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -9
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
- # ์‹ค์ œ๋กœ๋Š” ์—ฌ๊ธฐ์„œ ํ—ˆ๊น…ํŽ˜์ด์Šค API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ข‹์•„์š” ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
253
- # ํ˜„์žฌ๋Š” ์˜ˆ์‹œ๋กœ ์„ธ์…˜์—๋งŒ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค
254
- like_status[url] = not current_status
255
- session['like_status'] = like_status
 
256
 
257
- return jsonify({
258
- 'success': True,
259
- 'is_liked': like_status[url],
260
- 'message': '์ข‹์•„์š”๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.' if like_status[url] else '์ข‹์•„์š”๋ฅผ ์ทจ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.'
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():