# pylint: disable = missing-class-docstring # pylint: disable = missing-function-docstring """ 全動画の情報を取得し,JSON 形式で出力する. """ from __future__ import annotations import json import os from datetime import date, datetime from typing import TypedDict from eloquent import DatabaseManager, Model from db.models import Video def main ( ) -> None: config: dict[str, DbConfig] = { 'mysql': { 'driver': 'mysql', 'host': 'localhost', 'database': 'nizika_nico', 'user': os.environ['MYSQL_USER'], 'password': os.environ['MYSQL_PASS'], 'prefix': '' } } db = DatabaseManager (config) Model.set_connection_resolver (db) videos: list[VideoDict] = [] for row in Video.all (): deleted_at = row.deleted_at.date () if row.deleted_at else None video: VideoDict = { 'id': row.id, 'code': row.code, 'title': row.title, 'description': row.description, 'tags': [], 'uploaded_at': row.uploaded_at, 'deleted_at': deleted_at } for video_tag in row.video_tags: if video_tag.untagged_at is None: video['tags'].append (video_tag.tag.name) videos.append(video) print (json.dumps (videos, default = str)) class DbConfig (TypedDict): driver: str host: str database: str user: str password: str prefix: str class VideoDict (TypedDict): id: int code: str title: str description: str tags: list[str] uploaded_at: datetime deleted_at: date | None if __name__ == '__main__': main ()