Add the streamers priority system, fix #10
This commit is contained in:
3
main.py
3
main.py
@@ -26,7 +26,8 @@ def main():
|
||||
def read_streamer_logins():
|
||||
user_input = []
|
||||
if len(sys.argv) <= 1: # no command-line args (the first is always source file name)
|
||||
twitch_streamers = input("Enter the streamer name (or several separated by commas): ")
|
||||
print("Enter the streamer name (or several separated by commas). More important streamers go first.")
|
||||
twitch_streamers = input("Streamer names: ")
|
||||
user_input = twitch_streamers.split(",")
|
||||
else:
|
||||
for i in range(1, len(sys.argv)):
|
||||
|
||||
@@ -7,9 +7,9 @@ from exceptions import StreamerIsOfflineException, StreamerDoesNotExistException
|
||||
TWITCH_CLIENT_ID = "kimne78kx3ncx6brgo4mv6wki5h1ko"
|
||||
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
|
||||
|
||||
streamer_logins = []
|
||||
_is_online = {} # streamer login -> are they online
|
||||
last_offline_time = {} # the time when a streamer went offline
|
||||
streamer_logins = [] # the list is sorted by priorities: more important streamers go first
|
||||
online_streamers = [] # ditto
|
||||
last_offline_time = {} # the time when each streamer went offline (if they did)
|
||||
|
||||
|
||||
# specify the streamers we'll be watching
|
||||
@@ -17,7 +17,6 @@ def set_streamer_logins(streamer_logins_):
|
||||
global streamer_logins
|
||||
streamer_logins = streamer_logins_
|
||||
for streamer_login in streamer_logins:
|
||||
_is_online[streamer_login] = False
|
||||
check_online(streamer_login, print_offline_message=True)
|
||||
|
||||
|
||||
@@ -39,28 +38,30 @@ def check_online(streamer_login, print_offline_message=False):
|
||||
return
|
||||
|
||||
if not is_online(streamer_login):
|
||||
_is_online[streamer_login] = True
|
||||
# maintain the priorities of streamers
|
||||
online_streamers.append(streamer_login)
|
||||
online_streamers.sort(key=lambda streamer: streamer_logins.index(streamer))
|
||||
|
||||
try:
|
||||
from watch_minute import update_minute_watched_event_request # circular dependencies
|
||||
update_minute_watched_event_request(streamer_login)
|
||||
except StreamerIsOfflineException:
|
||||
if print_offline_message:
|
||||
set_offline(streamer_login)
|
||||
else:
|
||||
_is_online[streamer_login] = False
|
||||
set_offline(streamer_login, print_offline_message)
|
||||
else:
|
||||
print(f"{streamer_login} is live!")
|
||||
|
||||
|
||||
def set_offline(streamer_login):
|
||||
def set_offline(streamer_login, print_offline_message=True):
|
||||
if is_online(streamer_login):
|
||||
_is_online[streamer_login] = False
|
||||
online_streamers.remove(streamer_login)
|
||||
last_offline_time[streamer_login] = time.time()
|
||||
print(f"{streamer_login} is offline currently.")
|
||||
|
||||
if print_offline_message:
|
||||
print(f"{streamer_login} is offline currently.")
|
||||
|
||||
|
||||
def is_online(streamer_login):
|
||||
return _is_online[streamer_login]
|
||||
return streamer_login in online_streamers
|
||||
|
||||
|
||||
def get_user_id():
|
||||
|
||||
@@ -24,11 +24,13 @@ minute_watched_requests = {}
|
||||
|
||||
def send_minute_watched_events():
|
||||
headers = {"user-agent": USER_AGENT}
|
||||
streamers = get_streamer_logins()
|
||||
minutes_passed = 0
|
||||
while True:
|
||||
for streamer_login in streamers:
|
||||
next_iteration = time.time() + 60 / len(streamers)
|
||||
# Twitch has a limit - you can't watch more than 2 channels at one time.
|
||||
# We take the first two streamers from the list as they have the highest priority.
|
||||
streamers_watching = online_streamers[:2]
|
||||
for streamer_login in streamers_watching:
|
||||
next_iteration = time.time() + 60 / len(streamers_watching)
|
||||
if is_online(streamer_login):
|
||||
request_info = minute_watched_requests[streamer_login]
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user