Files

48 lines
1.4 KiB
C#

using Microsoft.AspNetCore.Components.Forms;
using System;
namespace Generic.Media.Components
{
public class MediaItemModel
{
public string Id { get; set; } = Guid.NewGuid().ToString();
public string? Url { get; set; }
public IBrowserFile? File { get; set; }
public MediaType Type { get; set; }
public string? AltText { get; set; }
public int Order { get; set; }
public bool IsLocal { get; set; }
public string? PreviewUrl { get; set; } // Blob URL for local files
}
public enum MediaType
{
Image,
Video,
YouTube,
Vimeo,
Unknown
}
public static class MediaHelper
{
public static MediaType GetType(string url)
{
if (string.IsNullOrWhiteSpace(url)) return MediaType.Image;
url = url.ToLower();
if (url.Contains("youtube.com") || url.Contains("youtu.be")) return MediaType.YouTube;
if (url.Contains("vimeo.com")) return MediaType.Vimeo;
if (url.EndsWith(".mp4") || url.EndsWith(".webm") || url.EndsWith(".ogg")) return MediaType.Video;
return MediaType.Image;
}
public static string GetYouTubeId(string url)
{
if (url.Contains("youtu.be/")) return url.Split("youtu.be/")[1].Split("?")[0];
if (url.Contains("v=")) return url.Split("v=")[1].Split("&")[0];
return "";
}
}
}