fix chat width; fix placement of dates in chat; italicise chat dates in text browsers; show uptime properly in text browsers; show settings in comment box when reloaded if user decides against kicking themselves out of the secret club; always give 403 response when secret club is active to hide if stream is live

このコミットが含まれているのは:
n9k 2021-07-18 02:21:38 +00:00
コミット c123b74b1b
2個のファイルの変更15行の追加14行の削除

ファイルの表示

@ -66,8 +66,6 @@ def broadcaster():
@current_app.route('/stream.m3u8')
def playlist():
if not stream.is_online():
return abort(404)
token = get_token()
viewership.made_request(token)
if not viewership.is_allowed(token):
@ -76,6 +74,8 @@ def playlist():
viewership.video_was_corrupted.remove(token)
except KeyError:
pass
if not stream.is_online():
return abort(404)
try:
token_playlist = stream.token_playlist(token)
@ -88,8 +88,6 @@ def playlist():
@current_app.route(f'/{SEGMENT_INIT}')
def segment_init():
if not stream.is_online():
return abort(404)
token = get_token() or new_token()
viewership.made_request(token)
if not viewership.is_allowed(token):
@ -98,6 +96,8 @@ def segment_init():
viewership.video_was_corrupted.remove(token)
except KeyError:
pass
if not stream.is_online():
return abort(404)
response = send_from_directory(SEGMENTS_DIR, f'init.mp4', add_etags=False)
response.headers['Cache-Control'] = 'no-cache'
@ -106,8 +106,6 @@ def segment_init():
@current_app.route('/stream<int:n>.m4s')
def segment_arbitrary(n):
if not stream.is_online():
return abort(404)
token = get_token()
if not viewership.is_allowed(token):
return abort(403)
@ -115,6 +113,8 @@ def segment_arbitrary(n):
viewership.video_was_corrupted.remove(token)
except KeyError:
pass
if not stream.is_online():
return abort(404)
# only send segments that are listed in stream.m3u8
# this stops old segments from previous streams being sent
@ -127,8 +127,6 @@ def segment_arbitrary(n):
@current_app.route('/stream.mp4')
def segments():
if not stream.is_online():
return abort(404)
token = get_token() or new_token()
viewership.made_request(token)
if not viewership.is_allowed(token):
@ -137,6 +135,8 @@ def segments():
viewership.video_was_corrupted.remove(token)
except KeyError:
pass
if not stream.is_online():
return abort(404)
def should_close_connection():
if not stream.is_online():
@ -299,6 +299,7 @@ def settings():
return redirect(url_for('index'))
viewers[token]['nickname'] = old_nickname
viewers[token]['tripcode'] = old_tripcode
viewership.preset_comment_iframe[token] = {'note': N_NONE, 'show_settings': True}
return render_template('comment-confirm-iframe.html', token=token, nickname=old_nickname or viewership.default_nickname(token))
viewership.preset_comment_iframe[token] = {'note': note, 'show_settings': True}

ファイルの表示

@ -11,7 +11,7 @@
.rotate {transform: rotate(-180deg);}
.reverse {direction: rtl;}
.comment {color:white;padding:3px 2px;overflow:hidden;display:inline-block;width:calc(100vw - 2em);}
.comment {color:white;padding:3px 2px;overflow:hidden;display:inline-block;width:calc(100vw - 1.25em);}
.comment:hover{background-color:#333;border-radius:4px;}
.date {color:gray;font-size:75%;text-align:center;border-bottom:1px solid #333;margin:0.5em 0 0.75em 0;cursor:default;}
@ -102,7 +102,7 @@
<div class="textonly">
<br>
<div><b>{{ stream_title }}</b></div>
<div>{{ stream_viewers }} viewer(s), {% if uptime %}{{ stream_uptime }} uptime{% else %}offline{% endif %}</div>
<div>{{ stream_viewers }} viewer(s), {% if stream_uptime %}{{ stream_uptime }} uptime{% else %}offline{% endif %}</div>
<br>
<div>== Chat ==</div>
</div>
@ -119,10 +119,10 @@
<table border="1" frame="void" rules="rows" style="border-collapse:separate;border-spacing:0 2px;">
<tbody>
{% for message in messages %}
<tr>
{% if message.get('special') == 'date' %}
<div class="date rotate">{{ message['content'] }}</div>
{% else %}
<tr>
<td class="date rotate"><i style="font-style:normal;">{{ message['content'] }}</i></td>
{% else %}
<td class="comment rotate">
{% if not message['hidden'] %}
{% if broadcaster %}
@ -139,8 +139,8 @@
><span class="barrier"></span><br class="textonly"><span class="message">{{ message['text'] }}</span>
{% endif %}
</td>
</tr>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>