ItemTypeLookup.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using System;
  2. using System.Collections.Frozen;
  3. using System.Collections.Generic;
  4. using System.Threading.Channels;
  5. using Emby.Server.Implementations.Playlists;
  6. using Jellyfin.Data.Enums;
  7. using Jellyfin.Server.Implementations;
  8. using MediaBrowser.Controller.Entities;
  9. using MediaBrowser.Controller.Entities.Audio;
  10. using MediaBrowser.Controller.Entities.Movies;
  11. using MediaBrowser.Controller.Entities.TV;
  12. using MediaBrowser.Controller.LiveTv;
  13. using MediaBrowser.Controller.Persistence;
  14. using MediaBrowser.Controller.Playlists;
  15. using MediaBrowser.Model.Querying;
  16. namespace Emby.Server.Implementations.Data;
  17. /// <inheritdoc />
  18. public class ItemTypeLookup : IItemTypeLookup
  19. {
  20. /// <inheritdoc />
  21. public IReadOnlyList<ItemFields> AllItemFields { get; } = Enum.GetValues<ItemFields>();
  22. /// <inheritdoc />
  23. public IReadOnlyList<BaseItemKind> ProgramTypes { get; } =
  24. [
  25. BaseItemKind.Program,
  26. BaseItemKind.TvChannel,
  27. BaseItemKind.LiveTvProgram,
  28. BaseItemKind.LiveTvChannel
  29. ];
  30. /// <inheritdoc />
  31. public IReadOnlyList<BaseItemKind> ProgramExcludeParentTypes { get; } =
  32. [
  33. BaseItemKind.Series,
  34. BaseItemKind.Season,
  35. BaseItemKind.MusicAlbum,
  36. BaseItemKind.MusicArtist,
  37. BaseItemKind.PhotoAlbum
  38. ];
  39. /// <inheritdoc />
  40. public IReadOnlyList<BaseItemKind> ServiceTypes { get; } =
  41. [
  42. BaseItemKind.TvChannel,
  43. BaseItemKind.LiveTvChannel
  44. ];
  45. /// <inheritdoc />
  46. public IReadOnlyList<BaseItemKind> StartDateTypes { get; } =
  47. [
  48. BaseItemKind.Program,
  49. BaseItemKind.LiveTvProgram
  50. ];
  51. /// <inheritdoc />
  52. public IReadOnlyList<BaseItemKind> SeriesTypes { get; } =
  53. [
  54. BaseItemKind.Book,
  55. BaseItemKind.AudioBook,
  56. BaseItemKind.Episode,
  57. BaseItemKind.Season
  58. ];
  59. /// <inheritdoc />
  60. public IReadOnlyList<BaseItemKind> ArtistExcludeParentTypes { get; } =
  61. [
  62. BaseItemKind.Series,
  63. BaseItemKind.Season,
  64. BaseItemKind.PhotoAlbum
  65. ];
  66. /// <inheritdoc />
  67. public IReadOnlyList<BaseItemKind> ArtistsTypes { get; } =
  68. [
  69. BaseItemKind.Audio,
  70. BaseItemKind.MusicAlbum,
  71. BaseItemKind.MusicVideo,
  72. BaseItemKind.AudioBook
  73. ];
  74. /// <inheritdoc />
  75. public IDictionary<BaseItemKind, string?> BaseItemKindNames { get; } = new Dictionary<BaseItemKind, string?>()
  76. {
  77. { BaseItemKind.AggregateFolder, typeof(AggregateFolder).FullName },
  78. { BaseItemKind.Audio, typeof(Audio).FullName },
  79. { BaseItemKind.AudioBook, typeof(AudioBook).FullName },
  80. { BaseItemKind.BasePluginFolder, typeof(BasePluginFolder).FullName },
  81. { BaseItemKind.Book, typeof(Book).FullName },
  82. { BaseItemKind.BoxSet, typeof(BoxSet).FullName },
  83. { BaseItemKind.Channel, typeof(Channel).FullName },
  84. { BaseItemKind.CollectionFolder, typeof(CollectionFolder).FullName },
  85. { BaseItemKind.Episode, typeof(Episode).FullName },
  86. { BaseItemKind.Folder, typeof(Folder).FullName },
  87. { BaseItemKind.Genre, typeof(Genre).FullName },
  88. { BaseItemKind.Movie, typeof(Movie).FullName },
  89. { BaseItemKind.LiveTvChannel, typeof(LiveTvChannel).FullName },
  90. { BaseItemKind.LiveTvProgram, typeof(LiveTvProgram).FullName },
  91. { BaseItemKind.MusicAlbum, typeof(MusicAlbum).FullName },
  92. { BaseItemKind.MusicArtist, typeof(MusicArtist).FullName },
  93. { BaseItemKind.MusicGenre, typeof(MusicGenre).FullName },
  94. { BaseItemKind.MusicVideo, typeof(MusicVideo).FullName },
  95. { BaseItemKind.Person, typeof(Person).FullName },
  96. { BaseItemKind.Photo, typeof(Photo).FullName },
  97. { BaseItemKind.PhotoAlbum, typeof(PhotoAlbum).FullName },
  98. { BaseItemKind.Playlist, typeof(Playlist).FullName },
  99. { BaseItemKind.PlaylistsFolder, typeof(PlaylistsFolder).FullName },
  100. { BaseItemKind.Season, typeof(Season).FullName },
  101. { BaseItemKind.Series, typeof(Series).FullName },
  102. { BaseItemKind.Studio, typeof(Studio).FullName },
  103. { BaseItemKind.Trailer, typeof(Trailer).FullName },
  104. { BaseItemKind.TvChannel, typeof(LiveTvChannel).FullName },
  105. { BaseItemKind.TvProgram, typeof(LiveTvProgram).FullName },
  106. { BaseItemKind.UserRootFolder, typeof(UserRootFolder).FullName },
  107. { BaseItemKind.UserView, typeof(UserView).FullName },
  108. { BaseItemKind.Video, typeof(Video).FullName },
  109. { BaseItemKind.Year, typeof(Year).FullName }
  110. }.ToFrozenDictionary();
  111. }