Update app.py
Browse files
app.py
CHANGED
|
@@ -18,6 +18,8 @@ from selenium.webdriver.support import expected_conditions as EC
|
|
| 18 |
from selenium.webdriver.common.action_chains import ActionChains
|
| 19 |
import time
|
| 20 |
from webdriver_manager.chrome import ChromeDriverManager
|
|
|
|
|
|
|
| 21 |
|
| 22 |
load_dotenv()
|
| 23 |
|
|
@@ -529,12 +531,13 @@ def simulate_spotify_view(video_id: str, proxy: Proxy, session: requests.Session
|
|
| 529 |
finally:
|
| 530 |
driver.quit()
|
| 531 |
|
| 532 |
-
def
|
| 533 |
video_id = extract_video_id(url, platform)
|
| 534 |
proxy = get_random_proxy()
|
| 535 |
if not proxy:
|
| 536 |
return
|
| 537 |
-
|
|
|
|
| 538 |
try:
|
| 539 |
if platform == "instagram":
|
| 540 |
simulate_instagram_view(video_id, proxy, session)
|
|
@@ -548,17 +551,19 @@ def simulate_views(url: str, platform: str, count: int, delay: int, parallel_pro
|
|
| 548 |
simulate_twitch_view(video_id, proxy, session)
|
| 549 |
elif platform == "spotify":
|
| 550 |
simulate_spotify_view(video_id, proxy, session)
|
|
|
|
| 551 |
except Exception as e:
|
| 552 |
pass
|
| 553 |
|
| 554 |
@app.post("/simulate_views")
|
| 555 |
-
async def simulate_views_endpoint(request: VisitRequest):
|
| 556 |
try:
|
| 557 |
session = None
|
| 558 |
if os.getenv(f'{request.platform.upper()}_USER') and os.getenv(f'{request.platform.upper()}_PASSWORD'):
|
| 559 |
session = authenticate(os.getenv(f'{request.platform.upper()}_USER'), os.getenv(f'{request.platform.upper()}_PASSWORD'), request.platform)
|
| 560 |
-
|
| 561 |
-
|
|
|
|
| 562 |
url=request.url,
|
| 563 |
platform=request.platform,
|
| 564 |
count=request.count,
|
|
@@ -566,7 +571,8 @@ async def simulate_views_endpoint(request: VisitRequest):
|
|
| 566 |
parallel_processes=request.parallel_processes,
|
| 567 |
session=session
|
| 568 |
)
|
| 569 |
-
|
|
|
|
| 570 |
|
| 571 |
except Exception as e:
|
| 572 |
return PlainTextResponse(str(e), status_code=500)
|
|
|
|
| 18 |
from selenium.webdriver.common.action_chains import ActionChains
|
| 19 |
import time
|
| 20 |
from webdriver_manager.chrome import ChromeDriverManager
|
| 21 |
+
from fastapi import BackgroundTasks
|
| 22 |
+
from tqdm import tqdm
|
| 23 |
|
| 24 |
load_dotenv()
|
| 25 |
|
|
|
|
| 531 |
finally:
|
| 532 |
driver.quit()
|
| 533 |
|
| 534 |
+
def simulate_views_background(url: str, platform: str, count: int, delay: int, parallel_processes: int, session: requests.Session = None):
|
| 535 |
video_id = extract_video_id(url, platform)
|
| 536 |
proxy = get_random_proxy()
|
| 537 |
if not proxy:
|
| 538 |
return
|
| 539 |
+
|
| 540 |
+
for i in tqdm(range(count)):
|
| 541 |
try:
|
| 542 |
if platform == "instagram":
|
| 543 |
simulate_instagram_view(video_id, proxy, session)
|
|
|
|
| 551 |
simulate_twitch_view(video_id, proxy, session)
|
| 552 |
elif platform == "spotify":
|
| 553 |
simulate_spotify_view(video_id, proxy, session)
|
| 554 |
+
time.sleep(delay)
|
| 555 |
except Exception as e:
|
| 556 |
pass
|
| 557 |
|
| 558 |
@app.post("/simulate_views")
|
| 559 |
+
async def simulate_views_endpoint(request: VisitRequest, background_tasks: BackgroundTasks):
|
| 560 |
try:
|
| 561 |
session = None
|
| 562 |
if os.getenv(f'{request.platform.upper()}_USER') and os.getenv(f'{request.platform.upper()}_PASSWORD'):
|
| 563 |
session = authenticate(os.getenv(f'{request.platform.upper()}_USER'), os.getenv(f'{request.platform.upper()}_PASSWORD'), request.platform)
|
| 564 |
+
|
| 565 |
+
background_tasks.add_task(
|
| 566 |
+
simulate_views_background,
|
| 567 |
url=request.url,
|
| 568 |
platform=request.platform,
|
| 569 |
count=request.count,
|
|
|
|
| 571 |
parallel_processes=request.parallel_processes,
|
| 572 |
session=session
|
| 573 |
)
|
| 574 |
+
|
| 575 |
+
return PlainTextResponse("Views simulation started in the background.")
|
| 576 |
|
| 577 |
except Exception as e:
|
| 578 |
return PlainTextResponse(str(e), status_code=500)
|