Implement metadata management features in PLib video library manager. Introduce functionality to query and apply metadata from external sources based on video fingerprints. Update ILibraryService and LibraryService to support metadata lookup and application, enhancing video item descriptions and labels. Revise UI components in VideoPlayerView and SettingsView to facilitate user interaction with metadata sources. Update README.md to document new metadata features and usage instructions.
This commit is contained in:
+165
@@ -0,0 +1,165 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using PLib.Infrastructure.Persistence;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace PLib.Infrastructure.Persistence.Migrations
|
||||
{
|
||||
[DbContext(typeof(LibraryDbContext))]
|
||||
[Migration("20260809051032_SceneMetadata")]
|
||||
partial class SceneMetadata
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder.HasAnnotation("ProductVersion", "10.0.10");
|
||||
|
||||
modelBuilder.Entity("LibraryLabelVideoItem", b =>
|
||||
{
|
||||
b.Property<Guid>("LabelsId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<Guid>("VideosId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("LabelsId", "VideosId");
|
||||
|
||||
b.HasIndex("VideosId");
|
||||
|
||||
b.ToTable("VideoLabels", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PLib.Domain.Videos.LibraryLabel", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<long>("CreatedAt")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Kind")
|
||||
.IsRequired()
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("NormalizedName")
|
||||
.IsRequired()
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("Kind", "NormalizedName")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("Labels", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PLib.Domain.Videos.VideoItem", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<long>("AddedAt")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Description")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<TimeSpan?>("Duration")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<long>("FileModifiedAt")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("FullPath")
|
||||
.IsRequired()
|
||||
.HasMaxLength(1024)
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("Height")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<long?>("LastPlayedAt")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<long?>("PerceptualHash")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("PlayCount")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("PreviewFrameCount")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("PreviewPath")
|
||||
.HasMaxLength(1024)
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<TimeSpan?>("ResumePosition")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<long>("SizeInBytes")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("ThumbnailPath")
|
||||
.HasMaxLength(1024)
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.IsRequired()
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("VideoCodec")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("Width")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("AddedAt");
|
||||
|
||||
b.HasIndex("FullPath")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("LastPlayedAt");
|
||||
|
||||
b.HasIndex("PerceptualHash");
|
||||
|
||||
b.ToTable("Videos", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryLabelVideoItem", b =>
|
||||
{
|
||||
b.HasOne("PLib.Domain.Videos.LibraryLabel", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LabelsId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("PLib.Domain.Videos.VideoItem", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("VideosId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user