Initial commit - Media.RCL
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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 "";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user