KRDucky icon

livestreamertwitch

KRDucky | PRO | 05/18/16 04:41:54 AM UTC | 0 ⭐ | 714 👁️ | Never ⏰ | []
Python |

2.79 KB

|

None

|

0 👍

/

0 👎

#This script checks if a user on twitch is currently streaming and then records the stream via livestreamer
 
from urllib.request import urlopen
from urllib.error import URLError
from threading import Timer
import time
import json
import sys
import subprocess
import datetime
 
def check_user(user):
    """ returns 0: online, 1: offline, 2: not found, 3: error """
    global info
    url = 'https://api.twitch.tv/kraken/streams/' + user
    try:
        info = json.loads(urlopen(url, timeout = 15).read().decode('utf-8'))
        if info['stream'] == None:
            status = 1
        else:
            status = 0
    except URLError as e:
        if e.reason == 'Not Found' or e.reason == 'Unprocessable Entity':
            status = 2
        else:
            status = 3
    return status
 
def format_filename(fname):
# Removes invalid characters from filename
    fname = fname.replace("/","")
    fname = fname.replace("?","")
    fname = fname.replace(":","-")
    fname = fname.replace("\\","")
    fname = fname.replace("<","")
    fname = fname.replace(">","")
    fname = fname.replace("*","")
    fname = fname.replace("\"","")
    fname = fname.replace("|","")
    return fname
 
 
def loopcheck():
    while True:
        status = check_user(user)
        if status == 2:
            print("username not found. invalid username?")
        elif status == 3:
            print(datetime.datetime.now().strftime("%Hh%Mm%Ss")," ","unexpected error. will try again in 5 minutes.")
            time.sleep(300)
        elif status == 1:
            print(user,"currently offline, checking again in",refresh,"seconds")
            time.sleep(refresh) # 30 seconds
        elif status == 0:
            print(user,"online. stop.")           
            filename = user+" - "+datetime.datetime.now().strftime("%Y-%m-%d %Hh%Mm%Ss")+" - "+(info['stream']).get("channel").get("status")+".mp4"
            filename = format_filename(filename)
            subprocess.call(["livestreamer","twitch.tv/"+user,quality,"-o",directory+filename])
            print("Stream is done. Going back to checking..")
            time.sleep(15)
 
def main():
    global refresh
    global user
    global quality
    global directory
 
    print("Usage: check.py [refresh] [user] [quality]")
    print("Usage: TwitchChecker.py [refresh] [user] [quality]")
 
    refresh = 30.0 
    user = "escapefromtarkov"
    quality = "best"
    directory = "F:\TwitchStreams\\"
    
    
       
    if(refresh<15):
        print("Check interval should not be lower than 15 seconds")
        refresh=15
        
    print("Checking for",user,"every",refresh,"seconds. Record with",quality,"quality.")
    loopcheck()
    
    
if __name__ == "__main__":
    # execute only if run as a script
    main()

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