diff --git a/main.py b/main.py index b77f93e..eb81a52 100755 --- a/main.py +++ b/main.py @@ -9,17 +9,28 @@ from datetime import datetime import requests channel_list = [] -downloading = [] +downloading = {} + + +def write_log(channel): + with open("log.txt", "a") as log: + line = downloading[channel].stdout.readline() + if line: + log.write(line.decode()) def download_stream(channel): - downloading.append(channel) - with open("log.txt", "w") as log: - subprocess.Popen( - ["dl-stream", "-r", channel], start_new_session=True, stdout=log - ) + downloading[channel] = subprocess.Popen( + ["dl-stream", "-r", channel], + start_new_session=True, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + write_log(channel) +# TODO: Clean things up intp their own method + # 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!") @@ -40,6 +51,8 @@ else: sys.exit("Please populate the channel_list.txt with one channel per line!") # Run untill progam is killed +# TODO: Make it so user can kill gracefully +# TODO: This includes all the subprocess too! while True: # Exits the program if there is no channels to Grab if not channel_list: @@ -56,10 +69,11 @@ while True: download_stream(channel) else: print(channel + " is already downloading") + write_log(channel) else: print("\033[1m" + channel + "\033[0m is \033[31mnot live\033[0m.") if channel in downloading: - downloading.remove(channel) + del downloading[channel] print(channel + " is no longer downloading") time.sleep(1) # Wait one second before going to next channel print("\n\033[3mLast checked: " + datetime.now().strftime("%H:%M:%S") + "\033[0m")