Add read-only NAS and WebDAV photo sources with random scheduling
This commit is contained in:
@@ -12,9 +12,11 @@ from pigway_frame_flow.models import (
|
||||
DisplayRequest,
|
||||
FutureContent,
|
||||
ImageContent,
|
||||
PhotoSourceContent,
|
||||
TemplateContent,
|
||||
URLContent,
|
||||
)
|
||||
from pigway_frame_flow.providers.photo_sources import PhotoSources
|
||||
from pigway_frame_flow.renderers.images import convert
|
||||
from pigway_frame_flow.storage.database import encode, now_iso
|
||||
|
||||
@@ -23,6 +25,7 @@ class DisplayService:
|
||||
"""One persistent queue; injected driver registry. No vendor imports."""
|
||||
|
||||
def __init__(self, db, settings, registry: DriverRegistry, assets, renderer):
|
||||
self.photo_sources = PhotoSources(db, settings, assets)
|
||||
self.db, self.settings, self.registry, self.assets, self.renderer = (
|
||||
db,
|
||||
settings,
|
||||
@@ -49,6 +52,8 @@ class DisplayService:
|
||||
)
|
||||
if isinstance(request.content, TemplateContent):
|
||||
self.renderer.info(request.content.template)
|
||||
if isinstance(request.content, PhotoSourceContent):
|
||||
self.photo_sources.get(request.content.source_id)
|
||||
if writing and not self.settings.mock and not self.settings.write_enabled:
|
||||
raise FlowError(E.WRITE_DISABLED, "Real device writes are disabled", 403)
|
||||
|
||||
@@ -167,6 +172,9 @@ class DisplayService:
|
||||
(asset["asset_id"], encode(source)),
|
||||
)
|
||||
return asset
|
||||
if isinstance(content, PhotoSourceContent):
|
||||
data, name = self.photo_sources.read(content.source_id, content.item_id)
|
||||
return self.assets.put(convert(data, content.fit, content.profile), name)
|
||||
if isinstance(content, URLContent):
|
||||
data = self.assets.fetch_url(content.url)
|
||||
elif isinstance(content, ImageContent) and content.asset_id:
|
||||
|
||||
Reference in New Issue
Block a user