Skip to content
This repository was archived by the owner on Sep 25, 2023. It is now read-only.

Commit cc01c76

Browse files
Add warnings to support bundle
1 parent f4e84d4 commit cc01c76

File tree

6 files changed

+110
-2
lines changed

6 files changed

+110
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
namespace ConfusedPolarBear.Plugin.IntroSkipper.Tests;
2+
3+
using Xunit;
4+
5+
public class TestFlags
6+
{
7+
[Fact]
8+
public void TestEmptyFlagSerialization()
9+
{
10+
WarningManager.Clear();
11+
Assert.Equal("None", WarningManager.GetWarnings());
12+
}
13+
14+
[Fact]
15+
public void TestSingleFlagSerialization()
16+
{
17+
WarningManager.Clear();
18+
WarningManager.SetFlag(PluginWarning.UnableToAddSkipButton);
19+
Assert.Equal("UnableToAddSkipButton", WarningManager.GetWarnings());
20+
}
21+
22+
[Fact]
23+
public void TestDoubleFlagSerialization()
24+
{
25+
WarningManager.Clear();
26+
WarningManager.SetFlag(PluginWarning.UnableToAddSkipButton);
27+
WarningManager.SetFlag(PluginWarning.InvalidChromaprintFingerprint);
28+
WarningManager.SetFlag(PluginWarning.InvalidChromaprintFingerprint);
29+
30+
Assert.Equal(
31+
"UnableToAddSkipButton, InvalidChromaprintFingerprint",
32+
WarningManager.GetWarnings());
33+
}
34+
}

ConfusedPolarBear.Plugin.IntroSkipper/Analyzers/Chromaprint.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ public ReadOnlyCollection<QueuedEpisode> AnalyzeMediaFiles(
7878
}
7979
catch (FingerprintException ex)
8080
{
81-
_logger.LogWarning("Caught fingerprint error: {Ex}", ex);
81+
_logger.LogDebug("Caught fingerprint error: {Ex}", ex);
82+
WarningManager.SetFlag(PluginWarning.InvalidChromaprintFingerprint);
8283

8384
// Fallback to an empty fingerprint on any error
8485
fingerprintCache[episode.EpisodeId] = Array.Empty<uint>();

ConfusedPolarBear.Plugin.IntroSkipper/Controllers/TroubleshootingController.cs

+4
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ public ActionResult<string> GetSupportBundle()
5858
bundle.Append(" seasons");
5959
bundle.Append('\n');
6060

61+
bundle.Append("* Warnings: `");
62+
bundle.Append(WarningManager.GetWarnings());
63+
bundle.Append("`\n");
64+
6165
bundle.Append(FFmpegWrapper.GetChromaprintLogs());
6266

6367
return bundle.ToString();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
namespace ConfusedPolarBear.Plugin.IntroSkipper;
2+
3+
using System;
4+
5+
/// <summary>
6+
/// Support bundle warning.
7+
/// </summary>
8+
[Flags]
9+
public enum PluginWarning
10+
{
11+
/// <summary>
12+
/// No warnings have been added.
13+
/// </summary>
14+
None = 0,
15+
16+
/// <summary>
17+
/// Attempted to add skip button to web interface, but was unable to.
18+
/// </summary>
19+
UnableToAddSkipButton = 1,
20+
21+
/// <summary>
22+
/// At least one media file on the server was unable to be fingerprinted by Chromaprint.
23+
/// </summary>
24+
InvalidChromaprintFingerprint = 2,
25+
26+
/// <summary>
27+
/// The version of ffmpeg installed on the system is not compatible with the plugin.
28+
/// </summary>
29+
IncompatibleFFmpegBuild = 4,
30+
}
31+
32+
/// <summary>
33+
/// Warning manager.
34+
/// </summary>
35+
public static class WarningManager
36+
{
37+
private static PluginWarning warnings;
38+
39+
/// <summary>
40+
/// Set warning.
41+
/// </summary>
42+
/// <param name="warning">Warning.</param>
43+
public static void SetFlag(PluginWarning warning)
44+
{
45+
warnings |= warning;
46+
}
47+
48+
/// <summary>
49+
/// Clear warnings.
50+
/// </summary>
51+
public static void Clear()
52+
{
53+
warnings = PluginWarning.None;
54+
}
55+
56+
/// <summary>
57+
/// Get warnings.
58+
/// </summary>
59+
/// <returns>Warnings.</returns>
60+
public static string GetWarnings()
61+
{
62+
return warnings.ToString();
63+
}
64+
}

ConfusedPolarBear.Plugin.IntroSkipper/FFmpegWrapper.cs

+5
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public static bool CheckFFmpegVersion()
5151
"Unknown error with FFmpeg version"))
5252
{
5353
ChromaprintLogs["error"] = "unknown_error";
54+
WarningManager.SetFlag(PluginWarning.IncompatibleFFmpegBuild);
5455
return false;
5556
}
5657

@@ -62,6 +63,7 @@ public static bool CheckFFmpegVersion()
6263
"The installed version of ffmpeg does not support chromaprint"))
6364
{
6465
ChromaprintLogs["error"] = "chromaprint_not_supported";
66+
WarningManager.SetFlag(PluginWarning.IncompatibleFFmpegBuild);
6567
return false;
6668
}
6769

@@ -73,6 +75,7 @@ public static bool CheckFFmpegVersion()
7375
"The installed version of ffmpeg does not support raw binary fingerprints"))
7476
{
7577
ChromaprintLogs["error"] = "fp_format_not_supported";
78+
WarningManager.SetFlag(PluginWarning.IncompatibleFFmpegBuild);
7679
return false;
7780
}
7881

@@ -84,6 +87,7 @@ public static bool CheckFFmpegVersion()
8487
"The installed version of ffmpeg does not support the silencedetect filter"))
8588
{
8689
ChromaprintLogs["error"] = "silencedetect_not_supported";
90+
WarningManager.SetFlag(PluginWarning.IncompatibleFFmpegBuild);
8791
return false;
8892
}
8993

@@ -94,6 +98,7 @@ public static bool CheckFFmpegVersion()
9498
catch
9599
{
96100
ChromaprintLogs["error"] = "unknown_error";
101+
WarningManager.SetFlag(PluginWarning.IncompatibleFFmpegBuild);
97102
return false;
98103
}
99104
}

ConfusedPolarBear.Plugin.IntroSkipper/Plugin.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public Plugin(
8080
}
8181
catch (Exception ex)
8282
{
83-
// WarningManager.SetFlag(PluginWarning.UnableToAddSkipButton);
83+
WarningManager.SetFlag(PluginWarning.UnableToAddSkipButton);
8484

8585
if (ex is UnauthorizedAccessException)
8686
{

0 commit comments

Comments
 (0)