Browse Source

trim parsed music video titles (#152)

pull/153/head
Jason Dove 5 years ago committed by GitHub
parent
commit
bfa290790b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      ErsatzTV.Core/Metadata/FallbackMetadataProvider.cs
  2. 1964
      ErsatzTV.Infrastructure/Migrations/20210407212003_Update_MusicVideoMetadata_Title.Designer.cs
  3. 21
      ErsatzTV.Infrastructure/Migrations/20210407212003_Update_MusicVideoMetadata_Title.cs
  4. 20
      ErsatzTV/Shared/FragmentLetterAnchor.razor
  5. 5
      ErsatzTV/Shared/MediaCard.razor

4
ErsatzTV.Core/Metadata/FallbackMetadataProvider.cs

@ -133,8 +133,8 @@ namespace ErsatzTV.Core.Metadata @@ -133,8 +133,8 @@ namespace ErsatzTV.Core.Metadata
Match match = Regex.Match(fileName, PATTERN);
if (match.Success)
{
metadata.Artist = match.Groups[1].Value;
metadata.Title = match.Groups[2].Value;
metadata.Artist = match.Groups[1].Value.Trim();
metadata.Title = match.Groups[2].Value.Trim();
metadata.Genres = new List<Genre>();
metadata.Tags = new List<Tag>();
metadata.Studios = new List<Studio>();

1964
ErsatzTV.Infrastructure/Migrations/20210407212003_Update_MusicVideoMetadata_Title.Designer.cs generated

File diff suppressed because it is too large Load Diff

21
ErsatzTV.Infrastructure/Migrations/20210407212003_Update_MusicVideoMetadata_Title.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace ErsatzTV.Infrastructure.Migrations
{
public partial class Update_MusicVideoMetadata_Title : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(
@"UPDATE MusicVideoMetadata SET DateUpdated = '0001-01-01 00:00:00' WHERE MetadataKind = 0");
migrationBuilder.Sql(
@"UPDATE LibraryPath SET LastScan = '0001-01-01 00:00:00' WHERE LibraryId IN
(SELECT Id FROM Library WHERE MediaKind = 3)");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}

20
ErsatzTV/Shared/FragmentLetterAnchor.razor

@ -4,21 +4,25 @@ @@ -4,21 +4,25 @@
@{ var letters = new System.Collections.Generic.HashSet<char>(); }
@foreach (TCard card in Cards.Filter(c => !string.IsNullOrWhiteSpace(c.Title)).OrderBy(c => c.SortTitle))
{
@if (!letters.Contains(card.SortTitle.Head()))
Option<char> maybeLetter = card.SortTitle.ToLowerInvariant().HeadOrNone();
if (maybeLetter.IsSome)
{
Option<char> maybeLetter = card.SortTitle.ToLowerInvariant().HeadOrNone();
if (maybeLetter.IsSome)
char letter = maybeLetter.ValueUnsafe();
if (char.IsDigit(letter) || !char.IsLetter(letter))
{
letter = '#';
}
if (!letters.Contains(letter))
{
char letter = maybeLetter.ValueUnsafe();
if (letter >= '0' && letter <= '9')
{
letter = '#';
}
letters.Add(letter);
<div id="@($"letter-{letter}")" style="scroll-margin-top: 128px">
@ChildContent(card)
</div>
}
else
{
@ChildContent(card)
}
}
else
{

5
ErsatzTV/Shared/MediaCard.razor

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
@using ErsatzTV.Application.MediaCards
@using Unit = LanguageExt.Unit
@using static LanguageExt.Prelude
@inject IMediator Mediator
<div class="@((ContainerClass ?? "media-card-container mr-6") + " pb-3")" id="@($"item_{Data.MediaItemId}")">
@ -125,8 +126,8 @@ @@ -125,8 +126,8 @@
return Placeholder;
}
string first = sortTitle?.Substring(0, 1).ToUpperInvariant() ?? string.Empty;
return int.TryParse(first, out _) ? "#" : first;
char first = Optional(sortTitle).Map(t => t.ToUpperInvariant().HeadOrNone()).Flatten().Match(head => head, () => ' ');
return char.IsDigit(first) || !char.IsLetter(first) ? "#" : first.ToString();
}
private string ArtworkForItem() => string.IsNullOrWhiteSpace(Data.Poster)

Loading…
Cancel
Save