浏览代码

Merge pull request #1565 from MediaBrowser/dev

Dev
Luke 9 年之前
父节点
当前提交
1933f15977
共有 28 个文件被更改,包括 88 次插入174 次删除
  1. 11 0
      MediaBrowser.Controller/Channels/IChannelItem.cs
  2. 18 0
      MediaBrowser.Controller/Channels/IChannelMediaItem.cs
  3. 7 0
      MediaBrowser.Controller/Entities/BaseItem.cs
  4. 0 10
      MediaBrowser.Controller/LiveTv/ILiveTvItem.cs
  5. 3 3
      MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
  6. 3 1
      MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs
  7. 0 2
      MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
  8. 1 7
      MediaBrowser.Controller/LiveTv/LiveTvChannel.cs
  9. 1 8
      MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
  10. 0 2
      MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
  11. 2 1
      MediaBrowser.Controller/MediaBrowser.Controller.csproj
  12. 0 3
      MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
  13. 0 3
      MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
  14. 0 6
      MediaBrowser.Model/Configuration/ServerConfiguration.cs
  15. 5 0
      MediaBrowser.Model/Dto/BaseItemDto.cs
  16. 0 63
      MediaBrowser.Model/Dto/ItemByNameCounts.cs
  17. 0 1
      MediaBrowser.Model/MediaBrowser.Model.csproj
  18. 1 1
      MediaBrowser.Model/Providers/SubtitleOptions.cs
  19. 1 1
      MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
  20. 5 5
      MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs
  21. 1 1
      MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
  22. 0 23
      MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs
  23. 1 0
      MediaBrowser.Server.Implementations/Dto/DtoService.cs
  24. 11 6
      MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
  25. 6 8
      MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
  26. 1 1
      MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpDiscovery.cs
  27. 2 14
      MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
  28. 8 4
      MediaBrowser.WebDashboard/Api/DashboardService.cs

+ 11 - 0
MediaBrowser.Controller/Channels/IChannelItem.cs

@@ -0,0 +1,11 @@
+using MediaBrowser.Controller.Entities;
+
+namespace MediaBrowser.Controller.Channels
+{
+    public interface IChannelItem : IHasImages, IHasTags
+    {
+        string ChannelId { get; set; }
+
+        string ExternalId { get; set; }
+    }
+}

+ 18 - 0
MediaBrowser.Controller/Channels/IChannelMediaItem.cs

@@ -0,0 +1,18 @@
+using MediaBrowser.Model.Channels;
+using MediaBrowser.Model.Entities;
+using System.Collections.Generic;
+
+namespace MediaBrowser.Controller.Channels
+{
+    public interface IChannelMediaItem : IChannelItem
+    {
+        long? RunTimeTicks { get; set; }
+        string MediaType { get; }
+
+        ChannelMediaContentType ContentType { get; set; }
+
+        ExtraType? ExtraType { get; set; }
+
+        List<ChannelMediaInfo> ChannelMediaSources { get; set; }
+    }
+}

+ 7 - 0
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -190,6 +190,13 @@ namespace MediaBrowser.Controller.Entities
             }
             }
         }
         }
 
 
+        /// <summary>
+        /// Gets or sets the name of the service.
+        /// </summary>
+        /// <value>The name of the service.</value>
+        [IgnoreDataMember]
+        public string ServiceName { get; set; }
+
         /// <summary>
         /// <summary>
         /// If this content came from an external service, the id of the content on that service
         /// If this content came from an external service, the id of the content on that service
         /// </summary>
         /// </summary>

+ 0 - 10
MediaBrowser.Controller/LiveTv/ILiveTvItem.cs

@@ -1,10 +0,0 @@
-using MediaBrowser.Controller.Entities;
-
-namespace MediaBrowser.Controller.LiveTv
-{
-    public interface ILiveTvItem : IHasId
-    {
-        string ServiceName { get; set; }
-        string ExternalId { get; set; }
-    }
-}

+ 3 - 3
MediaBrowser.Controller/LiveTv/ILiveTvManager.cs

@@ -50,7 +50,7 @@ namespace MediaBrowser.Controller.LiveTv
         /// </summary>
         /// </summary>
         /// <param name="recording">The recording.</param>
         /// <param name="recording">The recording.</param>
         /// <returns>Task.</returns>
         /// <returns>Task.</returns>
