python-reddit-youtube-bot icon indicating copy to clipboard operation
python-reddit-youtube-bot copied to clipboard

Screenshots not working anymore

Open sebbourgeois opened this issue 2 years ago • 9 comments

I suppose it's related, I had a UI update on Reddit yesterday, and since, the script is not able to retrieve the screenshots.

During the process, it says that downloading the screenshots is done :

Downloading screenshots of reddit posts...
Launching Headless Browser...
Login successful!
Downloading screenshots... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:54:34
Screenshots downloaded Successfully.

However, when creating the comments part, you can see this :

2023-12-08 11:00:52 INFO     Created Audio File : assets/work_dir/18czvs6/kcfxqsv.mp3
2023-12-08 11:00:52 INFO     Comment image not found : assets/work_dir/18czvs6/comment_kcfxqsv.png

Also, in the work_dir, you can see the mp3 files, but no png files : ls: cannot access '*.png': No such file or directory

sebbourgeois avatar Dec 08 '23 10:12 sebbourgeois

@alexlaverty after checking a bit, it seems it's coming from the new UI that is being pushed slowly but surely to all Reddit accounts. It may not impact all the users yet.

sebbourgeois avatar Dec 10 '23 09:12 sebbourgeois

will try and have a look, i've noticed for a while now they've been serving both the old UI and new UI so will need to try and handle that situation, I've also started working on a rewrite of this repo, focusing on making the code tidier and better structured : https://github.com/alexlaverty/python-reddit-youtube-bot-2.0

current repo is messy and started to get a bit out of control and hard to maintain..

If you set headless mode to False it will launch the browser and can view it as it navigates : https://github.com/alexlaverty/python-reddit-youtube-bot/blob/main/comments/screenshot.py#L55

browser = p.chromium.launch(headless=False)

alexlaverty avatar Dec 15 '23 21:12 alexlaverty

can see you've posted similar issue for the elebumm repo :

https://github.com/elebumm/RedditVideoMakerBot/issues/1898

i was also checking over there to see how they're handling it, as one of the comments says they've redone the UI so that now there isn't a good way to use a CSS selector to screenshot just the comment.

alexlaverty avatar Dec 16 '23 00:12 alexlaverty

I've pushed a fix for the comment screenshots for the new Reddit UI Layout : https://github.com/alexlaverty/python-reddit-youtube-bot/commit/4211f02d78aaea1c12709800d06629323a03cd01

build for the commit succeeded and uploaded to the ttsvibelounge youtube channel : https://youtu.be/21bbYzGupxQ?si=UOcAi9ITXip82UI2

fix was a bit painful, basically when you view the comment you need to collapse the child comments first then you can screenshot just the comment, however some comments when you browse them are themselves collapsed.. so you need to expand the main comment and then collapse the child comments then you can screenshot the main comment.. had a lot of fun trying to figure that out lol

If the elebumm RedditVideoMakerBot repo is still suffering from this new layout comment screenshot issue might try raise a PR to their repo to fix the issue if they haven't already.

alexlaverty avatar Dec 16 '23 08:12 alexlaverty

Thanks for the fix @alexlaverty I will give it a try ! Indeed, I had a talk with some persons on the RedditVideoBotMaker's discord, that new comment system looked like to be a pain in the a**, I'm glad you were able to figure it out 😄 As far as I know, they still face the issue.

I'll give a try to the v2 as well !

sebbourgeois avatar Dec 17 '23 07:12 sebbourgeois

@alexlaverty so, just tried the fix for the screenshots, I have a new error message :

Downloading screenshots of reddit posts...
Launching Headless Browser...
Traceback (most recent call last):
  File "/home/sb/videos-creation/python-reddit-youtube-bot/app.py", line 440, in <module>
    process_submissions(submissions)
  File "/home/sb/videos-creation/python-reddit-youtube-bot/app.py", line 64, in process_submissions
    process_submission(submission)
  File "/home/sb/videos-creation/python-reddit-youtube-bot/app.py", line 118, in process_submission
    vid.create(
  File "/home/sb/videos-creation/python-reddit-youtube-bot/video_generation/video.py", line 500, in create
    download_screenshots_of_reddit_posts(
  File "/home/sb/videos-creation/python-reddit-youtube-bot/comments/screenshot.py", line 88, in download_screenshots_of_reddit_posts
    page.wait_for_selector('button[type="submit"]')
  File "/home/sb/.local/lib/python3.10/site-packages/playwright/sync_api/_generated.py", line 8251, in wait_for_selector
    self._sync(
  File "/home/sb/.local/lib/python3.10/site-packages/playwright/_impl/_sync_base.py", line 104, in _sync
    return task.result()
  File "/home/sb/.local/lib/python3.10/site-packages/playwright/_impl/_page.py", line 368, in wait_for_selector
    return await self._main_frame.wait_for_selector(**locals_to_params(locals()))
  File "/home/sb/.local/lib/python3.10/site-packages/playwright/_impl/_frame.py", line 322, in wait_for_selector
    await self._channel.send("waitForSelector", locals_to_params(locals()))
  File "/home/sb/.local/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 61, in send
    return await self._connection.wrap_api_call(
  File "/home/sb/.local/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 461, in wrap_api_call
    return await cb()
  File "/home/sb/.local/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 96, in inner_send
    result = next(iter(done)).result()
playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.
=========================== logs ===========================
waiting for locator("button[type=\"submit\"]") to be visible
============================================================

sebbourgeois avatar Dec 18 '23 12:12 sebbourgeois

must be something to do with the login, relevant code is here : https://github.com/alexlaverty/python-reddit-youtube-bot/blob/c4c0217d7b6b6137f39b009e00c22a39234521fc/comments/screenshot.py#L77C1-L90

can you find this line in screenshot.py and change headless to be False :

browser = p.chromium.launch(headless=True)

then you'll see the browser when it pops up and should see it attempt to login, maybe there's a popup or something blocking the login attempt...

my TTSVibeLounge youtube channel has been running on a schedule now last couple days and has been producing videos again ok.

alexlaverty avatar Dec 19 '23 10:12 alexlaverty

@alexlaverty I think it was some temporary issue from Reddit, I tried again without changing anything and it worked fine. Sorry for the false alarm !

sebbourgeois avatar Dec 19 '23 21:12 sebbourgeois

collapse the child comments first th

any chance you can make that PR?

Kamushy avatar Jan 08 '24 09:01 Kamushy