Skip to content

Commit a90d961

Browse files
committed
2.0最终版本,改进了影片和电视剧meta数据的的刮削
1 parent 47d7202 commit a90d961

11 files changed

Lines changed: 643 additions & 33 deletions

LibVideo/Data/DatabaseManager.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,23 @@ public void RemoveDirectoryItems(string directoryPath)
6060
}
6161
}
6262
}
63+
64+
public void UpdateItemMetadata(VideoItem memItem)
65+
{
66+
using (var db = new LiteDatabase(dbPath))
67+
{
68+
var col = db.GetCollection<VideoItem>("videos");
69+
var dbItem = col.FindOne(x => x.FullName == memItem.FullName);
70+
if (dbItem != null)
71+
{
72+
dbItem.MetaTitle = memItem.MetaTitle;
73+
dbItem.MetaPlot = memItem.MetaPlot;
74+
dbItem.MetaGenre = memItem.MetaGenre;
75+
dbItem.MetaPosterPath = memItem.MetaPosterPath;
76+
dbItem.HasScraped = memItem.HasScraped;
77+
col.Update(dbItem);
78+
}
79+
}
80+
}
6381
}
6482
}

LibVideo/LibVideo2.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@
125125
<SubType>Code</SubType>
126126
</Compile>
127127
<Compile Include="Models\VideoItem.cs" />
128+
<Compile Include="Models\MetadataService.cs" />
128129
<Compile Include="ViewModels\MainViewModel.cs" />
129130
<Compile Include="Data\DatabaseManager.cs" />
130131
</ItemGroup>

LibVideo/MainWindow.xaml

Lines changed: 77 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<RowDefinition Height="Auto" />
2929
<RowDefinition Height="*" />
3030
<RowDefinition Height="Auto" />
31+
<RowDefinition Height="Auto" />
3132
</Grid.RowDefinitions>
3233

3334
<!-- Top Header -->
@@ -51,13 +52,18 @@
5152
</Button>
5253
</StackPanel>
5354

54-
<Button Grid.Column="1" x:Name="btnSettings" Style="{StaticResource MaterialDesignFloatingActionMiniButton}" Click="btnSettings_Click" Height="40" Width="40" ToolTip="管理视频目录" VerticalAlignment="Center">
55-
<materialDesign:PackIcon Kind="Settings" Height="24" Width="24" />
56-
</Button>
55+
<StackPanel Orientation="Horizontal" Grid.Column="1" VerticalAlignment="Center">
56+
<Button Style="{StaticResource MaterialDesignFloatingActionMiniButton}" Command="{Binding RefreshCacheCommand}" Height="40" Width="40" ToolTip="清空海报与简介缓存库 (重置识别)" Margin="0,0,10,0" Background="{DynamicResource PrimaryHueDarkBrush}" BorderBrush="Transparent">
57+
<materialDesign:PackIcon Kind="DatabaseRefresh" Height="24" Width="24" Foreground="White" />
58+
</Button>
59+
<Button x:Name="btnSettings" Style="{StaticResource MaterialDesignFloatingActionMiniButton}" Click="btnSettings_Click" Height="40" Width="40" ToolTip="管理视频目录">
60+
<materialDesign:PackIcon Kind="Settings" Height="24" Width="24" />
61+
</Button>
62+
</StackPanel>
5763
</Grid>
5864

5965
<!-- Main DataGrid -->
60-
<DataGrid Grid.Row="1" x:Name="outputGrid" Style="{StaticResource MaterialDesignDataGrid}" ItemsSource="{Binding VideoItems}" Margin="16,0,16,0" AutoGenerateColumns="False" SelectionMode="Single" SelectionUnit="FullRow" IsReadOnly="true" VirtualizingPanel.IsVirtualizing="True">
66+
<DataGrid Grid.Row="1" x:Name="outputGrid" SelectedItem="{Binding SelectedVideo}" Style="{StaticResource MaterialDesignDataGrid}" ItemsSource="{Binding VideoItems}" Margin="16,0,16,16" AutoGenerateColumns="False" SelectionMode="Single" SelectionUnit="FullRow" IsReadOnly="true" VirtualizingPanel.IsVirtualizing="True">
6167
<DataGrid.CellStyle>
6268
<Style TargetType="DataGridCell" BasedOn="{StaticResource MaterialDesignDataGridCell}">
6369
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
@@ -70,8 +76,31 @@
7076
</Style>
7177
</DataGrid.RowStyle>
7278
<DataGrid.Columns>
79+
<DataGridTemplateColumn Width="85">
80+
<DataGridTemplateColumn.CellTemplate>
81+
<DataTemplate>
82+
<StackPanel Orientation="Horizontal" Visibility="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}, Converter={StaticResource BooleanToVisibilityConverter}}">
83+
<Button Style="{StaticResource MaterialDesignIconButton}"
84+
Command="{Binding DataContext.OpenMediaCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}"
85+
CommandParameter="{Binding}"
86+
Width="30" Height="30" Padding="0" Margin="0,0,5,0"
87+
Foreground="{DynamicResource PrimaryHueMidBrush}"
88+
ToolTip="播放该视频">
89+
<materialDesign:PackIcon Kind="Play" Width="20" Height="20" />
90+
</Button>
91+
<Button Style="{StaticResource MaterialDesignIconButton}"
92+
Command="{Binding DataContext.OpenContainingFolderCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}"
93+
CommandParameter="{Binding}"
94+
Width="30" Height="30" Padding="0" Margin="0"
95+
Foreground="{DynamicResource SecondaryHueMidBrush}"
96+
ToolTip="打开所在文件夹">
97+
<materialDesign:PackIcon Kind="FolderOpen" Width="20" Height="20" />
98+
</Button>
99+
</StackPanel>
100+
</DataTemplate>
101+
</DataGridTemplateColumn.CellTemplate>
102+
</DataGridTemplateColumn>
73103
<DataGridTextColumn Header="编号" Binding="{Binding Id}" />
74-
<DataGridTextColumn Header="录入日期" Binding="{Binding CreationTime, StringFormat=\{0:yyyy-MM-dd HH:mm\}}" />
75104
<DataGridTextColumn Header="路径" Binding="{Binding FolderName}" Width="*" />
76105
<DataGridTextColumn Header="文件名" Binding="{Binding FileName}" Width="*" />
77106
</DataGrid.Columns>
@@ -84,8 +113,49 @@
84113
</DataGrid.ContextMenu>
85114
</DataGrid>
86115

