diff --git a/app.py b/app.py index de7674c..7703229 100644 --- a/app.py +++ b/app.py @@ -16,10 +16,11 @@ if config.sentryDSN: integrations=[FlaskIntegration()] ) -CACHE_TYPE = "RedisCache" - if config.production: + CACHE_TYPE = "RedisCache" CACHE_REDIS_URL = "unix:///run/redis-crsearch/redis-server.sock" +else: + CACHE_TYPE = "NullCache" # Create a Flask WSGI app and configure it using values from the module. app = Flask(__name__) diff --git a/data.py b/data.py index 70701a5..da5b33a 100644 --- a/data.py +++ b/data.py @@ -12,7 +12,7 @@ colors = { "Laura": "#28607d", "Orion": "#933326" }, - "campaign2":{ + "campaign2": { "Laura": "#59c3f9", "Marisha": "#00146e", "Liam": "#fe8413", @@ -99,6 +99,21 @@ series_data = [ slug="campaign2", playlist_id="PL1tiwbzkOjQxD0jjAE7PsWoaCrs0EkBH2" ), + SeriesData( + name="Campaign 3", + slug="campaign3", + playlist_id="PL1tiwbzkOjQydg3QOkBLG9OYqWJ0dwlxF" + ), + SeriesData( + name="Exandria Unlimited", + slug="ExandriaUnlimited", + playlist_id="PL1tiwbzkOjQzSnYHVT8X4pyMIbSX3i4gz" + ), + SeriesData( + name="The Nautilus Ark", + slug="TheNautilusArk", + videos=["LaKl58BUASo"] + ), SeriesData( name="Handbooker Helper", slug="HandbookerHelper", @@ -122,11 +137,6 @@ series_data = [ playlist_id="PL1tiwbzkOjQy8yF8esjgVomDXKD-XmG20", initial_speaker="?" ), - SeriesData( - name="Exandria Unlimited", - slug="ExandriaUnlimited", - playlist_id="PL1tiwbzkOjQzSnYHVT8X4pyMIbSX3i4gz" - ), SeriesData( name="Critter Hug", slug="CritterHug", diff --git a/fetch.py b/fetch.py index 5929586..d31502b 100644 --- a/fetch.py +++ b/fetch.py @@ -19,7 +19,7 @@ static_path = Path("static") def main(args: argparse.Namespace) -> None: os.nice(15) - for series in series_data: + for order, series in enumerate(series_data): name = series.name playlist_id = series.playlist_id is_campaign = "Campaign" in name @@ -32,6 +32,7 @@ def main(args: argparse.Namespace) -> None: s.is_campaign = is_campaign s.single_speaker = series.single_speaker s.slug = series.slug + s.order = order s.save() ydl_opts = { 'extract_flat': True @@ -58,7 +59,7 @@ def main(args: argparse.Namespace) -> None: if not file.exists(): r = requests.get(f"https://i.ytimg.com/vi_webp/{url}/maxresdefault.webp") r.raise_for_status() - with file.open("wb")as f: + with file.open("wb") as f: f.write(r.content) changed = False try: diff --git a/models.py b/models.py index 9c625ef..2ec7115 100644 --- a/models.py +++ b/models.py @@ -14,6 +14,7 @@ class BaseModel(flask_db.Model): class Series(BaseModel): title = CharField(max_length=100) slug = CharField(max_length=100) + order = IntegerField() is_campaign = BooleanField() single_speaker = BooleanField() @@ -49,7 +50,7 @@ class Episode(BaseModel): class Person(BaseModel): name = CharField() color = CharField(null=True) - series = ForeignKeyField(Series) + series = ForeignKeyField(Series, on_delete="CASCADE") class Meta: indexes = ((("name", "series"), True),) diff --git a/server.py b/server.py index 6516298..1f5b967 100644 --- a/server.py +++ b/server.py @@ -39,7 +39,7 @@ def search(query: str, until: int, series: str, limit: int = 50) -> ModelSelect: & (Episode.series.slug == series) ).order_by(SQL("rank DESC")) \ - .join(Person,join_type=JOIN.FULL).switch(Line) \ + .join(Person, join_type=JOIN.FULL).switch(Line) \ .join(Episode).join(Series) \ .limit(limit) @@ -158,12 +158,11 @@ def api_expand(): @cache.cached(timeout=60 * 60 * 24) def series(): series_list = [] - - for series in Series.select(): + for series in Series.select().order_by(Series.order): last_episode: Episode = Episode.select().where(Episode.series == series).order_by( Episode.upload_date.desc()).limit( 1).get() - series_data = model_to_dict(series) + series_data = model_to_dict(series, exclude=[Series.order]) series_data["last_upload"] = last_episode.upload_date.strftime("%Y-%m-%d") series_data["length"] = Episode.select().where(Episode.series == series).count() series_list.append(series_data) @@ -175,7 +174,7 @@ def series(): @app.route("/api/episodes") @cache.cached(timeout=60 * 60 * 24) def api_episodes(): - all_series: List[Series] = Series.select().order_by(Series.id) + all_series: List[Series] = Series.select().order_by(Series.order) data = [] for series in all_series: @@ -212,6 +211,7 @@ def api_suggestion(): if __name__ == "__main__": import logging + logger = logging.getLogger('peewee') logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.DEBUG) diff --git a/static/TheNautilusArk.webp b/static/TheNautilusArk.webp new file mode 100644 index 0000000..a3573b6 Binary files /dev/null and b/static/TheNautilusArk.webp differ diff --git a/static/campaign3.webp b/static/campaign3.webp new file mode 100644 index 0000000..741eefa Binary files /dev/null and b/static/campaign3.webp differ diff --git a/suggestions.py b/suggestions.py index e8d9eda..44a4e00 100644 --- a/suggestions.py +++ b/suggestions.py @@ -237,5 +237,9 @@ suggestions = { ], "ClubOfMisfits": [ Suggestion("I'm going to try something weird.") + ], + "TheNautilusArk": [ + Suggestion("Rifle with a PhD"), + Suggestion("It's got a trigger and a little thing") ] }