-        Task DeleteRecording(ILiveTvRecording recording);
+        Task DeleteRecording(BaseItem recording);
         
         
         /// <summary>
         /// <summary>
         /// Cancels the timer.
         /// Cancels the timer.
@@ -156,7 +156,7 @@ namespace MediaBrowser.Controller.LiveTv
         /// <param name="id">The identifier.</param>
         /// <param name="id">The identifier.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>LiveTvRecording.</returns>
         /// <returns>LiveTvRecording.</returns>
-        Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken);
+        Task<BaseItem> GetInternalRecording(string id, CancellationToken cancellationToken);
 
 
         /// <summary>
         /// <summary>
         /// Gets the recording stream.
         /// Gets the recording stream.
@@ -396,7 +396,7 @@ namespace MediaBrowser.Controller.LiveTv
         /// </summary>
         /// </summary>
         /// <param name="recording">The recording.</param>
         /// <param name="recording">The recording.</param>
         /// <returns>Task.</returns>
         /// <returns>Task.</returns>
-        Task OnRecordingFileDeleted(ILiveTvRecording recording);
+        Task OnRecordingFileDeleted(BaseItem recording);
 
 
         /// <summary>
         /// <summary>
         /// Gets the sat ini mappings.
         /// Gets the sat ini mappings.

+ 3 - 1
MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs

