@@ -2877,30 +2877,15 @@ def request_filter(req) -> None:
2877
2877
page .wait_for_timeout (1000 ) # Wait for X seconds after scrolling
2878
2878
page .evaluate ("window.scrollTo(0, 0)" )
2879
2879
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 = [
2882
2882
'[class*="play-button"]' ,
2883
2883
'[class*="play_button"]' ,
2884
2884
'[class*="playbutton"]' ,
2885
2885
'[class*="playback"]' ,
2886
2886
'[class*="play-back"]' ,
2887
2887
'[class*="play_back"]' ,
2888
2888
'[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 = [
2904
2889
'[aria-label="Play"]' ,
2905
2890
".ytp-play-button" ,
2906
2891
".play-button" ,
@@ -2909,12 +2894,37 @@ def request_filter(req) -> None:
2909
2894
]
2910
2895
for selector in play_button_selectors :
2911
2896
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
2913
2902
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
+ )
2915
2925
2916
2926
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
2918
2928
page .wait_for_timeout (10000 )
2919
2929
2920
2930
browser .close ()
0 commit comments