diff options
| author | 1hitsong <3330318+1hitsong@users.noreply.github.com> | 2022-09-17 17:37:38 -0400 |
|---|---|---|
| committer | 1hitsong <3330318+1hitsong@users.noreply.github.com> | 2022-09-17 17:37:38 -0400 |
| commit | c65819221d9a84ec0ae69a243fdcb17bce7aa65f (patch) | |
| tree | 5980490c8c2be7c5ac5f7d7f3ab0e681245ddcf2 /MediaBrowser.Providers | |
| parent | 29932466a9e75f9cf54332be9bb9d39dce238d07 (diff) | |
Code cleanups. Remove pragma commands
Diffstat (limited to 'MediaBrowser.Providers')
| -rw-r--r-- | MediaBrowser.Providers/Lyric/LrcLyricProvider.cs | 152 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Lyric/LyricManager.cs | 72 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Lyric/TxtLyricProvider.cs | 86 | ||||
| -rw-r--r-- | MediaBrowser.Providers/MediaBrowser.Providers.csproj | 1 |
4 files changed, 143 insertions, 168 deletions
diff --git a/MediaBrowser.Providers/Lyric/LrcLyricProvider.cs b/MediaBrowser.Providers/Lyric/LrcLyricProvider.cs index 59a172cee2..9bacfc2964 100644 --- a/MediaBrowser.Providers/Lyric/LrcLyricProvider.cs +++ b/MediaBrowser.Providers/Lyric/LrcLyricProvider.cs @@ -1,112 +1,102 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Dynamic; using System.Globalization; using System.Linq; using LrcParser.Model; using LrcParser.Parser; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Lyrics; -using Swashbuckle.AspNetCore.SwaggerGen; -namespace MediaBrowser.Providers.Lyric +namespace MediaBrowser.Providers.Lyric; + +/// <summary> +/// LRC Lyric Provider. +/// </summary> +public class LrcLyricProvider : ILyricProvider { - /// <summary> - /// LRC Lyric Provider. - /// </summary> - public class LrcLyricProvider : ILyricProvider - { - /// <summary> - /// Initializes a new instance of the <see cref="LrcLyricProvider"/> class. - /// </summary> - public LrcLyricProvider() - { - Name = "LrcLyricProvider"; + /// <inheritdoc /> + public string Name { get; } = "LrcLyricProvider"; - SupportedMediaTypes = new Collection<string> + /// <inheritdoc /> + public IEnumerable<string> SupportedMediaTypes + { + get => new Collection<string> { "lrc" }; - } + } - /// <summary> - /// Gets a value indicating the provider name. - /// </summary> - public string Name { get; } - - /// <summary> - /// Gets a value indicating the File Extenstions this provider supports. - /// </summary> - public IEnumerable<string> SupportedMediaTypes { get; } - - /// <summary> - /// Opens lyric file for the requested item, and processes it for API return. - /// </summary> - /// <param name="item">The item to to process.</param> - /// <returns>If provider can determine lyrics, returns a <see cref="LyricResponse"/> with or without metadata; otherwise, null.</returns> - public LyricResponse? GetLyrics(BaseItem item) - { - string? lyricFilePath = LyricInfo.GetLyricFilePath(this, item.Path); + /// <summary> + /// Opens lyric file for the requested item, and processes it for API return. + /// </summary> + /// <param name="item">The item to to process.</param> + /// <returns>If provider can determine lyrics, returns a <see cref="LyricResponse"/> with or without metadata; otherwise, null.</returns> + public LyricResponse? GetLyrics(BaseItem item) + { + string? lyricFilePath = LyricInfo.GetLyricFilePath(this, item.Path); - if (string.IsNullOrEmpty(lyricFilePath)) - { - return null; - } + if (string.IsNullOrEmpty(lyricFilePath)) + { + return null; + } - List<Controller.Lyrics.Lyric> lyricList = new List<Controller.Lyrics.Lyric>(); - List<LrcParser.Model.Lyric> sortedLyricData = new List<LrcParser.Model.Lyric>(); + List<Controller.Lyrics.Lyric> lyricList = new List<Controller.Lyrics.Lyric>(); + List<LrcParser.Model.Lyric> sortedLyricData = new List<LrcParser.Model.Lyric>(); - IDictionary<string, string> metaData = new Dictionary<string, string>(); - string lrcFileContent = System.IO.File.ReadAllText(lyricFilePath); + IDictionary<string, string> metaData = new Dictionary<string, string>(); + string lrcFileContent = System.IO.File.ReadAllText(lyricFilePath); - try + try + { + // Parse and sort lyric rows + LyricParser lrcLyricParser = new LrcParser.Parser.Lrc.LrcParser(); + Song lyricData = lrcLyricParser.Decode(lrcFileContent); + sortedLyricData = lyricData.Lyrics.Where(x => x.TimeTags.Count > 0).OrderBy(x => x.TimeTags.First().Value).ToList(); + + // Parse metadata rows + var metaDataRows = lyricData.Lyrics + .Where(x => x.TimeTags.Count == 0) + .Where(x => x.Text.StartsWith('[') && x.Text.EndsWith(']')) + .Select(x => x.Text) + .ToList(); + + foreach (string metaDataRow in metaDataRows) { - // Parse and sort lyric rows - LyricParser lrcLyricParser = new LrcParser.Parser.Lrc.LrcParser(); - Song lyricData = lrcLyricParser.Decode(lrcFileContent); - sortedLyricData = lyricData.Lyrics.Where(x => x.TimeTags.Count > 0).OrderBy(x => x.TimeTags.ToArray()[0].Value).ToList(); - - // Parse metadata rows - var metaDataRows = lyricData.Lyrics - .Where(x => x.TimeTags.Count == 0) - .Where(x => x.Text.StartsWith("[", StringComparison.Ordinal) && x.Text.EndsWith("]", StringComparison.Ordinal)) - .Select(x => x.Text) - .ToList(); - - foreach (string metaDataRow in metaDataRows) + var metaDataField = metaDataRow.Split(':'); + if (metaDataField.Length != 2) { - var metaDataField = metaDataRow.Split(":"); - - string metaDataFieldName = metaDataField[0].Replace("[", string.Empty, StringComparison.Ordinal).Trim(); - string metaDataFieldValue = metaDataField[1].Replace("]", string.Empty, StringComparison.Ordinal).Trim(); - - metaData.Add(metaDataFieldName, metaDataFieldValue); + continue; } - } - catch - { - return null; - } - if (!sortedLyricData.Any()) - { - return null; - } + string metaDataFieldName = metaDataField[0][1..].Trim(); + string metaDataFieldValue = metaDataField[1][..^1].Trim(); - for (int i = 0; i < sortedLyricData.Count; i++) - { - var timeData = sortedLyricData[i].TimeTags.ToArray()[0].Value; - long ticks = Convert.ToInt64(timeData, new NumberFormatInfo()) * 10000; - lyricList.Add(new Controller.Lyrics.Lyric { Start = ticks, Text = sortedLyricData[i].Text }); + metaData.Add(metaDataFieldName, metaDataFieldValue); } + } + catch + { + return null; + } - if (metaData.Any()) - { - return new LyricResponse { Metadata = metaData, Lyrics = lyricList }; - } + if (sortedLyricData.Count == 0) + { + return null; + } - return new LyricResponse { Lyrics = lyricList }; + for (int i = 0; i < sortedLyricData.Count; i++) + { + var timeData = sortedLyricData[i].TimeTags.ToArray()[0].Value; + long ticks = TimeSpan.FromMilliseconds((double)timeData).Ticks; + lyricList.Add(new Controller.Lyrics.Lyric(sortedLyricData[i].Text, ticks)); } + + if (metaData.Any()) + { + return new LyricResponse { Metadata = metaData, Lyrics = lyricList }; + } + + return new LyricResponse { Lyrics = lyricList }; } } diff --git a/MediaBrowser.Providers/Lyric/LyricManager.cs b/MediaBrowser.Providers/Lyric/LyricManager.cs index f5560b0542..06f913d079 100644 --- a/MediaBrowser.Providers/Lyric/LyricManager.cs +++ b/MediaBrowser.Providers/Lyric/LyricManager.cs @@ -1,55 +1,57 @@ -#nullable disable - -#pragma warning disable CS1591 - using System.Collections.Generic; using System.Linq; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Lyrics; -namespace MediaBrowser.Providers.Lyric +namespace MediaBrowser.Providers.Lyric; + +/// <summary> +/// Lyric Manager. +/// </summary> +public class LyricManager : ILyricManager { - public class LyricManager : ILyricManager - { - private readonly ILyricProvider[] _lyricProviders; + private readonly ILyricProvider[] _lyricProviders; - public LyricManager(IEnumerable<ILyricProvider> lyricProviders) - { - _lyricProviders = lyricProviders.ToArray(); - } + /// <summary> + /// Initializes a new instance of the <see cref="LyricManager"/> class. + /// </summary> + /// <param name="lyricProviders">All found lyricProviders.</param> + public LyricManager(IEnumerable<ILyricProvider> lyricProviders) + { + _lyricProviders = lyricProviders.ToArray(); + } - /// <inheritdoc /> - public LyricResponse GetLyrics(BaseItem item) + /// <inheritdoc /> + public LyricResponse GetLyrics(BaseItem item) + { + foreach (ILyricProvider provider in _lyricProviders) { - foreach (ILyricProvider provider in _lyricProviders) + var results = provider.GetLyrics(item); + if (results is not null) { - var results = provider.GetLyrics(item); - if (results is not null) - { - return results; - } + return results; } - - return null; } - /// <inheritdoc /> - public bool HasLyricFile(BaseItem item) + return null; + } + + /// <inheritdoc /> + public bool HasLyricFile(BaseItem item) + { + foreach (ILyricProvider provider in _lyricProviders) { - foreach (ILyricProvider provider in _lyricProviders) + if (item is null) { - if (item is null) - { - continue; - } - - if (LyricInfo.GetLyricFilePath(provider, item.Path) is not null) - { - return true; - } + continue; } - return false; + if (LyricInfo.GetLyricFilePath(provider, item.Path) is not null) + { + return true; + } } + + return false; } } diff --git a/MediaBrowser.Providers/Lyric/TxtLyricProvider.cs b/MediaBrowser.Providers/Lyric/TxtLyricProvider.cs index 8a51d7277c..d417c85981 100644 --- a/MediaBrowser.Providers/Lyric/TxtLyricProvider.cs +++ b/MediaBrowser.Providers/Lyric/TxtLyricProvider.cs @@ -5,69 +5,53 @@ using System.Linq; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Lyrics; -namespace MediaBrowser.Providers.Lyric +namespace MediaBrowser.Providers.Lyric; + +/// <summary> +/// TXT Lyric Provider. +/// </summary> +public class TxtLyricProvider : ILyricProvider { - /// <summary> - /// TXT Lyric Provider. - /// </summary> - public class TxtLyricProvider : ILyricProvider - { - /// <summary> - /// Initializes a new instance of the <see cref="TxtLyricProvider"/> class. - /// </summary> - public TxtLyricProvider() - { - Name = "TxtLyricProvider"; + /// <inheritdoc /> + public string Name { get; } = "TxtLyricProvider"; - SupportedMediaTypes = new Collection<string> + /// <inheritdoc /> + public IEnumerable<string> SupportedMediaTypes + { + get => new Collection<string> { "lrc", "txt" }; - } - - /// <summary> - /// Gets a value indicating the provider name. - /// </summary> - public string Name { get; } + } - /// <summary> - /// Gets a value indicating the File Extenstions this provider supports. - /// </summary> - public IEnumerable<string> SupportedMediaTypes { get; } + /// <summary> + /// Opens lyric file for the requested item, and processes it for API return. + /// </summary> + /// <param name="item">The item to to process.</param> + /// <returns>If provider can determine lyrics, returns a <see cref="LyricResponse"/>; otherwise, null.</returns> + public LyricResponse? GetLyrics(BaseItem item) + { + string? lyricFilePath = LyricInfo.GetLyricFilePath(this, item.Path); - /// <summary> - /// Opens lyric file for the requested item, and processes it for API return. - /// </summary> - /// <param name="item">The item to to process.</param> - /// <returns>If provider can determine lyrics, returns a <see cref="LyricResponse"/>; otherwise, null.</returns> - public LyricResponse? GetLyrics(BaseItem item) + if (string.IsNullOrEmpty(lyricFilePath)) { - string? lyricFilePath = LyricInfo.GetLyricFilePath(this, item.Path); - - if (string.IsNullOrEmpty(lyricFilePath)) - { - return null; - } - - List<Controller.Lyrics.Lyric> lyricList = new List<Controller.Lyrics.Lyric>(); - - string lyricData = System.IO.File.ReadAllText(lyricFilePath); + return null; + } - // Splitting on Environment.NewLine caused some new lines to be missed in Windows. - char[] newLineDelims = new[] { '\r', '\n' }; - string[] lyricTextLines = lyricData.Split(newLineDelims, StringSplitOptions.RemoveEmptyEntries); + string[] lyricTextLines = System.IO.File.ReadAllLines(lyricFilePath); - if (!lyricTextLines.Any()) - { - return null; - } + List<Controller.Lyrics.Lyric> lyricList = new List<Controller.Lyrics.Lyric>(); - foreach (string lyricTextLine in lyricTextLines) - { - lyricList.Add(new Controller.Lyrics.Lyric { Text = lyricTextLine }); - } + if (lyricTextLines.Length == 0) + { + return null; + } - return new LyricResponse { Lyrics = lyricList }; + foreach (string lyricTextLine in lyricTextLines) + { + lyricList.Add(new Controller.Lyrics.Lyric(lyricTextLine)); } + + return new LyricResponse { Lyrics = lyricList }; } } diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 8514489f8a..e12776ba05 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -6,7 +6,6 @@ </PropertyGroup> <ItemGroup> - <ProjectReference Include="..\Jellyfin.Api\Jellyfin.Api.csproj" /> <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj" /> <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" /> <ProjectReference Include="..\DvdLib\DvdLib.csproj" /> |
