aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Channels/ChannelAudioItem.cs2
-rw-r--r--MediaBrowser.Controller/Channels/ChannelCategoryItem.cs2
-rw-r--r--MediaBrowser.Controller/Channels/ChannelInfo.cs30
-rw-r--r--MediaBrowser.Controller/Channels/ChannelItemInfo.cs10
-rw-r--r--MediaBrowser.Controller/Channels/ChannelVideoItem.cs2
-rw-r--r--MediaBrowser.Controller/Channels/IChannel.cs25
-rw-r--r--MediaBrowser.Controller/Channels/IChannelItem.cs2
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
-rw-r--r--MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj6
-rw-r--r--MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj6
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj1
-rw-r--r--MediaBrowser.Model/MediaInfo/Constants.cs24
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs53
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs4
-rw-r--r--MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj3
15 files changed, 123 insertions, 48 deletions
diff --git a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
index a0999593f..72a996b19 100644
--- a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
@@ -8,6 +8,8 @@ namespace MediaBrowser.Controller.Channels
{
public string ExternalId { get; set; }
+ public string ChannelId { get; set; }
+
public ChannelItemType ChannelItemType { get; set; }
public bool IsInfiniteStream { get; set; }
diff --git a/MediaBrowser.Controller/Channels/ChannelCategoryItem.cs b/MediaBrowser.Controller/Channels/ChannelCategoryItem.cs
index 67f0ec65f..b20dcf620 100644
--- a/MediaBrowser.Controller/Channels/ChannelCategoryItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelCategoryItem.cs
@@ -7,6 +7,8 @@ namespace MediaBrowser.Controller.Channels
{
public string ExternalId { get; set; }
+ public string ChannelId { get; set; }
+
public ChannelItemType ChannelItemType { get; set; }
public string OriginalImageUrl { get; set; }
diff --git a/MediaBrowser.Controller/Channels/ChannelInfo.cs b/MediaBrowser.Controller/Channels/ChannelInfo.cs
new file mode 100644
index 000000000..fd3a169a2
--- /dev/null
+++ b/MediaBrowser.Controller/Channels/ChannelInfo.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+
+namespace MediaBrowser.Controller.Channels
+{
+ public class ChannelInfo
+ {
+ /// <summary>
+ /// Gets the home page URL.
+ /// </summary>
+ /// <value>The home page URL.</value>
+ public string HomePageUrl { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance can search.
+ /// </summary>
+ /// <value><c>true</c> if this instance can search; otherwise, <c>false</c>.</value>
+ public bool CanSearch { get; set; }
+
+ public List<ChannelMediaType> MediaTypes { get; set; }
+
+ public List<ChannelMediaContentType> ContentTypes { get; set; }
+
+ public ChannelInfo()
+ {
+ MediaTypes = new List<ChannelMediaType>();
+ ContentTypes = new List<ChannelMediaContentType>();
+ }
+ }
+
+}
diff --git a/MediaBrowser.Controller/Channels/ChannelItemInfo.cs b/MediaBrowser.Controller/Channels/ChannelItemInfo.cs
index 104204eb0..e4abea4fc 100644
--- a/MediaBrowser.Controller/Channels/ChannelItemInfo.cs
+++ b/MediaBrowser.Controller/Channels/ChannelItemInfo.cs
@@ -88,6 +88,16 @@ namespace MediaBrowser.Controller.Channels
public Dictionary<string, string> RequiredHttpHeaders { get; set; }
+ public string Container { get; set; }
+ public string AudioCodec { get; set; }
+ public string VideoCodec { get; set; }
+
+ public int? AudioBitrate { get; set; }
+ public int? VideoBitrate { get; set; }
+ public int? Width { get; set; }
+ public int? Height { get; set; }
+ public int? AudioChannels { get; set; }
+
public ChannelMediaInfo()
{
RequiredHttpHeaders = new Dictionary<string, string>();
diff --git a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
index 0bf05f965..0d2bd933b 100644
--- a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
@@ -10,6 +10,8 @@ namespace MediaBrowser.Controller.Channels
{
public string ExternalId { get; set; }
+ public string ChannelId { get; set; }
+
public ChannelItemType ChannelItemType { get; set; }
public bool IsInfiniteStream { get; set; }
diff --git a/MediaBrowser.Controller/Channels/IChannel.cs b/MediaBrowser.Controller/Channels/IChannel.cs
index ca4b7f551..e19d083e2 100644
--- a/MediaBrowser.Controller/Channels/IChannel.cs
+++ b/MediaBrowser.Controller/Channels/IChannel.cs
@@ -66,31 +66,6 @@ namespace MediaBrowser.Controller.Channels
IEnumerable<IChannel> GetChannels();
}
- public class ChannelInfo
- {
- /// <summary>
- /// Gets the home page URL.
- /// </summary>
- /// <value>The home page URL.</value>
- public string HomePageUrl { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether this instance can search.
- /// </summary>
- /// <value><c>true</c> if this instance can search; otherwise, <c>false</c>.</value>
- public bool CanSearch { get; set; }
-
- public List<ChannelMediaType> MediaTypes { get; set; }
-
- public List<ChannelMediaContentType> ContentTypes { get; set; }
-
- public ChannelInfo()
- {
- MediaTypes = new List<ChannelMediaType>();
- ContentTypes = new List<ChannelMediaContentType>();
- }
- }
-
public class ChannelSearchInfo
{
public string SearchTerm { get; set; }
diff --git a/MediaBrowser.Controller/Channels/IChannelItem.cs b/MediaBrowser.Controller/Channels/IChannelItem.cs
index a05ef8e29..b653cead0 100644
--- a/MediaBrowser.Controller/Channels/IChannelItem.cs
+++ b/MediaBrowser.Controller/Channels/IChannelItem.cs
@@ -4,6 +4,8 @@ namespace MediaBrowser.Controller.Channels
{
public interface IChannelItem : IHasImages
{
+ string ChannelId { get; set; }
+
string ExternalId { get; set; }
ChannelItemType ChannelItemType { get; set; }
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index b54ad2272..830a4829f 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -69,6 +69,7 @@
<Link>Properties\SharedVersion.cs</Link>
</Compile>
<Compile Include="Channels\ChannelCategoryItem.cs" />
+ <Compile Include="Channels\ChannelInfo.cs" />
<Compile Include="Channels\ChannelItemInfo.cs" />
<Compile Include="Channels\IChannel.cs" />
<Compile Include="Channels\IChannelManager.cs" />
diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
index f6c8f6135..e8a802725 100644
--- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
+++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
@@ -215,6 +215,9 @@
<Compile Include="..\MediaBrowser.Model\Entities\ChapterInfo.cs">
<Link>Entities\ChapterInfo.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Entities\CollectionType.cs">
+ <Link>Entities\CollectionType.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Entities\DisplayPreferences.cs">
<Link>Entities\DisplayPreferences.cs</Link>
</Compile>
@@ -350,6 +353,9 @@
<Compile Include="..\MediaBrowser.Model\MediaInfo\BlurayDiscInfo.cs">
<Link>MediaInfo\BlurayDiscInfo.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\MediaInfo\Constants.cs">
+ <Link>MediaInfo\Constants.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\MediaInfo\IBlurayExaminer.cs">
<Link>MediaInfo\IBlurayExaminer.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
index 9845cb6b2..5fb5fae74 100644
--- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
+++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
@@ -202,6 +202,9 @@
<Compile Include="..\MediaBrowser.Model\Entities\ChapterInfo.cs">
<Link>Entities\ChapterInfo.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Entities\CollectionType.cs">
+ <Link>Entities\CollectionType.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Entities\DisplayPreferences.cs">
<Link>Entities\DisplayPreferences.cs</Link>
</Compile>
@@ -337,6 +340,9 @@
<Compile Include="..\MediaBrowser.Model\MediaInfo\BlurayDiscInfo.cs">
<Link>MediaInfo\BlurayDiscInfo.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\MediaInfo\Constants.cs">
+ <Link>MediaInfo\Constants.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\MediaInfo\IBlurayExaminer.cs">
<Link>MediaInfo\IBlurayExaminer.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index 710e5f6b4..877eb5444 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -110,6 +110,7 @@
<Compile Include="LiveTv\SeriesTimerInfoDto.cs" />
<Compile Include="LiveTv\TimerInfoDto.cs" />
<Compile Include="Logging\NullLogger.cs" />
+ <Compile Include="MediaInfo\Constants.cs" />
<Compile Include="News\NewsItem.cs" />
<Compile Include="Providers\ExternalIdInfo.cs" />
<Compile Include="Providers\ImageProviderInfo.cs" />
diff --git a/MediaBrowser.Model/MediaInfo/Constants.cs b/MediaBrowser.Model/MediaInfo/Constants.cs
new file mode 100644
index 000000000..bada7bc79
--- /dev/null
+++ b/MediaBrowser.Model/MediaInfo/Constants.cs
@@ -0,0 +1,24 @@
+
+namespace MediaBrowser.Model.MediaInfo
+{
+ public class Container
+ {
+ public string MP4 = "MP4";
+ }
+
+ public class AudioCodec
+ {
+ public string AAC = "AAC";
+ public string MP3 = "MP3";
+ }
+
+ public class VideoCodec
+ {
+ public string H263 = "H263";
+ public string H264 = "H264";
+ public string H265 = "H265";
+ public string MPEG4 = "MPEG4";
+ public string MSMPEG4 = "MSMPEG4";
+ public string VC1 = "VC1";
+ }
+}
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index 662bbdf3e..f516c0878 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -220,14 +220,28 @@ namespace MediaBrowser.Server.Implementations.Channels
? null
: _userManager.GetUserById(new Guid(query.UserId));
- var id = new Guid(query.ChannelId);
- var channel = _channelEntities.First(i => i.Id == id);
- var channelProvider = GetChannelProvider(channel);
+ var queryChannelId = query.ChannelId;
+ var channels = string.IsNullOrWhiteSpace(queryChannelId)
+ ? _channelEntities
+ : _channelEntities.Where(i => i.Id == new Guid(queryChannelId));
- var items = await GetChannelItems(channelProvider, user, query.CategoryId, cancellationToken)
- .ConfigureAwait(false);
+ var itemTasks = channels.Select(async channel =>
+ {
+ var channelProvider = GetChannelProvider(channel);
+
+ var items = await GetChannelItems(channelProvider, user, query.CategoryId, cancellationToken)
+ .ConfigureAwait(false);
+
+ var channelId = channel.Id.ToString("N");
+
+ var tasks = items.Select(i => GetChannelItemEntity(i, channelId, cancellationToken));
+
+ return await Task.WhenAll(tasks).ConfigureAwait(false);
+ });
- return await GetReturnItems(items, user, query, cancellationToken).ConfigureAwait(false);
+ var results = await Task.WhenAll(itemTasks).ConfigureAwait(false);
+
+ return await GetReturnItems(results.SelectMany(i => i), user, query, cancellationToken).ConfigureAwait(false);
}
private readonly SemaphoreSlim _resourcePool = new SemaphoreSlim(1, 1);
@@ -316,22 +330,13 @@ namespace MediaBrowser.Server.Implementations.Channels
return Path.Combine(_config.ApplicationPaths.CachePath, channelId, categoryKey, user.Id.ToString("N") + ".json");
}
- private async Task<QueryResult<BaseItemDto>> GetReturnItems(IEnumerable<ChannelItemInfo> items, User user, ChannelItemQuery query, CancellationToken cancellationToken)
+ private async Task<QueryResult<BaseItemDto>> GetReturnItems(IEnumerable<BaseItem> items, User user, ChannelItemQuery query, CancellationToken cancellationToken)
{
- // Get everything
- var fields = Enum.GetNames(typeof(ItemFields))
- .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true))
- .ToList();
-
- var tasks = items.Select(i => GetChannelItemEntity(i, cancellationToken));
-
- IEnumerable<BaseItem> entities = await Task.WhenAll(tasks).ConfigureAwait(false);
+ items = ApplyFilters(items, query.Filters, user);
- entities = ApplyFilters(entities, query.Filters, user);
+ items = _libraryManager.Sort(items, user, query.SortBy, query.SortOrder ?? SortOrder.Ascending);
- entities = _libraryManager.Sort(entities, user, query.SortBy, query.SortOrder ?? SortOrder.Ascending);
-
- var all = entities.ToList();
+ var all = items.ToList();
var totalCount = all.Count;
if (query.StartIndex.HasValue)
@@ -345,6 +350,11 @@ namespace MediaBrowser.Server.Implementations.Channels
await RefreshIfNeeded(all, cancellationToken).ConfigureAwait(false);
+ // Get everything
+ var fields = Enum.GetNames(typeof(ItemFields))
+ .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true))
+ .ToList();
+
var returnItemArray = all.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
.ToArray();
@@ -358,10 +368,10 @@ namespace MediaBrowser.Server.Implementations.Channels
private string GetIdToHash(string externalId)
{
// Increment this as needed to force new downloads
- return externalId + "3";
+ return externalId + "4";
}
- private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, CancellationToken cancellationToken)
+ private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, string internalChannnelId, CancellationToken cancellationToken)
{
BaseItem item;
Guid id;
@@ -434,6 +444,7 @@ namespace MediaBrowser.Server.Implementations.Channels
channelItem.OriginalImageUrl = info.ImageUrl;
channelItem.ExternalId = info.Id;
+ channelItem.ChannelId = internalChannnelId;
channelItem.ChannelItemType = info.Type;
var channelMediaItem = item as IChannelMediaItem;
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index 558087a25..905e6e676 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -381,7 +381,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
{
firstMovie.IsMultiPart = true;
- _logger.Info("Multi-part video found: " + firstMovie.Path);
+ _logger.Debug("Multi-part video found: " + firstMovie.Path);
return firstMovie;
}
@@ -411,7 +411,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
{
firstMovie.HasLocalAlternateVersions = true;
- _logger.Info("Multi-version video found: " + firstMovie.Path);
+ _logger.Debug("Multi-version video found: " + firstMovie.Path);
return firstMovie;
}
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index 540e54f3b..4b9dad90a 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -229,6 +229,9 @@
<Content Include="dashboard-ui\css\images\items\folders\music.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\css\images\items\folders\musicvideos.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\css\images\items\folders\photos.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>