madiele / vod2pod-rss

Vod2Pod-RSS converts a YouTube or Twitch channel into a podcast with ease. It creates a podcast RSS that can be listened to directly inside any podcast client. VODs are transcoded to MP3 on the fly and no server storage is needed!
MIT License
230 stars 6 forks source link

relative URL without a base #205

Closed Eisaichen closed 3 months ago

Eisaichen commented 3 months ago

app version: 1.2.2


issue description: I'm able to update the feed, and the web UI seems to be working fine as usual. However, I'm currently facing an issue where I can't play any episodes. The error message I'm getting is: "relative URL without a base."

Is anyone else experiencing this problem? Thanks in advance!

Logs ``` Defaulted container "vod2pod" out of: vod2pod, init-redis (init) 2024-08-15T05:44:57.269Z INFO [app] app version 1.2.2 2024-08-15T05:44:57.280Z DEBUG [app] cached app version Some("1.2.2") 2024-08-15T05:44:57.280Z DEBUG [app] set cached app version to 1.2.2 2024-08-15T05:44:57.280Z INFO [app] listening on http://0.0.0.0:8080 2024-08-15T05:44:57.281Z INFO [actix_server::builder] starting 2 workers 2024-08-15T05:44:57.281Z INFO [actix_server::server] Actix runtime found; starting in Actix runtime 2024-08-15T05:45:23.036Z INFO [vod2pod_rss::server] processing transcode at 320k for https://www.youtube.com/watch?v=8-MSkffwlxw 2024-08-15T05:45:23.038Z DEBUG [vod2pod_rss::provider] using YoutubeProvider 2024-08-15T05:45:23.040Z DEBUG [vod2pod_rss::server] received content range bytes=0-1 2024-08-15T05:45:23.040Z DEBUG [vod2pod_rss::server] requested content-range: bytes 0-1/22680000 2024-08-15T05:45:23.040Z DEBUG [vod2pod_rss::server] choosen seek_time: 0 2024-08-15T05:45:23.040Z DEBUG [vod2pod_rss::server] seconds: 567, bitrate: 320 2024-08-15T05:45:23.040Z DEBUG [vod2pod_rss::provider] using YoutubeProvider 2024-08-15T05:45:23.046Z DEBUG [vod2pod_rss::provider::youtube] getting stream_url for yt video: https://www.youtube.com/watch?v=8-MSkffwlxw 2024-08-15T05:45:27.078Z WARN [vod2pod_rss::provider::youtube] error while parsing stream url: input: error: relative URL without a base ```
madiele commented 3 months ago

Can you switch to the beta image and see if it gets resolved? The beta images uses the latest version of yt-dlp, I want se if it's that

Edit: just tested the same channel on my personal instance (on beta) and it works for me

madiele commented 3 months ago

tested on version 1.2.2 and it works too, so it's either a geographical issue or a configuration issue.

I'll check the code just in case I find some clue but for now those are my guesses

madiele commented 3 months ago

Ok found how can you give me better infos

You need to enter in the vod2pod container terminal and run this command

yt-dlp -f bestaudio --get-url https://www.youtube.com/watch?v=8-MSkffwlxw

To enter the terminal of vod2pod go where you run the docker compose commands and do

sudo docker compose exec vod2pod /bin/bash

Write the output here

Eisaichen commented 3 months ago
ERROR: [youtube] 8-MSkffwlxw: Sign in to confirm you’re not a bot. This helps protect our community. Learn more
command terminated with exit code 1

ok, so it is the anti-bot..

Maybe we should output the result of yt-dlp to the log for better troubleshooting? To fix the issue, I tried mounting a cookies file that contains login token for youtube into the container, and using it

yt-dlp -f bestaudio --get-url --cookies /cookies.txt https://www.youtube.com/watch?v=8-MSkffwlxw

This works. But how to let vod2pod also use the cookies file? Or, is there a better solution?

madiele commented 3 months ago

At the moment there is no way, other then forking to change what is the command vod2pod-rss issues to yt-dlp, but another user asked for a possibility to reddit the arguments given so I think an option is due to being added.

The log is a good idea, I'll try to add it one of this days, as it's a 5 minutes edit.

As for the adding of the command it depends on when I have time to implementing it (always open to PRs though), it's not to hard to do, just need to add a new env variable something like "YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS" and add an if in the code of the youtube provider

then you would be able to add the cookie option and add the needed file as a docker volume volume in the docker compose

That being said I don't know for how long the cookies will last, and you'll probably need to refresh them mannualy every once in a while

madiele commented 3 months ago

just committed the log in the beta image (the build will be ready 10 minutes from now), if you have time feel free to test if the error now shows in the logs now

madiele commented 3 months ago

managed to find some time today and I implemented the YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS environment variable, set it inside your compose file like this

YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS=["--cookies", "/cookies.txt"]

then add you cookies.txt to the container as a volume to /cookies.txt location

for now I will not document this option, test it out and let me know how it goes, if if works well I will release it in the following weeks, right now you can use it in the beta image

Eisaichen commented 3 months ago

I'm sorry for the wait... Finally got some free time to test it today, and confirm it is working as intended. This also enables capable to pass the customize option to yt-dlp, Great job! (tested on 1.2.3-beta)