mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-01-14 19:58:00 -05:00
120 lines
4.7 KiB
Python
120 lines
4.7 KiB
Python
from typing import Optional
|
|
|
|
from fastapi import Body, HTTPException, Path, Query
|
|
from fastapi.routing import APIRouter
|
|
|
|
from invokeai.app.services.shared.pagination import OffsetPaginatedResults
|
|
from invokeai.app.services.shared.sqlite.sqlite_common import SQLiteDirection
|
|
from invokeai.app.services.videos_common import (
|
|
DeleteVideosResult,
|
|
StarredVideosResult,
|
|
UnstarredVideosResult,
|
|
VideoDTO,
|
|
VideoIdsResult,
|
|
VideoRecordChanges,
|
|
)
|
|
|
|
videos_router = APIRouter(prefix="/v1/videos", tags=["videos"])
|
|
|
|
|
|
@videos_router.patch(
|
|
"/i/{video_id}",
|
|
operation_id="update_video",
|
|
response_model=VideoDTO,
|
|
)
|
|
async def update_video(
|
|
video_id: str = Path(description="The id of the video to update"),
|
|
video_changes: VideoRecordChanges = Body(description="The changes to apply to the video"),
|
|
) -> VideoDTO:
|
|
"""Updates a video"""
|
|
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|
|
|
|
|
|
@videos_router.get(
|
|
"/i/{video_id}",
|
|
operation_id="get_video_dto",
|
|
response_model=VideoDTO,
|
|
)
|
|
async def get_video_dto(
|
|
video_id: str = Path(description="The id of the video to get"),
|
|
) -> VideoDTO:
|
|
"""Gets a video's DTO"""
|
|
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|
|
|
|
|
|
@videos_router.post("/delete", operation_id="delete_videos_from_list", response_model=DeleteVideosResult)
|
|
async def delete_videos_from_list(
|
|
video_ids: list[str] = Body(description="The list of ids of videos to delete", embed=True),
|
|
) -> DeleteVideosResult:
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|
|
|
|
|
|
@videos_router.post("/star", operation_id="star_videos_in_list", response_model=StarredVideosResult)
|
|
async def star_videos_in_list(
|
|
video_ids: list[str] = Body(description="The list of ids of videos to star", embed=True),
|
|
) -> StarredVideosResult:
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|
|
|
|
|
|
@videos_router.post("/unstar", operation_id="unstar_videos_in_list", response_model=UnstarredVideosResult)
|
|
async def unstar_videos_in_list(
|
|
video_ids: list[str] = Body(description="The list of ids of videos to unstar", embed=True),
|
|
) -> UnstarredVideosResult:
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|
|
|
|
|
|
@videos_router.delete("/uncategorized", operation_id="delete_uncategorized_videos", response_model=DeleteVideosResult)
|
|
async def delete_uncategorized_videos() -> DeleteVideosResult:
|
|
"""Deletes all videos that are uncategorized"""
|
|
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|
|
|
|
|
|
@videos_router.get("/", operation_id="list_video_dtos", response_model=OffsetPaginatedResults[VideoDTO])
|
|
async def list_video_dtos(
|
|
is_intermediate: Optional[bool] = Query(default=None, description="Whether to list intermediate videos."),
|
|
board_id: Optional[str] = Query(
|
|
default=None,
|
|
description="The board id to filter by. Use 'none' to find videos without a board.",
|
|
),
|
|
offset: int = Query(default=0, description="The page offset"),
|
|
limit: int = Query(default=10, description="The number of videos per page"),
|
|
order_dir: SQLiteDirection = Query(default=SQLiteDirection.Descending, description="The order of sort"),
|
|
starred_first: bool = Query(default=True, description="Whether to sort by starred videos first"),
|
|
search_term: Optional[str] = Query(default=None, description="The term to search for"),
|
|
) -> OffsetPaginatedResults[VideoDTO]:
|
|
"""Lists video DTOs"""
|
|
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|
|
|
|
|
|
@videos_router.get("/ids", operation_id="get_video_ids")
|
|
async def get_video_ids(
|
|
is_intermediate: Optional[bool] = Query(default=None, description="Whether to list intermediate videos."),
|
|
board_id: Optional[str] = Query(
|
|
default=None,
|
|
description="The board id to filter by. Use 'none' to find videos without a board.",
|
|
),
|
|
order_dir: SQLiteDirection = Query(default=SQLiteDirection.Descending, description="The order of sort"),
|
|
starred_first: bool = Query(default=True, description="Whether to sort by starred videos first"),
|
|
search_term: Optional[str] = Query(default=None, description="The term to search for"),
|
|
) -> VideoIdsResult:
|
|
"""Gets ordered list of video ids with metadata for optimistic updates"""
|
|
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|
|
|
|
|
|
@videos_router.post(
|
|
"/videos_by_ids",
|
|
operation_id="get_videos_by_ids",
|
|
responses={200: {"model": list[VideoDTO]}},
|
|
)
|
|
async def get_videos_by_ids(
|
|
video_ids: list[str] = Body(embed=True, description="Object containing list of video ids to fetch DTOs for"),
|
|
) -> list[VideoDTO]:
|
|
"""Gets video DTOs for the specified video ids. Maintains order of input ids."""
|
|
|
|
raise HTTPException(status_code=501, detail="Not implemented")
|