Update app.py
Browse files
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
|
254 |
-
|
255 |
-
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
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 |
|