From edd07137f73453581ea5217d6e6fb1eb7e5d3470 Mon Sep 17 00:00:00 2001 From: Aevann Date: Mon, 2 Oct 2023 07:21:04 +0300 Subject: [PATCH] add end_utc to file orgies --- files/assets/js/orgy_file.js | 4 ++++ files/classes/orgy.py | 11 +++++++++-- files/helpers/cron.py | 16 ++++++---------- files/routes/admin.py | 3 ++- .../20231002-add-end-utc-to-scheduled-orgies.sql | 1 + 5 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 migrations/20231002-add-end-utc-to-scheduled-orgies.sql diff --git a/files/assets/js/orgy_file.js b/files/assets/js/orgy_file.js index acf6d57d5..3119e5586 100644 --- a/files/assets/js/orgy_file.js +++ b/files/assets/js/orgy_file.js @@ -38,3 +38,7 @@ orgy_file.addEventListener("timeupdate", function(){ }, 300000); } }); + +orgy_file.addEventListener("ended", function(){ + location.reload() +}); diff --git a/files/classes/orgy.py b/files/classes/orgy.py index efcfc238a..e41260c25 100644 --- a/files/classes/orgy.py +++ b/files/classes/orgy.py @@ -1,7 +1,7 @@ import time from flask import g, abort -from sqlalchemy import Column +from sqlalchemy import Column, or_ from sqlalchemy.sql.sqltypes import * from files.classes import Base @@ -15,6 +15,7 @@ class Orgy(Base): data = Column(String) title = Column(String) created_utc = Column(Integer) + end_utc = Column(Integer) def __init__(self, *args, **kwargs): if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) @@ -33,4 +34,10 @@ class Orgy(Base): def get_orgy(v): if not (v and v.allowed_in_chat): return None - return g.db.query(Orgy).one_or_none() + t = int(time.time()) + return g.db.query(Orgy).filter( + or_( + Orgy.end_utc == None, + Orgy.end_utc > t, + ) + ).one_or_none() diff --git a/files/helpers/cron.py b/files/helpers/cron.py index 9bb364739..811df7e55 100644 --- a/files/helpers/cron.py +++ b/files/helpers/cron.py @@ -185,10 +185,15 @@ def _create_post(title, body, pin_hours): cache.delete_memoized(frontlist) def _create_and_delete_orgy(): + video_info = ffmpeg.probe(f'/orgies/{get_file()}') + seconds = int(video_info['streams'][0]['duration']) + end_utc = int(time.time() + seconds) + orgy = Orgy( title=get_name(), type='file', - data=f'https://videos.watchpeopledie.tv/orgies/{get_file()}' + data=f'https://videos.watchpeopledie.tv/orgies/{get_file()}', + end_utc = end_utc, ) g.db.add(orgy) g.db.commit() @@ -198,15 +203,6 @@ def _create_and_delete_orgy(): requests.post('http://localhost:5001/refresh_chat', headers={"Host": SITE}) - video_info = ffmpeg.probe(f'/orgies/{get_file()}') - seconds = int(video_info['streams'][0]['duration']) - time.sleep(seconds) - - orgy = g.db.query(Orgy).one_or_none() - if orgy: - g.db.delete(orgy) - g.db.commit() - requests.post('http://localhost:5001/refresh_chat', headers={"Host": SITE}) def _delete_all_posts(): posts = g.db.query(Post).filter_by(author_id=AUTOJANNY_ID, deleted_utc=0).all() diff --git a/files/routes/admin.py b/files/routes/admin.py index 634412efb..33e1ce046 100644 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -1941,7 +1941,8 @@ def admin_reset_password(user_id, v): @app.get("/admin/orgy") @admin_level_required(PERMS['ORGIES']) def orgy_control(v): - return render_template("admin/orgy_control.html", v=v, orgy=get_orgy(v)) + orgy = g.db.query(Orgy).one_or_none() + return render_template("admin/orgy_control.html", v=v, orgy=orgy) @app.post("/admin/start_orgy") @admin_level_required(PERMS['ORGIES']) diff --git a/migrations/20231002-add-end-utc-to-scheduled-orgies.sql b/migrations/20231002-add-end-utc-to-scheduled-orgies.sql new file mode 100644 index 000000000..ee7076b08 --- /dev/null +++ b/migrations/20231002-add-end-utc-to-scheduled-orgies.sql @@ -0,0 +1 @@ +alter table orgies add column end_utc int;