ADD input structure for metadata

This commit is contained in:
2025-07-08 18:11:41 +02:00
parent 2958dd8cd7
commit 6d4146ed85
5 changed files with 48 additions and 43 deletions

View File

@@ -1,37 +0,0 @@
import clsx from "clsx";
import type {VideoMetadata} from "../../utils/types.ts";
type ClipNamesProps = {
setMetadata: Function
className?: string;
}
const ClipNames = ({setMetadata, className}: ClipNamesProps) => {
return (
<div className={clsx("flex flex-col gap-2 p-10", className)}>
<label>Title: </label>
<input
type="text"
placeholder="Enter title"
onChange={(e) => setMetadata((prevState: VideoMetadata) => ({
...prevState,
title: e.target.value
}))}
className={"border-black bg-gray-200 rounded-md w-full p-2"}
/>
<label>Description: </label>
<input
type="text"
placeholder="Enter description"
onChange={(e) => setMetadata((prevState: VideoMetadata) => ({
...prevState,
description: e.target.value
}))}
className={"border-black bg-gray-200 rounded-md w-full p-2"}
/>
</div>
)
}
export default ClipNames;

View File

@@ -7,7 +7,7 @@ type prop = {
className?: string;
}
export default function ClipConfig({setMetadata, className}: prop) {
export default function ConfigBox({setMetadata, className}: prop) {
const updateRes = (e: React.ChangeEvent<HTMLSelectElement>) => {
var vals = e.target.value.split(",");
setMetadata((prevState: VideoMetadata) => ({

View File

@@ -0,0 +1,41 @@
import clsx from "clsx";
import type {VideoMetadata} from "../../utils/types.ts";
import Selector from "../Selector.tsx";
type MetadataBoxProps = {
setMetadata: Function
className?: string;
}
const MetadataBox = ({setMetadata, className}: MetadataBoxProps) => {
return (
<div className={clsx("flex flex-col content-between p-10 gap-2", className)}>
<h2 className={"text-3xl font-bold mb-4 col-span-2"}>Metadata Settings</h2>
<Selector label={"Title"}>
<input
type="text"
placeholder="Enter title"
onChange={(e) => setMetadata((prevState: VideoMetadata) => ({
...prevState,
title: e.target.value
}))}
className={"border-black bg-gray-200 rounded-md w-full p-2"}
/>
</Selector>
<Selector label={"Description"}>
<textarea
placeholder="Enter description"
onChange={(e) => setMetadata((prevState: VideoMetadata) => ({
...prevState,
description: e.target.value
}))}
className={"border-black bg-gray-200 rounded-md w-full p-2 pb-10 resize-none max-h"}
/>
</Selector>
</div>
)
}
export default MetadataBox;

View File

@@ -3,12 +3,12 @@ import { useEffect, useRef, useState } from "react";
import Playbar from "./../components/video/Playbar";
import PlaybackSlider from "./../components/video/PlaybackSlider";
import ClipRangeSlider from "./../components/video/ClipRangeSlider";
import ClipConfig from "./../components/video/ClipConfig";
import ConfigBox from "../components/video/ConfigBox.tsx";
import ExportWidget from "../components/video/ExportWidget.tsx";
import {editFile, getMetadata, processFile, getProgress} from "../utils/endpoints"
import type { VideoMetadata } from "../utils/types.ts";
import Box from "../components/Box.tsx";
import ClipNames from "../components/video/ClipNames.tsx";
import MetadataBox from "../components/video/MetadataBox.tsx";
const ClipEdit = () => {
const { id } = useParams();
@@ -101,10 +101,10 @@ const ClipEdit = () => {
<Box className={"w-4/5 h-full m-auto"}>
<ClipNames
<MetadataBox
setMetadata={setOutputMetadata}
/>
<ClipConfig
<ConfigBox
setMetadata={setOutputMetadata}
/>
</Box>

View File

@@ -30,6 +30,7 @@ public class DirectoryService {
private String tempOutputsDir;
private static final long TEMP_DIR_TIMELIMIT = 3 * 60 * 60 * (long) 1000; // 3 hours
private static final long TEMP_DIR_CLEANUP_RATE = 30 * 60 * (long) 1000; // 30 minutes
public File getTempInputFile(String id, String extension) {
String dir = tempInputsDir + File.separator + id + (extension.isEmpty() ? "" : "." + extension);
@@ -111,7 +112,7 @@ public class DirectoryService {
createDirectory(outputDir);
}
@Scheduled(fixedRate = (30 * 60 * 1000))
@Scheduled(fixedRate = TEMP_DIR_CLEANUP_RATE)
public void cleanTempDirectories() throws IOException {
cleanUpDirectory(tempInputsDir);
cleanUpDirectory(tempOutputsDir);