116+
<!-- Metadata Bottom Panel (Cinematic Glassmorphism) -->
117+
<Border Grid.Row="2" Margin="16,0,16,10" CornerRadius="8" ClipToBounds="True" Height="200" Visibility="{Binding IsMetadataVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
118+
<Grid>
119+
<!-- 1. Thematic Background (Heavily Blurred Poster) -->
120+
<Image Source="{Binding CurrentMetadata.PosterPath}" Stretch="UniformToFill" Margin="-30" RenderOptions.BitmapScalingMode="LowQuality">
121+
<Image.Effect>
122+
<BlurEffect Radius="60" KernelType="Gaussian" />
123+
</Image.Effect>
124+
</Image>
125+
126+
<!-- 2. Dark Legibility Gradient Tint -->
127+
<Border>
128+
<Border.Background>
129+
<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
130+
<GradientStop Color="#E6000000" Offset="0" />
131+
<GradientStop Color="#C0000000" Offset="0.8" />
132+
<GradientStop Color="#99000000" Offset="1" />
133+
</LinearGradientBrush>
134+
</Border.Background>
135+
</Border>
136+
137+
<!-- 3. Crisp Foreground Content -->
138+
<Grid Margin="16">
139+
<Grid.ColumnDefinitions>
140+
<ColumnDefinition Width="115" />
141+
<ColumnDefinition Width="*" />
142+
</Grid.ColumnDefinitions>
143+
144+
<Border Grid.Column="0" CornerRadius="4" ClipToBounds="True">
145+
<Image Source="{Binding CurrentMetadata.PosterPath}" Stretch="UniformToFill" />
146+
</Border>
147+
148+
<StackPanel Grid.Column="1" VerticalAlignment="Center" Margin="20,0,10,0">
149+
<TextBlock Text="{Binding CurrentMetadata.Title}" FontSize="26" FontWeight="Bold" Foreground="White" Margin="0,0,0,6" TextWrapping="Wrap" />
150+
<TextBlock Text="{Binding CurrentMetadata.Genre}" FontSize="13" Foreground="#B3FFFFFF" Margin="0,0,0,10" />
151+
<TextBlock Text="{Binding CurrentMetadata.Plot}" FontSize="14" Foreground="#E6FFFFFF" TextWrapping="Wrap" TextTrimming="CharacterEllipsis" MaxHeight="85" LineHeight="20" />
152+
</StackPanel>
153+
</Grid>
154+
</Grid>
155+
</Border>
156+
87157
<!-- Status Bar -->
88-
<StatusBar Grid.Row="2" Margin="0,5,0,0">
158+
<StatusBar Grid.Row="3" Margin="0,5,0,0">
89159
<StatusBarItem>
90160
<TextBlock x:Name="totalItemsText" Text="{Binding TotalItemsText}"/>
91161
</StatusBarItem>
@@ -95,7 +165,7 @@
95165
</StatusBar>
96166

97167
<!-- Loading Overlay -->
98-
<Grid Grid.RowSpan="3" x:Name="LoadingOverlay" Background="#99000000" Panel.ZIndex="100" Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityConverter}}">
168+
<Grid Grid.RowSpan="4" x:Name="LoadingOverlay" Background="#99000000" Panel.ZIndex="100" Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityConverter}}">
99169
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
100170
<ProgressBar Style="{StaticResource MaterialDesignCircularProgressBar}" Value="0" IsIndeterminate="True" Width="50" Height="50" Margin="0,0,0,16" Foreground="White" />
101171
<TextBlock Text="正在加载文件,请稍候..." Foreground="White" FontSize="20"/>

0 commit comments

Comments
 (0)