view video_ingest.py @ 49:1bd17c2e5517 default tip

video.py must sign video urls for serve-files.js to serve them
author drewp@bigasterisk.com
date Fri, 06 Dec 2024 17:13:51 -0800
parents 9e56e86a6814
children
line wrap: on
line source

import asyncio
from dataclasses import dataclass
from typing import Any, Coroutine

import dl_queue
from video_file_store import VideoFileStore


@dataclass
class VideoIngest:
    store: VideoFileStore

    async def addContent(self, name: str, body: Coroutine[Any, Any, bytes]):
        await self.store.save(name, iter([await body]))

    async def ingestUrl(self, url: str, folder:str):
        outDir = self.store.top / folder.lstrip('/') #danger user input
        dl_queue.queue.put({'url': url, 'outDir': str(outDir)})

    async def events(self):
        prev = None
        while True:
            p = dl_queue.pending()
            if p != prev:
                prev = p
                yield p
            await asyncio.sleep(1)