Update app.py
Browse files
app.py
CHANGED
@@ -124,6 +124,7 @@ async def get_video_url(youtube_url: str):
|
|
124 |
global_download_dir = tempfile.mkdtemp()
|
125 |
|
126 |
|
|
|
127 |
class RateLimiter:
|
128 |
def __init__(self, max_requests: int, time_window: timedelta):
|
129 |
self.max_requests = max_requests
|
@@ -142,13 +143,20 @@ class RateLimiter:
|
|
142 |
"""Check if the user has exceeded their rate limit."""
|
143 |
self._cleanup_old_requests(user_ip)
|
144 |
|
145 |
-
#
|
|
|
|
|
|
|
146 |
current_time = time.time()
|
147 |
self.requests[user_ip].append(current_time)
|
148 |
|
149 |
# Check if user has exceeded the maximum requests
|
150 |
-
return
|
151 |
-
|
|
|
|
|
|
|
|
|
152 |
|
153 |
|
154 |
# Initialize rate limiter with 100 requests per day
|
@@ -164,6 +172,7 @@ def get_user_ip(request: Request) -> str:
|
|
164 |
return forwarded.split(",")[0]
|
165 |
return request.client.host
|
166 |
|
|
|
167 |
@app.post("/maxs")
|
168 |
async def download_high_quality_video(request: Request):
|
169 |
user_ip = get_user_ip(request)
|
|
|
124 |
global_download_dir = tempfile.mkdtemp()
|
125 |
|
126 |
|
127 |
+
|
128 |
class RateLimiter:
|
129 |
def __init__(self, max_requests: int, time_window: timedelta):
|
130 |
self.max_requests = max_requests
|
|
|
143 |
"""Check if the user has exceeded their rate limit."""
|
144 |
self._cleanup_old_requests(user_ip)
|
145 |
|
146 |
+
# Get current count after cleanup
|
147 |
+
current_count = len(self.requests[user_ip])
|
148 |
+
|
149 |
+
# Add current request timestamp (incrementing the count)
|
150 |
current_time = time.time()
|
151 |
self.requests[user_ip].append(current_time)
|
152 |
|
153 |
# Check if user has exceeded the maximum requests
|
154 |
+
return (current_count + 1) > self.max_requests
|
155 |
+
|
156 |
+
def get_current_count(self, user_ip: str) -> int:
|
157 |
+
"""Get the current request count for an IP."""
|
158 |
+
self._cleanup_old_requests(user_ip)
|
159 |
+
return len(self.requests[user_ip])
|
160 |
|
161 |
|
162 |
# Initialize rate limiter with 100 requests per day
|
|
|
172 |
return forwarded.split(",")[0]
|
173 |
return request.client.host
|
174 |
|
175 |
+
|
176 |
@app.post("/maxs")
|
177 |
async def download_high_quality_video(request: Request):
|
178 |
user_ip = get_user_ip(request)
|