#!/usr/bin/env python3 import subprocess import time import requests import os import sys import shutil from datetime import datetime channel_list = [] downloading = [] def download_stream(channel): downloading.append(channel) # TODO: Output dl-stream to a log file subprocess.Popen( ["dl-stream", "-r", channel], start_new_session=True, stdout=subprocess.DEVNULL ) # Checks if dl-stream is in the systems path if not shutil.which("dl-stream"): sys.exit("ERROR: dl-stream is not found in the systems path!") # Checks if the channel_list exists and if not makes one if os.path.exists("channel_list.txt"): # Grab all the channels from channel_list.txt and put them in a list with open("channel_list.txt", "r") as file: # channel_list = file.readlines() channel_list = [ line for line in file if line.strip() ] # Removes all white spaces per line else: print("ERROR:'channel_list.txt' does not exist, creating now!") with open("channel_list.txt", "w") as file: pass # Writes Nothing sys.exit("Please populate the channel_list.txt with one channel per line!") # Run untill progam is killed while True: # Exits the program if there is no channels to Grab if not channel_list: sys.exit("Please populate the channel_list.txt with one channel per line!") print("\n------------------------------------") for channel in channel_list: channel = channel.strip() contents = requests.get("https://www.twitch.tv/" + channel).content.decode( "utf-8" ) if "isLiveBroadcast" in contents: print("\033[1m" + channel + "\033[0m is \033[32mlive\033[0m!") if channel not in downloading: download_stream(channel) else: print(channel + " is already downloading") else: print(channel + " is \033[31mnot live\033[0m.") if channel in downloading: downloading.remove(channel) print(channel + " is no longer downloading") print("\n\033[3mLast checked: " + datetime.now().strftime("%H:%M:%S") + "\033[0m") print("------------------------------------") time.sleep(60) # Wait 60 Seconds before trying again