@@ -9,8 +9,10 @@ using System.Threading.Tasks;
 
 
 namespace MediaBrowser.Controller.LiveTv
 namespace MediaBrowser.Controller.LiveTv
 {
 {
-    public interface ILiveTvRecording : IHasImages, IHasMediaSources, IHasUserData, ILiveTvItem, IHasStartDate, IHasProgramAttributes
+    public interface ILiveTvRecording : IHasImages, IHasMediaSources, IHasUserData, IHasStartDate, IHasProgramAttributes
     {
     {
+        string ServiceName { get; set; }
+        string ExternalId { get; set; }
         string ChannelId { get; }
         string ChannelId { get; }
         string MediaType { get; }
         string MediaType { get; }
 
 

+ 0 - 2
MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs

@@ -57,8 +57,6 @@ namespace MediaBrowser.Controller.LiveTv
             return name + "-" + Name + (EpisodeTitle ?? string.Empty);
             return name + "-" + Name + (EpisodeTitle ?? string.Empty);
         }
         }
 
 
-        public string ServiceName { get; set; }
-
         /// <summary>
         /// <summary>
         /// Gets a value indicating whether this instance is owned item.
         /// Gets a value indicating whether this instance is owned item.
         /// </summary>
         /// </summary>

+ 1 - 7
MediaBrowser.Controller/LiveTv/LiveTvChannel.cs

@@ -11,7 +11,7 @@ using System.Runtime.Serialization;
 
 
 namespace MediaBrowser.Controller.LiveTv
 namespace MediaBrowser.Controller.LiveTv
 {
 {
-    public class LiveTvChannel : BaseItem, IHasMediaSources, ILiveTvItem
+    public class LiveTvChannel : BaseItem, IHasMediaSources
     {
     {
         /// <summary>
         /// <summary>
         /// Gets the user data key.
         /// Gets the user data key.
@@ -59,12 +59,6 @@ namespace MediaBrowser.Controller.LiveTv
         /// <value>The type of the channel.</value>
         /// <value>The type of the channel.</value>
         public ChannelType ChannelType { get; set; }
         public ChannelType ChannelType { get; set; }
 
 
-        /// <summary>
-        /// Gets or sets the name of the service.
-        /// </summary>
-        /// <value>The name of the service.</value>
-        public string ServiceName { get; set; }
-
         [IgnoreDataMember]
         [IgnoreDataMember]
         public override LocationType LocationType
         public override LocationType LocationType
         {
         {

+ 1 - 8
MediaBrowser.Controller/LiveTv/LiveTvProgram.cs

@@ -11,7 +11,7 @@ using MediaBrowser.Model.Entities;
 
 
 namespace MediaBrowser.Controller.LiveTv
 namespace MediaBrowser.Controller.LiveTv
 {
 {
-    public class LiveTvProgram : BaseItem, ILiveTvItem, IHasLookupInfo<LiveTvProgramLookupInfo>, IHasStartDate, IHasProgramAttributes
+    public class LiveTvProgram : BaseItem, IHasLookupInfo<LiveTvProgramLookupInfo>, IHasStartDate, IHasProgramAttributes
     {
     {
         /// <summary>
         /// <summary>
         /// Gets the user data key.
         /// Gets the user data key.
@@ -39,13 +39,6 @@ namespace MediaBrowser.Controller.LiveTv
             return base.CreateUserDataKey();
             return base.CreateUserDataKey();
         }
         }
 
 
-        /// <summary>
-        /// Gets or sets the name.
-        /// </summary>
-        /// <value>The name.</value>
-        [IgnoreDataMember]
-        public string ServiceName { get; set; }
-
         [IgnoreDataMember]
         [IgnoreDataMember]
         public override SourceType SourceType
         public override SourceType SourceType
         {
         {

+ 0 - 2
MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs

@@ -72,8 +72,6 @@ namespace MediaBrowser.Controller.LiveTv
             return base.CreateUserDataKey();
             return base.CreateUserDataKey();
         }
         }
 
 
-        public string ServiceName { get; set; }
-
         [IgnoreDataMember]
         [IgnoreDataMember]
         public override string MediaType
         public override string MediaType
         {
         {

+ 2 - 1
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -85,8 +85,10 @@
     <Compile Include="Channels\ChannelSearchInfo.cs" />
     <Compile Include="Channels\ChannelSearchInfo.cs" />
     <Compile Include="Channels\ChannelVideoItem.cs" />
     <Compile Include="Channels\ChannelVideoItem.cs" />
     <Compile Include="Channels\IChannel.cs" />
     <Compile Include="Channels\IChannel.cs" />
+    <Compile Include="Channels\IChannelItem.cs" />
     <Compile Include="Channels\IChannelManager.cs" />
     <Compile Include="Channels\IChannelManager.cs" />
     <Compile Include="Channels\Channel.cs" />
     <Compile Include="Channels\Channel.cs" />
+    <Compile Include="Channels\IChannelMediaItem.cs" />
     <Compile Include="Channels\IHasCacheKey.cs" />
     <Compile Include="Channels\IHasCacheKey.cs" />
     <Compile Include="Channels\IIndexableChannel.cs" />
     <Compile Include="Channels\IIndexableChannel.cs" />
     <Compile Include="Channels\InternalAllChannelMediaQuery.cs" />
     <Compile Include="Channels\InternalAllChannelMediaQuery.cs" />
@@ -202,7 +204,6 @@
     <Compile Include="Library\UserDataSaveEventArgs.cs" />
     <Compile Include="Library\UserDataSaveEventArgs.cs" />
     <Compile Include="LiveTv\IHasRegistrationInfo.cs" />
     <Compile Include="LiveTv\IHasRegistrationInfo.cs" />
     <Compile Include="LiveTv\IListingsProvider.cs" />
     <Compile Include="LiveTv\IListingsProvider.cs" />
-    <Compile Include="LiveTv\ILiveTvItem.cs" />
     <Compile Include="LiveTv\ITunerHost.cs" />
     <Compile Include="LiveTv\ITunerHost.cs" />
     <Compile Include="LiveTv\RecordingGroup.cs" />
     <Compile Include="LiveTv\RecordingGroup.cs" />
     <Compile Include="LiveTv\RecordingStatusChangedEventArgs.cs" />
     <Compile Include="LiveTv\RecordingStatusChangedEventArgs.cs" />

+ 0 - 3
MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj

@@ -470,9 +470,6 @@
     <Compile Include="..\MediaBrowser.Model\Dto\ImageOptions.cs">
     <Compile Include="..\MediaBrowser.Model\Dto\ImageOptions.cs">
       <Link>Dto\ImageOptions.cs</Link>
       <Link>Dto\ImageOptions.cs</Link>
     </Compile>
     </Compile>
-    <Compile Include="..\MediaBrowser.Model\Dto\ItemByNameCounts.cs">
-      <Link>Dto\ItemByNameCounts.cs</Link>
-    </Compile>
     <Compile Include="..\MediaBrowser.Model\Dto\ItemCounts.cs">
     <Compile Include="..\MediaBrowser.Model\Dto\ItemCounts.cs">
       <Link>Dto\ItemCounts.cs</Link>
       <Link>Dto\ItemCounts.cs</Link>
     </Compile>
     </Compile>

+ 0 - 3
MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj

@@ -444,9 +444,6 @@
     <Compile Include="..\MediaBrowser.Model\Dto\ImageOptions.cs">
     <Compile Include="..\MediaBrowser.Model\Dto\ImageOptions.cs">
       <Link>Dto\ImageOptions.cs</Link>
       <Link>Dto\ImageOptions.cs</Link>
     </Compile>
     </Compile>
-    <Compile Include="..\MediaBrowser.Model\Dto\ItemByNameCounts.cs">
-      <Link>Dto\ItemByNameCounts.cs</Link>
-    </Compile>
     <Compile Include="..\MediaBrowser.Model\Dto\ItemCounts.cs">
     <Compile Include="..\MediaBrowser.Model\Dto\ItemCounts.cs">
       <Link>Dto\ItemCounts.cs</Link>
       <Link>Dto\ItemCounts.cs</Link>
     </Compile>
     </Compile>

+ 0 - 6
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -62,12 +62,6 @@ namespace MediaBrowser.Model.Configuration
         /// <value><c>true</c> if this instance is port authorized; otherwise, <c>false</c>.</value>
         /// <value><c>true</c> if this instance is port authorized; otherwise, <c>false</c>.</value>
         public bool IsPortAuthorized { get; set; }
         public bool IsPortAuthorized { get; set; }
 
 
-        /// <summary>
-        /// Gets or sets the item by name path.
-        /// </summary>
-        /// <value>The item by name path.</value>
-        public string ItemsByNamePath { get; set; }
-
         /// <summary>
         /// <summary>
         /// Gets or sets the metadata path.
         /// Gets or sets the metadata path.
         /// </summary>
         /// </summary>

+ 5 - 0
MediaBrowser.Model/Dto/BaseItemDto.cs

@@ -792,6 +792,11 @@ namespace MediaBrowser.Model.Dto
         /// <value>The locked fields.</value>
         /// <value>The locked fields.</value>
         public List<MetadataFields> LockedFields { get; set; }
         public List<MetadataFields> LockedFields { get; set; }
 
 
+        /// <summary>
+        /// Gets or sets the trailer count.
+        /// </summary>
+        /// <value>The trailer count.</value>
+        public int? TrailerCount { get; set; }
         /// <summary>
         /// <summary>
         /// Gets or sets the movie count.
         /// Gets or sets the movie count.
         /// </summary>
         /// </summary>

+ 0 - 63
MediaBrowser.Model/Dto/ItemByNameCounts.cs

@@ -1,63 +0,0 @@
-using System;
-
-namespace MediaBrowser.Model.Dto
-{
-    /// <summary>
-    /// Class ItemByNameCounts
-    /// </summary>
-    public class ItemByNameCounts
-    {
-        public string UserId { get; set; }
-
-        /// <summary>
-        /// Gets or sets the total count.
-        /// </summary>
-        /// <value>The total count.</value>
-        public int TotalCount { get; set; }
-        /// <summary>
-        /// Gets or sets the adult video count.
-        /// </summary>
-        /// <value>The adult video count.</value>
-        public int AdultVideoCount { get; set; }
-        /// <summary>
-        /// Gets or sets the movie count.
-        /// </summary>
-        /// <value>The movie count.</value>
-        public int MovieCount { get; set; }
-        /// <summary>
-        /// Gets or sets the series count.
-        /// </summary>
-        /// <value>The series count.</value>
-        public int SeriesCount { get; set; }
-        /// <summary>
-        /// Gets or sets the episode count.
-        /// </summary>
-        /// <value>The episode count.</value>
-        public int EpisodeCount { get; set; }
-        /// <summary>
-        /// Gets or sets the game count.
-        /// </summary>
-        /// <value>The game count.</value>
-        public int GameCount { get; set; }
-        /// <summary>
-        /// Gets or sets the trailer count.
-        /// </summary>
-        /// <value>The trailer count.</value>
-        public int TrailerCount { get; set; }
-        /// <summary>
-        /// Gets or sets the song count.
-        /// </summary>
-        /// <value>The song count.</value>
-        public int SongCount { get; set; }
-        /// <summary>
-        /// Gets or sets the album count.
-        /// </summary>
-        /// <value>The album count.</value>
-        public int AlbumCount { get; set; }
-        /// <summary>
-        /// Gets or sets the music video count.
-        /// </summary>
-        /// <value>The music video count.</value>
-        public int MusicVideoCount { get; set; }
-    }
-}

+ 0 - 1
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -215,7 +215,6 @@
     <Compile Include="Dto\IItemDto.cs" />
     <Compile Include="Dto\IItemDto.cs" />
     <Compile Include="Dto\ImageByNameInfo.cs" />
     <Compile Include="Dto\ImageByNameInfo.cs" />
     <Compile Include="Dto\ImageInfo.cs" />
     <Compile Include="Dto\ImageInfo.cs" />
-    <Compile Include="Dto\ItemByNameCounts.cs" />
     <Compile Include="Dto\ItemCounts.cs" />
     <Compile Include="Dto\ItemCounts.cs" />
     <Compile Include="Dto\ItemIndex.cs" />
     <Compile Include="Dto\ItemIndex.cs" />
     <Compile Include="Dto\RatingType.cs" />
     <Compile Include="Dto\RatingType.cs" />

+ 1 - 1
MediaBrowser.Model/Providers/SubtitleOptions.cs

@@ -2,7 +2,7 @@ namespace MediaBrowser.Model.Providers
 {
 {
     public class SubtitleOptions
     public class SubtitleOptions
     {
     {
-        public bool SkipIfGraphicalSubtitlesPresent { get; set; }
+        public bool SkipIfEmbeddedSubtitlesPresent { get; set; }
         public bool SkipIfAudioTrackMatches { get; set; }
         public bool SkipIfAudioTrackMatches { get; set; }
         public string[] DownloadLanguages { get; set; }
         public string[] DownloadLanguages { get; set; }
         public bool DownloadMovieSubtitles { get; set; }
         public bool DownloadMovieSubtitles { get; set; }

+ 1 - 1
MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs

@@ -532,7 +532,7 @@ namespace MediaBrowser.Providers.MediaInfo
                     _subtitleManager)
                     _subtitleManager)
                     .DownloadSubtitles(video,
                     .DownloadSubtitles(video,
                     currentStreams.Concat(externalSubtitleStreams).ToList(),
                     currentStreams.Concat(externalSubtitleStreams).ToList(),
-                    subtitleOptions.SkipIfGraphicalSubtitlesPresent,
+                    subtitleOptions.SkipIfEmbeddedSubtitlesPresent,
                     subtitleOptions.SkipIfAudioTrackMatches,
                     subtitleOptions.SkipIfAudioTrackMatches,
                     subtitleOptions.DownloadLanguages,
                     subtitleOptions.DownloadLanguages,
                     cancellationToken).ConfigureAwait(false);
                     cancellationToken).ConfigureAwait(false);

+ 5 - 5
MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs

@@ -26,7 +26,7 @@ namespace MediaBrowser.Providers.MediaInfo
 
 
         public async Task<List<string>> DownloadSubtitles(Video video,
         public async Task<List<string>> DownloadSubtitles(Video video,
             List<MediaStream> mediaStreams,
             List<MediaStream> mediaStreams,
-            bool skipIfGraphicalSubtitlesPresent,
+            bool skipIfEmbeddedSubtitlesPresent,
             bool skipIfAudioTrackMatches,
             bool skipIfAudioTrackMatches,
             IEnumerable<string> languages,
             IEnumerable<string> languages,
             CancellationToken cancellationToken)
             CancellationToken cancellationToken)
@@ -59,7 +59,7 @@ namespace MediaBrowser.Providers.MediaInfo
             {
             {
                 try
                 try
                 {
                 {
-                    var downloaded = await DownloadSubtitles(video, mediaStreams, skipIfGraphicalSubtitlesPresent, skipIfAudioTrackMatches, lang, mediaType, cancellationToken)
+                    var downloaded = await DownloadSubtitles(video, mediaStreams, skipIfEmbeddedSubtitlesPresent, skipIfAudioTrackMatches, lang, mediaType, cancellationToken)
                         .ConfigureAwait(false);
                         .ConfigureAwait(false);
 
 
                     if (downloaded)
                     if (downloaded)
@@ -78,7 +78,7 @@ namespace MediaBrowser.Providers.MediaInfo
 
 
         private async Task<bool> DownloadSubtitles(Video video,
         private async Task<bool> DownloadSubtitles(Video video,
             List<MediaStream> mediaStreams,
             List<MediaStream> mediaStreams,
-            bool skipIfGraphicalSubtitlesPresent,
+            bool skipIfEmbeddedSubtitlesPresent,
             bool skipIfAudioTrackMatches,
             bool skipIfAudioTrackMatches,
             string language,
             string language,
             VideoContentType mediaType,
             VideoContentType mediaType,
@@ -107,8 +107,8 @@ namespace MediaBrowser.Providers.MediaInfo
             }
             }
 
 
             // There's an internal subtitle stream for this language
             // There's an internal subtitle stream for this language
-            if (skipIfGraphicalSubtitlesPresent &&
-                mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && !i.IsTextSubtitleStream && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
+            if (skipIfEmbeddedSubtitlesPresent &&
+                mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && !i.IsExternal && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
             {
             {
                 return false;
                 return false;
             }
             }

+ 1 - 1
MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs

@@ -114,7 +114,7 @@ namespace MediaBrowser.Providers.MediaInfo
                     _subtitleManager)
                     _subtitleManager)
                     .DownloadSubtitles(video,
                     .DownloadSubtitles(video,
                     mediaStreams,
                     mediaStreams,
-                    options.SkipIfGraphicalSubtitlesPresent,
+                    options.SkipIfEmbeddedSubtitlesPresent,
                     options.SkipIfAudioTrackMatches,
                     options.SkipIfAudioTrackMatches,
                     options.DownloadLanguages,
                     options.DownloadLanguages,
                     cancellationToken).ConfigureAwait(false);
                     cancellationToken).ConfigureAwait(false);

+ 0 - 23
MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs

@@ -145,7 +145,6 @@ namespace MediaBrowser.Server.Implementations.Configuration
         {
         {
             var newConfig = (ServerConfiguration)newConfiguration;
             var newConfig = (ServerConfiguration)newConfiguration;
 
 
-            ValidateItemByNamePath(newConfig);
             ValidatePathSubstitutions(newConfig);
             ValidatePathSubstitutions(newConfig);
             ValidateMetadataPath(newConfig);
             ValidateMetadataPath(newConfig);
             ValidateSslCertificate(newConfig);
             ValidateSslCertificate(newConfig);
@@ -189,28 +188,6 @@ namespace MediaBrowser.Server.Implementations.Configuration
             }
             }
         }
         }
 
 
-        /// <summary>
-        /// Replaces the item by name path.
-        /// </summary>
-        /// <param name="newConfig">The new configuration.</param>
-        /// <exception cref="System.IO.DirectoryNotFoundException"></exception>
-        private void ValidateItemByNamePath(ServerConfiguration newConfig)
-        {
-            var newPath = newConfig.ItemsByNamePath;
-
-            if (!string.IsNullOrWhiteSpace(newPath)
-                && !string.Equals(Configuration.ItemsByNamePath ?? string.Empty, newPath))
-            {
-                // Validate
-                if (!FileSystem.DirectoryExists(newPath))
-                {
-                    throw new DirectoryNotFoundException(string.Format("{0} does not exist.", newPath));
-                }
-
-                EnsureWriteAccess(newPath);
-            }
-        }
-
         /// <summary>
         /// <summary>
         /// Validates the metadata path.
         /// Validates the metadata path.
         /// </summary>
         /// </summary>

+ 1 - 0
MediaBrowser.Server.Implementations/Dto/DtoService.cs

@@ -457,6 +457,7 @@ namespace MediaBrowser.Server.Implementations.Dto
                 dto.EpisodeCount = taggedItems.Count(i => i is Episode);
                 dto.EpisodeCount = taggedItems.Count(i => i is Episode);
                 dto.GameCount = taggedItems.Count(i => i is Game);
                 dto.GameCount = taggedItems.Count(i => i is Game);
                 dto.MovieCount = taggedItems.Count(i => i is Movie);
                 dto.MovieCount = taggedItems.Count(i => i is Movie);
+                dto.TrailerCount = taggedItems.Count(i => i is Trailer);
                 dto.MusicVideoCount = taggedItems.Count(i => i is MusicVideo);
                 dto.MusicVideoCount = taggedItems.Count(i => i is MusicVideo);
                 dto.SeriesCount = taggedItems.Count(i => i is Series);
                 dto.SeriesCount = taggedItems.Count(i => i is Series);
                 dto.SongCount = taggedItems.Count(i => i is Audio);
                 dto.SongCount = taggedItems.Count(i => i is Audio);

+ 11 - 6
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -300,7 +300,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             return _libraryManager.GetItemById(id) as LiveTvProgram;
             return _libraryManager.GetItemById(id) as LiveTvProgram;
         }
         }
 
 
-        public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken)
+        public async Task<BaseItem> GetInternalRecording(string id, CancellationToken cancellationToken)
         {
         {
             if (string.IsNullOrWhiteSpace(id))
             if (string.IsNullOrWhiteSpace(id))
             {
             {
@@ -313,7 +313,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
 
 
             }, cancellationToken).ConfigureAwait(false);
             }, cancellationToken).ConfigureAwait(false);
 
 
-            return result.Items.FirstOrDefault() as ILiveTvRecording;
+            return result.Items.FirstOrDefault();
         }
         }
 
 
         private readonly SemaphoreSlim _liveStreamSemaphore = new SemaphoreSlim(1, 1);
         private readonly SemaphoreSlim _liveStreamSemaphore = new SemaphoreSlim(1, 1);
@@ -358,7 +358,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             return list;
             return list;
         }
         }
 
 
-        private ILiveTvService GetService(ILiveTvItem item)
+        private ILiveTvService GetService(ILiveTvRecording item)
+        {
+            return GetService(item.ServiceName);
+        }
+
+        private ILiveTvService GetService(BaseItem item)
         {
         {
             return GetService(item.ServiceName);
             return GetService(item.ServiceName);
         }
         }
@@ -1693,7 +1698,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             };
             };
         }
         }
 
 
-        public Task OnRecordingFileDeleted(ILiveTvRecording recording)
+        public Task OnRecordingFileDeleted(BaseItem recording)
         {
         {
             var service = GetService(recording);
             var service = GetService(recording);
 
 
@@ -1715,10 +1720,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
                 throw new ResourceNotFoundException(string.Format("Recording with Id {0} not found", recordingId));
                 throw new ResourceNotFoundException(string.Format("Recording with Id {0} not found", recordingId));
             }
             }
 
 
-            await DeleteRecording(recording).ConfigureAwait(false);
+            await DeleteRecording((BaseItem)recording).ConfigureAwait(false);
         }
         }
 
 
-        public async Task DeleteRecording(ILiveTvRecording recording)
+        public async Task DeleteRecording(BaseItem recording)
         {
         {
             var service = GetService(recording.ServiceName);
             var service = GetService(recording.ServiceName);
 
 

+ 6 - 8
MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs

@@ -36,15 +36,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
 
 
         public Task<IEnumerable<MediaSourceInfo>> GetMediaSources(IHasMediaSources item, CancellationToken cancellationToken)
         public Task<IEnumerable<MediaSourceInfo>> GetMediaSources(IHasMediaSources item, CancellationToken cancellationToken)
         {
         {
-            var channelItem = item as ILiveTvItem;
+            var baseItem = (BaseItem)item;
 
 
-            if (channelItem != null)
+            if (baseItem.SourceType == SourceType.LiveTV)
             {
             {
-                var hasMetadata = (IHasMetadata)channelItem;
-
-                if (string.IsNullOrWhiteSpace(hasMetadata.Path))
+                if (string.IsNullOrWhiteSpace(baseItem.Path))
                 {
                 {
-                    return GetMediaSourcesInternal(channelItem, cancellationToken);
+                    return GetMediaSourcesInternal(item, cancellationToken);
                 }
                 }
             }
             }
 
 
@@ -54,8 +52,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
         // Do not use a pipe here because Roku http requests to the server will fail, without any explicit error message.
         // Do not use a pipe here because Roku http requests to the server will fail, without any explicit error message.
         private const char StreamIdDelimeter = '_';
         private const char StreamIdDelimeter = '_';
         private const string StreamIdDelimeterString = "_";
         private const string StreamIdDelimeterString = "_";
-        
-        private async Task<IEnumerable<MediaSourceInfo>> GetMediaSourcesInternal(ILiveTvItem item, CancellationToken cancellationToken)
+
+        private async Task<IEnumerable<MediaSourceInfo>> GetMediaSourcesInternal(IHasMediaSources item, CancellationToken cancellationToken)
         {
         {
             IEnumerable<MediaSourceInfo> sources;
             IEnumerable<MediaSourceInfo> sources;
 
 

+ 1 - 1
MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpDiscovery.cs

@@ -100,7 +100,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.SatIp
                 {
                 {
                     if (string.IsNullOrWhiteSpace(info.M3UUrl))
                     if (string.IsNullOrWhiteSpace(info.M3UUrl))
                     {
                     {
-                        return;
+                        //return;
                     }
                     }
 
 
                     await _liveTvManager.SaveTunerHost(new TunerHostInfo
                     await _liveTvManager.SaveTunerHost(new TunerHostInfo

+ 2 - 14
MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs

@@ -719,15 +719,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
                         _saveItemCommand.GetParameter(index++).Value = null;
                         _saveItemCommand.GetParameter(index++).Value = null;
                     }
                     }
 
 
-                    var tvItem = item as ILiveTvItem;
-                    if (tvItem != null)
-                    {
-                        _saveItemCommand.GetParameter(index++).Value = tvItem.ServiceName;
-                    }
-                    else
-                    {
-                        _saveItemCommand.GetParameter(index++).Value = null;
-                    }
+                    _saveItemCommand.GetParameter(index++).Value = item.ServiceName;
 
 
                     _saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Tags.ToArray());
                     _saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Tags.ToArray());
                     _saveItemCommand.GetParameter(index++).Value = item.IsFolder;
                     _saveItemCommand.GetParameter(index++).Value = item.IsFolder;
@@ -1095,11 +1087,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
 
 
             if (!reader.IsDBNull(43))
             if (!reader.IsDBNull(43))
             {
             {
-                var tvItem = item as ILiveTvItem;
-                if (tvItem != null)
-                {
-                    tvItem.ServiceName = reader.GetString(43);
-                }
+                item.ServiceName = reader.GetString(43);
             }
             }
 
 
             if (!reader.IsDBNull(44))
             if (!reader.IsDBNull(44))

+ 8 - 4
MediaBrowser.WebDashboard/Api/DashboardService.cs

@@ -308,9 +308,9 @@ namespace MediaBrowser.WebDashboard.Api
 
 
             if (!string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase))
             if (!string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase))
             {
             {
-                var versionedBowerPath = Path.Combine(Path.GetDirectoryName(bowerPath), "bower_components" + _appHost.ApplicationVersion);
-                Directory.Move(bowerPath, versionedBowerPath);
-                bowerPath = versionedBowerPath;
+                //var versionedBowerPath = Path.Combine(Path.GetDirectoryName(bowerPath), "bower_components" + _appHost.ApplicationVersion);
+                //Directory.Move(bowerPath, versionedBowerPath);
+                //bowerPath = versionedBowerPath;
             }
             }
 
 
             DeleteFilesByExtension(bowerPath, ".log");
             DeleteFilesByExtension(bowerPath, ".log");
@@ -340,7 +340,11 @@ namespace MediaBrowser.WebDashboard.Api
             DeleteFoldersByName(bowerPath, "guides");
             DeleteFoldersByName(bowerPath, "guides");
             DeleteFoldersByName(bowerPath, "grunt");
             DeleteFoldersByName(bowerPath, "grunt");
             DeleteFoldersByName(bowerPath, "rollups");
             DeleteFoldersByName(bowerPath, "rollups");
-            DeleteFoldersByName(Path.Combine(bowerPath, "emby-webcomponents"), "fonts");
+
+            if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase))
+            {
+                DeleteFoldersByName(Path.Combine(bowerPath, "emby-webcomponents"), "fonts");
+            }
 
 
             _fileSystem.DeleteDirectory(Path.Combine(bowerPath, "jquery", "src"), true);
             _fileSystem.DeleteDirectory(Path.Combine(bowerPath, "jquery", "src"), true);