Attempt to switch from dl-stream to streamlink

This commit is contained in:
Rain Clark 2024-04-05 16:55:42 -04:00
parent 3957eb40ca
commit 5ee8e47c54
2 changed files with 24 additions and 8 deletions

View File

@ -1,8 +1,13 @@
# Auto TTV Grabber # Auto TTV Grabber
<!--toc:start-->
- [Auto TTV Grabber](#auto-ttv-grabber)
- [Getting started](#getting-started)
<!--toc:end-->
## Getting started ## Getting started
This script relies on [dl-stream](https://codeberg.org/bashuser30/dl-stream) being in your systems path. This script relies on [streamlink](https://streamlink.github.io) being in your systems path.
You can find all of its requirements on the their project page. You can find all of its requirements on the their project page.
This script loops through all of the channels in `channel_list.txt` once per minute checking to see if the channel is live via a HTTP request. This script loops through all of the channels in `channel_list.txt` once per minute checking to see if the channel is live via a HTTP request.
Once a channel is live a [dl-stream](https://codeberg.org/bashuser30/dl-stream) subprocess spawns in the background downloading the stream to it's default location (`$HOME/Videos/dl-stream/<channel_name>`) Once a channel is live a [streamlink](https://streamlink.github.io) subprocess spawns in the background downloading the stream to it's default location (`$HOME/Videos/Stream/<channel_name>`)

21
main.py
View File

@ -54,8 +54,19 @@ def write_log(channel):
def download_stream(channel): def download_stream(channel):
"""Downloads a given channel name in its own subprocess""" """Downloads a given channel name in its own subprocess"""
addtional_parms = ""
if skip_ads:
addtional_parms = "--twitch-proxy-playlist=https://lb-eu.cdn-perfprod.com,https://lb-eu2.cdn-perfprod.com,https://lb-na.cdn-perfprod.com,https://lb-as.cdn-perfprod.com,https://as.luminous.dev --twitch-disable-ads"
downloading[channel] = subprocess.Popen( downloading[channel] = subprocess.Popen(
["dl-stream", "-r", channel], [
f"{streamlink_location}",
"--loglevel none",
"--retry-max 10",
addtional_parms,
f"-o {download_location}/{channel}/{datetime.now()}.ts",
f"https://twitch.tv/{channel}",
"best",
],
start_new_session=True, start_new_session=True,
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, stderr=subprocess.STDOUT,
@ -65,10 +76,9 @@ def download_stream(channel):
def check_system(): def check_system():
"""Makes sure everything is place for the script to run""" """Makes sure everything is place for the script to run"""
# TODO: Make it fallback to streamlink if dl-stream not present # Checks if streamlink is in the systems path
# Checks if dl-stream is in the systems path if not shutil.which("streamlink"):
if not shutil.which("dl-stream"): sys.exit("ERROR: streamlink is not found in the systems path!")
sys.exit("ERROR: dl-stream is not found in the systems path!")
# Checks if the channel_list exists and if not makes one # Checks if the channel_list exists and if not makes one
if not os.path.exists("channel_list.txt"): if not os.path.exists("channel_list.txt"):
@ -110,6 +120,7 @@ def main():
print("\n------------------------------------") print("\n------------------------------------")
for channel in channel_list: for channel in channel_list:
channel = channel.strip() channel = channel.strip()
# TODO: Have steamlink itself check if the channel is live
contents = requests.get("https://www.twitch.tv/" + channel).content.decode( contents = requests.get("https://www.twitch.tv/" + channel).content.decode(
"utf-8" "utf-8"
) )