Skip to content

Commit c5828d3

Browse files
Refactor: Combine play button selector loops for efficiency
1 parent 9d0de49 commit c5828d3

File tree

1 file changed

+30
-20
lines changed

1 file changed

+30
-20
lines changed

wdoc/utils/loaders.py

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2877,30 +2877,15 @@ def request_filter(req) -> None:
28772877
page.wait_for_timeout(1000) # Wait for X seconds after scrolling
28782878
page.evaluate("window.scrollTo(0, 0)")
28792879

2880-
# Try to click on video play buttons
2881-
for trial in [
2880+
# Try to click on video play buttons using various selectors
2881+
play_button_selectors = [
28822882
'[class*="play-button"]',
28832883
'[class*="play_button"]',
28842884
'[class*="playbutton"]',
28852885
'[class*="playback"]',
28862886
'[class*="play-back"]',
28872887
'[class*="play_back"]',
28882888
'[class*="play"]',
2889-
]:
2890-
playback_elements = page.query_selector_all(trial)
2891-
for element in playback_elements:
2892-
if not element.is_visible():
2893-
continue
2894-
if not element.is_enabled():
2895-
continue
2896-
logger.debug(f"Clickable element: {element}")
2897-
try:
2898-
element.click(timeout=500)
2899-
print(f"Clicked element: {element.evaluate('el => el.outerHTML')}")
2900-
page.wait_for_timeout(1000) # Wait for X seconds after each click
2901-
except Exception:
2902-
pass
2903-
play_button_selectors = [
29042889
'[aria-label="Play"]',
29052890
".ytp-play-button",
29062891
".play-button",
@@ -2909,12 +2894,37 @@ def request_filter(req) -> None:
29092894
]
29102895
for selector in play_button_selectors:
29112896
try:
2912-
page.click(selector, timeout=500)
2897+
# Try clicking directly first (for specific selectors)
2898+
page.click(selector, timeout=200)
2899+
logger.debug(f"Clicked element matching selector: {selector}")
2900+
page.wait_for_timeout(1000) # Wait after click
2901+
continue # Move to next selector if successful
29132902
except Exception:
2914-
pass
2903+
# If direct click fails or selector is general (like class*), try querying all
2904+
try:
2905+
playback_elements = page.query_selector_all(selector)
2906+
for element in playback_elements:
2907+
if not element.is_visible() or not element.is_enabled():
2908+
continue
2909+
logger.debug(f"Found clickable element via query: {element}")
2910+
try:
2911+
element.click(timeout=500)
2912+
logger.debug(
2913+
f"Clicked element: {element.evaluate('el => el.outerHTML')}"
2914+
)
2915+
page.wait_for_timeout(1000) # Wait after click
2916+
# Don't break here, maybe multiple elements match a general selector
2917+
except Exception as click_err:
2918+
logger.debug(
2919+
f"Failed to click element {element}: {click_err}"
2920+
)
2921+
except Exception as query_err:
2922+
logger.debug(
2923+
f"Failed to query or click elements for selector {selector}: {query_err}"
2924+
)
29152925

29162926
if not any(v for v in video_urls.values()):
2917-
# Wait a bit more for any video to start loading
2927+
# Wait a bit more for any video to start loading if no media URLs found yet
29182928
page.wait_for_timeout(10000)
29192929

29202930
browser.close()

0 commit comments

Comments
 (0)