SYMBOL INDEX (253 symbols across 57 files) FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/TestAudioFingerprinting.cs class TestAudioFingerprinting (line 13) | public class TestAudioFingerprinting method TestInstallationCheck (line 15) | [FactSkipFFmpegTests] method TestBitCounting (line 21) | [Theory] method TestFingerprinting (line 34) | [FactSkipFFmpegTests] method TestIndexGeneration (line 70) | [Fact] method TestIntroDetection (line 90) | [FactSkipFFmpegTests] method TestSilenceDetection (line 118) | [FactSkipFFmpegTests] method queueEpisode (line 138) | private QueuedMedia queueEpisode(string path) method CreateChromaprintAnalyzer (line 148) | private ChromaprintAnalyzer CreateChromaprintAnalyzer() class FactSkipFFmpegTests (line 155) | public class FactSkipFFmpegTests : FactAttribute method FactSkipFFmpegTests (line 158) | public FactSkipFFmpegTests() { FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/TestBlackFrames.cs class TestBlackFrames (line 9) | public class TestBlackFrames method TestBlackFrameDetection (line 11) | [FactSkipFFmpegTests] method TestEndCreditDetection (line 31) | [FactSkipFFmpegTests] method queueFile (line 46) | private QueuedMedia queueFile(string path) method CreateFrameSequence (line 56) | private BlackFrame[] CreateFrameSequence(double start, double end) method CreateBlackFrameAnalyzer (line 68) | private BlackFrameAnalyzer CreateBlackFrameAnalyzer() FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/TestChapterAnalyzer.cs class TestChapterAnalyzer (line 11) | public class TestChapterAnalyzer method TestIntroductionExpression (line 13) | [Theory] method TestEndCreditsExpression (line 29) | [Theory] method FindChapter (line 45) | private Segment? FindChapter(Collection chapters, MediaSe... method CreateChapters (line 58) | private Collection CreateChapters(string name, MediaSegme... method CreateChapter (line 76) | private ChapterInfo CreateChapter(string name, int position) FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/TestContiguous.cs class TestTimeRanges (line 5) | public class TestTimeRanges method TestSmallRange (line 7) | [Fact] method TestLargeRange (line 21) | [Fact] method TestFuturama (line 37) | [Fact] method TestTimeRangeIntersection (line 79) | [Theory] FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/TestWarnings.cs class TestFlags (line 5) | public class TestFlags method TestEmptyFlagSerialization (line 7) | [Fact] method TestSingleFlagSerialization (line 14) | [Fact] method TestDoubleFlagSerialization (line 22) | [Fact] FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/selenium/main.py function main (line 9) | def main(): function test_server (line 65) | def test_server(server, executor, driver_type): function login (line 102) | def login(driver, server): function test_skip_button (line 112) | def test_skip_button(driver, server): function make_url (line 171) | def make_url(server, url): function screenshot (line 177) | def screenshot(driver, filename): function assert_video_playing (line 184) | def assert_video_playing(driver): FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/http.go function SendRequest (line 15) | func SendRequest(method, url, apiKey string) []byte { function GetServerInfo (line 54) | func GetServerInfo(hostAddress, apiKey string) structs.PublicInfo { function GetPluginConfiguration (line 67) | func GetPluginConfiguration(hostAddress, apiKey string) structs.PluginCo... FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/main.go function flags (line 8) | func flags() { function main (line 61) | func main() { FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/report_comparison.go function compareReports (line 18) | func compareReports(oldReportPath, newReportPath, destination string) { function unmarshalReport (line 87) | func unmarshalReport(path string) structs.Report { FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/report_comparison_util.go function templateSortShows (line 14) | func templateSortShows(shows map[string]structs.Seasons) []string { function templateSortSeason (line 27) | func templateSortSeason(show structs.Seasons) []int { function templateCompareEpisodes (line 40) | func templateCompareEpisodes(id string, reports structs.TemplateReportDa... FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/report_generator.go function generateReport (line 17) | func generateReport(hostAddress, apiKey, reportDestination string, keepT... function runAnalysisAndWait (line 104) | func runAnalysisAndWait(hostAddress, apiKey string, pollInterval time.Du... FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/schema_validation.go function validateApiSchema (line 13) | func validateApiSchema(hostAddress, apiKey, rawIds string) { function validateV1Intro (line 49) | func validateV1Intro(id string, intro structs.Intro, schema map[string]i... function getTimestampsV1 (line 90) | func getTimestampsV1(hostAddress, apiKey, id, version string) (structs.I... FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/structs/intro.go type Intro (line 3) | type Intro struct FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/structs/plugin_configuration.go type PluginConfiguration (line 8) | type PluginConfiguration struct method AnalysisSettings (line 18) | func (c PluginConfiguration) AnalysisSettings() string { method IntroductionRequirements (line 38) | func (c PluginConfiguration) IntroductionRequirements() string { FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/structs/public_info.go type PublicInfo (line 3) | type PublicInfo struct FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/verifier/structs/report.go type Seasons (line 5) | type Seasons type Report (line 7) | type Report struct type TemplateReportData (line 27) | type TemplateReportData struct type IntroPair (line 36) | type IntroPair struct FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/wrapper/exec.go function RunProgram (line 15) | func RunProgram(program string, args []string, timeout time.Duration) { function redactString (line 61) | func redactString(raw string) string { FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/wrapper/exec_test.go function TestStringRedaction (line 5) | func TestStringRedaction(t *testing.T) { FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/wrapper/main.go function flags (line 28) | func flags() { function main (line 42) | func main() { function login (line 224) | func login(server Server) string { function waitForServerStartup (line 277) | func waitForServerStartup(address string) { function loadConfiguration (line 303) | func loadConfiguration() Configuration { FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/wrapper/setup.go function SetupServer (line 13) | func SetupServer(server, password string) { function sendRequest (line 52) | func sendRequest(url string, method string, body string) { FILE: Jellyfin.Plugin.MediaAnalyzer.Tests/e2e_tests/wrapper/structs.go type Configuration (line 3) | type Configuration struct type Common (line 8) | type Common struct type Server (line 13) | type Server struct FILE: Jellyfin.Plugin.MediaAnalyzer/Analyzers/BlackFrameAnalyzer.cs class BlackFrameAnalyzer (line 16) | public class BlackFrameAnalyzer : IMediaFileAnalyzer method BlackFrameAnalyzer (line 26) | public BlackFrameAnalyzer(ILogger logger) method AnalyzeMediaFilesAsync (line 32) | public async Task<(ReadOnlyCollection NotAnalyzed, ReadOn... method AnalyzeMediaFile (line 90) | public Segment? AnalyzeMediaFile(QueuedMedia episode, MediaSegmentType... FILE: Jellyfin.Plugin.MediaAnalyzer/Analyzers/ChapterAnalyzer.cs class ChapterAnalyzer (line 18) | public class ChapterAnalyzer : IMediaFileAnalyzer method ChapterAnalyzer (line 26) | public ChapterAnalyzer(ILogger logger) method AnalyzeMediaFilesAsync (line 32) | public async Task<(ReadOnlyCollection NotAnalyzed, ReadOn... method FindMatchingChapter (line 97) | public Segment? FindMatchingChapter( FILE: Jellyfin.Plugin.MediaAnalyzer/Analyzers/ChromaprintAnalyzer.cs class ChromaprintAnalyzer (line 16) | public class ChromaprintAnalyzer : IMediaFileAnalyzer method ChromaprintAnalyzer (line 42) | public ChromaprintAnalyzer(ILogger logger) method AnalyzeMediaFilesAsync (line 55) | public async Task<(ReadOnlyCollection NotAnalyzed, ReadOn... method CompareEpisodes (line 231) | public (Segment Lhs, Segment Rhs) CompareEpisodes( method GetLongestTimeRange (line 264) | private (Segment Lhs, Segment Rhs) GetLongestTimeRange( method SearchInvertedIndex (line 300) | private (List Lhs, List Rhs) SearchInvertedIndex( method FindContiguous (line 353) | private (TimeRange Lhs, TimeRange Rhs) FindContiguous( method AdjustIntroEndTimes (line 435) | private Dictionary AdjustIntroEndTimes( method CountBits (line 515) | public int CountBits(uint number) method ValidateTime (line 525) | private bool ValidateTime(Segment seg) FILE: Jellyfin.Plugin.MediaAnalyzer/Analyzers/IMediaFileAnalyzer.cs type IMediaFileAnalyzer (line 12) | public interface IMediaFileAnalyzer method AnalyzeMediaFilesAsync (line 21) | public Task<(ReadOnlyCollection NotAnalyzed, ReadOnlyDict... FILE: Jellyfin.Plugin.MediaAnalyzer/Configuration/PluginConfiguration.cs class PluginConfiguration (line 8) | public class PluginConfiguration : BasePluginConfiguration method PluginConfiguration (line 13) | public PluginConfiguration() FILE: Jellyfin.Plugin.MediaAnalyzer/Configuration/visualizer.js function renderTroubleshooter (line 2) | function renderTroubleshooter() { function refreshBounds (line 8) | function refreshBounds() { function findIntros (line 14) | function findIntros() { function findExactMatches (line 89) | function findExactMatches() { function renderFingerprintData (line 122) | function renderFingerprintData(ctx, fp, xor = false) { function paintFingerprintDiff (line 167) | function paintFingerprintDiff(canvas, fp1, fp2, offset) { FILE: Jellyfin.Plugin.MediaAnalyzer/Controllers/MediaAnalyzerController.cs class MediaAnalyzerController (line 23) | [Authorize(Policy = "RequiresElevation")] method MediaAnalyzerController (line 39) | public MediaAnalyzerController( method GetPluginMetadata (line 53) | [HttpGet] method AnalyzeIds (line 72) | [HttpGet("Analyzers")] method GetMediaFingerprint (line 143) | [HttpGet("Chromaprint/{Id}")] method BuildAnalyzerOutput (line 166) | private static JsonObject BuildAnalyzerOutput(ReadOnlyDictionary HasSegments(Guid itemId, MediaSegmentType type) method CreateMediaSegments (line 47) | public async Task CreateMediaSegments(ReadOnlyDictionary> GetMediaSegmentsByIdAsync... FILE: Jellyfin.Plugin.MediaAnalyzer/Data/QueuedMedia.cs class QueuedMedia (line 8) | public class QueuedMedia method Equals (line 67) | public override bool Equals(object? obj) method GetHashCode (line 73) | public override int GetHashCode() method GetFullName (line 82) | public string GetFullName() method IsEpisode (line 98) | public bool IsEpisode() FILE: Jellyfin.Plugin.MediaAnalyzer/Data/Segment.cs class Segment (line 10) | public class Segment method Segment (line 18) | public Segment(Guid episode, bool isEpisode, TimeRange intro) method Segment (line 31) | public Segment(Guid episode, TimeRange intro) method Segment (line 42) | public Segment(Guid episode) method Segment (line 53) | public Segment(Segment intro) method Segment (line 63) | public Segment() FILE: Jellyfin.Plugin.MediaAnalyzer/Data/TimeRange.cs class TimeRange (line 10) | public class TimeRange : IComparable method TimeRange (line 15) | public TimeRange() method TimeRange (line 26) | public TimeRange(double start, double end) method TimeRange (line 36) | public TimeRange(TimeRange original) method CompareTo (line 62) | public int CompareTo(object? obj) method Intersects (line 77) | public bool Intersects(TimeRange tr) FILE: Jellyfin.Plugin.MediaAnalyzer/Data/TimeRangeHelpers.cs class TimeRangeHelpers (line 11) | public static class TimeRangeHelpers method FindContiguous (line 19) | public static TimeRange? FindContiguous(double[] times, double maximum... FILE: Jellyfin.Plugin.MediaAnalyzer/Data/WarningManager.cs type PluginWarning (line 8) | [Flags] class WarningManager (line 35) | public static class WarningManager method SetFlag (line 43) | public static void SetFlag(PluginWarning warning) method Clear (line 51) | public static void Clear() method GetWarnings (line 60) | public static string GetWarnings() FILE: Jellyfin.Plugin.MediaAnalyzer/Db/MediaAnalyzerDbContext.cs class MediaAnalyzerDbContext (line 9) | public class MediaAnalyzerDbContext : DbContext method MediaAnalyzerDbContext (line 17) | public MediaAnalyzerDbContext(string path) method MediaAnalyzerDbContext (line 26) | public MediaAnalyzerDbContext(DbContextOptions options) : base(options) method OnConfiguring (line 39) | protected override void OnConfiguring(DbContextOptionsBuilder optionsB... method OnModelCreating (line 43) | protected override void OnModelCreating(ModelBuilder modelBuilder) method ApplyMigrations (line 59) | public void ApplyMigrations() FILE: Jellyfin.Plugin.MediaAnalyzer/Db/MediaAnalyzerDbFactory.cs class MediaAnalyzerDbFactory (line 9) | public class MediaAnalyzerDbFactory : IDesignTimeDbContextFactory GetSegment(Guid segmentId) method GetSegments (line 82) | public async Task> GetSegments(Guid itemI... method PreventAnalyze (line 100) | public async Task PreventAnalyze(Guid itemId, MediaSegmentType t... method DeletePreventAnalyzeSegments (line 113) | public async Task DeletePreventAnalyzeSegments(Guid? itemId) method DeleteSegments (line 132) | public async Task DeleteSegments(Guid itemId, MediaSegmentType? type) method CreateOrUpdate (line 151) | private async Task CreateOrUpdate(MediaAnalyzerDbContext db, SegmentMe... method GetPluginDb (line 175) | public MediaAnalyzerDbContext GetPluginDb() FILE: Jellyfin.Plugin.MediaAnalyzer/Entrypoint/LibraryChangedEntrypoint.cs class LibraryChangedEntrypoint (line 18) | public sealed class LibraryChangedEntrypoint : IHostedService, IDisposable method LibraryChangedEntrypoint (line 34) | public LibraryChangedEntrypoint( method StartAsync (line 53) | public Task StartAsync(CancellationToken cancellationToken) method StopAsync (line 64) | public Task StopAsync(CancellationToken cancellationToken) method LibraryManagerItemRemoved (line 77) | private void LibraryManagerItemRemoved(object? sender, ItemChangeEvent... method LibraryManagerItemAdded (line 97) | private void LibraryManagerItemAdded(object? sender, ItemChangeEventAr... method TaskManagerTaskCompleted (line 123) | private void TaskManagerTaskCompleted(object? sender, TaskCompletionEv... method LibraryManagerItemUpdated (line 150) | private void LibraryManagerItemUpdated(object? sender, ItemChangeEvent... method StartTimer (line 174) | private void StartTimer() method OnQueueTimerCallback (line 190) | private void OnQueueTimerCallback(object? state) method OnQueueTimerCallbackInternal (line 205) | private void OnQueueTimerCallbackInternal() method Dispose (line 242) | public void Dispose() FILE: Jellyfin.Plugin.MediaAnalyzer/FFmpegWrapper.cs class FFmpegWrapper (line 16) | public static class FFmpegWrapper method CheckFFmpegVersion (line 44) | public static bool CheckFFmpegVersion() method Fingerprint (line 114) | public static uint[] Fingerprint(QueuedMedia episode, MediaSegmentType... method CreateInvertedIndex (line 142) | public static Dictionary CreateInvertedIndex(Guid id, uint[... method DetectSilence (line 177) | public static TimeRange[] DetectSilence(QueuedMedia episode, int limit) method DetectBlackFrames (line 233) | public static BlackFrame[] DetectBlackFrames( method GetChromaprintLogs (line 293) | public static string GetChromaprintLogs() method CheckFFmpegRequirement (line 335) | private static bool CheckFFmpegRequirement( method GetOutput (line 366) | private static ReadOnlySpan GetOutput( method Fingerprint (line 464) | private static uint[] Fingerprint(QueuedMedia episode, MediaSegmentTyp... method LoadCachedFingerprint (line 516) | private static bool LoadCachedFingerprint( method CacheFingerprint (line 572) | private static void CacheFingerprint( method GetFingerprintCachePath (line 603) | private static string GetFingerprintCachePath(QueuedMedia episode, Med... method FormatFFmpegLog (line 623) | private static string FormatFFmpegLog(string key) FILE: Jellyfin.Plugin.MediaAnalyzer/Helper/Utils.cs class Utils (line 8) | public static class Utils method SToTicks (line 15) | public static long SToTicks(double value) method TicksToS (line 25) | public static double TicksToS(long value) FILE: Jellyfin.Plugin.MediaAnalyzer/Migrations/20230525091047_CreateBlacklistSegment.Designer.cs class CreateBlacklistSegment (line 13) | [DbContext(typeof(MediaAnalyzerDbContext))] method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder) FILE: Jellyfin.Plugin.MediaAnalyzer/Migrations/20230525091047_CreateBlacklistSegment.cs class CreateBlacklistSegment (line 9) | public partial class CreateBlacklistSegment : Migration method Up (line 12) | protected override void Up(MigrationBuilder migrationBuilder) method Down (line 29) | protected override void Down(MigrationBuilder migrationBuilder) FILE: Jellyfin.Plugin.MediaAnalyzer/Migrations/20240903114429_CreateSegmentMetadata.Designer.cs class CreateSegmentMetadata (line 13) | [DbContext(typeof(MediaAnalyzerDbContext))] method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder) FILE: Jellyfin.Plugin.MediaAnalyzer/Migrations/20240903114429_CreateSegmentMetadata.cs class CreateSegmentMetadata (line 9) | public partial class CreateSegmentMetadata : Migration method Up (line 12) | protected override void Up(MigrationBuilder migrationBuilder) method Down (line 43) | protected override void Down(MigrationBuilder migrationBuilder) FILE: Jellyfin.Plugin.MediaAnalyzer/Migrations/MediaAnalyzerDbContextModelSnapshot.cs class MediaAnalyzerDbContextModelSnapshot (line 12) | [DbContext(typeof(MediaAnalyzerDbContext))] method BuildModel (line 15) | protected override void BuildModel(ModelBuilder modelBuilder) FILE: Jellyfin.Plugin.MediaAnalyzer/Plugin.cs class Plugin (line 22) | public class Plugin : BasePlugin, IHasWebPages method Plugin (line 44) | public Plugin( method GetPages (line 115) | public IEnumerable GetPages() method GetItem (line 132) | internal BaseItem? GetItem(Guid id) method GetItemPath (line 142) | internal string GetItemPath(Guid id) method GetChapters (line 160) | internal List GetChapters(Guid id) method GetMetadataDb (line 169) | public SegmentMetadataDb GetMetadataDb() method GetMediaSegmentsDb (line 178) | public MediaSegmentsDb GetMediaSegmentsDb() method OnConfigurationChanged (line 183) | private void OnConfigurationChanged(object? sender, BasePluginConfigur... method OnUninstalling (line 196) | public override void OnUninstalling() FILE: Jellyfin.Plugin.MediaAnalyzer/QueueManager.cs class QueueManager (line 21) | public class QueueManager method QueueManager (line 38) | public QueueManager(ILogger logger, ILibraryManager libr... method GetMediaItems (line 54) | public ReadOnlyDictionary> GetMediaItems() method GetMediaItemsById (line 100) | public ReadOnlyDictionary> GetMediaItemsById(G... method LoadAnalysisSettings (line 131) | private void LoadAnalysisSettings() method QueueLibraryContents (line 205) | private void QueueLibraryContents(string rawId) method SkipEpisode (line 283) | private bool SkipEpisode(Episode episode) method QueueEpisode (line 293) | private void QueueEpisode(Episode episode) method QueueMovie (line 352) | private void QueueMovie(Movie movie, MediaSourceInfo source) method VerifyQueue (line 417) | public ReadOnlyCollection VerifyQueue(ReadOnlyCollection<... method FilterWithSegmentsAsync (line 452) | public async Task<(ReadOnlyCollection FilteredItems, bool... method FilterWithBlacklistAsync (line 495) | public async Task> FilterWithBlacklist... FILE: Jellyfin.Plugin.MediaAnalyzer/ScheduledTasks/AnalyzeMedia.cs class AnalyzeMedia (line 15) | public class AnalyzeMedia : IScheduledTask method AnalyzeMedia (line 26) | public AnalyzeMedia( method ExecuteAsync (line 60) | public Task ExecuteAsync(IProgress progress, CancellationToken... method GetDefaultTriggers (line 106) | public IEnumerable GetDefaultTriggers() FILE: Jellyfin.Plugin.MediaAnalyzer/ScheduledTasks/BaseItemAnalyzerTask.cs class BaseItemAnalyzerTask (line 15) | public class BaseItemAnalyzerTask method BaseItemAnalyzerTask (line 32) | public BaseItemAnalyzerTask( method AnalyzeItems (line 49) | public void AnalyzeItems( method AnalyzeItems (line 156) | private async Task AnalyzeItems(