aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-06-16 21:56:23 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-06-16 21:56:23 -0400
commit21fd761b05584481d9f6293ca48e373f356c80b6 (patch)
tree47f8c0a461e6a99bd75f588792cb0f865ad56ee4 /MediaBrowser.Server.Implementations
parentf91889e3c465edc3ca2c8079429e17646ef1c440 (diff)
fixes #838 - Support rtmp protocol with channels
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs11
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs12
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs39
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json24
-rw-r--r--MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs7
6 files changed, 45 insertions, 52 deletions
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs b/MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs
index fdc5cfd22..43de6080f 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs
@@ -8,8 +8,8 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Querying;
using System;
using System.Collections.Generic;
@@ -182,7 +182,7 @@ namespace MediaBrowser.Server.Implementations.Channels
var list = sources.ToList();
- var cachedVersions = list.Where(i => i.LocationType == LocationType.FileSystem).ToList();
+ var cachedVersions = list.Where(i => i.Protocol == MediaProtocol.File).ToList();
if (cachedVersions.Count > 0)
{
@@ -190,7 +190,12 @@ namespace MediaBrowser.Server.Implementations.Channels
return;
}
- var source = list.First();
+ var source = list.FirstOrDefault(i => i.Protocol == MediaProtocol.Http);
+
+ if (source == null)
+ {
+ return;
+ }
var options = new HttpRequestOptions
{
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index ad775b576..59e4e695d 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -280,7 +280,7 @@ namespace MediaBrowser.Server.Implementations.Channels
MediaStreams = GetMediaStreams(info).ToList(),
Container = info.Container,
- LocationType = info.IsRemote ? LocationType.Remote : LocationType.FileSystem,
+ Protocol = info.Protocol,
Path = info.Path,
RequiredHttpHeaders = info.RequiredHttpHeaders,
RunTimeTicks = item.RunTimeTicks,
@@ -555,17 +555,18 @@ namespace MediaBrowser.Server.Implementations.Channels
return GetChannelItemEntity(i.Item2, channelProvider, channel, token);
});
- IEnumerable<BaseItem> internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false);
+ var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false);
- internalItems = ApplyFilters(internalItems, query.Filters, user);
+ internalItems = ApplyFilters(internalItems, query.Filters, user).ToArray();
+ await RefreshIfNeeded(internalItems, cancellationToken).ConfigureAwait(false);
if (query.StartIndex.HasValue)
{
- internalItems = internalItems.Skip(query.StartIndex.Value);
+ internalItems = internalItems.Skip(query.StartIndex.Value).ToArray();
}
if (query.Limit.HasValue)
{
- internalItems = internalItems.Take(query.Limit.Value);
+ internalItems = internalItems.Take(query.Limit.Value).ToArray();
}
var returnItemArray = internalItems.Select(i => _dtoService.GetBaseItemDto(i, query.Fields, user))
@@ -658,6 +659,7 @@ namespace MediaBrowser.Server.Implementations.Channels
});
var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false);
+ await RefreshIfNeeded(internalItems, cancellationToken).ConfigureAwait(false);
var returnItemArray = internalItems.Select(i => _dtoService.GetBaseItemDto(i, query.Fields, user))
.ToArray();
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 6a0723c52..c7c93057d 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1111,7 +1111,7 @@ namespace MediaBrowser.Server.Implementations.Dto
if (tvChannel != null)
{
- dto.MediaSources = GetMediaSources(tvChannel);
+ dto.MediaSources = tvChannel.GetMediaSources(true).ToList();
}
var channelItem = item as IChannelItem;
@@ -1123,43 +1123,6 @@ namespace MediaBrowser.Server.Implementations.Dto
}
}
- public List<MediaSourceInfo> GetMediaSources(BaseItem item)
- {
- var video = item as Video;
-
- if (video != null)
- {
- return video.GetMediaSources(true).ToList();
- }
-
- var audio = item as Audio;
-
- if (audio != null)
- {
- return audio.GetMediaSources(true).ToList();
- }
-
- var result = new List<MediaSourceInfo>
- {
- new MediaSourceInfo
- {
- Id = item.Id.ToString("N"),
- LocationType = item.LocationType,
- Name = item.Name,
- Path = GetMappedPath(item),
- MediaStreams = _itemRepo.GetMediaStreams(new MediaStreamQuery
- {
- ItemId = item.Id
-
- }).ToList(),
-
- RunTimeTicks = item.RunTimeTicks
- }
- };
-
- return result;
- }
-
private string GetMappedPath(IHasMetadata item)
{
var path = item.Path;
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
index 249d7f3a7..412b2e7bd 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -222,7 +222,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
RunTimeTicks = (info.EndDate - info.StartDate).Ticks,
OriginalAirDate = info.OriginalAirDate,
- MediaSources = _dtoService.GetMediaSources((BaseItem)recording)
+ MediaSources = recording.GetMediaSources(true).ToList()
};
dto.MediaStreams = dto.MediaSources.SelectMany(i => i.MediaStreams).ToList();
@@ -317,7 +317,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
Id = info.Id.ToString("N"),
MediaType = info.MediaType,
ExternalId = info.ExternalId,
- MediaSources = _dtoService.GetMediaSources(info)
+ MediaSources = info.GetMediaSources(true).ToList()
};
if (user != null)
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
index d4c31a61e..8e698095f 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
@@ -148,5 +148,27 @@
"LabelChapterDownloaders": "Chapter downloaders:",
"LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.",
"HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderLatestChannelMedia": "Latest Channel Items"
+ "HeaderLatestChannelMedia": "Latest Channel Items",
+ "ButtonOrganizeFile": "Organize File",
+ "ButtonDeleteFile": "Delete File",
+ "HeaderOrganizeFile": "Organize File",
+ "HeaderDeleteFile": "Delete File",
+ "StatusSkipped": "Skipped",
+ "StatusFailed": "Failed",
+ "StatusSuccess": "Success",
+ "MessageFileWillBeDeleted": "The following file will be deleted:",
+ "MessageSureYouWishToProceed": "Are you sure you wish to proceed?",
+ "MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:",
+ "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:",
+ "MessageDestinationTo": "to:",
+ "HeaderSelectWatchFolder": "Select Watch Folder",
+ "HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.",
+ "OrganizePatternResult": "Result: {0}",
+ "HeaderRestart": "Restart",
+ "HeaderShutdown": "Shutdown",
+ "MessageConfirmRestart": "Are you sure you wish to restart Media Browser Server?",
+ "MessageConfirmShutdown": "Are you sure you wish to shutdown Media Browser Server?",
+ "ButtonUpdateNow": "Update Now",
+ "NewVersionOfSomethingAvailable": "A new version of {0} is available!",
+ "VersionXIsAvailableForDownload": "Version {0} is now available for download."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs b/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs
index 1f2db0dcf..056a526f6 100644
--- a/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs
+++ b/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs
@@ -14,6 +14,7 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Model.MediaInfo;
namespace MediaBrowser.Server.Implementations.MediaEncoder
{
@@ -133,15 +134,15 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder
// Add some time for the first chapter to make sure we don't end up with a black image
var time = chapter.StartPositionTicks == 0 ? TimeSpan.FromTicks(Math.Min(FirstChapterTicks, video.RunTimeTicks ?? 0)) : TimeSpan.FromTicks(chapter.StartPositionTicks);
- InputType type;
+ var protocol = MediaProtocol.File;
- var inputPath = MediaEncoderHelpers.GetInputArgument(video.Path, false, video.VideoType, video.IsoType, null, video.PlayableStreamFileNames, out type);
+ var inputPath = MediaEncoderHelpers.GetInputArgument(video.Path, protocol, null, video.PlayableStreamFileNames);
try
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
- using (var stream = await _encoder.ExtractVideoImage(inputPath, type, video.Video3DFormat, time, cancellationToken).ConfigureAwait(false))
+ using (var stream = await _encoder.ExtractVideoImage(inputPath, protocol, video.Video3DFormat, time, cancellationToken).ConfigureAwait(false))
{
using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, true))
{