diff --git a/client/src/pages/admin.tsx b/client/src/pages/admin.tsx
index 1fccb7e..6b29d59 100644
--- a/client/src/pages/admin.tsx
+++ b/client/src/pages/admin.tsx
@@ -214,6 +214,10 @@ function EditVideoDialog({
title: video.title,
artist: video.artist || "",
description: video.description,
+ filename: video.filename || "",
+ episodeNumber: video.episodeNumber || "",
+ episodeTitle: video.episodeTitle || "",
+ tags: video.tags || [],
contentType: video.contentType,
genre: video.genre,
customThumbnailUrl: video.customThumbnailUrl || "",
@@ -225,6 +229,10 @@ function EditVideoDialog({
title: video.title,
artist: video.artist || "",
description: video.description,
+ filename: video.filename || "",
+ episodeNumber: video.episodeNumber || "",
+ episodeTitle: video.episodeTitle || "",
+ tags: video.tags || [],
contentType: video.contentType,
genre: video.genre,
customThumbnailUrl: video.customThumbnailUrl || "",
@@ -353,6 +361,51 @@ function EditVideoDialog({
/>
+
+
+ setFormData({ ...formData, filename: e.target.value })}
+ className="bg-white/10 border-white/20 text-white"
+ placeholder="Original filename..."
+ />
+
+
+
+
+ setFormData({ ...formData, episodeNumber: e.target.value })}
+ className="bg-white/10 border-white/20 text-white"
+ placeholder="e.g., 15"
+ />
+
+
+
+
+ setFormData({ ...formData, episodeTitle: e.target.value })}
+ className="bg-white/10 border-white/20 text-white"
+ placeholder="e.g., Folx Stadl Special"
+ />
+
+
+
+
+ {
+ const tagString = e.target.value;
+ const tagsArray = tagString.split(',').map(tag => tag.trim()).filter(tag => tag.length > 0);
+ setFormData({ ...formData, tags: tagsArray });
+ }}
+ className="bg-white/10 border-white/20 text-white mb-4"
+ placeholder="Enter tags separated by commas (e.g., volksmusik, austria, live)"
+ />
+
+
diff --git a/server/storage.ts b/server/storage.ts
index 7b0fba4..5ad0339 100644
--- a/server/storage.ts
+++ b/server/storage.ts
@@ -436,6 +436,9 @@ export class MemStorage implements IStorage {
description: video.description || "",
category: video.category || "",
artist: null, // Add artist field
+ filename: null, // Original filename
+ episodeNumber: null, // Episode number for shows
+ episodeTitle: null, // Episode title for shows
customThumbnailUrl: null,
faceCenterPosition: null,
facesDetected: 0,
@@ -493,6 +496,9 @@ export class MemStorage implements IStorage {
description: video.description || "",
category: video.category || "",
artist: video.artist || null, // Add artist field
+ filename: video.filename || null,
+ episodeNumber: video.episodeNumber || null,
+ episodeTitle: video.episodeTitle || null,
customThumbnailUrl: null,
faceCenterPosition: null,
facesDetected: 0,
diff --git a/shared/schema.ts b/shared/schema.ts
index 394650a..33193a2 100644
--- a/shared/schema.ts
+++ b/shared/schema.ts
@@ -12,6 +12,9 @@ export const videos = pgTable("videos", {
title: text("title").notNull(),
artist: text("artist"), // Izvajalec/Artist name
description: text("description").default("").notNull(),
+ filename: text("filename"), // Original file name from Bunny.net
+ episodeNumber: integer("episode_number"), // For shows like "Folx Stadl"
+ episodeTitle: text("episode_title"), // Episode title for shows
thumbnailUrl: text("thumbnail_url").notNull(),
customThumbnailUrl: text("custom_thumbnail_url"),
faceCenterPosition: text("face_center_position"), // CSS object-position for face centering