tecuts commited on
Commit
8c226e7
·
verified ·
1 Parent(s): f7540d5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -10
app.py CHANGED
@@ -211,10 +211,11 @@ async def get_track_download_url(track_id: str, quality: str) -> str:
211
 
212
 
213
 
 
214
  # In-memory storage for request counting
215
- # Structure: {ip: [(timestamp, count), ...]}
216
  request_counts = defaultdict(list)
217
  request_lock = threading.Lock()
 
218
 
219
  def cleanup_old_records():
220
  """Remove records older than 24 hours"""
@@ -247,14 +248,16 @@ def increment_daily_requests(ip):
247
 
248
  @app.route('/track_dl', methods=['POST'])
249
  async def track_dl():
250
- # Get client IP
251
  client_ip = request.remote_addr
252
 
253
- # Check if daily limit exceeded
254
- daily_requests = get_daily_requests(client_ip)
255
- if daily_requests >= 20:
 
 
256
  return jsonify({
257
- "error": "Daily limit of 20 downloads exceeded. Please try again tomorrow."
 
258
  }), 429
259
 
260
  data = request.get_json()
@@ -265,7 +268,8 @@ async def track_dl():
265
  quality_num = int(quality)
266
  if quality_num > 128 or quality.upper() == 'FLAC':
267
  return jsonify({
268
- "error": "Quality above 128 or FLAC is for Premium users Only."
 
269
  }), 400
270
 
271
  dl_url = await get_track_download_url(track_id, quality)
@@ -273,16 +277,23 @@ async def track_dl():
273
  if dl_url and "http" in dl_url:
274
  # Increment counter only on successful download
275
  increment_daily_requests(client_ip)
276
- result = {"url": dl_url}
 
 
 
 
 
277
  return jsonify(result)
278
  else:
279
  return jsonify({
280
- "error": "Failed to Fetch the Track."
 
281
  }), 400
282
 
283
  except ValueError:
284
  return jsonify({
285
- "error": "Invalid quality value provided. It should be a valid integer or FLAC."
 
286
  }), 400
287
 
288
 
 
211
 
212
 
213
 
214
+
215
  # In-memory storage for request counting
 
216
  request_counts = defaultdict(list)
217
  request_lock = threading.Lock()
218
+ DAILY_LIMIT = 5
219
 
220
  def cleanup_old_records():
221
  """Remove records older than 24 hours"""
 
248
 
249
  @app.route('/track_dl', methods=['POST'])
250
  async def track_dl():
 
251
  client_ip = request.remote_addr
252
 
253
+ # Check current usage
254
+ current_requests = get_daily_requests(client_ip)
255
+ remaining_requests = DAILY_LIMIT - current_requests
256
+
257
+ if remaining_requests <= 0:
258
  return jsonify({
259
+ "error": "Daily limit of 20 downloads exceeded. Please try again tomorrow.",
260
+ "remaining_requests": 0
261
  }), 429
262
 
263
  data = request.get_json()
 
268
  quality_num = int(quality)
269
  if quality_num > 128 or quality.upper() == 'FLAC':
270
  return jsonify({
271
+ "error": "Quality above 128 or FLAC is for Premium users Only.",
272
+ "remaining_requests": remaining_requests
273
  }), 400
274
 
275
  dl_url = await get_track_download_url(track_id, quality)
 
277
  if dl_url and "http" in dl_url:
278
  # Increment counter only on successful download
279
  increment_daily_requests(client_ip)
280
+ remaining_requests -= 1 # Decrease remaining count after successful increment
281
+
282
+ result = {
283
+ "url": dl_url,
284
+ "remaining_requests": remaining_requests
285
+ }
286
  return jsonify(result)
287
  else:
288
  return jsonify({
289
+ "error": "Failed to Fetch the Track.",
290
+ "remaining_requests": remaining_requests
291
  }), 400
292
 
293
  except ValueError:
294
  return jsonify({
295
+ "error": "Invalid quality value provided. It should be a valid integer or FLAC.",
296
+ "remaining_requests": remaining_requests
297
  }), 400
298
 
299