Reoo88 commited on
Commit
ca2843b
·
1 Parent(s): 0ab7aa3

Guest: never publish twice when host is already relayed; log guest transitions once

Browse files
Files changed (1) hide show
  1. app.py +19 -2
app.py CHANGED
@@ -470,6 +470,17 @@ def _guest_source(user, own):
470
  nick=str((own or {}).get('nickname') or hobs.get('nickname') or user)
471
  return {**hobs,'nickname':nick}, host
472
 
 
 
 
 
 
 
 
 
 
 
 
473
  def _oauth_automation_on():
474
  try:return bool(youtube.journal.read().get('enabled'))
475
  except Exception:return False
@@ -848,13 +859,19 @@ def _check_account(user):
848
  if top:log(user,'[SOURCE] @%s selected %s'%(user,brief))
849
  if prev_room and prev_room!=obs.get('room_id') and relaying:
850
  log(user,'[MONITOR] @%s session/room changed; source will be refreshed'%user)
 
 
 
 
 
 
 
851
  if relaying:
852
  with _direct_guard:cur_src=(_direct_handles.get(user) or {}).get('src','')
853
  if cur_src!=src_host:
854
  _stop_direct(user, 'guest source switch')
855
  log(user,'[GUEST] @%s source switch: %s'%(user, ('guest on @%s'%src_host) if src_host else 'own room'))
856
- if src_host:
857
- log(user,'[GUEST] @%s is a guest on @%s; relaying host stream'%(user,src_host))
858
  _set_state(user,'LIVE','LIVE' if not src_host else 'LIVE · ضيف عند @%s'%src_host,**extra)
859
  _maybe_start_direct(user, obs, src_host)
860
  if _oauth_automation_on() and not hub.busy(user) and (obs.get('sources') or []):
 
470
  nick=str((own or {}).get('nickname') or hobs.get('nickname') or user)
471
  return {**hobs,'nickname':nick}, host
472
 
473
+ _guest_logged={}
474
+
475
+ def _guest_note(user, host):
476
+ """Log guest transitions only (the monitor runs every cycle)."""
477
+ if host:
478
+ if _guest_logged.get(user)!=host:
479
+ _guest_logged[user]=host
480
+ log(user,'[GUEST] @%s is a guest on @%s'%(user,host))
481
+ else:
482
+ _guest_logged.pop(user,None)
483
+
484
  def _oauth_automation_on():
485
  try:return bool(youtube.journal.read().get('enabled'))
486
  except Exception:return False
 
859
  if top:log(user,'[SOURCE] @%s selected %s'%(user,brief))
860
  if prev_room and prev_room!=obs.get('room_id') and relaying:
861
  log(user,'[MONITOR] @%s session/room changed; source will be refreshed'%user)
862
+ if src_host and hub.busy(src_host):
863
+ # Host is already published by this project on the single RTMPS key: never publish twice.
864
+ if relaying:
865
+ _stop_direct(user, 'guest on @%s (host already relayed)'%src_host)
866
+ _guest_note(user, src_host)
867
+ _set_state(user,'LIVE','LIVE · ضيف عند @%s (البث عبر @%s)'%(src_host,src_host),**extra)
868
+ return
869
  if relaying:
870
  with _direct_guard:cur_src=(_direct_handles.get(user) or {}).get('src','')
871
  if cur_src!=src_host:
872
  _stop_direct(user, 'guest source switch')
873
  log(user,'[GUEST] @%s source switch: %s'%(user, ('guest on @%s'%src_host) if src_host else 'own room'))
874
+ _guest_note(user, src_host)
 
875
  _set_state(user,'LIVE','LIVE' if not src_host else 'LIVE · ضيف عند @%s'%src_host,**extra)
876
  _maybe_start_direct(user, obs, src_host)
877
  if _oauth_automation_on() and not hub.busy(user) and (obs.get('sources') or []):