Update app.py
Browse files
app.py
CHANGED
@@ -211,55 +211,9 @@ async def get_track_download_url(track_id: str, quality: str) -> str:
|
|
211 |
|
212 |
|
213 |
|
214 |
-
|
215 |
-
# In-memory storage for request counting
|
216 |
-
request_counts = defaultdict(list)
|
217 |
-
request_lock = threading.Lock()
|
218 |
-
DAILY_LIMIT = 20
|
219 |
-
|
220 |
-
def cleanup_old_records():
|
221 |
-
"""Remove records older than 24 hours"""
|
222 |
-
today = datetime.now()
|
223 |
-
with request_lock:
|
224 |
-
for ip in list(request_counts.keys()):
|
225 |
-
request_counts[ip] = [
|
226 |
-
(timestamp, count)
|
227 |
-
for timestamp, count in request_counts[ip]
|
228 |
-
if (today - timestamp).days < 1
|
229 |
-
]
|
230 |
-
if not request_counts[ip]:
|
231 |
-
del request_counts[ip]
|
232 |
-
|
233 |
-
def get_daily_requests(ip):
|
234 |
-
"""Get the number of requests made today by this IP"""
|
235 |
-
cleanup_old_records()
|
236 |
-
today = datetime.now()
|
237 |
-
with request_lock:
|
238 |
-
return sum(
|
239 |
-
count for timestamp, count in request_counts[ip]
|
240 |
-
if (today - timestamp).days < 1
|
241 |
-
)
|
242 |
-
|
243 |
-
def increment_daily_requests(ip):
|
244 |
-
"""Increment the request counter for this IP"""
|
245 |
-
now = datetime.now()
|
246 |
-
with request_lock:
|
247 |
-
request_counts[ip].append((now, 1))
|
248 |
-
|
249 |
@app.route('/track_dl', methods=['POST'])
|
250 |
async def track_dl():
|
251 |
-
|
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. Get Premium or try again tomorrow.",
|
260 |
-
"remaining_requests": 0
|
261 |
-
}), 429
|
262 |
-
|
263 |
data = request.get_json()
|
264 |
track_id = data.get('track_id')
|
265 |
quality = data.get('quality', '128')
|
@@ -269,31 +223,28 @@ async def track_dl():
|
|
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 |
-
"
|
273 |
}), 400
|
274 |
|
275 |
dl_url = await get_track_download_url(track_id, quality)
|
276 |
|
277 |
if dl_url and "http" in dl_url:
|
278 |
-
|
279 |
-
increment_daily_requests(client_ip)
|
280 |
-
remaining_requests -= 1 # Decrease remaining count after successful increment
|
281 |
-
|
282 |
result = {
|
283 |
"url": dl_url,
|
284 |
-
"
|
285 |
}
|
286 |
return jsonify(result)
|
287 |
else:
|
288 |
return jsonify({
|
289 |
"error": "Failed to Fetch the Track.",
|
290 |
-
"
|
291 |
}), 400
|
292 |
|
293 |
except ValueError:
|
294 |
return jsonify({
|
295 |
"error": "Invalid quality value provided. It should be a valid integer or FLAC.",
|
296 |
-
"
|
297 |
}), 400
|
298 |
|
299 |
|
|
|
211 |
|
212 |
|
213 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
@app.route('/track_dl', methods=['POST'])
|
215 |
async def track_dl():
|
216 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
data = request.get_json()
|
218 |
track_id = data.get('track_id')
|
219 |
quality = data.get('quality', '128')
|
|
|
223 |
if quality_num > 128 or quality.upper() == 'FLAC':
|
224 |
return jsonify({
|
225 |
"error": "Quality above 128 or FLAC is for Premium users Only.",
|
226 |
+
"premium": "https://chrunos.com/premium-shortcuts/"
|
227 |
}), 400
|
228 |
|
229 |
dl_url = await get_track_download_url(track_id, quality)
|
230 |
|
231 |
if dl_url and "http" in dl_url:
|
232 |
+
|
|
|
|
|
|
|
233 |
result = {
|
234 |
"url": dl_url,
|
235 |
+
"premium": "https://chrunos.com/premium-shortcuts/"
|
236 |
}
|
237 |
return jsonify(result)
|
238 |
else:
|
239 |
return jsonify({
|
240 |
"error": "Failed to Fetch the Track.",
|
241 |
+
"premium": "https://chrunos.com/premium-shortcuts/"
|
242 |
}), 400
|
243 |
|
244 |
except ValueError:
|
245 |
return jsonify({
|
246 |
"error": "Invalid quality value provided. It should be a valid integer or FLAC.",
|
247 |
+
"premium": "https://chrunos.com/premium-shortcuts/"
|
248 |
}), 400
|
249 |
|
250 |
|