If you’re like me, you may want to (re)watch the series “The Chosen”, a show about the life of Jesus. If you’re like me, you want to watch this on your TV but the official app is terrible. And if you’re like me, you have a Jellyfin server you could use instead, if only you had the video files available to chuck them on there.
If this sounds liek a familiar issue, read on. Otherwise, you probably don’t need to bother, although this procedure can probably transferred to other instances of wanting to download videos from the internet.
As a prerequisite, yt-dlp
is needed. yt-downloader
might work as well but I don’t know if it’s still maintained and I didn’t test it.
First of all, you need to find the URL of the video you want.
- Visit the official website at
watch.thchosen.tv
. - Open the developer panel of your browser and select the “Network” tab.
- Filter for file type
m3u8
. - Navigate to the video of interest.
- Select the first URL that pops up when you do this. You may want/need to reload the page to get a clean result.
- Extract the URL without the
viewerToken
parameter, if present.
With this URL execute the following:
yt-dlp "${URL}" -F
This will give you a list of all available video and audio streams. The video streams are at the bottom and you can select your desired resolution.
Take note of its ID which is an integer like 5063
(unfortunately, you have to do this for every episode because the IDs differ each time).
You can also select one or more audio streams to download. If you want more than one language,
note down the IDs of those as well (e.g. “AUDIO-English”). If you don’t specifically choose any audio streams, the download will default to English,
I think. Lastly, if you want subtitles, run the following:
yt-dlp "${URL}" --list-subs
This will give you a list of available subtitles, make note of any you want. For example, the code for English is “en”.
With all this in hand you can finally download everything you need with the following:
yt-dlp --sub-langs "${SUBTITLE_LIST}" --embed-subs --audio-multistreams -f "${STREAM_LIST}" -o "${OUTPUT_FILENAME}" "${URL}"
Note that $SUBTITLE_LIST is comma-separated whereas $STREAM_LIST is separated by a plus symbol and contains video and audio streams. To illustrate the
final result, here is the command to download episode two of season two (at the time of this writing) in HD quality with English and German audio and
subtitles and save it to a file called S02E02.mkv
:
yt-dlp --sub-langs "en,de" --embed-subs --audio-multistreams -f "5063+AUDIO-English+AUDIO-German" -o "S02E02.mkv" "https://api.frontrow.cc/channels/12884901895/VIDEO/184683594354/v2/hls.m3u8"
Shalom shalom.