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