Skip to content

generating songlist / image on cab #1

@komacat

Description

@komacat

Create a python script that runs every hour using cron

python script should

  • generate songlist
  • extract banners

Extract Songlist

songlist should have following format

@dataclass(kw_only=True, frozen=True)
class Chart:
    difficulty: str
    meter: int
    credit: str | None

@dataclass(kw_only=True, frozen=True)
class Song:
    title: str
    artist: str | None
    credit: str | None
    charts: list[Chart]

@dataclass(kw_only=True, frozen=True)
class Pack:
    name: str
    songs: list[Song]

Songlist = list[Pack]

Extract banners

save all banner images in /home/remy/banners
no separation between pack images and song images is needed

generate image file name like

from dataclasses import dataclass
from uuid import uuid5

NAMESPACE_SONG = "772c3614-0fa4-40c7-b654-af81d7a1b197"
NAMESPACE_PACK = "8d7a2f09-452f-4e64-ab80-2320998f4595"

def generate_song_banner_uuid(pack: Pack, song: Song) -> str:
    return str(uuid5(NAMESPACE_SONG, f"{pack.name}/{song.title}"))

def generate_pack_banner_uuid(pack: Pack) -> str:
    return str(uuid5(NAMESPACE_PACK, pack.name))

Python script should return list of image file paths, do not copy files in python

you can just print list of files

Copy over files using bash

copy like cp $(python discover_banners.py) /home/remy/banners/

Convert image format

use mogrify to batch convert images to webp from banners folder to banners-webp folder

create a bash script to run above tasks

#!/bin/bash

cp $(python extract_songs.py) /home/remy/banners
mogrify ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions