diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-03-25 13:52:36 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-03-25 13:52:36 -0400 |
| commit | d9108f69f35080acb5ebefaefcd469595529afa2 (patch) | |
| tree | 3f04e719877b9cdec9529ca34406b753f6492abc | |
| parent | d6832e7a41c2a24f7dd998284e8e4f6eacf1d188 (diff) | |
| parent | 72fe76ab1008f0bd38157cc37cde45797b5f6417 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/Emby
424 files changed, 14370 insertions, 3451 deletions
diff --git a/Emby.Drawing/Emby.Drawing.csproj b/Emby.Drawing/Emby.Drawing.csproj index 4ebbbfd0a..dc410c321 100644 --- a/Emby.Drawing/Emby.Drawing.csproj +++ b/Emby.Drawing/Emby.Drawing.csproj @@ -33,7 +33,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="ImageMagickSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> diff --git a/Emby.Drawing/packages.config b/Emby.Drawing/packages.config index fab573efc..af298b3e1 100644 --- a/Emby.Drawing/packages.config +++ b/Emby.Drawing/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="ImageMagickSharp" version="1.0.0.18" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.Api/ApiEntryPoint.cs b/MediaBrowser.Api/ApiEntryPoint.cs index 55f191f1a..117ff2305 100644 --- a/MediaBrowser.Api/ApiEntryPoint.cs +++ b/MediaBrowser.Api/ApiEntryPoint.cs @@ -63,6 +63,15 @@ namespace MediaBrowser.Api _mediaSourceManager = mediaSourceManager; Instance = this; + _sessionManager.PlaybackProgress += _sessionManager_PlaybackProgress; + } + + void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e) + { + if (!string.IsNullOrWhiteSpace(e.PlaySessionId)) + { + PingTranscodingJob(e.PlaySessionId, e.IsPaused); + } } /// <summary> @@ -300,26 +309,31 @@ namespace MediaBrowser.Api PingTimer(job, false); } } - internal void PingTranscodingJob(string playSessionId) + internal void PingTranscodingJob(string playSessionId, bool? isUserPaused) { if (string.IsNullOrEmpty(playSessionId)) { throw new ArgumentNullException("playSessionId"); } - //Logger.Debug("PingTranscodingJob PlaySessionId={0}", playSessionId); + //Logger.Debug("PingTranscodingJob PlaySessionId={0} isUsedPaused: {1}", playSessionId, isUserPaused); - var jobs = new List<TranscodingJob>(); + List<TranscodingJob> jobs; lock (_activeTranscodingJobs) { // This is really only needed for HLS. // Progressive streams can stop on their own reliably - jobs = jobs.Where(j => string.Equals(playSessionId, j.PlaySessionId, StringComparison.OrdinalIgnoreCase)).ToList(); + jobs = _activeTranscodingJobs.Where(j => string.Equals(playSessionId, j.PlaySessionId, StringComparison.OrdinalIgnoreCase)).ToList(); } foreach (var job in jobs) { + if (isUserPaused.HasValue) + { + //Logger.Debug("Setting job.IsUserPaused to {0}. jobId: {1}", isUserPaused, job.Id); + job.IsUserPaused = isUserPaused.Value; + } PingTimer(job, true); } } @@ -655,6 +669,7 @@ namespace MediaBrowser.Api public object ProcessLock = new object(); public bool HasExited { get; set; } + public bool IsUserPaused { get; set; } public string Id { get; set; } diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs index c3b031448..4f3e3fb28 100644 --- a/MediaBrowser.Api/BaseApiService.cs +++ b/MediaBrowser.Api/BaseApiService.cs @@ -196,9 +196,13 @@ namespace MediaBrowser.Api return name; } - return libraryManager.RootFolder - .GetRecursiveChildren(i => i is IHasArtist) - .Cast<IHasArtist>() + var items = libraryManager.GetItemList(new InternalItemsQuery + { + IncludeItemTypes = new[] { typeof(Audio).Name, typeof(MusicVideo).Name, typeof(MusicAlbum).Name } + }); + + return items + .OfType<IHasArtist>() .SelectMany(i => i.AllArtists) .DistinctNames() .FirstOrDefault(i => @@ -239,8 +243,12 @@ namespace MediaBrowser.Api return name; } - return libraryManager.RootFolder - .GetRecursiveChildren(i => i is Game) + var items = libraryManager.GetItemList(new InternalItemsQuery + { + IncludeItemTypes = new[] { typeof(Game).Name } + }); + + return items .SelectMany(i => i.Genres) .DistinctNames() .FirstOrDefault(i => diff --git a/MediaBrowser.Api/GamesService.cs b/MediaBrowser.Api/GamesService.cs index a27c872f1..040872fcc 100644 --- a/MediaBrowser.Api/GamesService.cs +++ b/MediaBrowser.Api/GamesService.cs @@ -108,7 +108,7 @@ namespace MediaBrowser.Api IncludeItemTypes = new[] { typeof(GameSystem).Name } }; var parentIds = new string[] { } ; - var gameSystems = _libraryManager.GetItems(query, parentIds) + var gameSystems = _libraryManager.GetItemList(query, parentIds) .Cast<GameSystem>() .ToList(); @@ -129,7 +129,7 @@ namespace MediaBrowser.Api IncludeItemTypes = new[] { typeof(Game).Name } }; var parentIds = new string[] { }; - var games = _libraryManager.GetItems(query, parentIds) + var games = _libraryManager.GetItemList(query, parentIds) .Cast<Game>() .ToList(); @@ -192,7 +192,7 @@ namespace MediaBrowser.Api _userDataRepository, _dtoService, Logger, - request, item => item is Game, + request, new[] { typeof(Game) }, SimilarItemsHelper.GetSimiliarityScore); return ToOptimizedSerializedResultUsingCache(result); diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 8d58070fd..e5fe5bd68 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -699,6 +699,7 @@ namespace MediaBrowser.Api.Images private ImageFormat[] GetClientSupportedFormats() { + //Logger.Debug("Request types: {0}", string.Join(",", Request.AcceptTypes ?? new string[] { })); var supportsWebP = (Request.AcceptTypes ?? new string[] { }).Contains("image/webp", StringComparer.OrdinalIgnoreCase); var userAgent = Request.UserAgent ?? string.Empty; diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index 896f8c990..097546af6 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -289,7 +289,6 @@ namespace MediaBrowser.Api.Library private readonly IActivityManager _activityManager; private readonly ILocalizationManager _localization; private readonly ILiveTvManager _liveTv; - private readonly IChannelManager _channelManager; private readonly ITVSeriesManager _tvManager; private readonly ILibraryMonitor _libraryMonitor; private readonly IFileSystem _fileSystem; @@ -298,7 +297,7 @@ namespace MediaBrowser.Api.Library /// Initializes a new instance of the <see cref="LibraryService" /> class. /// </summary> public LibraryService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager, - IDtoService dtoService, IUserDataManager userDataManager, IAuthorizationContext authContext, IActivityManager activityManager, ILocalizationManager localization, ILiveTvManager liveTv, IChannelManager channelManager, ITVSeriesManager tvManager, ILibraryMonitor libraryMonitor, IFileSystem fileSystem) + IDtoService dtoService, IUserDataManager userDataManager, IAuthorizationContext authContext, IActivityManager activityManager, ILocalizationManager localization, ILiveTvManager liveTv, ITVSeriesManager tvManager, ILibraryMonitor libraryMonitor, IFileSystem fileSystem) { _itemRepo = itemRepo; _libraryManager = libraryManager; @@ -309,7 +308,6 @@ namespace MediaBrowser.Api.Library _activityManager = activityManager; _localization = localization; _liveTv = liveTv; - _channelManager = channelManager; _tvManager = tvManager; _libraryMonitor = libraryMonitor; _fileSystem = fileSystem; @@ -379,11 +377,10 @@ namespace MediaBrowser.Api.Library } var program = item as IHasProgramAttributes; - var channelItem = item as ChannelVideoItem; - if (item is Movie || (program != null && program.IsMovie) || (channelItem != null && channelItem.ContentType == ChannelMediaContentType.Movie) || (channelItem != null && channelItem.ContentType == ChannelMediaContentType.MovieExtra)) + if (item is Movie || (program != null && program.IsMovie) || item is Trailer) { - return new MoviesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _channelManager) + return new MoviesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService) { AuthorizationContext = AuthorizationContext, Logger = Logger, @@ -400,7 +397,7 @@ namespace MediaBrowser.Api.Library }); } - if (item is Series || (program != null && program.IsSeries) || (channelItem != null && channelItem.ContentType == ChannelMediaContentType.Episode)) + if (item is Series || (program != null && program.IsSeries)) { return new TvShowsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _tvManager) { @@ -447,13 +444,11 @@ namespace MediaBrowser.Api.Library public void Post(PostUpdatedSeries request) { - var series = _libraryManager.GetItems(new InternalItemsQuery + var series = _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(Series).Name } - }).Items; - - series = series.Where(i => string.Equals(request.TvdbId, i.GetProviderId(MetadataProviders.Tvdb), StringComparison.OrdinalIgnoreCase)).ToArray(); + }).Where(i => string.Equals(request.TvdbId, i.GetProviderId(MetadataProviders.Tvdb), StringComparison.OrdinalIgnoreCase)).ToArray(); if (series.Length > 0) { @@ -470,11 +465,11 @@ namespace MediaBrowser.Api.Library public void Post(PostUpdatedMovies request) { - var movies = _libraryManager.GetItems(new InternalItemsQuery + var movies = _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(Movie).Name } - }).Items; + }).ToArray(); if (!string.IsNullOrWhiteSpace(request.ImdbId)) { @@ -664,87 +659,38 @@ namespace MediaBrowser.Api.Library /// <returns>System.Object.</returns> public object Get(GetItemCounts request) { - var filteredItems = GetAllLibraryItems(request.UserId, _userManager, _libraryManager, null, i => i.LocationType != LocationType.Virtual && FilterItem(i, request, request.UserId)); + var user = string.IsNullOrWhiteSpace(request.UserId) ? null : _userManager.GetUserById(request.UserId); var counts = new ItemCounts { - AlbumCount = filteredItems.Count(i => i is MusicAlbum), - EpisodeCount = filteredItems.Count(i => i is Episode), - GameCount = filteredItems.Count(i => i is Game), - GameSystemCount = filteredItems.Count(i => i is GameSystem), - MovieCount = filteredItems.Count(i => i is Movie), - SeriesCount = filteredItems.Count(i => i is Series), - SongCount = filteredItems.Count(i => i is Audio), - MusicVideoCount = filteredItems.Count(i => i is MusicVideo), - BoxSetCount = filteredItems.Count(i => i is BoxSet), - BookCount = filteredItems.Count(i => i is Book), - - UniqueTypes = filteredItems.Select(i => i.GetClientTypeName()).Distinct().ToList() + AlbumCount = GetCount(typeof(MusicAlbum), user, request), + EpisodeCount = GetCount(typeof(Episode), user, request), + GameCount = GetCount(typeof(Game), user, request), + GameSystemCount = GetCount(typeof(GameSystem), user, request), + MovieCount = GetCount(typeof(Movie), user, request), + SeriesCount = GetCount(typeof(Series), user, request), + SongCount = GetCount(typeof(Audio), user, request), + MusicVideoCount = GetCount(typeof(MusicVideo), user, request), + BoxSetCount = GetCount(typeof(BoxSet), user, request), + BookCount = GetCount(typeof(Book), user, request) }; return ToOptimizedSerializedResultUsingCache(counts); } - private IList<BaseItem> GetAllLibraryItems(string userId, IUserManager userManager, ILibraryManager libraryManager, string parentId, Func<BaseItem, bool> filter) - { - if (!string.IsNullOrEmpty(parentId)) - { - var folder = (Folder)libraryManager.GetItemById(new Guid(parentId)); - - if (!string.IsNullOrWhiteSpace(userId)) - { - var user = userManager.GetUserById(userId); - - if (user == null) - { - throw new ArgumentException("User not found"); - } - - return folder - .GetRecursiveChildren(user, filter) - .ToList(); - } - - return folder - .GetRecursiveChildren(filter); - } - if (!string.IsNullOrWhiteSpace(userId)) - { - var user = userManager.GetUserById(userId); - - if (user == null) - { - throw new ArgumentException("User not found"); - } - - return userManager - .GetUserById(userId) - .RootFolder - .GetRecursiveChildren(user, filter) - .ToList(); - } - - return libraryManager - .RootFolder - .GetRecursiveChildren(filter); - } - - private bool FilterItem(BaseItem item, GetItemCounts request, string userId) + private int GetCount(Type type, User user, GetItemCounts request) { - if (!string.IsNullOrWhiteSpace(userId)) - { - if (request.IsFavorite.HasValue) - { - var val = request.IsFavorite.Value; - - if (_userDataManager.GetUserData(userId, item.GetUserDataKey()).IsFavorite != val) - { - return false; - } - } - } + var query = new InternalItemsQuery(user) + { + IncludeItemTypes = new[] { type.Name }, + Limit = 0, + Recursive = true, + ExcludeLocationTypes = new[] { LocationType.Virtual }, + SourceTypes = new[] { SourceType.Library }, + IsFavorite = request.IsFavorite + }; - return true; + return _libraryManager.GetItemsResult(query).TotalRecordCount; } /// <summary> @@ -985,20 +931,15 @@ namespace MediaBrowser.Api.Library ? new string[] { } : request.IncludeItemTypes.Split(','); - Func<BaseItem, bool> filter = i => + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; + + var query = new InternalItemsQuery(user) { - if (includeTypes.Length > 0) - { - if (!includeTypes.Contains(i.GetType().Name, StringComparer.OrdinalIgnoreCase)) - { - return false; - } - } - - return true; + IncludeItemTypes = includeTypes, + Recursive = true }; - IEnumerable<BaseItem> items = GetAllLibraryItems(request.UserId, _userManager, _libraryManager, null, filter); + var items = _libraryManager.GetItemList(query); var lookup = items .ToLookup(i => i.ProductionYear ?? -1) diff --git a/MediaBrowser.Api/Library/LibraryStructureService.cs b/MediaBrowser.Api/Library/LibraryStructureService.cs index decd19602..82931e11e 100644 --- a/MediaBrowser.Api/Library/LibraryStructureService.cs +++ b/MediaBrowser.Api/Library/LibraryStructureService.cs @@ -201,10 +201,10 @@ namespace MediaBrowser.Api.Library var rootFolderPath = _appPaths.DefaultUserViewsPath; var virtualFolderPath = Path.Combine(rootFolderPath, name); - - if (_fileSystem.DirectoryExists(virtualFolderPath)) + while (_fileSystem.DirectoryExists(virtualFolderPath)) { - throw new ArgumentException("There is already a media library with the name " + name + "."); + name += "1"; + virtualFolderPath = Path.Combine(rootFolderPath, name); } if (request.Paths != null) @@ -236,7 +236,7 @@ namespace MediaBrowser.Api.Library { foreach (var path in request.Paths) { - LibraryHelpers.AddMediaPath(_fileSystem, request.Name, path, _appPaths); + LibraryHelpers.AddMediaPath(_fileSystem, name, path, _appPaths); } } } diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index 344d6ab3d..5b7bc78a8 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -478,19 +478,30 @@ namespace MediaBrowser.Api.LiveTv public string Feature { get; set; } } + [Route("/LiveTv/TunerHosts/Satip/IniMappings", "GET", Summary = "Gets available mappings")] + [Authenticated(AllowBeforeStartupWizard = true)] + public class GetSatIniMappings : IReturn<List<NameValuePair>> + { + + } + public class LiveTvService : BaseApiService { private readonly ILiveTvManager _liveTvManager; private readonly IUserManager _userManager; private readonly IConfigurationManager _config; private readonly IHttpClient _httpClient; + private readonly ILibraryManager _libraryManager; + private readonly IDtoService _dtoService; - public LiveTvService(ILiveTvManager liveTvManager, IUserManager userManager, IConfigurationManager config, IHttpClient httpClient) + public LiveTvService(ILiveTvManager liveTvManager, IUserManager userManager, IConfigurationManager config, IHttpClient httpClient, ILibraryManager libraryManager, IDtoService dtoService) { _liveTvManager = liveTvManager; _userManager = userManager; _config = config; _httpClient = httpClient; + _libraryManager = libraryManager; + _dtoService = dtoService; } public async Task<object> Get(GetLiveTvRegistrationInfo request) @@ -500,6 +511,11 @@ namespace MediaBrowser.Api.LiveTv return ToOptimizedResult(result); } + public object Get(GetSatIniMappings request) + { + return ToOptimizedResult(_liveTvManager.GetSatIniMappings()); + } + public async Task<object> Get(GetSchedulesDirectCountries request) { // https://json.schedulesdirect.org/20141201/available/countries @@ -581,7 +597,7 @@ namespace MediaBrowser.Api.LiveTv public async Task<object> Get(GetChannels request) { - var result = await _liveTvManager.GetChannels(new LiveTvChannelQuery + var channelResult = await _liveTvManager.GetInternalChannels(new LiveTvChannelQuery { ChannelType = request.Type, UserId = request.UserId, @@ -593,16 +609,30 @@ namespace MediaBrowser.Api.LiveTv EnableFavoriteSorting = request.EnableFavoriteSorting, AddCurrentProgram = request.AddCurrentProgram - }, GetDtoOptions(request), CancellationToken.None).ConfigureAwait(false); + }, CancellationToken.None).ConfigureAwait(false); + + var user = string.IsNullOrEmpty(request.UserId) ? null : _userManager.GetUserById(request.UserId); + + var returnArray = _dtoService.GetBaseItemDtos(channelResult.Items, GetDtoOptions(Request), user).ToArray(); + var result = new QueryResult<BaseItemDto> + { + Items = returnArray, + TotalRecordCount = channelResult.TotalRecordCount + }; + return ToOptimizedSerializedResultUsingCache(result); } - public async Task<object> Get(GetChannel request) + public object Get(GetChannel request) { - var user = string.IsNullOrEmpty(request.UserId) ? null : _userManager.GetUserById(request.UserId); + var user = string.IsNullOrWhiteSpace(request.UserId) ? null : _userManager.GetUserById(request.UserId); + + var item = _libraryManager.GetItemById(request.Id); + + var dtoOptions = GetDtoOptions(request); - var result = await _liveTvManager.GetChannel(request.Id, CancellationToken.None, user).ConfigureAwait(false); + var result = _dtoService.GetBaseItemDto(item, dtoOptions, user); return ToOptimizedSerializedResultUsingCache(result); } diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index be79f4d74..cdc0cd6ae 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -47,7 +47,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="MoreLinq"> <HintPath>..\packages\morelinq.1.4.0\lib\net35\MoreLinq.dll</HintPath> diff --git a/MediaBrowser.Api/Movies/MoviesService.cs b/MediaBrowser.Api/Movies/MoviesService.cs index 36cbc6ffa..b3d485dc7 100644 --- a/MediaBrowser.Api/Movies/MoviesService.cs +++ b/MediaBrowser.Api/Movies/MoviesService.cs @@ -91,22 +91,21 @@ namespace MediaBrowser.Api.Movies private readonly IItemRepository _itemRepo; private readonly IDtoService _dtoService; - private readonly IChannelManager _channelManager; - /// <summary> - /// Initializes a new instance of the <see cref="MoviesService"/> class. + /// Initializes a new instance of the <see cref="MoviesService" /> class. /// </summary> /// <param name="userManager">The user manager.</param> /// <param name="userDataRepository">The user data repository.</param> /// <param name="libraryManager">The library manager.</param> - public MoviesService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService, IChannelManager channelManager) + /// <param name="itemRepo">The item repo.</param> + /// <param name="dtoService">The dto service.</param> + public MoviesService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService) { _userManager = userManager; _userDataRepository = userDataRepository; _libraryManager = libraryManager; _itemRepo = itemRepo; _dtoService = dtoService; - _channelManager = channelManager; } /// <summary> @@ -138,8 +137,16 @@ namespace MediaBrowser.Api.Movies { IncludeItemTypes = new[] { typeof(Movie).Name } }; + + if (user.Configuration.IncludeTrailersInSuggestions) + { + var includeList = query.IncludeItemTypes.ToList(); + includeList.Add(typeof(Trailer).Name); + query.IncludeItemTypes = includeList.ToArray(); + } + var parentIds = string.IsNullOrWhiteSpace(request.ParentId) ? new string[] { } : new[] { request.ParentId }; - var movies = _libraryManager.GetItems(query, parentIds); + var movies = _libraryManager.GetItemList(query, parentIds); movies = _libraryManager.ReplaceVideosWithPrimaryVersions(movies); var listEligibleForCategories = new List<BaseItem>(); @@ -150,19 +157,6 @@ namespace MediaBrowser.Api.Movies listEligibleForCategories.AddRange(list); listEligibleForSuggestion.AddRange(list); - if (user.Configuration.IncludeTrailersInSuggestions) - { - var trailerResult = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery - { - ContentTypes = new[] { ChannelMediaContentType.MovieExtra }, - ExtraTypes = new[] { ExtraType.Trailer }, - UserId = user.Id.ToString("N") - - }, CancellationToken.None).ConfigureAwait(false); - - listEligibleForSuggestion.AddRange(trailerResult.Items); - } - listEligibleForCategories = listEligibleForCategories .DistinctBy(i => i.Name, StringComparer.OrdinalIgnoreCase) .DistinctBy(i => i.GetProviderId(MetadataProviders.Imdb) ?? Guid.NewGuid().ToString(), StringComparer.OrdinalIgnoreCase) @@ -194,36 +188,25 @@ namespace MediaBrowser.Api.Movies { IncludeItemTypes = new[] { typeof(Movie).Name } }; + + if (user == null || user.Configuration.IncludeTrailersInSuggestions) + { + var includeList = query.IncludeItemTypes.ToList(); + includeList.Add(typeof(Trailer).Name); + query.IncludeItemTypes = includeList.ToArray(); + } + var parentIds = new string[] { }; - var list = _libraryManager.GetItems(query, parentIds) + var list = _libraryManager.GetItemList(query, parentIds) .Where(i => { // Strip out secondary versions var v = i as Video; return v != null && !v.PrimaryVersionId.HasValue; }) + .DistinctBy(i => i.GetProviderId(MetadataProviders.Imdb) ?? Guid.NewGuid().ToString("N")) .ToList(); - if (user != null && user.Configuration.IncludeTrailersInSuggestions) - { - var trailerResult = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery - { - ContentTypes = new[] { ChannelMediaContentType.MovieExtra }, - ExtraTypes = new[] { ExtraType.Trailer }, - UserId = user.Id.ToString("N") - - }, CancellationToken.None).ConfigureAwait(false); - - var newTrailers = trailerResult.Items; - - list.AddRange(newTrailers); - - list = list - .DistinctBy(i => i.Name, StringComparer.OrdinalIgnoreCase) - .DistinctBy(i => i.GetProviderId(MetadataProviders.Imdb) ?? Guid.NewGuid().ToString(), StringComparer.OrdinalIgnoreCase) - .ToList(); - } - if (item is Video) { var imdbId = item.GetProviderId(MetadataProviders.Imdb); diff --git a/MediaBrowser.Api/Movies/TrailersService.cs b/MediaBrowser.Api/Movies/TrailersService.cs index ed197911a..4883b38fb 100644 --- a/MediaBrowser.Api/Movies/TrailersService.cs +++ b/MediaBrowser.Api/Movies/TrailersService.cs @@ -12,6 +12,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Collections; +using MediaBrowser.Controller.Localization; +using MediaBrowser.Model.Serialization; namespace MediaBrowser.Api.Movies { @@ -41,87 +44,37 @@ namespace MediaBrowser.Api.Movies private readonly ILibraryManager _libraryManager; private readonly IDtoService _dtoService; - private readonly IChannelManager _channelManager; + private readonly ICollectionManager _collectionManager; + private readonly ILocalizationManager _localizationManager; + private readonly IJsonSerializer _json; - /// <summary> - /// Initializes a new instance of the <see cref="TrailersService"/> class. - /// </summary> - /// <param name="userManager">The user manager.</param> - /// <param name="userDataRepository">The user data repository.</param> - /// <param name="libraryManager">The library manager.</param> - public TrailersService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IDtoService dtoService, IChannelManager channelManager) + public TrailersService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IDtoService dtoService, ICollectionManager collectionManager, ILocalizationManager localizationManager, IJsonSerializer json) { _userManager = userManager; _userDataRepository = userDataRepository; _libraryManager = libraryManager; _dtoService = dtoService; - _channelManager = channelManager; + _collectionManager = collectionManager; + _localizationManager = localizationManager; + _json = json; } - public async Task<object> Get(Getrailers request) + public object Get(Getrailers request) { - var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; - var result = await GetAllTrailers(user).ConfigureAwait(false); - - IEnumerable<BaseItem> items = result.Items; - - // Apply filters - // Run them starting with the ones that are likely to reduce the list the most - foreach (var filter in request.GetFilters().OrderByDescending(f => (int)f)) - { - items = ItemsService.ApplyFilter(items, filter, user, _userDataRepository); - } - - items = _libraryManager.Sort(items, user, request.GetOrderBy(), request.SortOrder ?? SortOrder.Ascending); + var json = _json.SerializeToString(request); + var getItems = _json.DeserializeFromString<GetItems>(json); - var itemsArray = items.ToList(); + getItems.IncludeItemTypes = "Trailer"; - var pagedItems = ApplyPaging(request, itemsArray); - - var dtoOptions = GetDtoOptions(request); - - var returnItems = _dtoService.GetBaseItemDtos(pagedItems, dtoOptions, user).ToArray(); - - return new ItemsResult + return new ItemsService(_userManager, _libraryManager, _userDataRepository, _localizationManager, _dtoService, _collectionManager) { - TotalRecordCount = itemsArray.Count, - Items = returnItems - }; - } + AuthorizationContext = AuthorizationContext, + Logger = Logger, + Request = Request, + ResultFactory = ResultFactory, + SessionContext = SessionContext - private IEnumerable<BaseItem> ApplyPaging(Getrailers request, IEnumerable<BaseItem> items) - { - // Start at - if (request.StartIndex.HasValue) - { - items = items.Skip(request.StartIndex.Value); - } - - // Return limit - if (request.Limit.HasValue) - { - items = items.Take(request.Limit.Value); - } - - return items; - } - - private async Task<QueryResult<BaseItem>> GetAllTrailers(User user) - { - var trailerResult = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery - { - ContentTypes = new[] { ChannelMediaContentType.MovieExtra }, - ExtraTypes = new[] { ExtraType.Trailer }, - UserId = user.Id.ToString("N") - - }, CancellationToken.None).ConfigureAwait(false); - - - return new QueryResult<BaseItem> - { - Items = trailerResult.Items, - TotalRecordCount = trailerResult.TotalRecordCount - }; + }.Get(getItems); } } } diff --git a/MediaBrowser.Api/Music/AlbumsService.cs b/MediaBrowser.Api/Music/AlbumsService.cs index 548598d42..9628ab231 100644 --- a/MediaBrowser.Api/Music/AlbumsService.cs +++ b/MediaBrowser.Api/Music/AlbumsService.cs @@ -52,10 +52,15 @@ namespace MediaBrowser.Api.Music public object Get(GetSimilarArtists request) { - var result = GetSimilarItemsResult( - - request, + var dtoOptions = GetDtoOptions(request); + var result = SimilarItemsHelper.GetSimilarItemsResult(dtoOptions, _userManager, + _itemRepo, + _libraryManager, + _userDataRepository, + _dtoService, + Logger, + request, new[] { typeof(MusicArtist) }, SimilarItemsHelper.GetSimiliarityScore); return ToOptimizedSerializedResultUsingCache(result); @@ -76,44 +81,11 @@ namespace MediaBrowser.Api.Music _userDataRepository, _dtoService, Logger, - request, item => item is MusicAlbum, + request, new[] { typeof(MusicAlbum) }, GetAlbumSimilarityScore); return ToOptimizedSerializedResultUsingCache(result); } - - private ItemsResult GetSimilarItemsResult(BaseGetSimilarItemsFromItem request, Func<BaseItem, List<PersonInfo>, List<PersonInfo>, BaseItem, int> getSimilarityScore) - { - var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; - - var item = string.IsNullOrEmpty(request.Id) ? - (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder : - _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id); - - var inputItems = _libraryManager.GetArtists(user.RootFolder.GetRecursiveChildren(user, i => i is IHasArtist).OfType<IHasArtist>()); - - var list = inputItems.ToList(); - - var items = SimilarItemsHelper.GetSimilaritems(item, _libraryManager, list, getSimilarityScore).ToList(); - - IEnumerable<BaseItem> returnItems = items; - - if (request.Limit.HasValue) - { - returnItems = returnItems.Take(request.Limit.Value); - } - - var dtoOptions = GetDtoOptions(request); - - var result = new ItemsResult - { - Items = _dtoService.GetBaseItemDtos(returnItems, dtoOptions, user).ToArray(), - - TotalRecordCount = items.Count - }; - - return result; - } /// <summary> /// Gets the album similarity score. diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index f66363da6..9d2c8c444 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -214,7 +214,7 @@ namespace MediaBrowser.Api.Playback args += " -map -0:a"; } - if (state.SubtitleStream == null) + if (state.SubtitleStream == null || state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Hls) { args += " -map -0:s"; } @@ -477,7 +477,7 @@ namespace MediaBrowser.Api.Playback var pts = string.Empty; - if (state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream && !state.VideoRequest.CopyTimestamps) + if (state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode && !state.VideoRequest.CopyTimestamps) { var seconds = TimeSpan.FromTicks(state.Request.StartTimeTicks ?? 0).TotalSeconds; @@ -575,7 +575,7 @@ namespace MediaBrowser.Api.Playback var output = string.Empty; - if (state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream) + if (state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode) { var subParam = GetTextSubtitleParam(state); @@ -865,7 +865,7 @@ namespace MediaBrowser.Api.Playback { var arg = string.Format("-i {0}", GetInputPathArgument(state)); - if (state.SubtitleStream != null) + if (state.SubtitleStream != null && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode) { if (state.SubtitleStream.IsExternal && !state.SubtitleStream.IsTextSubtitleStream) { @@ -1482,6 +1482,17 @@ namespace MediaBrowser.Api.Playback videoRequest.CopyTimestamps = string.Equals("true", val, StringComparison.OrdinalIgnoreCase); } } + else if (i == 25) + { + if (!string.IsNullOrWhiteSpace(val) && videoRequest != null) + { + SubtitleDeliveryMethod method; + if (Enum.TryParse(val, out method)) + { + videoRequest.SubtitleMethod = method; + } + } + } } } diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 4a83615b4..000c02256 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -529,7 +529,12 @@ namespace MediaBrowser.Api.Playback.Hls "subs" : null; - AppendPlaylist(builder, playlistUrl, totalBitrate, subtitleGroup); + if (!string.IsNullOrWhiteSpace(subtitleGroup)) + { + AddSubtitles(state, subtitleStreams, builder); + } + + AppendPlaylist(builder, state, playlistUrl, totalBitrate, subtitleGroup); if (EnableAdaptiveBitrateStreaming(state, isLiveStream)) { @@ -540,17 +545,12 @@ namespace MediaBrowser.Api.Playback.Hls var newBitrate = totalBitrate - variation; var variantUrl = ReplaceBitrate(playlistUrl, requestedVideoBitrate, (requestedVideoBitrate - variation)); - AppendPlaylist(builder, variantUrl, newBitrate, subtitleGroup); + AppendPlaylist(builder, state, variantUrl, newBitrate, subtitleGroup); variation *= 2; newBitrate = totalBitrate - variation; variantUrl = ReplaceBitrate(playlistUrl, requestedVideoBitrate, (requestedVideoBitrate - variation)); - AppendPlaylist(builder, variantUrl, newBitrate, subtitleGroup); - } - - if (!string.IsNullOrWhiteSpace(subtitleGroup)) - { - AddSubtitles(state, subtitleStreams, builder); + AppendPlaylist(builder, state, variantUrl, newBitrate, subtitleGroup); } return builder.ToString(); @@ -566,11 +566,11 @@ namespace MediaBrowser.Api.Playback.Hls private void AddSubtitles(StreamState state, IEnumerable<MediaStream> subtitles, StringBuilder builder) { - var selectedIndex = state.SubtitleStream == null ? (int?)null : state.SubtitleStream.Index; + var selectedIndex = state.SubtitleStream == null || state.VideoRequest.SubtitleMethod != SubtitleDeliveryMethod.Hls ? (int?)null : state.SubtitleStream.Index; foreach (var stream in subtitles) { - const string format = "#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID=\"subs\",NAME=\"{0}\",DEFAULT={1},FORCED={2},URI=\"{3}\",LANGUAGE=\"{4}\""; + const string format = "#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID=\"subs\",NAME=\"{0}\",DEFAULT={1},FORCED={2},AUTOSELECT=YES,URI=\"{3}\",LANGUAGE=\"{4}\""; var name = stream.Language; @@ -579,10 +579,11 @@ namespace MediaBrowser.Api.Playback.Hls if (string.IsNullOrWhiteSpace(name)) name = stream.Codec ?? "Unknown"; - var url = string.Format("{0}/Subtitles/{1}/subtitles.m3u8?SegmentLength={2}", + var url = string.Format("{0}/Subtitles/{1}/subtitles.m3u8?SegmentLength={2}&api_key={3}", state.Request.MediaSourceId, stream.Index.ToString(UsCulture), - 30.ToString(UsCulture)); + 30.ToString(UsCulture), + AuthorizationContext.GetAuthorizationInfo(Request).Token); var line = string.Format(format, name, @@ -635,9 +636,15 @@ namespace MediaBrowser.Api.Playback.Hls //return state.VideoRequest.VideoBitRate.HasValue; } - private void AppendPlaylist(StringBuilder builder, string url, int bitrate, string subtitleGroup) + private void AppendPlaylist(StringBuilder builder, StreamState state, string url, int bitrate, string subtitleGroup) { - var header = "#EXT-X-STREAM-INF:BANDWIDTH=" + bitrate.ToString(UsCulture); + var header = "#EXT-X-STREAM-INF:BANDWIDTH=" + bitrate.ToString(UsCulture) + ",AVERAGE-BANDWIDTH=" + bitrate.ToString(UsCulture); + + // tvos wants resolution, codecs, framerate + //if (state.TargetFramerate.HasValue) + //{ + // header += string.Format(",FRAME-RATE=\"{0}\"", state.TargetFramerate.Value.ToString(CultureInfo.InvariantCulture)); + //} if (!string.IsNullOrWhiteSpace(subtitleGroup)) { @@ -694,6 +701,7 @@ namespace MediaBrowser.Api.Playback.Hls var builder = new StringBuilder(); builder.AppendLine("#EXTM3U"); + builder.AppendLine("#EXT-X-PLAYLIST-TYPE:VOD"); builder.AppendLine("#EXT-X-VERSION:3"); builder.AppendLine("#EXT-X-TARGETDURATION:" + Math.Ceiling((segmentLengths.Length > 0 ? segmentLengths.Max() : state.SegmentLength)).ToString(UsCulture)); builder.AppendLine("#EXT-X-MEDIA-SEQUENCE:0"); @@ -820,7 +828,7 @@ namespace MediaBrowser.Api.Playback.Hls var keyFrameArg = string.Format(" -force_key_frames \"expr:gte(t,n_forced*{0})\"", state.SegmentLength.ToString(UsCulture)); - var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; + var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode; args += " " + GetVideoQualityParam(state, GetH264Encoder(state)) + keyFrameArg; @@ -846,7 +854,7 @@ namespace MediaBrowser.Api.Playback.Hls private bool EnableCopyTs(StreamState state) { - return state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream; + return state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode; } protected override string GetCommandLineArguments(string outputPath, StreamState state, bool isEncoding) diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs index 22c38009a..f8adbdc22 100644 --- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs @@ -9,6 +9,7 @@ using MediaBrowser.Model.Serialization; using ServiceStack; using System; using CommonIO; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Api.Playback.Hls { @@ -104,7 +105,7 @@ namespace MediaBrowser.Api.Playback.Hls var keyFrameArg = string.Format(" -force_key_frames \"expr:gte(t,n_forced*{0})\"", state.SegmentLength.ToString(UsCulture)); - var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; + var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode; args += " " + GetVideoQualityParam(state, GetH264Encoder(state)) + keyFrameArg; diff --git a/MediaBrowser.Api/Playback/Progressive/AudioService.cs b/MediaBrowser.Api/Playback/Progressive/AudioService.cs index ada4761c7..1d8f5003f 100644 --- a/MediaBrowser.Api/Playback/Progressive/AudioService.cs +++ b/MediaBrowser.Api/Playback/Progressive/AudioService.cs @@ -73,9 +73,13 @@ namespace MediaBrowser.Api.Playback.Progressive audioTranscodeParams.Add("-ac " + state.OutputAudioChannels.Value.ToString(UsCulture)); } - if (state.OutputAudioSampleRate.HasValue) + // opus will fail on 44100 + if (!string.Equals(state.OutputAudioCodec, "opus", global::System.StringComparison.OrdinalIgnoreCase)) { - audioTranscodeParams.Add("-ar " + state.OutputAudioSampleRate.Value.ToString(UsCulture)); + if (state.OutputAudioSampleRate.HasValue) + { + audioTranscodeParams.Add("-ar " + state.OutputAudioSampleRate.Value.ToString(UsCulture)); + } } const string vn = " -vn"; diff --git a/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs b/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs index 2719b1faf..f766f46b1 100644 --- a/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs +++ b/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs @@ -61,8 +61,9 @@ namespace MediaBrowser.Api.Playback.Progressive { try { - new ProgressiveFileCopier(_fileSystem, _job) - .StreamFile(Path, responseStream); + var task = new ProgressiveFileCopier(_fileSystem, _job, Logger).StreamFile(Path, responseStream); + + Task.WaitAll(task); } catch (IOException) { @@ -91,19 +92,21 @@ namespace MediaBrowser.Api.Playback.Progressive { private readonly IFileSystem _fileSystem; private readonly TranscodingJob _job; + private readonly ILogger _logger; // 256k private const int BufferSize = 262144; - + private long _bytesWritten = 0; - public ProgressiveFileCopier(IFileSystem fileSystem, TranscodingJob job) + public ProgressiveFileCopier(IFileSystem fileSystem, TranscodingJob job, ILogger logger) { _fileSystem = fileSystem; _job = job; + _logger = logger; } - public void StreamFile(string path, Stream outputStream) + public async Task StreamFile(string path, Stream outputStream) { var eofCount = 0; long position = 0; @@ -126,8 +129,7 @@ namespace MediaBrowser.Api.Playback.Progressive { eofCount++; } - var task = Task.Delay(100); - Task.WaitAll(task); + await Task.Delay(100).ConfigureAwait(false); } else { @@ -145,6 +147,30 @@ namespace MediaBrowser.Api.Playback.Progressive int count; while ((count = source.Read(array, 0, array.Length)) != 0) { + //if (_job != null) + //{ + // var didPause = false; + // var totalPauseTime = 0; + + // if (_job.IsUserPaused) + // { + // _logger.Debug("Pausing writing to network stream while user has paused playback."); + + // while (_job.IsUserPaused && totalPauseTime < 30000) + // { + // didPause = true; + // var pauseTime = 500; + // totalPauseTime += pauseTime; + // await Task.Delay(pauseTime).ConfigureAwait(false); + // } + // } + + // if (didPause) + // { + // _logger.Debug("Resuming writing to network stream due to user unpausing playback."); + // } + //} + destination.Write(array, 0, count); _bytesWritten += count; diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs index b7e180eca..1353d8fe7 100644 --- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs +++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs @@ -13,6 +13,7 @@ using System; using System.Globalization; using System.IO; using CommonIO; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Api.Playback.Progressive { @@ -161,7 +162,7 @@ namespace MediaBrowser.Api.Playback.Progressive args += keyFrameArg; - var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; + var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode; var hasCopyTs = false; // Add resolution params, if specified diff --git a/MediaBrowser.Api/Reports/ReportsService.cs b/MediaBrowser.Api/Reports/ReportsService.cs index 6cbe2fd89..ae6fbc9e2 100644 --- a/MediaBrowser.Api/Reports/ReportsService.cs +++ b/MediaBrowser.Api/Reports/ReportsService.cs @@ -213,8 +213,6 @@ namespace MediaBrowser.Api.Reports SortBy = request.GetOrderBy(), SortOrder = request.SortOrder ?? SortOrder.Ascending, - Filter = i => ApplyAdditionalFilters(request, i, user, _libraryManager), - IsFavorite = request.IsFavorite, Limit = request.Limit, StartIndex = request.StartIndex, @@ -258,7 +256,10 @@ namespace MediaBrowser.Api.Reports MinPlayers = request.MinPlayers, MaxPlayers = request.MaxPlayers, MinCommunityRating = request.MinCommunityRating, - MinCriticRating = request.MinCriticRating + MinCriticRating = request.MinCriticRating, + ParentIndexNumber = request.ParentIndexNumber, + AiredDuringSeason = request.AiredDuringSeason, + AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater }; if (!string.IsNullOrWhiteSpace(request.Ids)) @@ -302,285 +303,79 @@ namespace MediaBrowser.Api.Reports } } - if (request.HasQueryLimit == false) - { - query.StartIndex = null; - query.Limit = null; - } - - return query; - } - - private bool ApplyAdditionalFilters(BaseReportRequest request, BaseItem i, User user, ILibraryManager libraryManager) - { - // Artists - if (!string.IsNullOrEmpty(request.ArtistIds)) - { - var artistIds = request.ArtistIds.Split(new[] { '|', ',' }); - - var audio = i as IHasArtist; - - if (!(audio != null && artistIds.Any(id => - { - var artistItem = libraryManager.GetItemById(id); - return artistItem != null && audio.HasAnyArtist(artistItem.Name); - }))) - { - return false; - } - } - - // Artists - if (!string.IsNullOrEmpty(request.Artists)) - { - var artists = request.Artists.Split('|'); - - var audio = i as IHasArtist; - - if (!(audio != null && artists.Any(audio.HasAnyArtist))) - { - return false; - } - } - - // Albums - if (!string.IsNullOrEmpty(request.Albums)) - { - var albums = request.Albums.Split('|'); - - var audio = i as Audio; - - if (audio != null) - { - if (!albums.Any(a => string.Equals(a, audio.Album, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - var album = i as MusicAlbum; - - if (album != null) - { - if (!albums.Any(a => string.Equals(a, album.Name, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - var musicVideo = i as MusicVideo; - - if (musicVideo != null) - { - if (!albums.Any(a => string.Equals(a, musicVideo.Album, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - return false; - } - - // Min index number - if (request.MinIndexNumber.HasValue) + if (!string.IsNullOrEmpty(request.MinPremiereDate)) { - if (!(i.IndexNumber.HasValue && i.IndexNumber.Value >= request.MinIndexNumber.Value)) - { - return false; - } + query.MinPremiereDate = DateTime.Parse(request.MinPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); } - // Min official rating - if (!string.IsNullOrEmpty(request.MinOfficialRating)) + if (!string.IsNullOrEmpty(request.MaxPremiereDate)) { - var level = _localization.GetRatingLevel(request.MinOfficialRating); - - if (level.HasValue) - { - var rating = i.CustomRating; - - if (string.IsNullOrEmpty(rating)) - { - rating = i.OfficialRating; - } - - if (!string.IsNullOrEmpty(rating)) - { - var itemLevel = _localization.GetRatingLevel(rating); - - if (!(!itemLevel.HasValue || itemLevel.Value >= level.Value)) - { - return false; - } - } - } + query.MaxPremiereDate = DateTime.Parse(request.MaxPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); } - // Max official rating - if (!string.IsNullOrEmpty(request.MaxOfficialRating)) + // Filter by Series Status + if (!string.IsNullOrEmpty(request.SeriesStatus)) { - var level = _localization.GetRatingLevel(request.MaxOfficialRating); - - if (level.HasValue) - { - var rating = i.CustomRating; - - if (string.IsNullOrEmpty(rating)) - { - rating = i.OfficialRating; - } - - if (!string.IsNullOrEmpty(rating)) - { - var itemLevel = _localization.GetRatingLevel(rating); - - if (!(!itemLevel.HasValue || itemLevel.Value <= level.Value)) - { - return false; - } - } - } + query.SeriesStatuses = request.SeriesStatus.Split(',').Select(d => (SeriesStatus)Enum.Parse(typeof(SeriesStatus), d, true)).ToArray(); } - // LocationTypes - if (!string.IsNullOrEmpty(request.LocationTypes)) + // Filter by Series AirDays + if (!string.IsNullOrEmpty(request.AirDays)) { - var vals = request.LocationTypes.Split(','); - if (!vals.Contains(i.LocationType.ToString(), StringComparer.OrdinalIgnoreCase)) - { - return false; - } + query.AirDays = request.AirDays.Split(',').Select(d => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), d, true)).ToArray(); } // ExcludeLocationTypes if (!string.IsNullOrEmpty(request.ExcludeLocationTypes)) { - var vals = request.ExcludeLocationTypes.Split(','); - if (vals.Contains(i.LocationType.ToString(), StringComparer.OrdinalIgnoreCase)) - { - return false; - } + query.ExcludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray(); } - if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater)) - { - var ok = new[] { i }.OfType<IHasAlbumArtist>() - .Any(p => string.Compare(request.AlbumArtistStartsWithOrGreater, p.AlbumArtists.FirstOrDefault(), StringComparison.CurrentCultureIgnoreCase) < 1); - - if (!ok) - { - return false; - } - } - - // Filter by Series Status - if (!string.IsNullOrEmpty(request.SeriesStatus)) + if (!string.IsNullOrEmpty(request.LocationTypes)) { - var vals = request.SeriesStatus.Split(','); - - var ok = new[] { i }.OfType<Series>().Any(p => p.Status.HasValue && vals.Contains(p.Status.Value.ToString(), StringComparer.OrdinalIgnoreCase)); - - if (!ok) - { - return false; - } + query.LocationTypes = request.LocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray(); } - // Filter by Series AirDays - if (!string.IsNullOrEmpty(request.AirDays)) + // Min official rating + if (!string.IsNullOrEmpty(request.MinOfficialRating)) { - var days = request.AirDays.Split(',').Select(d => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), d, true)); - - var ok = new[] { i }.OfType<Series>().Any(p => p.AirDays != null && days.Any(d => p.AirDays.Contains(d))); - - if (!ok) - { - return false; - } + query.MinParentalRating = _localization.GetRatingLevel(request.MinOfficialRating); } - if (request.ParentIndexNumber.HasValue) - { - var filterValue = request.ParentIndexNumber.Value; - - var episode = i as Episode; - - if (episode != null) - { - if (episode.ParentIndexNumber.HasValue && episode.ParentIndexNumber.Value != filterValue) - { - return false; - } - } - - var song = i as Audio; - - if (song != null) - { - if (song.ParentIndexNumber.HasValue && song.ParentIndexNumber.Value != filterValue) - { - return false; - } - } - } - - if (request.AiredDuringSeason.HasValue) + // Max official rating + if (!string.IsNullOrEmpty(request.MaxOfficialRating)) { - var episode = i as Episode; - - if (episode == null) - { - return false; - } - - if (!Series.FilterEpisodesBySeason(new[] { episode }, request.AiredDuringSeason.Value, true).Any()) - { - return false; - } + query.MaxParentalRating = _localization.GetRatingLevel(request.MinOfficialRating); } - if (!string.IsNullOrEmpty(request.MinPremiereDate)) + // Artists + if (!string.IsNullOrEmpty(request.ArtistIds)) { - var date = DateTime.Parse(request.MinPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); + var artistIds = request.ArtistIds.Split(new[] { '|', ',' }); - if (!(i.PremiereDate.HasValue && i.PremiereDate.Value >= date)) - { - return false; - } + var artistItems = artistIds.Select(_libraryManager.GetItemById).Where(i => i != null).ToList(); + query.ArtistNames = artistItems.Select(i => i.Name).ToArray(); } - if (!string.IsNullOrEmpty(request.MaxPremiereDate)) + // Artists + if (!string.IsNullOrEmpty(request.Artists)) { - var date = DateTime.Parse(request.MaxPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); - - if (!(i.PremiereDate.HasValue && i.PremiereDate.Value <= date)) - { - return false; - } + query.ArtistNames = request.Artists.Split('|'); } - return true; - } - - /// <summary> Applies the paging. </summary> - /// <param name="request"> The request. </param> - /// <param name="items"> The items. </param> - /// <returns> IEnumerable{BaseItem}. </returns> - private IEnumerable<BaseItem> ApplyPaging(BaseReportRequest request, IEnumerable<BaseItem> items) - { - // Start at - if (request.StartIndex.HasValue) + // Albums + if (!string.IsNullOrEmpty(request.Albums)) { - items = items.Skip(request.StartIndex.Value); + query.AlbumNames = request.Albums.Split('|'); } - // Return limit - if (request.Limit.HasValue) + if (request.HasQueryLimit == false) { - items = items.Take(request.Limit.Value); + query.StartIndex = null; + query.Limit = null; } - return items; + return query; } /// <summary> Gets query result. </summary> diff --git a/MediaBrowser.Api/SimilarItemsHelper.cs b/MediaBrowser.Api/SimilarItemsHelper.cs index d114446ee..277bba1dd 100644 --- a/MediaBrowser.Api/SimilarItemsHelper.cs +++ b/MediaBrowser.Api/SimilarItemsHelper.cs @@ -54,21 +54,7 @@ namespace MediaBrowser.Api /// </summary> public static class SimilarItemsHelper { - /// <summary> - /// Gets the similar items. - /// </summary> - /// <param name="dtoOptions">The dto options.</param> - /// <param name="userManager">The user manager.</param> - /// <param name="itemRepository">The item repository.</param> - /// <param name="libraryManager">The library manager.</param> - /// <param name="userDataRepository">The user data repository.</param> - /// <param name="dtoService">The dto service.</param> - /// <param name="logger">The logger.</param> - /// <param name="request">The request.</param> - /// <param name="includeInSearch">The include in search.</param> - /// <param name="getSimilarityScore">The get similarity score.</param> - /// <returns>ItemsResult.</returns> - internal static ItemsResult GetSimilarItemsResult(DtoOptions dtoOptions, IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataManager userDataRepository, IDtoService dtoService, ILogger logger, BaseGetSimilarItemsFromItem request, Func<BaseItem, bool> includeInSearch, Func<BaseItem, List<PersonInfo>, List<PersonInfo>, BaseItem, int> getSimilarityScore) + internal static ItemsResult GetSimilarItemsResult(DtoOptions dtoOptions, IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataManager userDataRepository, IDtoService dtoService, ILogger logger, BaseGetSimilarItemsFromItem request, Type[] includeTypes, Func<BaseItem, List<PersonInfo>, List<PersonInfo>, BaseItem, int> getSimilarityScore) { var user = !string.IsNullOrWhiteSpace(request.UserId) ? userManager.GetUserById(request.UserId) : null; @@ -76,11 +62,13 @@ namespace MediaBrowser.Api (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder : libraryManager.RootFolder) : libraryManager.GetItemById(request.Id); - Func<BaseItem, bool> filter = i => i.Id != item.Id && includeInSearch(i); + var query = new InternalItemsQuery(user) + { + IncludeItemTypes = includeTypes.Select(i => i.Name).ToArray(), + Recursive = true + }; - var inputItems = user == null - ? libraryManager.RootFolder.GetRecursiveChildren(filter) - : user.RootFolder.GetRecursiveChildren(user, filter); + var inputItems = libraryManager.GetItemList(query); var items = GetSimilaritems(item, libraryManager, inputItems, getSimilarityScore) .ToList(); diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs index 06db1de74..14bd6b61f 100644 --- a/MediaBrowser.Api/StartupWizardService.cs +++ b/MediaBrowser.Api/StartupWizardService.cs @@ -68,6 +68,8 @@ namespace MediaBrowser.Api _config.Configuration.EnableLocalizedGuids = true; _config.Configuration.EnableCustomPathSubFolders = true; _config.Configuration.EnableDateLastRefresh = true; + _config.Configuration.EnableStandaloneMusicKeys = true; + _config.Configuration.EnableCaseSensitiveItemIds = true; _config.SaveConfiguration(); } diff --git a/MediaBrowser.Api/Subtitles/SubtitleService.cs b/MediaBrowser.Api/Subtitles/SubtitleService.cs index 37034751d..ff17e988e 100644 --- a/MediaBrowser.Api/Subtitles/SubtitleService.cs +++ b/MediaBrowser.Api/Subtitles/SubtitleService.cs @@ -164,6 +164,8 @@ namespace MediaBrowser.Api.Subtitles long positionTicks = 0; var segmentLengthTicks = TimeSpan.FromSeconds(request.SegmentLength).Ticks; + var accessToken = AuthorizationContext.GetAuthorizationInfo(Request).Token; + while (positionTicks < runtime) { var remaining = runtime - positionTicks; @@ -173,9 +175,10 @@ namespace MediaBrowser.Api.Subtitles var endPositionTicks = Math.Min(runtime, positionTicks + segmentLengthTicks); - var url = string.Format("stream.srt?StartPositionTicks={0}&EndPositionTicks={1}", + var url = string.Format("stream.vtt?StartPositionTicks={0}&EndPositionTicks={1}&api_key={2}", positionTicks.ToString(CultureInfo.InvariantCulture), - endPositionTicks.ToString(CultureInfo.InvariantCulture)); + endPositionTicks.ToString(CultureInfo.InvariantCulture), + accessToken); builder.AppendLine(url); diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs index 2dad9533f..5b5b0a902 100644 --- a/MediaBrowser.Api/TvShowsService.cs +++ b/MediaBrowser.Api/TvShowsService.cs @@ -263,7 +263,7 @@ namespace MediaBrowser.Api _userDataManager, _dtoService, Logger, - request, item => item is Series, + request, new[] { typeof(Series) }, SimilarItemsHelper.GetSimiliarityScore); return ToOptimizedSerializedResultUsingCache(result); @@ -273,11 +273,11 @@ namespace MediaBrowser.Api { var user = _userManager.GetUserById(request.UserId); - var minPremiereDate = DateTime.Now.Date.AddDays(-1).ToUniversalTime(); + var minPremiereDate = DateTime.Now.Date.ToUniversalTime(); var parentIds = string.IsNullOrWhiteSpace(request.ParentId) ? new string[] { } : new[] { request.ParentId }; - var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user) + var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(Episode).Name }, SortBy = new[] { "PremiereDate", "AirTime", "SortName" }, @@ -286,15 +286,15 @@ namespace MediaBrowser.Api StartIndex = request.StartIndex, Limit = request.Limit - }, parentIds); + }, parentIds).ToList(); var options = GetDtoOptions(request); - var returnItems = _dtoService.GetBaseItemDtos(itemsResult.Items, options, user).ToArray(); + var returnItems = _dtoService.GetBaseItemDtos(itemsResult, options, user).ToArray(); var result = new ItemsResult { - TotalRecordCount = itemsResult.TotalRecordCount, + TotalRecordCount = itemsResult.Count, Items = returnItems }; diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 761d10760..ea7e16e8d 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -85,17 +85,16 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{ItemsResult}.</returns> private async Task<ItemsResult> GetItems(GetItems request) { - var parentItem = string.IsNullOrEmpty(request.ParentId) ? null : _libraryManager.GetItemById(request.ParentId); var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; - var result = await GetItemsToSerialize(request, user, parentItem).ConfigureAwait(false); + var result = await GetItemsToSerialize(request, user).ConfigureAwait(false); var dtoOptions = GetDtoOptions(request); return new ItemsResult { - TotalRecordCount = result.Item1.TotalRecordCount, - Items = _dtoService.GetBaseItemDtos(result.Item1.Items, dtoOptions, user).ToArray() + TotalRecordCount = result.TotalRecordCount, + Items = _dtoService.GetBaseItemDtos(result.Items, dtoOptions, user).ToArray() }; } @@ -104,17 +103,16 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <param name="request">The request.</param> /// <param name="user">The user.</param> - /// <param name="parentItem">The parent item.</param> /// <returns>IEnumerable{BaseItem}.</returns> - private async Task<Tuple<QueryResult<BaseItem>, bool>> GetItemsToSerialize(GetItems request, User user, BaseItem parentItem) + private async Task<QueryResult<BaseItem>> GetItemsToSerialize(GetItems request, User user) { var item = string.IsNullOrEmpty(request.ParentId) ? user == null ? _libraryManager.RootFolder : user.RootFolder : - parentItem; + _libraryManager.GetItemById(request.ParentId); if (string.Equals(request.IncludeItemTypes, "Playlist", StringComparison.OrdinalIgnoreCase)) { - item = user == null ? _libraryManager.RootFolder : user.RootFolder; + //item = user == null ? _libraryManager.RootFolder : user.RootFolder; } else if (string.Equals(request.IncludeItemTypes, "BoxSet", StringComparison.OrdinalIgnoreCase)) { @@ -137,21 +135,21 @@ namespace MediaBrowser.Api.UserLibrary result.Items = result.Items.OrderBy(i => ids.IndexOf(i.Id.ToString("N"))).ToArray(); } - return new Tuple<QueryResult<BaseItem>, bool>(result, true); + return result; } if (request.Recursive) { var result = await ((Folder)item).GetItems(GetItemsQuery(request, user)).ConfigureAwait(false); - return new Tuple<QueryResult<BaseItem>, bool>(result, true); + return result; } if (user == null) { var result = await ((Folder)item).GetItems(GetItemsQuery(request, null)).ConfigureAwait(false); - return new Tuple<QueryResult<BaseItem>, bool>(result, true); + return result; } var userRoot = item as UserRootFolder; @@ -160,26 +158,24 @@ namespace MediaBrowser.Api.UserLibrary { var result = await ((Folder)item).GetItems(GetItemsQuery(request, user)).ConfigureAwait(false); - return new Tuple<QueryResult<BaseItem>, bool>(result, true); + return result; } IEnumerable<BaseItem> items = ((Folder)item).GetChildren(user, true); var itemsArray = items.ToArray(); - return new Tuple<QueryResult<BaseItem>, bool>(new QueryResult<BaseItem> + return new QueryResult<BaseItem> { Items = itemsArray, TotalRecordCount = itemsArray.Length - - }, false); + }; } private InternalItemsQuery GetItemsQuery(GetItems request, User user) { - var query = new InternalItemsQuery + var query = new InternalItemsQuery(user) { - User = user, IsPlayed = request.IsPlayed, MediaTypes = request.GetMediaTypes(), IncludeItemTypes = request.GetIncludeItemTypes(), @@ -188,8 +184,6 @@ namespace MediaBrowser.Api.UserLibrary SortBy = request.GetOrderBy(), SortOrder = request.SortOrder ?? SortOrder.Ascending, - Filter = i => ApplyAdditionalFilters(request, i, user, _libraryManager), - IsFavorite = request.IsFavorite, Limit = request.Limit, StartIndex = request.StartIndex, @@ -234,7 +228,11 @@ namespace MediaBrowser.Api.UserLibrary MinPlayers = request.MinPlayers, MaxPlayers = request.MaxPlayers, MinCommunityRating = request.MinCommunityRating, - MinCriticRating = request.MinCriticRating + MinCriticRating = request.MinCriticRating, + ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId), + ParentIndexNumber = request.ParentIndexNumber, + AiredDuringSeason = request.AiredDuringSeason, + AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater }; if (!string.IsNullOrWhiteSpace(request.Ids)) @@ -278,331 +276,73 @@ namespace MediaBrowser.Api.UserLibrary } } - return query; - } - - /// <summary> - /// Applies filtering - /// </summary> - /// <param name="items">The items.</param> - /// <param name="filter">The filter.</param> - /// <param name="user">The user.</param> - /// <param name="repository">The repository.</param> - /// <returns>IEnumerable{BaseItem}.</returns> - internal static IEnumerable<BaseItem> ApplyFilter(IEnumerable<BaseItem> items, ItemFilter filter, User user, IUserDataManager repository) - { - // Avoid implicitly captured closure - var currentUser = user; - - switch (filter) - { - case ItemFilter.IsFavoriteOrLikes: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - if (userdata == null) - { - return false; - } - - var likes = userdata.Likes ?? false; - var favorite = userdata.IsFavorite; - - return likes || favorite; - }); - - case ItemFilter.Likes: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.Likes.HasValue && userdata.Likes.Value; - }); - - case ItemFilter.Dislikes: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.Likes.HasValue && !userdata.Likes.Value; - }); - - case ItemFilter.IsFavorite: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.IsFavorite; - }); - - case ItemFilter.IsResumable: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.PlaybackPositionTicks > 0; - }); - - case ItemFilter.IsPlayed: - return items.Where(item => item.IsPlayed(currentUser)); - - case ItemFilter.IsUnplayed: - return items.Where(item => item.IsUnplayed(currentUser)); - - case ItemFilter.IsFolder: - return items.Where(item => item.IsFolder); - - case ItemFilter.IsNotFolder: - return items.Where(item => !item.IsFolder); - - case ItemFilter.IsRecentlyAdded: - return items.Where(item => (DateTime.UtcNow - item.DateCreated).TotalDays <= 10); - } - - return items; - } - - private bool ApplyAdditionalFilters(GetItems request, BaseItem i, User user, ILibraryManager libraryManager) - { - // Artists - if (!string.IsNullOrEmpty(request.ArtistIds)) - { - var artistIds = request.ArtistIds.Split(new[] { '|', ',' }); - - var audio = i as IHasArtist; - - if (!(audio != null && artistIds.Any(id => - { - var artistItem = libraryManager.GetItemById(id); - return artistItem != null && audio.HasAnyArtist(artistItem.Name); - }))) - { - return false; - } - } - - // Artists - if (!string.IsNullOrEmpty(request.Artists)) - { - var artists = request.Artists.Split('|'); - - var audio = i as IHasArtist; - - if (!(audio != null && artists.Any(audio.HasAnyArtist))) - { - return false; - } - } - - // Albums - if (!string.IsNullOrEmpty(request.Albums)) + if (!string.IsNullOrEmpty(request.MinPremiereDate)) { - var albums = request.Albums.Split('|'); - - var audio = i as Audio; - - if (audio != null) - { - if (!albums.Any(a => string.Equals(a, audio.Album, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - var album = i as MusicAlbum; - - if (album != null) - { - if (!albums.Any(a => string.Equals(a, album.Name, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - var musicVideo = i as MusicVideo; - - if (musicVideo != null) - { - if (!albums.Any(a => string.Equals(a, musicVideo.Album, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - return false; + query.MinPremiereDate = DateTime.Parse(request.MinPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); } - // Min official rating - if (!string.IsNullOrEmpty(request.MinOfficialRating)) + if (!string.IsNullOrEmpty(request.MaxPremiereDate)) { - var level = _localization.GetRatingLevel(request.MinOfficialRating); - - if (level.HasValue) - { - var rating = i.CustomRating; - - if (string.IsNullOrEmpty(rating)) - { - rating = i.OfficialRating; - } - - if (!string.IsNullOrEmpty(rating)) - { - var itemLevel = _localization.GetRatingLevel(rating); - - if (!(!itemLevel.HasValue || itemLevel.Value >= level.Value)) - { - return false; - } - } - } + query.MaxPremiereDate = DateTime.Parse(request.MaxPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); } - // Max official rating - if (!string.IsNullOrEmpty(request.MaxOfficialRating)) + // Filter by Series Status + if (!string.IsNullOrEmpty(request.SeriesStatus)) { - var level = _localization.GetRatingLevel(request.MaxOfficialRating); - - if (level.HasValue) - { - var rating = i.CustomRating; - - if (string.IsNullOrEmpty(rating)) - { - rating = i.OfficialRating; - } - - if (!string.IsNullOrEmpty(rating)) - { - var itemLevel = _localization.GetRatingLevel(rating); - - if (!(!itemLevel.HasValue || itemLevel.Value <= level.Value)) - { - return false; - } - } - } + query.SeriesStatuses = request.SeriesStatus.Split(',').Select(d => (SeriesStatus)Enum.Parse(typeof(SeriesStatus), d, true)).ToArray(); } - // LocationTypes - if (!string.IsNullOrEmpty(request.LocationTypes)) + // Filter by Series AirDays + if (!string.IsNullOrEmpty(request.AirDays)) { - var vals = request.LocationTypes.Split(','); - if (!vals.Contains(i.LocationType.ToString(), StringComparer.OrdinalIgnoreCase)) - { - return false; - } + query.AirDays = request.AirDays.Split(',').Select(d => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), d, true)).ToArray(); } // ExcludeLocationTypes if (!string.IsNullOrEmpty(request.ExcludeLocationTypes)) { - var vals = request.ExcludeLocationTypes.Split(','); - if (vals.Contains(i.LocationType.ToString(), StringComparer.OrdinalIgnoreCase)) - { - return false; - } - } - - if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater)) - { - var ok = new[] { i }.OfType<IHasAlbumArtist>() - .Any(p => string.Compare(request.AlbumArtistStartsWithOrGreater, p.AlbumArtists.FirstOrDefault(), StringComparison.CurrentCultureIgnoreCase) < 1); - - if (!ok) - { - return false; - } + query.ExcludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray(); } - // Filter by Series Status - if (!string.IsNullOrEmpty(request.SeriesStatus)) + if (!string.IsNullOrEmpty(request.LocationTypes)) { - var vals = request.SeriesStatus.Split(','); - - var ok = new[] { i }.OfType<Series>().Any(p => p.Status.HasValue && vals.Contains(p.Status.Value.ToString(), StringComparer.OrdinalIgnoreCase)); - - if (!ok) - { - return false; - } + query.LocationTypes = request.LocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray(); } - - // Filter by Series AirDays - if (!string.IsNullOrEmpty(request.AirDays)) + + // Min official rating + if (!string.IsNullOrEmpty(request.MinOfficialRating)) { - var days = request.AirDays.Split(',').Select(d => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), d, true)); - - var ok = new[] { i }.OfType<Series>().Any(p => p.AirDays != null && days.Any(d => p.AirDays.Contains(d))); - - if (!ok) - { - return false; - } + query.MinParentalRating = _localization.GetRatingLevel(request.MinOfficialRating); } - if (request.ParentIndexNumber.HasValue) + // Max official rating + if (!string.IsNullOrEmpty(request.MaxOfficialRating)) { - var filterValue = request.ParentIndexNumber.Value; - - var episode = i as Episode; - - if (episode != null) - { - if (episode.ParentIndexNumber.HasValue && episode.ParentIndexNumber.Value != filterValue) - { - return false; - } - } - - var song = i as Audio; - - if (song != null) - { - if (song.ParentIndexNumber.HasValue && song.ParentIndexNumber.Value != filterValue) - { - return false; - } - } + query.MaxParentalRating = _localization.GetRatingLevel(request.MinOfficialRating); } - if (request.AiredDuringSeason.HasValue) + // Artists + if (!string.IsNullOrEmpty(request.ArtistIds)) { - var episode = i as Episode; - - if (episode == null) - { - return false; - } + var artistIds = request.ArtistIds.Split(new[] { '|', ',' }); - if (!Series.FilterEpisodesBySeason(new[] { episode }, request.AiredDuringSeason.Value, true).Any()) - { - return false; - } + var artistItems = artistIds.Select(_libraryManager.GetItemById).Where(i => i != null).ToList(); + query.ArtistNames = artistItems.Select(i => i.Name).ToArray(); } - if (!string.IsNullOrEmpty(request.MinPremiereDate)) + // Artists + if (!string.IsNullOrEmpty(request.Artists)) { - var date = DateTime.Parse(request.MinPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); - - if (!(i.PremiereDate.HasValue && i.PremiereDate.Value >= date)) - { - return false; - } + query.ArtistNames = request.Artists.Split('|'); } - if (!string.IsNullOrEmpty(request.MaxPremiereDate)) + // Albums + if (!string.IsNullOrEmpty(request.Albums)) { - var date = DateTime.Parse(request.MaxPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); - - if (!(i.PremiereDate.HasValue && i.PremiereDate.Value <= date)) - { - return false; - } + query.AlbumNames = request.Albums.Split('|'); } - return true; + return query; } } diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs index 08c6b0ba4..0a96a5b06 100644 --- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs +++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs @@ -335,11 +335,6 @@ namespace MediaBrowser.Api.UserLibrary public void Post(ReportPlaybackProgress request) { - if (!string.IsNullOrWhiteSpace(request.PlaySessionId)) - { - ApiEntryPoint.Instance.PingTranscodingJob(request.PlaySessionId); - } - request.SessionId = GetSession().Result.Id; var task = _sessionManager.OnPlaybackProgress(request); @@ -349,7 +344,7 @@ namespace MediaBrowser.Api.UserLibrary public void Post(PingPlaybackSession request) { - ApiEntryPoint.Instance.PingTranscodingJob(request.PlaySessionId); + ApiEntryPoint.Instance.PingTranscodingJob(request.PlaySessionId, null); } /// <summary> diff --git a/MediaBrowser.Api/packages.config b/MediaBrowser.Api/packages.config index ecb1109ca..4f2cbae7c 100644 --- a/MediaBrowser.Api/packages.config +++ b/MediaBrowser.Api/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="morelinq" version="1.4.0" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs index c30cdf1a7..f9dbd766f 100644 --- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -126,6 +126,23 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager } } + private void AddIpv4Option(HttpWebRequest request, HttpRequestOptions options) + { + if (!options.PreferIpv4) + { + return; + } + + request.ServicePoint.BindIPEndPointDelegate = (servicePount, remoteEndPoint, retryCount) => + { + if (remoteEndPoint.AddressFamily == AddressFamily.InterNetwork) + { + return new IPEndPoint(IPAddress.Any, 0); + } + throw new InvalidOperationException("no IPv4 address"); + }; + } + private WebRequest GetRequest(HttpRequestOptions options, string method, bool enableHttpCompression) { var request = CreateWebRequest(options.Url); @@ -133,6 +150,8 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager if (httpWebRequest != null) { + AddIpv4Option(httpWebRequest, options); + AddRequestHeaders(httpWebRequest, options); httpWebRequest.AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None; diff --git a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj index 4bee8c042..2017b40f4 100644 --- a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj +++ b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj @@ -49,7 +49,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="MoreLinq"> <HintPath>..\packages\morelinq.1.4.0\lib\net35\MoreLinq.dll</HintPath> diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs index b5566650c..f3316646b 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs @@ -170,6 +170,17 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks QueueScheduledTask<T>(new TaskExecutionOptions()); } + public void QueueIfNotRunning<T>() + where T : IScheduledTask + { + var task = ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T)); + + if (task.State != TaskState.Running) + { + QueueScheduledTask<T>(new TaskExecutionOptions()); + } + } + public void Execute<T>() where T : IScheduledTask { diff --git a/MediaBrowser.Common.Implementations/packages.config b/MediaBrowser.Common.Implementations/packages.config index 814927228..64b337221 100644 --- a/MediaBrowser.Common.Implementations/packages.config +++ b/MediaBrowser.Common.Implementations/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="morelinq" version="1.4.0" targetFramework="net45" /> <package id="NLog" version="4.2.3" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> diff --git a/MediaBrowser.Common/Net/HttpRequestOptions.cs b/MediaBrowser.Common/Net/HttpRequestOptions.cs index 8c1f63e53..75368a5fc 100644 --- a/MediaBrowser.Common/Net/HttpRequestOptions.cs +++ b/MediaBrowser.Common/Net/HttpRequestOptions.cs @@ -96,6 +96,7 @@ namespace MediaBrowser.Common.Net public TimeSpan CacheLength { get; set; } public int TimeoutMs { get; set; } + public bool PreferIpv4 { get; set; } private string GetHeaderValue(string name) { diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs index c1dc304f6..f1809c451 100644 --- a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs +++ b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs @@ -50,6 +50,9 @@ namespace MediaBrowser.Common.ScheduledTasks void QueueScheduledTask<T>() where T : IScheduledTask; + void QueueIfNotRunning<T>() + where T : IScheduledTask; + /// <summary> /// Queues the scheduled task. /// </summary> diff --git a/MediaBrowser.Controller/Channels/Channel.cs b/MediaBrowser.Controller/Channels/Channel.cs index 839b7d68f..43f7b6637 100644 --- a/MediaBrowser.Controller/Channels/Channel.cs +++ b/MediaBrowser.Controller/Channels/Channel.cs @@ -3,6 +3,7 @@ using MediaBrowser.Model.Channels; using MediaBrowser.Model.Querying; using System; using System.Linq; +using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; @@ -30,6 +31,13 @@ namespace MediaBrowser.Controller.Channels return base.IsVisible(user); } + [IgnoreDataMember] + public override SourceType SourceType + { + get { return SourceType.Channel; } + set { } + } + public override async Task<QueryResult<BaseItem>> GetItems(InternalItemsQuery query) { try @@ -75,5 +83,12 @@ namespace MediaBrowser.Controller.Channels { return false; } + + internal static bool IsChannelVisible(BaseItem channelItem, User user) + { + var channel = ChannelManager.GetChannel(channelItem.ChannelId); + + return channel.IsVisible(user); + } } } diff --git a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs index 17dcf138b..bcb2dc234 100644 --- a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs @@ -12,7 +12,7 @@ using System.Threading; namespace MediaBrowser.Controller.Channels { - public class ChannelAudioItem : Audio, IChannelMediaItem + public class ChannelAudioItem : Audio { public ChannelMediaContentType ContentType { get; set; } diff --git a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs index f662020bb..174cd282a 100644 --- a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs @@ -11,7 +11,7 @@ using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Channels { - public class ChannelFolderItem : Folder, IChannelItem + public class ChannelFolderItem : Folder { public ChannelFolderType ChannelFolderType { get; set; } diff --git a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs index 79ad4b36b..e12a84ba2 100644 --- a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs @@ -13,7 +13,7 @@ using System.Threading; namespace MediaBrowser.Controller.Channels { - public class ChannelVideoItem : Video, IChannelMediaItem, IHasLookupInfo<ChannelItemLookupInfo> + public class ChannelVideoItem : Video { public ChannelMediaContentType ContentType { get; set; } @@ -103,20 +103,6 @@ namespace MediaBrowser.Controller.Channels return list; } - public ChannelItemLookupInfo GetLookupInfo() - { - var info = GetItemLookupInfo<ChannelItemLookupInfo>(); - - info.ContentType = ContentType; - - if (ExtraType.HasValue) - { - info.ExtraType = ExtraType.Value; - } - - return info; - } - protected override string GetInternalMetadataPath(string basePath) { return System.IO.Path.Combine(basePath, "channels", ChannelId, Id.ToString("N")); @@ -132,7 +118,7 @@ namespace MediaBrowser.Controller.Channels return IsVisibleStandaloneInternal(user, false) && IsChannelVisible(this, user); } - internal static bool IsChannelVisible(IChannelItem item, User user) + internal static bool IsChannelVisible(BaseItem item, User user) { var channel = ChannelManager.GetChannel(item.ChannelId); diff --git a/MediaBrowser.Controller/Channels/IChannelManager.cs b/MediaBrowser.Controller/Channels/IChannelManager.cs index fec550df8..e3d2d0440 100644 --- a/MediaBrowser.Controller/Channels/IChannelManager.cs +++ b/MediaBrowser.Controller/Channels/IChannelManager.cs @@ -116,7 +116,7 @@ namespace MediaBrowser.Controller.Channels /// <param name="includeCachedVersions">if set to <c>true</c> [include cached versions].</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{IEnumerable{MediaSourceInfo}}.</returns> - Task<IEnumerable<MediaSourceInfo>> GetStaticMediaSources(IChannelMediaItem item, bool includeCachedVersions, CancellationToken cancellationToken); + Task<IEnumerable<MediaSourceInfo>> GetStaticMediaSources(BaseItem item, bool includeCachedVersions, CancellationToken cancellationToken); /// <summary> /// Gets the channel folder. @@ -141,6 +141,6 @@ namespace MediaBrowser.Controller.Channels /// <param name="progress">The progress.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - Task DownloadChannelItem(IChannelMediaItem item, string destinationPath, IProgress<double> progress, CancellationToken cancellationToken); + Task DownloadChannelItem(BaseItem item, string destinationPath, IProgress<double> progress, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Dto/DtoOptions.cs b/MediaBrowser.Controller/Dto/DtoOptions.cs index a8d1b1862..d627cc67a 100644 --- a/MediaBrowser.Controller/Dto/DtoOptions.cs +++ b/MediaBrowser.Controller/Dto/DtoOptions.cs @@ -17,6 +17,7 @@ namespace MediaBrowser.Controller.Dto public List<ImageType> ImageTypes { get; set; } public int ImageTypeLimit { get; set; } public bool EnableImages { get; set; } + public bool AddProgramRecordingInfo { get; set; } public string DeviceId { get; set; } public DtoOptions() diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 766f1e5ed..4c66a6562 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -8,6 +8,8 @@ using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; +using System.Threading; +using MediaBrowser.Controller.Channels; namespace MediaBrowser.Controller.Entities.Audio { @@ -24,6 +26,8 @@ namespace MediaBrowser.Controller.Entities.Audio IThemeMedia, IArchivable { + public List<ChannelMediaInfo> ChannelMediaSources { get; set; } + public long? Size { get; set; } public string Container { get; set; } public int? TotalBitrate { get; set; } @@ -153,6 +157,31 @@ namespace MediaBrowser.Controller.Entities.Audio /// <returns>System.String.</returns> protected override string CreateUserDataKey() { + if (ConfigurationManager.Configuration.EnableStandaloneMusicKeys) + { + var songKey = IndexNumber.HasValue ? IndexNumber.Value.ToString("0000") : string.Empty; + + + if (ParentIndexNumber.HasValue) + { + songKey = ParentIndexNumber.Value.ToString("0000") + "-" + songKey; + } + songKey+= Name; + + if (!string.IsNullOrWhiteSpace(Album)) + { + songKey = Album + "-" + songKey; + } + + var albumArtist = AlbumArtists.FirstOrDefault(); + if (!string.IsNullOrWhiteSpace(albumArtist)) + { + songKey = albumArtist + "-" + songKey; + } + + return songKey; + } + var parent = AlbumEntity; if (parent != null) @@ -173,7 +202,11 @@ namespace MediaBrowser.Controller.Entities.Audio public override UnratedItem GetBlockUnratedType() { - return UnratedItem.Music; + if (SourceType == SourceType.Library) + { + return UnratedItem.Music; + } + return base.GetBlockUnratedType(); } public SongInfo GetLookupInfo() @@ -189,6 +222,32 @@ namespace MediaBrowser.Controller.Entities.Audio public virtual IEnumerable<MediaSourceInfo> GetMediaSources(bool enablePathSubstitution) { + if (SourceType == SourceType.Channel) + { + var sources = ChannelManager.GetStaticMediaSources(this, false, CancellationToken.None) + .Result.ToList(); + + if (sources.Count > 0) + { + return sources; + } + + var list = new List<MediaSourceInfo> + { + GetVersionInfo(this, enablePathSubstitution) + }; + + foreach (var mediaSource in list) + { + if (string.IsNullOrWhiteSpace(mediaSource.Path)) + { + mediaSource.Type = MediaSourceType.Placeholder; + } + } + + return list; + } + var result = new List<MediaSourceInfo> { GetVersionInfo(this, enablePathSubstitution) diff --git a/MediaBrowser.Controller/Entities/Audio/AudioPodcast.cs b/MediaBrowser.Controller/Entities/Audio/AudioPodcast.cs new file mode 100644 index 000000000..983cc0100 --- /dev/null +++ b/MediaBrowser.Controller/Entities/Audio/AudioPodcast.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Entities.Audio +{ + public class AudioPodcast : Audio + { + } +} diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index c5ce6a2f7..e6178c183 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -34,7 +34,17 @@ namespace MediaBrowser.Controller.Entities.Audio { get { - return GetParents().OfType<MusicArtist>().FirstOrDefault(); + var artist = GetParents().OfType<MusicArtist>().FirstOrDefault(); + + if (artist == null) + { + var name = AlbumArtist; + if (!string.IsNullOrWhiteSpace(name)) + { + artist = LibraryManager.GetArtist(name); + } + } + return artist; } } @@ -106,6 +116,15 @@ namespace MediaBrowser.Controller.Entities.Audio return "MusicAlbum-Musicbrainz-" + id; } + if (ConfigurationManager.Configuration.EnableStandaloneMusicKeys) + { + var albumArtist = AlbumArtist; + if (!string.IsNullOrWhiteSpace(albumArtist)) + { + return albumArtist + "-" + Name; + } + } + return base.CreateUserDataKey(); } @@ -125,7 +144,7 @@ namespace MediaBrowser.Controller.Entities.Audio id.AlbumArtists = AlbumArtists; - var artist = GetParents().OfType<MusicArtist>().FirstOrDefault(); + var artist = MusicArtist; if (artist != null) { diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 3dfbdec56..4117b7521 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -20,9 +20,11 @@ using System.Globalization; using System.IO; using System.Linq; using System.Runtime.Serialization; +using System.Text; using System.Threading; using System.Threading.Tasks; using CommonIO; +using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.LiveTv; namespace MediaBrowser.Controller.Entities @@ -57,7 +59,9 @@ namespace MediaBrowser.Controller.Entities public static string ThemeSongFilename = "theme"; public static string ThemeVideosFolderName = "backdrops"; + [IgnoreDataMember] public string PreferredMetadataCountryCode { get; set; } + [IgnoreDataMember] public string PreferredMetadataLanguage { get; set; } public List<ItemImageInfo> ImageInfos { get; set; } @@ -88,6 +92,7 @@ namespace MediaBrowser.Controller.Entities /// Gets a value indicating whether this instance is in mixed folder. /// </summary> /// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value> + [IgnoreDataMember] public bool IsInMixedFolder { get; set; } [IgnoreDataMember] @@ -166,6 +171,9 @@ namespace MediaBrowser.Controller.Entities [IgnoreDataMember] public bool IsOffline { get; set; } + [IgnoreDataMember] + public virtual SourceType SourceType { get; set; } + /// <summary> /// Returns the folder containing the item. /// If the item is a folder, it returns the folder itself @@ -185,6 +193,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> /// If this content came from an external service, the id of the content on that service /// </summary> [IgnoreDataMember] @@ -252,6 +267,11 @@ namespace MediaBrowser.Controller.Entities { get { + if (SourceType == SourceType.Channel) + { + return false; + } + var locationType = LocationType; return locationType != LocationType.Remote && locationType != LocationType.Virtual; @@ -281,6 +301,40 @@ namespace MediaBrowser.Controller.Entities } } + private List<Tuple<StringBuilder,bool>> GetSortChunks(string s1) + { + var list = new List<Tuple<StringBuilder, bool>>(); + + int thisMarker = 0, thisNumericChunk = 0; + + while ((thisMarker < s1.Length)) + { + if (thisMarker >= s1.Length) + { + break; + } + char thisCh = s1[thisMarker]; + + StringBuilder thisChunk = new StringBuilder(); + + while ((thisMarker < s1.Length) && (thisChunk.Length == 0 || SortHelper.InChunk(thisCh, thisChunk[0]))) + { + thisChunk.Append(thisCh); + thisMarker++; + + if (thisMarker < s1.Length) + { + thisCh = s1[thisMarker]; + } + } + + var isNumeric = thisChunk.Length > 0 && char.IsDigit(thisChunk[0]); + list.Add(new Tuple<StringBuilder, bool>(thisChunk, isNumeric)); + } + + return list; + } + /// <summary> /// This is just a helper for convenience /// </summary> @@ -298,6 +352,11 @@ namespace MediaBrowser.Controller.Entities public virtual bool CanDelete() { + if (SourceType == SourceType.Channel) + { + return false; + } + var locationType = LocationType; return locationType != LocationType.Remote && locationType != LocationType.Virtual; @@ -342,6 +401,7 @@ namespace MediaBrowser.Controller.Entities [IgnoreDataMember] public DateTime DateModified { get; set; } + [IgnoreDataMember] public DateTime DateLastSaved { get; set; } [IgnoreDataMember] @@ -380,6 +440,7 @@ namespace MediaBrowser.Controller.Entities /// Gets or sets the locked fields. /// </summary> /// <value>The locked fields.</value> + [IgnoreDataMember] public List<MetadataFields> LockedFields { get; set; } /// <summary> @@ -433,11 +494,6 @@ namespace MediaBrowser.Controller.Entities { get { - if (!string.IsNullOrWhiteSpace(ForcedSortName)) - { - return ForcedSortName; - } - return _sortName ?? (_sortName = CreateSortName()); } set @@ -455,6 +511,11 @@ namespace MediaBrowser.Controller.Entities protected virtual string GetInternalMetadataPath(string basePath) { + if (SourceType == SourceType.Channel) + { + return System.IO.Path.Combine(basePath, "channels", ChannelId, Id.ToString("N")); + } + var idString = Id.ToString("N"); basePath = System.IO.Path.Combine(basePath, "library"); @@ -468,6 +529,11 @@ namespace MediaBrowser.Controller.Entities /// <returns>System.String.</returns> protected virtual string CreateSortName() { + if (!string.IsNullOrWhiteSpace(ForcedSortName)) + { + return ModifySortChunks(ForcedSortName).ToLower(); + } + if (Name == null) return null; //some items may not have name filled in properly if (!EnableAlphaNumericSorting) @@ -497,7 +563,32 @@ namespace MediaBrowser.Controller.Entities sortable = sortable.Remove(sortable.Length - (searchLower.Length + 1)); } } - return sortable; + return ModifySortChunks(sortable); + } + + private string ModifySortChunks(string name) + { + var chunks = GetSortChunks(name); + + var builder = new StringBuilder(); + + foreach (var chunk in chunks) + { + var chunkBuilder = chunk.Item1; + + // This chunk is numeric + if (chunk.Item2) + { + while (chunkBuilder.Length < 10) + { + chunkBuilder.Insert(0, '0'); + } + } + + builder.Append(chunkBuilder); + } + //Logger.Debug("ModifySortChunks Start: {0} End: {1}", name, builder.ToString()); + return builder.ToString(); } [IgnoreDataMember] @@ -596,6 +687,18 @@ namespace MediaBrowser.Controller.Entities public string OfficialRating { get; set; } /// <summary> + /// Gets or sets the critic rating. + /// </summary> + /// <value>The critic rating.</value> + public float? CriticRating { get; set; } + + /// <summary> + /// Gets or sets the critic rating summary. + /// </summary> + /// <value>The critic rating summary.</value> + public string CriticRatingSummary { get; set; } + + /// <summary> /// Gets or sets the official rating description. /// </summary> /// <value>The official rating description.</value> @@ -620,6 +723,7 @@ namespace MediaBrowser.Controller.Entities /// Gets or sets the studios. /// </summary> /// <value>The studios.</value> + [IgnoreDataMember] public List<string> Studios { get; set; } /// <summary> @@ -633,6 +737,7 @@ namespace MediaBrowser.Controller.Entities /// Gets or sets the tags. /// </summary> /// <value>The tags.</value> + [IgnoreDataMember] public List<string> Tags { get; set; } /// <summary> @@ -1025,6 +1130,13 @@ namespace MediaBrowser.Controller.Entities protected virtual string CreateUserDataKey() { + if (SourceType == SourceType.Channel) + { + if (!string.IsNullOrWhiteSpace(ExternalId)) + { + return ExternalId; + } + } return Id.ToString(); } @@ -1103,6 +1215,11 @@ namespace MediaBrowser.Controller.Entities public virtual bool IsSaveLocalMetadataEnabled() { + if (SourceType == SourceType.Channel) + { + return false; + } + return ConfigurationManager.Configuration.SaveLocalMeta; } @@ -1218,6 +1335,11 @@ namespace MediaBrowser.Controller.Entities public virtual UnratedItem GetBlockUnratedType() { + if (SourceType == SourceType.Channel) + { + return UnratedItem.ChannelContent; + } + return UnratedItem.Other; } @@ -1261,6 +1383,11 @@ namespace MediaBrowser.Controller.Entities public virtual bool IsVisibleStandalone(User user) { + if (SourceType == SourceType.Channel) + { + return IsVisibleStandaloneInternal(user, false) && Channel.IsChannelVisible(this, user); + } + return IsVisibleStandaloneInternal(user, true); } @@ -1312,6 +1439,11 @@ namespace MediaBrowser.Controller.Entities public virtual string GetClientTypeName() { + if (IsFolder && SourceType == SourceType.Channel) + { + return "ChannelFolderItem"; + } + return GetType().Name; } @@ -1835,8 +1967,8 @@ namespace MediaBrowser.Controller.Entities ProviderIds = ProviderIds, IndexNumber = IndexNumber, ParentIndexNumber = ParentIndexNumber, - Year = ProductionYear, - PremiereDate = PremiereDate + Year = ProductionYear, + PremiereDate = PremiereDate }; } @@ -1985,5 +2117,14 @@ namespace MediaBrowser.Controller.Entities { return LibraryManager.DeleteItem(this, options); } + + public virtual Task OnFileDeleted() + { + // Remove from database + return Delete(new DeleteOptions + { + DeleteFileLocation = false + }); + } } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs index f006fedd2..5ef098ff8 100644 --- a/MediaBrowser.Controller/Entities/Book.cs +++ b/MediaBrowser.Controller/Entities/Book.cs @@ -2,6 +2,7 @@ using MediaBrowser.Model.Configuration; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Users; @@ -9,6 +10,7 @@ namespace MediaBrowser.Controller.Entities { public class Book : BaseItem, IHasTags, IHasLookupInfo<BookInfo>, IHasSeries { + [IgnoreDataMember] public override string MediaType { get diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 824a067ad..bec8cd28b 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -15,6 +15,9 @@ using System.Threading; using System.Threading.Tasks; using CommonIO; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Playlists; +using MediaBrowser.Model.Channels; namespace MediaBrowser.Controller.Entities { @@ -145,60 +148,38 @@ namespace MediaBrowser.Controller.Entities item.DateModified = DateTime.UtcNow; } - AddChildInternal(item); + AddChildInternal(item.Id); await LibraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false); - - if (!EnableNewFolderQuerying()) - { - await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false); - } - } - - private static bool EnableNewFolderQuerying() - { - return ConfigurationManager.Configuration.MigrationVersion >= 1; } - protected void AddChildrenInternal(IEnumerable<BaseItem> children) + protected void AddChildrenInternal(List<Guid> children) { - var actualChildren = ActualChildren; - lock (_childrenSyncLock) { - var newChildren = actualChildren.ToList(); + var newChildren = ChildIds.ToList(); newChildren.AddRange(children); - _children = newChildren; + _children = newChildren.ToList(); } } - protected void AddChildInternal(BaseItem child) + protected void AddChildInternal(Guid child) { - var actualChildren = ActualChildren; - lock (_childrenSyncLock) { - var newChildren = actualChildren.ToList(); - newChildren.Add(child); - _children = newChildren; - } - } - - protected void RemoveChildrenInternal(IEnumerable<BaseItem> children) - { - var ids = children.Select(i => i.Id).ToList(); - var actualChildren = ActualChildren; - - lock (_childrenSyncLock) - { - _children = actualChildren.Where(i => !ids.Contains(i.Id)).ToList(); + var childIds = ChildIds.ToList(); + if (!childIds.Contains(child)) + { + childIds.Add(child); + _children = childIds.ToList(); + } } } - protected void ClearChildrenInternal() + protected void RemoveChildrenInternal(List<Guid> children) { lock (_childrenSyncLock) { - _children = new List<BaseItem>(); + _children = ChildIds.Except(children).ToList(); } } @@ -206,40 +187,11 @@ namespace MediaBrowser.Controller.Entities /// Removes the child. /// </summary> /// <param name="item">The item.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task.</returns> - /// <exception cref="System.InvalidOperationException">Unable to remove + item.Name</exception> - public Task RemoveChild(BaseItem item, CancellationToken cancellationToken) + public void RemoveChild(BaseItem item) { - RemoveChildrenInternal(new[] { item }); + RemoveChildrenInternal(new[] { item.Id }.ToList()); item.SetParent(null); - - if (!EnableNewFolderQuerying()) - { - return ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken); - } - - return Task.FromResult(true); - } - - /// <summary> - /// Clears the children. - /// </summary> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task.</returns> - public Task ClearChildren(CancellationToken cancellationToken) - { - var items = ActualChildren.ToList(); - - ClearChildrenInternal(); - - foreach (var item in items) - { - LibraryManager.ReportItemRemoved(item); - } - - return ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken); } #region Indexing @@ -276,7 +228,7 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// The children /// </summary> - private IReadOnlyList<BaseItem> _children; + private IReadOnlyList<Guid> _children; /// <summary> /// The _children sync lock /// </summary> @@ -285,21 +237,30 @@ namespace MediaBrowser.Controller.Entities /// Gets or sets the actual children. /// </summary> /// <value>The actual children.</value> - protected virtual IEnumerable<BaseItem> ActualChildren + protected virtual IEnumerable<Guid> ChildIds { get { - if (_children == null) + lock (_childrenSyncLock) { - lock (_childrenSyncLock) + if (_children == null) { - if (_children == null) - { - _children = LoadChildren().ToList(); - } + _children = LoadChildren().ToList(); } + return _children.ToList(); } - return _children; + } + } + + /// <summary> + /// Gets the actual children. + /// </summary> + /// <value>The actual children.</value> + protected virtual IEnumerable<BaseItem> ActualChildren + { + get + { + return ChildIds.Select(LibraryManager.GetItemById).Where(i => i != null); } } @@ -353,7 +314,7 @@ namespace MediaBrowser.Controller.Entities /// Loads our children. Validation will occur externally. /// We want this sychronous. /// </summary> - protected virtual IEnumerable<BaseItem> LoadChildren() + protected virtual IEnumerable<Guid> LoadChildren() { //just load our children from the repo - the library will be validated and maintained in other processes return GetCachedChildren(); @@ -503,7 +464,7 @@ namespace MediaBrowser.Controller.Entities if (actualRemovals.Count > 0) { - RemoveChildrenInternal(actualRemovals); + RemoveChildrenInternal(actualRemovals.Select(i => i.Id).ToList()); foreach (var item in actualRemovals) { @@ -518,12 +479,7 @@ namespace MediaBrowser.Controller.Entities await LibraryManager.CreateItems(newItems, cancellationToken).ConfigureAwait(false); - AddChildrenInternal(newItems); - - if (!EnableNewFolderQuerying()) - { - await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false); - } + AddChildrenInternal(newItems.Select(i => i.Id).ToList()); } } @@ -751,51 +707,459 @@ namespace MediaBrowser.Controller.Entities /// Get our children from the repo - stubbed for now /// </summary> /// <returns>IEnumerable{BaseItem}.</returns> - protected IEnumerable<BaseItem> GetCachedChildren() + protected IEnumerable<Guid> GetCachedChildren() { - if (EnableNewFolderQuerying()) + return ItemRepository.GetItemIdsList(new InternalItemsQuery { - return ItemRepository.GetItemList(new InternalItemsQuery + ParentId = Id + + }); + } + + public QueryResult<BaseItem> QueryRecursive(InternalItemsQuery query) + { + var user = query.User; + + if (RequiresPostFiltering(query)) + { + IEnumerable<BaseItem> items; + Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager); + + if (query.User == null) { - ParentId = Id + items = GetRecursiveChildren(filter); + } + else + { + items = GetRecursiveChildren(user, filter); + } + + return PostFilterAndSort(items, query); + } - }).Select(RetrieveChild).Where(i => i != null); + if (!(this is UserRootFolder) && !(this is AggregateFolder)) + { + query.ParentId = query.ParentId ?? Id; } - return ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null); + return LibraryManager.GetItemsResult(query); } - private BaseItem RetrieveChild(BaseItem child) + private bool RequiresPostFiltering(InternalItemsQuery query) { - if (child == null || child.Id == Guid.Empty) + if (LinkedChildren.Count > 0) { - Logger.Error("Item found with empty Id: " + (child.Path ?? child.Name)); - return null; + if (!(this is ICollectionFolder)) + { + Logger.Debug("Query requires post-filtering due to LinkedChildren"); + return true; + } } - var item = LibraryManager.GetMemoryItemById(child.Id); - - if (item != null) + if (query.SortBy != null && query.SortBy.Length > 0) { - if (item is IByReferenceItem) + if (query.SortBy.Contains(ItemSortBy.DatePlayed, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.DatePlayed"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.IsFavoriteOrLiked, StringComparer.OrdinalIgnoreCase)) { - return LibraryManager.GetOrAddByReferenceItem(item); + Logger.Debug("Query requires post-filtering due to ItemSortBy.IsFavoriteOrLiked"); + return true; } + if (query.SortBy.Contains(ItemSortBy.IsPlayed, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.IsPlayed"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.IsUnplayed, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.IsUnplayed"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.AiredEpisodeOrder, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.AiredEpisodeOrder"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.Album, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.Album"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.AlbumArtist, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.AlbumArtist"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.Artist, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.Artist"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.Budget, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.Budget"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.DateLastContentAdded, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.DateLastContentAdded"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.GameSystem, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.GameSystem"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.Metascore, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.Metascore"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.OfficialRating, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.OfficialRating"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.PlayCount, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.PlayCount"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.Players, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.Players"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.Revenue, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.Revenue"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.SeriesSortName, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.SeriesSortName"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.StartDate, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.StartDate"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.Studio, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.Studio"); + return true; + } + if (query.SortBy.Contains(ItemSortBy.VideoBitRate, StringComparer.OrdinalIgnoreCase)) + { + Logger.Debug("Query requires post-filtering due to ItemSortBy.VideoBitRate"); + return true; + } + } - item.SetParent(this); + if (query.ItemIds.Length > 0) + { + Logger.Debug("Query requires post-filtering due to ItemIds"); + return true; } - else + + if (query.PersonIds.Length > 0) + { + Logger.Debug("Query requires post-filtering due to PersonIds"); + return true; + } + + if (query.IsLiked.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsLiked"); + return true; + } + + if (query.IsFavoriteOrLiked.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsFavoriteOrLiked"); + return true; + } + + if (query.IsFavorite.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsFavorite"); + return true; + } + + if (query.IsResumable.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsResumable"); + return true; + } + + if (query.IsPlayed.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsPlayed"); + return true; + } + + if (query.IsInBoxSet.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsInBoxSet"); + return true; + } + + // Filter by Video3DFormat + if (query.Is3D.HasValue) + { + Logger.Debug("Query requires post-filtering due to Is3D"); + return true; + } + + if (query.HasImdbId.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasImdbId"); + return true; + } + + if (query.HasTmdbId.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasTmdbId"); + return true; + } + + if (query.HasTvdbId.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasTvdbId"); + return true; + } + + if (query.IsYearMismatched.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsYearMismatched"); + return true; + } + + if (query.HasOfficialRating.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasOfficialRating"); + return true; + } + + if (query.IsPlaceHolder.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsPlaceHolder"); + return true; + } + + if (query.HasSpecialFeature.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasSpecialFeature"); + return true; + } + + if (query.HasSubtitles.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasSubtitles"); + return true; + } + + if (query.HasTrailer.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasTrailer"); + return true; + } + + if (query.HasThemeSong.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasThemeSong"); + return true; + } + + if (query.HasThemeVideo.HasValue) + { + Logger.Debug("Query requires post-filtering due to HasThemeVideo"); + return true; + } + + // Filter by VideoType + if (query.VideoTypes.Length > 0) + { + Logger.Debug("Query requires post-filtering due to VideoTypes"); + return true; + } + + if (query.ImageTypes.Length > 0) { - child.SetParent(this); - LibraryManager.RegisterItem(child); - item = child; + Logger.Debug("Query requires post-filtering due to ImageTypes"); + return true; + } + + // Apply studio filter + if (query.StudioIds.Length > 0) + { + Logger.Debug("Query requires post-filtering due to StudioIds"); + return true; + } + + // Apply genre filter + if (query.GenreIds.Length > 0) + { + Logger.Debug("Query requires post-filtering due to GenreIds"); + return true; } - return item; + // Apply person filter + if (query.ItemIdsFromPersonFilters != null) + { + Logger.Debug("Query requires post-filtering due to ItemIdsFromPersonFilters"); + return true; + } + + if (query.MinPlayers.HasValue) + { + Logger.Debug("Query requires post-filtering due to MinPlayers"); + return true; + } + + if (query.MaxPlayers.HasValue) + { + Logger.Debug("Query requires post-filtering due to MaxPlayers"); + return true; + } + + if (query.OfficialRatings.Length > 0) + { + Logger.Debug("Query requires post-filtering due to OfficialRatings"); + return true; + } + + if (query.IsMissing.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsMissing"); + return true; + } + + if (query.IsUnaired.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsUnaired"); + return true; + } + + if (query.IsVirtualUnaired.HasValue) + { + Logger.Debug("Query requires post-filtering due to IsVirtualUnaired"); + return true; + } + + if (UserViewBuilder.CollapseBoxSetItems(query, this, query.User)) + { + Logger.Debug("Query requires post-filtering due to CollapseBoxSetItems"); + return true; + } + + if (!string.IsNullOrWhiteSpace(query.AdjacentTo)) + { + Logger.Debug("Query requires post-filtering due to AdjacentTo"); + return true; + } + + if (!string.IsNullOrWhiteSpace(query.NameContains)) + { + Logger.Debug("Query requires post-filtering due to NameContains"); + return true; + } + + if (!string.IsNullOrWhiteSpace(query.NameLessThan)) + { + Logger.Debug("Query requires post-filtering due to NameLessThan"); + return true; + } + + if (!string.IsNullOrWhiteSpace(query.NameStartsWith)) + { + Logger.Debug("Query requires post-filtering due to NameStartsWith"); + return true; + } + + if (!string.IsNullOrWhiteSpace(query.NameStartsWithOrGreater)) + { + Logger.Debug("Query requires post-filtering due to NameStartsWithOrGreater"); + return true; + } + + if (query.AirDays.Length > 0) + { + Logger.Debug("Query requires post-filtering due to AirDays"); + return true; + } + + if (query.SeriesStatuses.Length > 0) + { + Logger.Debug("Query requires post-filtering due to SeriesStatuses"); + return true; + } + + if (query.AiredDuringSeason.HasValue) + { + Logger.Debug("Query requires post-filtering due to AiredDuringSeason"); + return true; + } + + if (!string.IsNullOrWhiteSpace(query.AlbumArtistStartsWithOrGreater)) + { + Logger.Debug("Query requires post-filtering due to AlbumArtistStartsWithOrGreater"); + return true; + } + + if (query.AlbumNames.Length > 0) + { + Logger.Debug("Query requires post-filtering due to AlbumNames"); + return true; + } + + if (query.ArtistNames.Length > 0) + { + Logger.Debug("Query requires post-filtering due to ArtistNames"); + return true; + } + + return false; } - public virtual Task<QueryResult<BaseItem>> GetItems(InternalItemsQuery query) + public virtual async Task<QueryResult<BaseItem>> GetItems(InternalItemsQuery query) { + if (SourceType == SourceType.Channel) + { + try + { + // Don't blow up here because it could cause parent screens with other content to fail + return await ChannelManager.GetChannelItemsInternal(new ChannelItemQuery + { + ChannelId = ChannelId, + FolderId = Id.ToString("N"), + Limit = query.Limit, + StartIndex = query.StartIndex, + UserId = query.User.Id.ToString("N"), + SortBy = query.SortBy, + SortOrder = query.SortOrder + + }, new Progress<double>(), CancellationToken.None); + } + catch + { + // Already logged at lower levels + return new QueryResult<BaseItem> + { + + }; + } + } + + if (query.Recursive) + { + return QueryRecursive(query); + } + var user = query.User; Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager); @@ -817,7 +1181,7 @@ namespace MediaBrowser.Controller.Entities var result = PostFilterAndSort(items, query); - return Task.FromResult(result); + return result; } protected QueryResult<BaseItem> PostFilterAndSort(IEnumerable<BaseItem> items, InternalItemsQuery query) diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 8b623d64e..b568aec18 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -83,6 +83,7 @@ namespace MediaBrowser.Controller.Entities public string[] OfficialRatings { get; set; } public DateTime? MinPremiereDate { get; set; } + public DateTime? MaxPremiereDate { get; set; } public DateTime? MinStartDate { get; set; } public DateTime? MaxStartDate { get; set; } public DateTime? MinEndDate { get; set; } @@ -96,28 +97,45 @@ namespace MediaBrowser.Controller.Entities public int? MinPlayers { get; set; } public int? MaxPlayers { get; set; } public int? MinIndexNumber { get; set; } + public int? AiredDuringSeason { get; set; } public double? MinCriticRating { get; set; } public double? MinCommunityRating { get; set; } public string[] ChannelIds { get; set; } internal List<Guid> ItemIdsFromPersonFilters { get; set; } + public int? ParentIndexNumber { get; set; } + public int? MinParentalRating { get; set; } public int? MaxParentalRating { get; set; } public bool? IsCurrentSchema { get; set; } public bool? HasDeadParentId { get; set; } public bool? IsOffline { get; set; } - public LocationType? LocationType { get; set; } public Guid? ParentId { get; set; } public string[] AncestorIds { get; set; } public string[] TopParentIds { get; set; } + public LocationType[] LocationTypes { get; set; } public LocationType[] ExcludeLocationTypes { get; set; } public string[] PresetViews { get; set; } + public SourceType[] SourceTypes { get; set; } + public SourceType[] ExcludeSourceTypes { get; set; } + public TrailerType[] TrailerTypes { get; set; } + public TrailerType[] ExcludeTrailerTypes { get; set; } + public DayOfWeek[] AirDays { get; set; } + public SeriesStatus[] SeriesStatuses { get; set; } + public string AlbumArtistStartsWithOrGreater { get; set; } + + public string[] AlbumNames { get; set; } + public string[] ArtistNames { get; set; } + public InternalItemsQuery() { + AlbumNames = new string[] { }; + ArtistNames = new string[] { }; + BlockUnratedItems = new UnratedItem[] { }; Tags = new string[] { }; OfficialRatings = new string[] { }; @@ -139,8 +157,15 @@ namespace MediaBrowser.Controller.Entities AncestorIds = new string[] { }; TopParentIds = new string[] { }; ExcludeTags = new string[] { }; + LocationTypes = new LocationType[] { }; ExcludeLocationTypes = new LocationType[] { }; PresetViews = new string[] { }; + SourceTypes = new SourceType[] { }; + ExcludeSourceTypes = new SourceType[] { }; + TrailerTypes = new TrailerType[] { }; + ExcludeTrailerTypes = new TrailerType[] { }; + AirDays = new DayOfWeek[] { }; + SeriesStatuses = new SeriesStatus[] { }; } public InternalItemsQuery(User user) diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 749d562ac..4c31356d0 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; using CommonIO; @@ -68,23 +69,18 @@ namespace MediaBrowser.Controller.Entities.Movies public double? Revenue { get; set; } /// <summary> - /// Gets or sets the critic rating. - /// </summary> - /// <value>The critic rating.</value> - public float? CriticRating { get; set; } - - /// <summary> - /// Gets or sets the critic rating summary. - /// </summary> - /// <value>The critic rating summary.</value> - public string CriticRatingSummary { get; set; } - - /// <summary> /// Gets or sets the name of the TMDB collection. /// </summary> /// <value>The name of the TMDB collection.</value> public string TmdbCollectionName { get; set; } + [IgnoreDataMember] + public string CollectionName + { + get { return TmdbCollectionName; } + set { TmdbCollectionName = value; } + } + /// <summary> /// Gets the trailer ids. /// </summary> diff --git a/MediaBrowser.Controller/Entities/SourceType.cs b/MediaBrowser.Controller/Entities/SourceType.cs new file mode 100644 index 000000000..9c307b4e6 --- /dev/null +++ b/MediaBrowser.Controller/Entities/SourceType.cs @@ -0,0 +1,10 @@ + +namespace MediaBrowser.Controller.Entities +{ + public enum SourceType + { + Library = 0, + Channel = 1, + LiveTV = 2 + } +} diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index 3c7d39e0d..9d5ef2035 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -14,7 +14,6 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// Class Trailer /// </summary> - [Obsolete] public class Trailer : Video, IHasCriticRating, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTaglines, IHasMetascore, IHasLookupInfo<TrailerInfo> { public List<string> ProductionLocations { get; set; } @@ -25,14 +24,23 @@ namespace MediaBrowser.Controller.Entities Taglines = new List<string>(); Keywords = new List<string>(); ProductionLocations = new List<string>(); + TrailerTypes = new List<TrailerType>(); } + public List<TrailerType> TrailerTypes { get; set; } + public float? Metascore { get; set; } public List<MediaUrl> RemoteTrailers { get; set; } public List<string> Keywords { get; set; } + [IgnoreDataMember] + public bool IsLocalTrailer + { + get { return TrailerTypes.Contains(TrailerType.LocalTrailer); } + } + /// <summary> /// Gets or sets the taglines. /// </summary> @@ -51,32 +59,6 @@ namespace MediaBrowser.Controller.Entities /// <value>The revenue.</value> public double? Revenue { get; set; } - /// <summary> - /// Gets or sets the critic rating. - /// </summary> - /// <value>The critic rating.</value> - public float? CriticRating { get; set; } - - /// <summary> - /// Gets or sets the critic rating summary. - /// </summary> - /// <value>The critic rating summary.</value> - public string CriticRatingSummary { get; set; } - - /// <summary> - /// Gets a value indicating whether this instance is local trailer. - /// </summary> - /// <value><c>true</c> if this instance is local trailer; otherwise, <c>false</c>.</value> - [IgnoreDataMember] - public bool IsLocalTrailer - { - get - { - // Local trailers are not part of children - return GetParent() == null; - } - } - protected override string CreateUserDataKey() { var key = Movie.GetMovieUserDataKey(this); @@ -106,9 +88,50 @@ namespace MediaBrowser.Controller.Entities { var info = GetItemLookupInfo<TrailerInfo>(); - info.IsLocalTrailer = IsLocalTrailer; + info.IsLocalTrailer = TrailerTypes.Contains(TrailerType.LocalTrailer); + + if (!IsInMixedFolder) + { + info.Name = System.IO.Path.GetFileName(ContainingFolderPath); + } return info; } + + public override bool BeforeMetadataRefresh() + { + var hasChanges = base.BeforeMetadataRefresh(); + + if (!ProductionYear.HasValue) + { + var info = LibraryManager.ParseName(Name); + + var yearInName = info.Year; + + if (yearInName.HasValue) + { + ProductionYear = yearInName; + hasChanges = true; + } + else + { + // Try to get the year from the folder name + if (!IsInMixedFolder) + { + info = LibraryManager.ParseName(System.IO.Path.GetFileName(ContainingFolderPath)); + + yearInName = info.Year; + + if (yearInName.HasValue) + { + ProductionYear = yearInName; + hasChanges = true; + } + } + } + } + + return hasChanges; + } } } diff --git a/MediaBrowser.Controller/Entities/UserRootFolder.cs b/MediaBrowser.Controller/Entities/UserRootFolder.cs index daf590871..104408860 100644 --- a/MediaBrowser.Controller/Entities/UserRootFolder.cs +++ b/MediaBrowser.Controller/Entities/UserRootFolder.cs @@ -19,13 +19,9 @@ namespace MediaBrowser.Controller.Entities { public override async Task<QueryResult<BaseItem>> GetItems(InternalItemsQuery query) { - var user = query.User; - Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager); - if (query.Recursive) { - var items = query.User.RootFolder.GetRecursiveChildren(query.User, filter); - return PostFilterAndSort(items, query); + return QueryRecursive(query); } var result = await UserViewManager.GetUserViews(new UserViewQuery @@ -35,6 +31,9 @@ namespace MediaBrowser.Controller.Entities }, CancellationToken.None).ConfigureAwait(false); + var user = query.User; + Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager); + return PostFilterAndSort(result.Where(filter), query); } diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 721ec3f1b..a74859a46 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -50,15 +50,15 @@ namespace MediaBrowser.Controller.Entities { var user = query.User; - if (query.IncludeItemTypes != null && - query.IncludeItemTypes.Length == 1 && - string.Equals(query.IncludeItemTypes[0], "Playlist", StringComparison.OrdinalIgnoreCase)) - { - if (!string.Equals(viewType, CollectionType.Playlists, StringComparison.OrdinalIgnoreCase)) - { - return await FindPlaylists(queryParent, user, query).ConfigureAwait(false); - } - } + //if (query.IncludeItemTypes != null && + // query.IncludeItemTypes.Length == 1 && + // string.Equals(query.IncludeItemTypes[0], "Playlist", StringComparison.OrdinalIgnoreCase)) + //{ + // if (!string.Equals(viewType, CollectionType.Playlists, StringComparison.OrdinalIgnoreCase)) + // { + // return await FindPlaylists(queryParent, user, query).ConfigureAwait(false); + // } + //} switch (viewType) { @@ -766,7 +766,7 @@ namespace MediaBrowser.Controller.Entities return items; } - private static bool CollapseBoxSetItems(InternalItemsQuery query, + public static bool CollapseBoxSetItems(InternalItemsQuery query, BaseItem queryParent, User user) { @@ -1199,6 +1199,11 @@ namespace MediaBrowser.Controller.Entities return false; } + if (query.ExcludeLocationTypes.Length > 0 && query.ExcludeLocationTypes.Contains(item.LocationType)) + { + return false; + } + if (query.IsFolder.HasValue && query.IsFolder.Value != item.IsFolder) { return false; @@ -1689,6 +1694,127 @@ namespace MediaBrowser.Controller.Entities } } + if (query.MinPremiereDate.HasValue) + { + var val = query.MinPremiereDate.Value; + + if (!(item.PremiereDate.HasValue && item.PremiereDate.Value >= val)) + { + return false; + } + } + + if (query.MaxPremiereDate.HasValue) + { + var val = query.MaxPremiereDate.Value; + + if (!(item.PremiereDate.HasValue && item.PremiereDate.Value <= val)) + { + return false; + } + } + + if (query.ParentIndexNumber.HasValue) + { + var filterValue = query.ParentIndexNumber.Value; + + if (item.ParentIndexNumber.HasValue && item.ParentIndexNumber.Value != filterValue) + { + return false; + } + } + + if (query.AirDays.Length > 0) + { + var ok = new[] { item }.OfType<Series>().Any(p => p.AirDays != null && query.AirDays.Any(d => p.AirDays.Contains(d))); + if (!ok) + { + return false; + } + } + + if (query.SeriesStatuses.Length > 0) + { + var ok = new[] { item }.OfType<Series>().Any(p => p.Status.HasValue && query.SeriesStatuses.Contains(p.Status.Value)); + if (!ok) + { + return false; + } + } + + if (query.AiredDuringSeason.HasValue) + { + var episode = item as Episode; + + if (episode == null) + { + return false; + } + + if (!Series.FilterEpisodesBySeason(new[] { episode }, query.AiredDuringSeason.Value, true).Any()) + { + return false; + } + } + + if (!string.IsNullOrEmpty(query.AlbumArtistStartsWithOrGreater)) + { + var ok = new[] { item }.OfType<IHasAlbumArtist>() + .Any(p => string.Compare(query.AlbumArtistStartsWithOrGreater, p.AlbumArtists.FirstOrDefault(), StringComparison.CurrentCultureIgnoreCase) < 1); + + if (!ok) + { + return false; + } + } + + // Artists + if (query.ArtistNames.Length > 0) + { + var audio = item as IHasArtist; + + if (!(audio != null && query.ArtistNames.Any(audio.HasAnyArtist))) + { + return false; + } + } + + // Albums + if (query.AlbumNames.Length > 0) + { + var audio = item as Audio.Audio; + + if (audio != null) + { + if (!query.AlbumNames.Any(a => string.Equals(a, audio.Album, StringComparison.OrdinalIgnoreCase))) + { + return false; + } + } + + var album = item as MusicAlbum; + + if (album != null) + { + if (!query.AlbumNames.Any(a => string.Equals(a, album.Name, StringComparison.OrdinalIgnoreCase))) + { + return false; + } + } + + var musicVideo = item as MusicVideo; + + if (musicVideo != null) + { + if (!query.AlbumNames.Any(a => string.Equals(a, musicVideo.Album, StringComparison.OrdinalIgnoreCase))) + { + return false; + } + } + + return false; + } + return true; } diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index 197222669..3b1da85b5 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -6,13 +6,16 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.MediaInfo; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; +using System.Net.Mime; using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; using CommonIO; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Channels; namespace MediaBrowser.Controller.Entities { @@ -33,6 +36,7 @@ namespace MediaBrowser.Controller.Entities public List<string> AdditionalParts { get; set; } public List<string> LocalAlternateVersions { get; set; } public List<LinkedChild> LinkedAlternateVersions { get; set; } + public List<ChannelMediaInfo> ChannelMediaSources { get; set; } [IgnoreDataMember] public bool IsThemeMedia @@ -79,6 +83,23 @@ namespace MediaBrowser.Controller.Entities } [IgnoreDataMember] + public override LocationType LocationType + { + get + { + if (SourceType == SourceType.Channel) + { + if (string.IsNullOrEmpty(Path)) + { + return LocationType.Remote; + } + } + + return base.LocationType; + } + } + + [IgnoreDataMember] public override bool SupportsAddingToPlaylist { get { return LocationType == LocationType.FileSystem && RunTimeTicks.HasValue; } @@ -130,6 +151,29 @@ namespace MediaBrowser.Controller.Entities return LocalAlternateVersions.Select(i => LibraryManager.GetNewItemId(i, typeof(Video))); } + protected override string CreateUserDataKey() + { + if (ExtraType.HasValue) + { + var key = this.GetProviderId(MetadataProviders.Imdb) ?? this.GetProviderId(MetadataProviders.Tmdb); + + if (!string.IsNullOrWhiteSpace(key)) + { + key = key + "-" + ExtraType.ToString().ToLower(); + + // Make sure different trailers have their own data. + if (RunTimeTicks.HasValue) + { + key += "-" + RunTimeTicks.Value.ToString(CultureInfo.InvariantCulture); + } + + return key; + } + } + + return base.CreateUserDataKey(); + } + /// <summary> /// Gets the linked children. /// </summary> @@ -441,6 +485,22 @@ namespace MediaBrowser.Controller.Entities public virtual IEnumerable<MediaSourceInfo> GetMediaSources(bool enablePathSubstitution) { + if (SourceType == SourceType.Channel) + { + var sources = ChannelManager.GetStaticMediaSources(this, false, CancellationToken.None) + .Result.ToList(); + + if (sources.Count > 0) + { + return sources; + } + + return new List<MediaSourceInfo> + { + GetVersionInfo(enablePathSubstitution, this, MediaSourceType.Placeholder) + }; + } + var item = this; var result = item.GetAlternateVersions() diff --git a/MediaBrowser.Controller/IServerApplicationHost.cs b/MediaBrowser.Controller/IServerApplicationHost.cs index fb843d191..e4eecec18 100644 --- a/MediaBrowser.Controller/IServerApplicationHost.cs +++ b/MediaBrowser.Controller/IServerApplicationHost.cs @@ -79,5 +79,12 @@ namespace MediaBrowser.Controller /// <param name="host">The host.</param> /// <returns>System.String.</returns> string GetLocalApiUrl(string host); + + /// <summary> + /// Gets the local API URL. + /// </summary> + /// <param name="ipAddress">The ip address.</param> + /// <returns>System.String.</returns> + string GetLocalApiUrl(IPAddress ipAddress); } } diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index ff44953ef..752ac2dad 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -153,13 +153,6 @@ namespace MediaBrowser.Controller.Library BaseItem GetItemById(Guid id); /// <summary> - /// Gets the items. - /// </summary> - /// <param name="query">The query.</param> - /// <returns>QueryResult<BaseItem>.</returns> - QueryResult<BaseItem> GetItems(InternalItemsQuery query); - - /// <summary> /// Gets the memory item by identifier. /// </summary> /// <param name="id">The identifier.</param> @@ -551,18 +544,24 @@ namespace MediaBrowser.Controller.Library /// Gets the items. /// </summary> /// <param name="query">The query.</param> + /// <returns>QueryResult<BaseItem>.</returns> + IEnumerable<BaseItem> GetItemList(InternalItemsQuery query); + + /// <summary> + /// Gets the items. + /// </summary> + /// <param name="query">The query.</param> /// <param name="parentIds">The parent ids.</param> /// <returns>List<BaseItem>.</returns> - IEnumerable<BaseItem> GetItems(InternalItemsQuery query, IEnumerable<string> parentIds); + IEnumerable<BaseItem> GetItemList(InternalItemsQuery query, IEnumerable<string> parentIds); /// <summary> /// Gets the items result. /// </summary> /// <param name="query">The query.</param> - /// <param name="parentIds">The parent ids.</param> /// <returns>QueryResult<BaseItem>.</returns> - QueryResult<BaseItem> GetItemsResult(InternalItemsQuery query, IEnumerable<string> parentIds); - + QueryResult<BaseItem> GetItemsResult(InternalItemsQuery query); + /// <summary> /// Ignores the file. /// </summary> diff --git a/MediaBrowser.Controller/Library/PlaybackProgressEventArgs.cs b/MediaBrowser.Controller/Library/PlaybackProgressEventArgs.cs index 50528c6ae..bcf39558e 100644 --- a/MediaBrowser.Controller/Library/PlaybackProgressEventArgs.cs +++ b/MediaBrowser.Controller/Library/PlaybackProgressEventArgs.cs @@ -15,11 +15,14 @@ namespace MediaBrowser.Controller.Library public BaseItem Item { get; set; } public BaseItemInfo MediaInfo { get; set; } public string MediaSourceId { get; set; } + public bool IsPaused { get; set; } public string DeviceId { get; set; } public string DeviceName { get; set; } public string ClientName { get; set; } + public string PlaySessionId { get; set; } + public PlaybackProgressEventArgs() { Users = new List<User>(); diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvItem.cs b/MediaBrowser.Controller/LiveTv/ILiveTvItem.cs deleted file mode 100644 index 36727f4ae..000000000 --- a/MediaBrowser.Controller/LiveTv/ILiveTvItem.cs +++ /dev/null @@ -1,10 +0,0 @@ -using MediaBrowser.Controller.Entities; - -namespace MediaBrowser.Controller.LiveTv -{ - public interface ILiveTvItem : IHasId - { - string ServiceName { get; set; } - string ExternalId { get; set; } - } -} diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index 501e48a74..4cc7b27ea 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -50,7 +50,7 @@ namespace MediaBrowser.Controller.LiveTv /// </summary> /// <param name="recording">The recording.</param> /// <returns>Task.</returns> - Task DeleteRecording(ILiveTvRecording recording); + Task DeleteRecording(BaseItem recording); /// <summary> /// Cancels the timer. @@ -75,15 +75,6 @@ namespace MediaBrowser.Controller.LiveTv void AddParts(IEnumerable<ILiveTvService> services, IEnumerable<ITunerHost> tunerHosts, IEnumerable<IListingsProvider> listingProviders); /// <summary> - /// Gets the channels. - /// </summary> - /// <param name="query">The query.</param> - /// <param name="options">The options.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>IEnumerable{Channel}.</returns> - Task<QueryResult<ChannelInfoDto>> GetChannels(LiveTvChannelQuery query, DtoOptions options, CancellationToken cancellationToken); - - /// <summary> /// Gets the recording. /// </summary> /// <param name="id">The identifier.</param> @@ -92,15 +83,6 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="user">The user.</param> /// <returns>Task{RecordingInfoDto}.</returns> Task<BaseItemDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null); - - /// <summary> - /// Gets the channel. - /// </summary> - /// <param name="id">The identifier.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <param name="user">The user.</param> - /// <returns>Task{RecordingInfoDto}.</returns> - Task<ChannelInfoDto> GetChannel(string id, CancellationToken cancellationToken, User user = null); /// <summary> /// Gets the timer. @@ -156,7 +138,7 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="id">The identifier.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>LiveTvRecording.</returns> - Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken); + Task<BaseItem> GetInternalRecording(string id, CancellationToken cancellationToken); /// <summary> /// Gets the recording stream. @@ -385,10 +367,22 @@ namespace MediaBrowser.Controller.LiveTv /// <summary> /// Adds the channel information. /// </summary> - /// <param name="dto">The dto.</param> - /// <param name="channel">The channel.</param> + /// <param name="items">The items.</param> /// <param name="options">The options.</param> /// <param name="user">The user.</param> - void AddChannelInfo(BaseItemDto dto, LiveTvChannel channel, DtoOptions options, User user); + void AddChannelInfo(List<Tuple<BaseItemDto, LiveTvChannel>> items, DtoOptions options, User user); + + /// <summary> + /// Called when [recording file deleted]. + /// </summary> + /// <param name="recording">The recording.</param> + /// <returns>Task.</returns> + Task OnRecordingFileDeleted(BaseItem recording); + + /// <summary> + /// Gets the sat ini mappings. + /// </summary> + /// <returns>List<NameValuePair>.</returns> + List<NameValuePair> GetSatIniMappings(); } } diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs index 5dc5f68cd..257024d01 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs @@ -9,8 +9,10 @@ using System.Threading.Tasks; 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 MediaType { get; } diff --git a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs index c3d843f85..2657ade42 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs @@ -39,6 +39,13 @@ namespace MediaBrowser.Controller.LiveTv [IgnoreDataMember] public bool IsPremiere { get; set; } + [IgnoreDataMember] + public override SourceType SourceType + { + get { return SourceType.LiveTV; } + set { } + } + /// <summary> /// Gets the user data key. /// </summary> @@ -50,8 +57,6 @@ namespace MediaBrowser.Controller.LiveTv return name + "-" + Name + (EpisodeTitle ?? string.Empty); } - public string ServiceName { get; set; } - /// <summary> /// Gets a value indicating whether this instance is owned item. /// </summary> @@ -151,5 +156,10 @@ namespace MediaBrowser.Controller.LiveTv { return LiveTvManager.DeleteRecording(this); } + + public override Task OnFileDeleted() + { + return LiveTvManager.OnRecordingFileDeleted(this); + } } } diff --git a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs index 8c4ee92cd..24ec3f5e1 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs @@ -11,7 +11,7 @@ using System.Runtime.Serialization; namespace MediaBrowser.Controller.LiveTv { - public class LiveTvChannel : BaseItem, IHasMediaSources, ILiveTvItem + public class LiveTvChannel : BaseItem, IHasMediaSources { /// <summary> /// Gets the user data key. @@ -40,6 +40,13 @@ namespace MediaBrowser.Controller.LiveTv } } + [IgnoreDataMember] + public override SourceType SourceType + { + get { return SourceType.LiveTV; } + set { } + } + /// <summary> /// Gets or sets the number. /// </summary> @@ -52,12 +59,6 @@ namespace MediaBrowser.Controller.LiveTv /// <value>The type of the channel.</value> 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] public override LocationType LocationType { diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs index fcd065e79..684af9974 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs @@ -11,7 +11,7 @@ using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.LiveTv { - public class LiveTvProgram : BaseItem, ILiveTvItem, IHasLookupInfo<LiveTvProgramLookupInfo>, IHasStartDate, IHasProgramAttributes + public class LiveTvProgram : BaseItem, IHasLookupInfo<LiveTvProgramLookupInfo>, IHasStartDate, IHasProgramAttributes { /// <summary> /// Gets the user data key. @@ -39,12 +39,12 @@ namespace MediaBrowser.Controller.LiveTv return base.CreateUserDataKey(); } - /// <summary> - /// Gets or sets the name. - /// </summary> - /// <value>The name.</value> [IgnoreDataMember] - public string ServiceName { get; set; } + public override SourceType SourceType + { + get { return SourceType.LiveTV; } + set { } + } /// <summary> /// The start date of the program, in UTC. diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs index 5492a29f3..6dff66438 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs @@ -39,6 +39,13 @@ namespace MediaBrowser.Controller.LiveTv [IgnoreDataMember] public bool IsPremiere { get; set; } + [IgnoreDataMember] + public override SourceType SourceType + { + get { return SourceType.LiveTV; } + set { } + } + /// <summary> /// Gets the user data key. /// </summary> @@ -65,8 +72,6 @@ namespace MediaBrowser.Controller.LiveTv return base.CreateUserDataKey(); } - public string ServiceName { get; set; } - [IgnoreDataMember] public override string MediaType { @@ -166,5 +171,10 @@ namespace MediaBrowser.Controller.LiveTv { return LiveTvManager.DeleteRecording(this); } + + public override Task OnFileDeleted() + { + return LiveTvManager.OnRecordingFileDeleted(this); + } } } diff --git a/MediaBrowser.Controller/LiveTv/RecordingGroup.cs b/MediaBrowser.Controller/LiveTv/RecordingGroup.cs index 2d58ef67f..5c86de08b 100644 --- a/MediaBrowser.Controller/LiveTv/RecordingGroup.cs +++ b/MediaBrowser.Controller/LiveTv/RecordingGroup.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using System.Runtime.Serialization; +using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Users; @@ -24,5 +25,12 @@ namespace MediaBrowser.Controller.LiveTv return false; } } + + [IgnoreDataMember] + public override SourceType SourceType + { + get { return SourceType.LiveTV; } + set { } + } } } diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index f74d82caa..6f429ed2f 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -46,7 +46,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="Interfaces.IO"> <HintPath>..\packages\Interfaces.IO.1.0.0.5\lib\portable-net45+sl4+wp71+win8+wpa81\Interfaces.IO.dll</HintPath> @@ -75,6 +75,7 @@ </Compile> <Compile Include="Activity\IActivityManager.cs" /> <Compile Include="Activity\IActivityRepository.cs" /> + <Compile Include="Channels\ChannelAudioItem.cs" /> <Compile Include="Channels\ChannelFolderItem.cs" /> <Compile Include="Channels\ChannelItemInfo.cs" /> <Compile Include="Channels\ChannelItemResult.cs" /> @@ -82,11 +83,10 @@ <Compile Include="Channels\ChannelMediaInfo.cs" /> <Compile Include="Channels\ChannelParentalRating.cs" /> <Compile Include="Channels\ChannelSearchInfo.cs" /> + <Compile Include="Channels\ChannelVideoItem.cs" /> <Compile Include="Channels\IChannel.cs" /> - <Compile Include="Channels\IChannelManager.cs" /> <Compile Include="Channels\IChannelItem.cs" /> - <Compile Include="Channels\ChannelAudioItem.cs" /> - <Compile Include="Channels\ChannelVideoItem.cs" /> + <Compile Include="Channels\IChannelManager.cs" /> <Compile Include="Channels\Channel.cs" /> <Compile Include="Channels\IChannelMediaItem.cs" /> <Compile Include="Channels\IHasCacheKey.cs" /> @@ -128,6 +128,7 @@ <Compile Include="Drawing\ImageStream.cs" /> <Compile Include="Dto\DtoOptions.cs" /> <Compile Include="Dto\IDtoService.cs" /> + <Compile Include="Entities\Audio\AudioPodcast.cs" /> <Compile Include="Entities\Audio\IHasAlbumArtist.cs" /> <Compile Include="Entities\Audio\IHasMusicGenres.cs" /> <Compile Include="Entities\Book.cs" /> @@ -180,6 +181,7 @@ <Compile Include="Entities\Photo.cs" /> <Compile Include="Entities\PhotoAlbum.cs" /> <Compile Include="Entities\Share.cs" /> + <Compile Include="Entities\SourceType.cs" /> <Compile Include="Entities\UserView.cs" /> <Compile Include="Entities\UserViewBuilder.cs" /> <Compile Include="FileOrganization\IFileOrganizationService.cs" /> @@ -202,7 +204,6 @@ <Compile Include="Library\UserDataSaveEventArgs.cs" /> <Compile Include="LiveTv\IHasRegistrationInfo.cs" /> <Compile Include="LiveTv\IListingsProvider.cs" /> - <Compile Include="LiveTv\ILiveTvItem.cs" /> <Compile Include="LiveTv\ITunerHost.cs" /> <Compile Include="LiveTv\RecordingGroup.cs" /> <Compile Include="LiveTv\RecordingStatusChangedEventArgs.cs" /> @@ -271,7 +272,6 @@ <Compile Include="Providers\ArtistInfo.cs" /> <Compile Include="Providers\BookInfo.cs" /> <Compile Include="Providers\BoxSetInfo.cs" /> - <Compile Include="Providers\ChannelItemLookupInfo.cs" /> <Compile Include="Providers\DirectoryService.cs" /> <Compile Include="Providers\DynamicImageInfo.cs" /> <Compile Include="Providers\DynamicImageResponse.cs" /> @@ -331,6 +331,7 @@ <Compile Include="Security\IEncryptionManager.cs" /> <Compile Include="Session\AuthenticationRequest.cs" /> <Compile Include="Social\ISharingManager.cs" /> + <Compile Include="Sorting\SortHelper.cs" /> <Compile Include="Subtitles\ISubtitleManager.cs" /> <Compile Include="Subtitles\ISubtitleProvider.cs" /> <Compile Include="Providers\ItemIdentifier.cs" /> diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs b/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs index f8f4e9ec9..ddaf7ff6d 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs @@ -90,8 +90,7 @@ namespace MediaBrowser.Controller.MediaEncoding Cabac = info.Cabac; Context = info.Context; - if (info.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Encode || - info.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Embed) + if (info.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External) { SubtitleStreamIndex = info.SubtitleStreamIndex; } diff --git a/MediaBrowser.Controller/Persistence/IItemRepository.cs b/MediaBrowser.Controller/Persistence/IItemRepository.cs index 533d66b95..15df1f649 100644 --- a/MediaBrowser.Controller/Persistence/IItemRepository.cs +++ b/MediaBrowser.Controller/Persistence/IItemRepository.cs @@ -43,13 +43,6 @@ namespace MediaBrowser.Controller.Persistence IEnumerable<ItemReview> GetCriticReviews(Guid itemId); /// <summary> - /// Gets the children items. - /// </summary> - /// <param name="parentId">The parent identifier.</param> - /// <returns>IEnumerable<BaseItem>.</returns> - IEnumerable<BaseItem> GetChildrenItems(Guid parentId); - - /// <summary> /// Saves the critic reviews. /// </summary> /// <param name="itemId">The item id.</param> @@ -97,22 +90,6 @@ namespace MediaBrowser.Controller.Persistence Task SaveChapters(Guid id, IEnumerable<ChapterInfo> chapters, CancellationToken cancellationToken); /// <summary> - /// Gets the children. - /// </summary> - /// <param name="parentId">The parent id.</param> - /// <returns>IEnumerable{ChildDefinition}.</returns> - IEnumerable<Guid> GetChildren(Guid parentId); - - /// <summary> - /// Saves the children. - /// </summary> - /// <param name="parentId">The parent id.</param> - /// <param name="children">The children.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task.</returns> - Task SaveChildren(Guid parentId, IEnumerable<Guid> children, CancellationToken cancellationToken); - - /// <summary> /// Gets the media streams. /// </summary> /// <param name="query">The query.</param> diff --git a/MediaBrowser.Controller/Providers/ChannelItemLookupInfo.cs b/MediaBrowser.Controller/Providers/ChannelItemLookupInfo.cs deleted file mode 100644 index 6c972f3bf..000000000 --- a/MediaBrowser.Controller/Providers/ChannelItemLookupInfo.cs +++ /dev/null @@ -1,11 +0,0 @@ -using MediaBrowser.Model.Channels; -using MediaBrowser.Model.Entities; - -namespace MediaBrowser.Controller.Providers -{ - public class ChannelItemLookupInfo : ItemLookupInfo - { - public ChannelMediaContentType ContentType { get; set; } - public ExtraType ExtraType { get; set; } - } -}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/TrailerInfo.cs b/MediaBrowser.Controller/Providers/TrailerInfo.cs index fe26ec43e..65ddc2d1e 100644 --- a/MediaBrowser.Controller/Providers/TrailerInfo.cs +++ b/MediaBrowser.Controller/Providers/TrailerInfo.cs @@ -1,3 +1,5 @@ +using MediaBrowser.Model.Entities; + namespace MediaBrowser.Controller.Providers { public class TrailerInfo : ItemLookupInfo diff --git a/MediaBrowser.Controller/Sorting/SortHelper.cs b/MediaBrowser.Controller/Sorting/SortHelper.cs new file mode 100644 index 000000000..95a3c26c4 --- /dev/null +++ b/MediaBrowser.Controller/Sorting/SortHelper.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Sorting +{ + public static class SortHelper + { + private enum ChunkType { Alphanumeric, Numeric }; + + public static bool InChunk(char ch, char otherCh) + { + var type = ChunkType.Alphanumeric; + + if (char.IsDigit(otherCh)) + { + type = ChunkType.Numeric; + } + + if ((type == ChunkType.Alphanumeric && char.IsDigit(ch)) + || (type == ChunkType.Numeric && !char.IsDigit(ch))) + { + return false; + } + + return true; + } + } +} diff --git a/MediaBrowser.Controller/packages.config b/MediaBrowser.Controller/packages.config index 34e16d2ad..84422d9da 100644 --- a/MediaBrowser.Controller/packages.config +++ b/MediaBrowser.Controller/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="Interfaces.IO" version="1.0.0.5" targetFramework="net45" /> <package id="morelinq" version="1.4.0" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> diff --git a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs index d1a415f73..55b775751 100644 --- a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs +++ b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs @@ -488,12 +488,12 @@ namespace MediaBrowser.Dlna.ContentDirectory var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user) { Person = person.Name, - IncludeItemTypes = new[] { typeof(Movie).Name, typeof(Series).Name, typeof(ChannelVideoItem).Name }, + IncludeItemTypes = new[] { typeof(Movie).Name, typeof(Series).Name, typeof(Trailer).Name }, SortBy = new[] { ItemSortBy.SortName }, Limit = limit, StartIndex = startIndex - }, new string[] { }); + }); var serverItems = itemsResult.Items.Select(i => new ServerItem { diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index 91d1af8f4..e8e969a5f 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -188,15 +188,15 @@ namespace MediaBrowser.Dlna.Didl { var subtitleAdded = AddSubtitleElement(container, subtitle); - if (subtitleAdded && _profile.EnableSingleSubtitleLimit) - { - break; - } + if (subtitleAdded && _profile.EnableSingleSubtitleLimit) + { + break; + } } } } - private bool AddSubtitleElement(XmlElement container, SubtitleStreamInfo info) + private bool AddSubtitleElement(XmlElement container, SubtitleStreamInfo info) { var subtitleProfile = _profile.SubtitleProfiles .FirstOrDefault(i => string.Equals(info.Format, i.Format, StringComparison.OrdinalIgnoreCase) && i.Method == SubtitleDeliveryMethod.External); @@ -213,13 +213,13 @@ namespace MediaBrowser.Dlna.Didl // <sec:CaptionInfoEx sec:type="srt">http://192.168.1.3:9999/video.srt</sec:CaptionInfoEx> // <sec:CaptionInfo sec:type="srt">http://192.168.1.3:9999/video.srt</sec:CaptionInfo> - //var res = container.OwnerDocument.CreateElement("SEC", "CaptionInfoEx"); + var res = container.OwnerDocument.CreateElement("CaptionInfoEx", "sec"); - //res.InnerText = info.Url; + res.InnerText = info.Url; //// TODO: attribute needs SEC: - //res.SetAttribute("type", info.Format.ToLower()); - //container.AppendChild(res); + res.SetAttribute("type", "sec", info.Format.ToLower()); + container.AppendChild(res); } else if (string.Equals(subtitleMode, "smi", StringComparison.OrdinalIgnoreCase)) { @@ -243,7 +243,7 @@ namespace MediaBrowser.Dlna.Didl container.AppendChild(res); } - return true; + return true; } private void AddVideoResource(XmlElement container, IHasMediaSources video, string deviceId, Filter filter, string contentFeatures, StreamInfo streamInfo) diff --git a/MediaBrowser.Dlna/Main/DlnaEntryPoint.cs b/MediaBrowser.Dlna/Main/DlnaEntryPoint.cs index 2133888b6..8a30fbf40 100644 --- a/MediaBrowser.Dlna/Main/DlnaEntryPoint.cs +++ b/MediaBrowser.Dlna/Main/DlnaEntryPoint.cs @@ -161,7 +161,7 @@ namespace MediaBrowser.Dlna.Main var descriptorURI = "/dlna/" + udn + "/description.xml"; - var uri = new Uri(_appHost.GetLocalApiUrl(addressString) + descriptorURI); + var uri = new Uri(_appHost.GetLocalApiUrl(address) + descriptorURI); var services = new List<string> { diff --git a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj index 78dde72c5..9df9c0a25 100644 --- a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj +++ b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj @@ -42,7 +42,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="MoreLinq"> <HintPath>..\packages\morelinq.1.4.0\lib\net35\MoreLinq.dll</HintPath> diff --git a/MediaBrowser.Dlna/PlayTo/PlayToManager.cs b/MediaBrowser.Dlna/PlayTo/PlayToManager.cs index 0328111c5..d2b48474c 100644 --- a/MediaBrowser.Dlna/PlayTo/PlayToManager.cs +++ b/MediaBrowser.Dlna/PlayTo/PlayToManager.cs @@ -171,7 +171,7 @@ namespace MediaBrowser.Dlna.PlayTo private string GetServerAddress(IPAddress localIp) { - return _appHost.GetLocalApiUrl(localIp.ToString()); + return _appHost.GetLocalApiUrl(localIp); } public void Dispose() diff --git a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs index 09e10cecf..a8e6b1ca6 100644 --- a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs +++ b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs @@ -31,10 +31,10 @@ namespace MediaBrowser.Dlna.Profiles MaxIconWidth = 48; MaxIconHeight = 48; - MaxStreamingBitrate = 12000000; - MaxStaticBitrate = 12000000; - MusicStreamingTranscodingBitrate = 128000; - MusicSyncBitrate = 128000; + MaxStreamingBitrate = 15000000; + MaxStaticBitrate = 15000000; + MusicStreamingTranscodingBitrate = 192000; + MusicSyncBitrate = 192000; EnableAlbumArtInDidl = false; diff --git a/MediaBrowser.Dlna/Profiles/KodiProfile.cs b/MediaBrowser.Dlna/Profiles/KodiProfile.cs index a039a26f4..184923b70 100644 --- a/MediaBrowser.Dlna/Profiles/KodiProfile.cs +++ b/MediaBrowser.Dlna/Profiles/KodiProfile.cs @@ -101,6 +101,48 @@ namespace MediaBrowser.Dlna.Profiles new SubtitleProfile { + Format = "ass", + Method = SubtitleDeliveryMethod.Embed, + DidlMode = "", + }, + + new SubtitleProfile + { + Format = "ssa", + Method = SubtitleDeliveryMethod.Embed, + DidlMode = "", + }, + + new SubtitleProfile + { + Format = "smi", + Method = SubtitleDeliveryMethod.Embed, + DidlMode = "", + }, + + new SubtitleProfile + { + Format = "dvdsub", + Method = SubtitleDeliveryMethod.Embed, + DidlMode = "", + }, + + new SubtitleProfile + { + Format = "pgs", + Method = SubtitleDeliveryMethod.Embed, + DidlMode = "", + }, + + new SubtitleProfile + { + Format = "pgssub", + Method = SubtitleDeliveryMethod.Embed, + DidlMode = "", + }, + + new SubtitleProfile + { Format = "sub", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", diff --git a/MediaBrowser.Dlna/Profiles/LgTvProfile.cs b/MediaBrowser.Dlna/Profiles/LgTvProfile.cs index 4ecfd3c5b..3bff80a70 100644 --- a/MediaBrowser.Dlna/Profiles/LgTvProfile.cs +++ b/MediaBrowser.Dlna/Profiles/LgTvProfile.cs @@ -54,21 +54,21 @@ namespace MediaBrowser.Dlna.Profiles new DirectPlayProfile { Container = "ts", - VideoCodec = "h264", + VideoCodec = "h264,hevc", AudioCodec = "aac,ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mkv", - VideoCodec = "h264", + VideoCodec = "h264,hevc", AudioCodec = "aac,ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", - VideoCodec = "h264,mpeg4", + VideoCodec = "h264,mpeg4,hevc", AudioCodec = "aac,ac3,mp3", Type = DlnaProfileType.Video }, diff --git a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml index 409fe95e8..b80137dea 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml @@ -23,10 +23,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>5</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml index ad378b01c..bfb4a7bc2 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml @@ -17,10 +17,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml index ea0ea8143..d0a5026fd 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml @@ -22,10 +22,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml index 7ce7668a1..5cc027549 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml @@ -23,10 +23,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>10</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index 49f0dde8c..dfd8730fb 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/mp2t:*,http-get:*:video/MP1S:*,http-get:*:video/mpeg2:*,http-get:*:video/mp4:*,http-get:*:video/x-matroska:*,http-get:*:audio/mpeg:*,http-get:*:audio/mpeg3:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/mp4a-latm:*,http-get:*:image/jpeg:*</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Kodi.xml b/MediaBrowser.Dlna/Profiles/Xml/Kodi.xml index d3bc20545..48c4dcd8e 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Kodi.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Kodi.xml @@ -52,6 +52,12 @@ <SubtitleProfile format="srt" method="External" /> <SubtitleProfile format="sub" method="External" /> <SubtitleProfile format="srt" method="Embed" didlMode="" /> + <SubtitleProfile format="ass" method="Embed" didlMode="" /> + <SubtitleProfile format="ssa" method="Embed" didlMode="" /> + <SubtitleProfile format="smi" method="Embed" didlMode="" /> + <SubtitleProfile format="dvdsub" method="Embed" didlMode="" /> + <SubtitleProfile format="pgs" method="Embed" didlMode="" /> + <SubtitleProfile format="pgssub" method="Embed" didlMode="" /> <SubtitleProfile format="sub" method="Embed" didlMode="" /> </SubtitleProfiles> </Profile>
\ No newline at end of file diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml index 95aed7c1d..6717504bf 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml @@ -23,10 +23,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>10</TimelineOffsetSeconds> @@ -36,9 +36,9 @@ <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <XmlRootAttributes /> <DirectPlayProfiles> - <DirectPlayProfile container="ts" audioCodec="aac,ac3,mp3" videoCodec="h264" type="Video" /> - <DirectPlayProfile container="mkv" audioCodec="aac,ac3,mp3" videoCodec="h264" type="Video" /> - <DirectPlayProfile container="mp4" audioCodec="aac,ac3,mp3" videoCodec="h264,mpeg4" type="Video" /> + <DirectPlayProfile container="ts" audioCodec="aac,ac3,mp3" videoCodec="h264,hevc" type="Video" /> + <DirectPlayProfile container="mkv" audioCodec="aac,ac3,mp3" videoCodec="h264,hevc" type="Video" /> + <DirectPlayProfile container="mp4" audioCodec="aac,ac3,mp3" videoCodec="h264,mpeg4,hevc" type="Video" /> <DirectPlayProfile container="mp3" audioCodec="mp3" type="Audio" /> <DirectPlayProfile container="jpeg" type="Photo" /> </DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml index c7dbc62f9..f101fb7b6 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml @@ -21,10 +21,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml index 2f28f67a1..5756bc219 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml @@ -23,10 +23,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml index 044e32eb4..adbbbb386 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>10</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml index 10944c3ac..a38236476 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -17,10 +17,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml index 4dd7db809..af4f6e913 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml @@ -23,10 +23,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml index 5dd426a51..b32c369f3 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml @@ -23,10 +23,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/divx:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/flac:DLNA.ORG_PN=FLAC;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/ogg:DLNA.ORG_PN=OGG;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/gif:DLNA.ORG_PN=GIF_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_JP_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-flv:DLNA.ORG_PN=FLV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-dvr:DLNA.ORG_PN=DVR_MS;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/wtv:DLNA.ORG_PN=WTV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/ogg:DLNA.ORG_PN=OGV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.rn-realvideo:DLNA.ORG_PN=REAL_VIDEO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_3GPP_P0_L10_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_MP4_P0_L10_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml index ac4ce57a0..7d05fdbdc 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml @@ -25,10 +25,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/divx:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/flac:DLNA.ORG_PN=FLAC;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/ogg:DLNA.ORG_PN=OGG;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/gif:DLNA.ORG_PN=GIF_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_JP_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-flv:DLNA.ORG_PN=FLV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-dvr:DLNA.ORG_PN=DVR_MS;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/wtv:DLNA.ORG_PN=WTV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/ogg:DLNA.ORG_PN=OGV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.rn-realvideo:DLNA.ORG_PN=REAL_VIDEO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_3GPP_P0_L10_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_MP4_P0_L10_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml index 1f2ebc86d..73f5baf65 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <SonyAggregationFlags>10</SonyAggregationFlags> <ProtocolInfo>http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000</ProtocolInfo> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 5dc86c32e..b156bfa5b 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <SonyAggregationFlags>10</SonyAggregationFlags> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml index b34828366..c0f92fe15 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <SonyAggregationFlags>10</SonyAggregationFlags> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml index e94b0058b..f21da6ecc 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <SonyAggregationFlags>10</SonyAggregationFlags> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2014).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2014).xml index 653702b4a..a407ba473 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2014).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2014).xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <SonyAggregationFlags>10</SonyAggregationFlags> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml index 8f78626b2..f0c7cb40a 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <SonyAggregationFlags>10</SonyAggregationFlags> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 4.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 4.xml index d4277d155..58c76d914 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 4.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 4.xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <SonyAggregationFlags>10</SonyAggregationFlags> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml index 433db1958..7a7f37b66 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml @@ -23,10 +23,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>5</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml index 0bbb3f2f1..514168f43 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>5</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml index 969bcb563..9dbefc0e4 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>40</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml index 8dbbf19e9..ab8ed713f 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml @@ -24,10 +24,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>40</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml index b59ce5f2a..0aeb4d912 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml @@ -23,10 +23,10 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>12000000</MaxStreamingBitrate> - <MaxStaticBitrate>12000000</MaxStaticBitrate> - <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> - <MusicSyncBitrate>128000</MusicSyncBitrate> + <MaxStreamingBitrate>15000000</MaxStreamingBitrate> + <MaxStaticBitrate>15000000</MaxStaticBitrate> + <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> + <MusicSyncBitrate>192000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> diff --git a/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs b/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs index 6205c5f70..dc271c557 100644 --- a/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs +++ b/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs @@ -588,6 +588,10 @@ namespace MediaBrowser.Dlna.Ssdp { } + catch (Exception) + { + // If called while shutting down, seeing a NullReferenceException inside EndReceive + } } } diff --git a/MediaBrowser.Dlna/packages.config b/MediaBrowser.Dlna/packages.config index ecb1109ca..4f2cbae7c 100644 --- a/MediaBrowser.Dlna/packages.config +++ b/MediaBrowser.Dlna/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="morelinq" version="1.4.0" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj index 0ecb1e007..134385765 100644 --- a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj +++ b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj @@ -33,7 +33,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="Patterns.Logging"> <HintPath>..\packages\Patterns.Logging.1.0.0.2\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.Logging.dll</HintPath> diff --git a/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs index 0b434231f..1c1bbe71e 100644 --- a/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs @@ -35,7 +35,7 @@ namespace MediaBrowser.LocalMetadata.Parsers if (!string.IsNullOrWhiteSpace(val) && movie != null) { - movie.TmdbCollectionName = val; + movie.CollectionName = val; } break; diff --git a/MediaBrowser.LocalMetadata/packages.config b/MediaBrowser.LocalMetadata/packages.config index 0639208dd..ccef6d686 100644 --- a/MediaBrowser.LocalMetadata/packages.config +++ b/MediaBrowser.LocalMetadata/packages.config @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.MediaEncoding/Encoder/AudioEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/AudioEncoder.cs index a4d4797eb..c2754217f 100644 --- a/MediaBrowser.MediaEncoding/Encoder/AudioEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/AudioEncoder.cs @@ -35,9 +35,13 @@ namespace MediaBrowser.MediaEncoding.Encoder audioTranscodeParams.Add("-ac " + state.OutputAudioChannels.Value.ToString(UsCulture)); } - if (state.OutputAudioSampleRate.HasValue) + // opus will fail on 44100 + if (!string.Equals(state.OutputAudioCodec, "opus", StringComparison.OrdinalIgnoreCase)) { - audioTranscodeParams.Add("-ar " + state.OutputAudioSampleRate.Value.ToString(UsCulture)); + if (state.OutputAudioSampleRate.HasValue) + { + audioTranscodeParams.Add("-ar " + state.OutputAudioSampleRate.Value.ToString(UsCulture)); + } } const string vn = " -vn"; diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs index aef206f13..1df7ffab3 100644 --- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs @@ -20,6 +20,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using CommonIO; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.MediaEncoding.Encoder { @@ -456,7 +457,7 @@ namespace MediaBrowser.MediaEncoding.Encoder { var arg = string.Format("-i {0}", GetInputPathArgument(state)); - if (state.SubtitleStream != null) + if (state.SubtitleStream != null && state.Options.SubtitleMethod == SubtitleDeliveryMethod.Encode) { if (state.SubtitleStream.IsExternal && !state.SubtitleStream.IsTextSubtitleStream) { @@ -826,7 +827,7 @@ namespace MediaBrowser.MediaEncoding.Encoder args += " -map -0:a"; } - if (state.SubtitleStream == null) + if (state.SubtitleStream == null || state.Options.SubtitleMethod == SubtitleDeliveryMethod.Hls) { args += " -map -0:s"; } @@ -933,7 +934,7 @@ namespace MediaBrowser.MediaEncoding.Encoder var output = string.Empty; - if (state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream) + if (state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream && state.Options.SubtitleMethod == SubtitleDeliveryMethod.Encode) { var subParam = GetTextSubtitleParam(state); @@ -1018,7 +1019,7 @@ namespace MediaBrowser.MediaEncoding.Encoder var pts = string.Empty; - if (state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream) + if (state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream && state.Options.SubtitleMethod == SubtitleDeliveryMethod.Encode && !state.Options.CopyTimestamps) { var seconds = TimeSpan.FromTicks(state.Options.StartTimeTicks ?? 0).TotalSeconds; diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 8d1b4057b..934fbc18f 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -293,10 +293,10 @@ namespace MediaBrowser.MediaEncoding.Encoder } var formats = (video.Container ?? string.Empty).Split(',').ToList(); - var enableInterlacedDection = formats.Contains("vob", StringComparer.OrdinalIgnoreCase) && - formats.Contains("m2ts", StringComparer.OrdinalIgnoreCase) && - formats.Contains("ts", StringComparer.OrdinalIgnoreCase) && - formats.Contains("mpegts", StringComparer.OrdinalIgnoreCase) && + var enableInterlacedDection = formats.Contains("vob", StringComparer.OrdinalIgnoreCase) || + formats.Contains("m2ts", StringComparer.OrdinalIgnoreCase) || + formats.Contains("ts", StringComparer.OrdinalIgnoreCase) || + formats.Contains("mpegts", StringComparer.OrdinalIgnoreCase) || formats.Contains("wtv", StringComparer.OrdinalIgnoreCase); // If it's mpeg based, assume true diff --git a/MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs index 5756566fe..d1afcc720 100644 --- a/MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs @@ -88,7 +88,7 @@ namespace MediaBrowser.MediaEncoding.Encoder args += keyFrameArg; - var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; + var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream && state.Options.SubtitleMethod == SubtitleDeliveryMethod.Encode; // Add resolution params, if specified if (!hasGraphicalSubs) diff --git a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj index 89138592a..5576a49bd 100644 --- a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj +++ b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj @@ -41,7 +41,7 @@ </Reference> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="DvdLib"> <HintPath>..\packages\MediaBrowser.BdInfo.1.0.0.10\lib\net35\DvdLib.dll</HintPath> diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index 882b2e1c2..cbe24bda8 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -604,7 +604,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles process.StandardError.BaseStream.CopyToAsync(logFileStream); - var ranToCompletion = process.WaitForExit(120000); + var ranToCompletion = process.WaitForExit(300000); if (!ranToCompletion) { diff --git a/MediaBrowser.MediaEncoding/packages.config b/MediaBrowser.MediaEncoding/packages.config index 0a8dd0adc..32a5c213d 100644 --- a/MediaBrowser.MediaEncoding/packages.config +++ b/MediaBrowser.MediaEncoding/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="MediaBrowser.BdInfo" version="1.0.0.10" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index 5dcfded6f..54fdc6400 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -470,9 +470,6 @@ <Compile Include="..\MediaBrowser.Model\Dto\ImageOptions.cs"> <Link>Dto\ImageOptions.cs</Link> </Compile> - <Compile Include="..\MediaBrowser.Model\Dto\ItemByNameCounts.cs"> - <Link>Dto\ItemByNameCounts.cs</Link> - </Compile> <Compile Include="..\MediaBrowser.Model\Dto\ItemCounts.cs"> <Link>Dto\ItemCounts.cs</Link> </Compile> diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index 6c484ffc9..473186a46 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -444,9 +444,6 @@ <Compile Include="..\MediaBrowser.Model\Dto\ImageOptions.cs"> <Link>Dto\ImageOptions.cs</Link> </Compile> - <Compile Include="..\MediaBrowser.Model\Dto\ItemByNameCounts.cs"> - <Link>Dto\ItemByNameCounts.cs</Link> - </Compile> <Compile Include="..\MediaBrowser.Model\Dto\ItemCounts.cs"> <Link>Dto\ItemCounts.cs</Link> </Compile> diff --git a/MediaBrowser.Model/ApiClient/ServerCredentials.cs b/MediaBrowser.Model/ApiClient/ServerCredentials.cs index f9af0fa4e..0f0ab65d4 100644 --- a/MediaBrowser.Model/ApiClient/ServerCredentials.cs +++ b/MediaBrowser.Model/ApiClient/ServerCredentials.cs @@ -41,11 +41,6 @@ namespace MediaBrowser.Model.ApiClient { existing.DateLastAccessed = server.DateLastAccessed; } - - if (server.DateLastLocalConnection > existing.DateLastLocalConnection) - { - existing.DateLastLocalConnection = server.DateLastLocalConnection; - } existing.UserLinkType = server.UserLinkType; diff --git a/MediaBrowser.Model/ApiClient/ServerInfo.cs b/MediaBrowser.Model/ApiClient/ServerInfo.cs index 53ae5be52..e1fa581d7 100644 --- a/MediaBrowser.Model/ApiClient/ServerInfo.cs +++ b/MediaBrowser.Model/ApiClient/ServerInfo.cs @@ -19,7 +19,6 @@ namespace MediaBrowser.Model.ApiClient public String AccessToken { get; set; } public List<WakeOnLanInfo> WakeOnLanInfos { get; set; } public DateTime DateLastAccessed { get; set; } - public DateTime DateLastLocalConnection { get; set; } public String ExchangeToken { get; set; } public UserLinkType? UserLinkType { get; set; } public ConnectionMode? LastConnectionMode { get; set; } diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 64edbdea9..041f51a89 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -63,11 +63,11 @@ namespace MediaBrowser.Model.Configuration public bool IsPortAuthorized { get; set; } /// <summary> - /// Gets or sets the item by name path. + /// Gets or sets a value indicating whether [enable case sensitive item ids]. /// </summary> - /// <value>The item by name path.</value> - public string ItemsByNamePath { get; set; } - + /// <value><c>true</c> if [enable case sensitive item ids]; otherwise, <c>false</c>.</value> + public bool EnableCaseSensitiveItemIds { get; set; } + /// <summary> /// Gets or sets the metadata path. /// </summary> @@ -207,7 +207,8 @@ namespace MediaBrowser.Model.Configuration public bool DownloadImagesInAdvance { get; set; } public bool EnableAnonymousUsageReporting { get; set; } - + public bool EnableStandaloneMusicKeys { get; set; } + /// <summary> /// Initializes a new instance of the <see cref="ServerConfiguration" /> class. /// </summary> diff --git a/MediaBrowser.Model/Configuration/UserConfiguration.cs b/MediaBrowser.Model/Configuration/UserConfiguration.cs index a024eeab4..f294d1dec 100644 --- a/MediaBrowser.Model/Configuration/UserConfiguration.cs +++ b/MediaBrowser.Model/Configuration/UserConfiguration.cs @@ -60,7 +60,8 @@ namespace MediaBrowser.Model.Configuration EnableNextEpisodeAutoPlay = true; RememberAudioSelections = true; RememberSubtitleSelections = true; - + DisplayChannelsInline = true; + HidePlayedInLatest = true; PlayDefaultAudioTrack = true; diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index d4ca379c0..b04f1b0fb 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -423,7 +423,24 @@ namespace MediaBrowser.Model.Dlna playlistItem.Container = transcodingProfile.Container; playlistItem.EstimateContentLength = transcodingProfile.EstimateContentLength; playlistItem.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo; - playlistItem.AudioCodec = transcodingProfile.AudioCodec.Split(',')[0]; + + // TODO: We should probably preserve the full list and sent it tp the server that way + string[] supportedAudioCodecs = transcodingProfile.AudioCodec.Split(','); + string inputAudioCodec = audioStream == null ? null : audioStream.Codec; + foreach (string supportedAudioCodec in supportedAudioCodecs) + { + if (StringHelper.EqualsIgnoreCase(supportedAudioCodec, inputAudioCodec)) + { + playlistItem.AudioCodec = supportedAudioCodec; + break; + } + } + + if (string.IsNullOrEmpty(playlistItem.AudioCodec)) + { + playlistItem.AudioCodec = supportedAudioCodecs[0]; + } + playlistItem.VideoCodec = transcodingProfile.VideoCodec; playlistItem.CopyTimestamps = transcodingProfile.CopyTimestamps; playlistItem.SubProtocol = transcodingProfile.Protocol; @@ -761,7 +778,12 @@ namespace MediaBrowser.Model.Dlna // Look for an external profile that matches the stream type (text/graphical) foreach (SubtitleProfile profile in subtitleProfiles) { - if (profile.Method != SubtitleDeliveryMethod.External) + if (profile.Method != SubtitleDeliveryMethod.External && profile.Method != SubtitleDeliveryMethod.Hls) + { + continue; + } + + if (profile.Method == SubtitleDeliveryMethod.Hls && playMethod != PlayMethod.Transcode) { continue; } @@ -771,7 +793,8 @@ namespace MediaBrowser.Model.Dlna continue; } - if (subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format)) + if ((profile.Method == SubtitleDeliveryMethod.External && subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format)) || + (profile.Method == SubtitleDeliveryMethod.Hls && subtitleStream.IsTextSubtitleStream)) { bool requiresConversion = !StringHelper.EqualsIgnoreCase(subtitleStream.Codec, profile.Format); @@ -781,12 +804,6 @@ namespace MediaBrowser.Model.Dlna { return profile; } - - // For sync we can handle the longer extraction times - if (context == EncodingContext.Static && subtitleStream.IsTextSubtitleStream) - { - return profile; - } } } } diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index 79ee1b5c5..9118efb35 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -234,7 +234,8 @@ namespace MediaBrowser.Model.Dlna } list.Add(new NameValuePair("CopyTimestamps", (item.CopyTimestamps).ToString().ToLower())); - + list.Add(new NameValuePair("SubtitleMethod", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External ? item.SubtitleDeliveryMethod.ToString() : string.Empty)); + return list; } @@ -344,6 +345,11 @@ namespace MediaBrowser.Model.Dlna StringHelper.ToStringCultureInvariant(startPositionTicks), subtitleProfile.Format); + if (!string.IsNullOrEmpty(accessToken)) + { + info.Url += "?api_key=" + accessToken; + } + info.IsExternalUrl = false; } else diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index ef2de5d78..7928d0bf9 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -43,6 +43,12 @@ namespace MediaBrowser.Model.Dto /// </summary> /// <value>The etag.</value> public string Etag { get; set; } + + /// <summary> + /// Gets or sets the type of the source. + /// </summary> + /// <value>The type of the source.</value> + public string SourceType { get; set; } /// <summary> /// Gets or sets the playlist item identifier. @@ -207,12 +213,6 @@ namespace MediaBrowser.Model.Dto public string ShortOverview { get; set; } /// <summary> - /// Gets or sets the name of the TMDB collection. - /// </summary> - /// <value>The name of the TMDB collection.</value> - public string TmdbCollectionName { get; set; } - - /// <summary> /// Gets or sets the taglines. /// </summary> /// <value>The taglines.</value> @@ -291,6 +291,12 @@ namespace MediaBrowser.Model.Dto public bool? IsPlaceHolder { get; set; } /// <summary> + /// Gets or sets the number. + /// </summary> + /// <value>The number.</value> + public string Number { get; set; } + + /// <summary> /// Gets or sets the index number. /// </summary> /// <value>The index number.</value> @@ -793,6 +799,11 @@ namespace MediaBrowser.Model.Dto 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> /// Gets or sets the movie count. /// </summary> /// <value>The movie count.</value> diff --git a/MediaBrowser.Model/Dto/ItemByNameCounts.cs b/MediaBrowser.Model/Dto/ItemByNameCounts.cs deleted file mode 100644 index 7c51f07bd..000000000 --- a/MediaBrowser.Model/Dto/ItemByNameCounts.cs +++ /dev/null @@ -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; } - } -} diff --git a/MediaBrowser.Model/Dto/ItemCounts.cs b/MediaBrowser.Model/Dto/ItemCounts.cs index c8745ebe3..e80de26b1 100644 --- a/MediaBrowser.Model/Dto/ItemCounts.cs +++ b/MediaBrowser.Model/Dto/ItemCounts.cs @@ -62,15 +62,5 @@ namespace MediaBrowser.Model.Dto /// </summary> /// <value>The book count.</value> public int BookCount { get; set; } - /// <summary> - /// Gets or sets the unique types. - /// </summary> - /// <value>The unique types.</value> - public List<string> UniqueTypes { get; set; } - - public ItemCounts() - { - UniqueTypes = new List<string>(); - } } } diff --git a/MediaBrowser.Model/Entities/TrailerType.cs b/MediaBrowser.Model/Entities/TrailerType.cs index c96a05bcd..085f461cf 100644 --- a/MediaBrowser.Model/Entities/TrailerType.cs +++ b/MediaBrowser.Model/Entities/TrailerType.cs @@ -5,6 +5,7 @@ namespace MediaBrowser.Model.Entities ComingSoonToTheaters = 1, ComingSoonToDvd = 2, ComingSoonToStreaming = 3, - Archive = 4 + Archive = 4, + LocalTrailer = 5 } }
\ No newline at end of file diff --git a/MediaBrowser.Model/FodyWeavers.xml b/MediaBrowser.Model/FodyWeavers.xml deleted file mode 100644 index 736992810..000000000 --- a/MediaBrowser.Model/FodyWeavers.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Weavers> - <PropertyChanged /> -</Weavers>
\ No newline at end of file diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs index e705102db..71f87ac3a 100644 --- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs +++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs @@ -29,8 +29,14 @@ namespace MediaBrowser.Model.LiveTv public string Id { get; set; } public string Url { get; set; } public string Type { get; set; } + public string DeviceId { get; set; } public bool ImportFavoritesOnly { get; set; } public bool IsEnabled { get; set; } + public string M3UUrl { get; set; } + public string InfoUrl { get; set; } + public string FriendlyName { get; set; } + public int Tuners { get; set; } + public string DiseqC { get; set; } public int DataVersion { get; set; } diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index fda240249..41952963c 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -14,6 +14,7 @@ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <ReleaseVersion> </ReleaseVersion> + <NuGetPackageImportStamp>60e95275</NuGetPackageImportStamp> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -214,7 +215,6 @@ <Compile Include="Dto\IItemDto.cs" /> <Compile Include="Dto\ImageByNameInfo.cs" /> <Compile Include="Dto\ImageInfo.cs" /> - <Compile Include="Dto\ItemByNameCounts.cs" /> <Compile Include="Dto\ItemCounts.cs" /> <Compile Include="Dto\ItemIndex.cs" /> <Compile Include="Dto\RatingType.cs" /> @@ -441,7 +441,6 @@ <Compile Include="Users\UserAction.cs" /> <Compile Include="Users\UserActionType.cs" /> <Compile Include="Users\UserPolicy.cs" /> - <None Include="FodyWeavers.xml" /> <None Include="MediaBrowser.Model.snk" /> </ItemGroup> <ItemGroup> @@ -458,13 +457,6 @@ <PropertyGroup> <PostBuildEvent /> </PropertyGroup> - <Import Project="..\packages\Fody.1.29.2\build\dotnet\Fody.targets" Condition="Exists('..\packages\Fody.1.29.2\build\dotnet\Fody.targets')" /> - <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> - <PropertyGroup> - <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> - </PropertyGroup> - <Error Condition="!Exists('..\packages\Fody.1.29.2\build\dotnet\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.1.29.2\build\dotnet\Fody.targets'))" /> - </Target> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. <Target Name="BeforeBuild"> diff --git a/MediaBrowser.Model/Providers/SubtitleOptions.cs b/MediaBrowser.Model/Providers/SubtitleOptions.cs index 84f01e0b7..2b15c0e1f 100644 --- a/MediaBrowser.Model/Providers/SubtitleOptions.cs +++ b/MediaBrowser.Model/Providers/SubtitleOptions.cs @@ -2,7 +2,7 @@ namespace MediaBrowser.Model.Providers { public class SubtitleOptions { - public bool SkipIfGraphicalSubtitlesPresent { get; set; } + public bool SkipIfEmbeddedSubtitlesPresent { get; set; } public bool SkipIfAudioTrackMatches { get; set; } public string[] DownloadLanguages { get; set; } public bool DownloadMovieSubtitles { get; set; } diff --git a/MediaBrowser.Model/Querying/ItemFields.cs b/MediaBrowser.Model/Querying/ItemFields.cs index 97fec8fdd..1540f178a 100644 --- a/MediaBrowser.Model/Querying/ItemFields.cs +++ b/MediaBrowser.Model/Querying/ItemFields.cs @@ -236,11 +236,6 @@ VoteCount, /// <summary> - /// The TMDB collection name - /// </summary> - TmdbCollectionName, - - /// <summary> /// The trailer url of the item /// </summary> RemoteTrailers, diff --git a/MediaBrowser.Model/Session/PlaybackStopInfo.cs b/MediaBrowser.Model/Session/PlaybackStopInfo.cs index 80d719f03..3b4ac36a7 100644 --- a/MediaBrowser.Model/Session/PlaybackStopInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackStopInfo.cs @@ -12,25 +12,21 @@ namespace MediaBrowser.Model.Session /// </summary> /// <value>The item.</value> public BaseItemInfo Item { get; set; } - /// <summary> /// Gets or sets the item identifier. /// </summary> /// <value>The item identifier.</value> public string ItemId { get; set; } - /// <summary> /// Gets or sets the session id. /// </summary> /// <value>The session id.</value> public string SessionId { get; set; } - /// <summary> /// Gets or sets the media version identifier. /// </summary> /// <value>The media version identifier.</value> public string MediaSourceId { get; set; } - /// <summary> /// Gets or sets the position ticks. /// </summary> @@ -46,5 +42,10 @@ namespace MediaBrowser.Model.Session /// </summary> /// <value>The play session identifier.</value> public string PlaySessionId { get; set; } + /// <summary> + /// Gets or sets a value indicating whether this <see cref="PlaybackStopInfo"/> is failed. + /// </summary> + /// <value><c>true</c> if failed; otherwise, <c>false</c>.</value> + public bool Failed { get; set; } } }
\ No newline at end of file diff --git a/MediaBrowser.Model/packages.config b/MediaBrowser.Model/packages.config deleted file mode 100644 index df2ddcf0f..000000000 --- a/MediaBrowser.Model/packages.config +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="Fody" version="1.29.2" targetFramework="net45" developmentDependency="true" /> - <package id="PropertyChanged.Fody" version="1.50.4" targetFramework="net45" developmentDependency="true" /> -</packages>
\ No newline at end of file diff --git a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs index e82c6a1b9..ff3d5a5b2 100644 --- a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs +++ b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs @@ -55,7 +55,7 @@ namespace MediaBrowser.Providers.BoxSets { var language = item.GetPreferredMetadataLanguage(); - var mainResult = await MovieDbBoxSetProvider.Current.GetMovieDbResult(tmdbId, language, cancellationToken).ConfigureAwait(false); + var mainResult = await MovieDbBoxSetProvider.Current.GetMovieDbResult(tmdbId, null, cancellationToken).ConfigureAwait(false); if (mainResult != null) { diff --git a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs index ae6199a75..bd4078b27 100644 --- a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs +++ b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs @@ -168,12 +168,11 @@ namespace MediaBrowser.Providers.BoxSets if (!string.IsNullOrEmpty(language)) { - url += string.Format("&language={0}", language); - } + url += string.Format("&language={0}", MovieDbProvider.NormalizeLanguage(language)); - var includeImageLanguageParam = MovieDbProvider.GetImageLanguagesParam(language); - // Get images in english and with no language - url += "&include_image_language=" + includeImageLanguageParam; + // Get images in english and with no language + url += "&include_image_language=" + MovieDbProvider.GetImageLanguagesParam(language); + } cancellationToken.ThrowIfCancellationRequested(); @@ -196,7 +195,13 @@ namespace MediaBrowser.Providers.BoxSets { if (!string.IsNullOrEmpty(language) && !string.Equals(language, "en", StringComparison.OrdinalIgnoreCase)) { - url = string.Format(GetCollectionInfo3, id, MovieDbSearch.ApiKey) + "&include_image_language=en,null&language=en"; + url = string.Format(GetCollectionInfo3, id, MovieDbSearch.ApiKey) + "&language=en"; + + if (!string.IsNullOrEmpty(language)) + { + // Get images in english and with no language + url += "&include_image_language=" + MovieDbProvider.GetImageLanguagesParam(language); + } using (var json = await MovieDbProvider.Current.GetMovieDbResponse(new HttpRequestOptions { @@ -239,15 +244,9 @@ namespace MediaBrowser.Providers.BoxSets private static string GetDataFilePath(IApplicationPaths appPaths, string tmdbId, string preferredLanguage) { - if (string.IsNullOrWhiteSpace(preferredLanguage)) - { - throw new ArgumentNullException("preferredLanguage"); - } - var path = GetDataPath(appPaths, tmdbId); - var filename = string.Format("all-{0}.json", - preferredLanguage); + var filename = string.Format("all-{0}.json", preferredLanguage ?? string.Empty); return Path.Combine(path, filename); } diff --git a/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs b/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs deleted file mode 100644 index 9a1a993d9..000000000 --- a/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections.Generic; -using CommonIO; -using MediaBrowser.Common.IO; -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using MediaBrowser.Providers.Manager; - -namespace MediaBrowser.Providers.Channels -{ - public class AudioChannelItemMetadataService : MetadataService<ChannelAudioItem, ItemLookupInfo> - { - public AudioChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) - { - } - - protected override void MergeData(MetadataResult<ChannelAudioItem> source, MetadataResult<ChannelAudioItem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - } - } -} diff --git a/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs b/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs deleted file mode 100644 index 597ae5e10..000000000 --- a/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs +++ /dev/null @@ -1,25 +0,0 @@ -using MediaBrowser.Common.IO; -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using MediaBrowser.Providers.Manager; -using System.Collections.Generic; -using CommonIO; - -namespace MediaBrowser.Providers.Channels -{ - public class VideoChannelItemMetadataService : MetadataService<ChannelVideoItem, ChannelItemLookupInfo> - { - public VideoChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) - { - } - - protected override void MergeData(MetadataResult<ChannelVideoItem> source, MetadataResult<ChannelVideoItem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - } - } -} diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index 64a0e6d5b..bd1961143 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -421,7 +421,7 @@ namespace MediaBrowser.Providers.Manager if (saveLocally) { - if (item is Episode) + if (type == ImageType.Primary && item is Episode) { path = Path.Combine(Path.GetDirectoryName(item.Path), "metadata", filename + extension); } diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 416cc51bd..b7991cb78 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -97,7 +97,7 @@ namespace MediaBrowser.Providers.Manager var itemImageProvider = new ItemImageProvider(Logger, ProviderManager, ServerConfigurationManager, FileSystem); var localImagesFailed = false; - var allImageProviders = ((ProviderManager)ProviderManager).GetImageProviders(item, refreshOptions).ToList(); + var allImageProviders = ((ProviderManager)ProviderManager).GetImageProviders(item, refreshOptions).ToList(); // Start by validating images try @@ -301,17 +301,23 @@ namespace MediaBrowser.Providers.Manager { if (ServerConfigurationManager.Configuration.DownloadImagesInAdvance) { - await ProviderManager.SaveImage(personEntity, imageUrl, null, ImageType.Primary, null, cancellationToken).ConfigureAwait(false); - } - else - { - personEntity.SetImage(new ItemImageInfo + try { - Path = imageUrl, - Type = ImageType.Primary, - IsPlaceholder = true - }, 0); + await ProviderManager.SaveImage(personEntity, imageUrl, null, ImageType.Primary, null, cancellationToken).ConfigureAwait(false); + return; + } + catch (Exception ex) + { + Logger.ErrorException("Error in AddPersonImage", ex); + } } + + personEntity.SetImage(new ItemImageInfo + { + Path = imageUrl, + Type = ImageType.Primary, + IsPlaceholder = true + }, 0); } private readonly Task _cachedTask = Task.FromResult(true); diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index b0d3f6381..a83a40bc3 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -1022,8 +1022,8 @@ namespace MediaBrowser.Providers.Manager .ToList(); var musicArtists = albums - .Select(i => i.GetParent()) - .OfType<MusicArtist>() + .Select(i => i.MusicArtist) + .Where(i => i != null) .ToList(); var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new Progress<double>(), cancellationToken, options, true)); diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index d316d2cd8..8927e00aa 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -50,7 +50,7 @@ </Reference> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="DvdLib, Version=1.0.5167.21152, Culture=neutral, PublicKeyToken=7a2f3f5ec8d93575, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> @@ -90,10 +90,8 @@ <Compile Include="Chapters\ChapterManager.cs" /> <Compile Include="Folders\DefaultImageProvider.cs" /> <Compile Include="Folders\FolderMetadataService.cs" /> - <Compile Include="Channels\AudioChannelItemMetadataService.cs" /> <Compile Include="Folders\UserViewMetadataService.cs" /> <Compile Include="GameGenres\GameGenreMetadataService.cs" /> - <Compile Include="Channels\VideoChannelItemMetadataService.cs" /> <Compile Include="Games\GameMetadataService.cs" /> <Compile Include="Games\GameSystemMetadataService.cs" /> <Compile Include="Genres\GenreMetadataService.cs" /> @@ -169,26 +167,28 @@ <Compile Include="Subtitles\SubtitleManager.cs" /> <Compile Include="TV\DummySeasonProvider.cs" /> <Compile Include="TV\EpisodeMetadataService.cs" /> - <Compile Include="TV\FanArtTvUpdatesPostScanTask.cs" /> - <Compile Include="TV\FanArtSeasonProvider.cs" /> - <Compile Include="TV\FanartSeriesProvider.cs" /> + <Compile Include="TV\FanArt\FanArtTvUpdatesPostScanTask.cs" /> + <Compile Include="TV\FanArt\FanArtSeasonProvider.cs" /> + <Compile Include="TV\FanArt\FanartSeriesProvider.cs" /> <Compile Include="TV\MissingEpisodeProvider.cs" /> - <Compile Include="TV\MovieDbEpisodeImageProvider.cs" /> - <Compile Include="TV\MovieDbSeasonProvider.cs" /> - <Compile Include="TV\MovieDbSeriesImageProvider.cs" /> - <Compile Include="TV\MovieDbSeriesProvider.cs" /> - <Compile Include="TV\OmdbEpisodeProvider.cs" /> + <Compile Include="TV\TheMovieDb\MovieDbProviderBase.cs" /> + <Compile Include="TV\TheMovieDb\MovieDbEpisodeImageProvider.cs" /> + <Compile Include="TV\TheMovieDb\MovieDbSeasonProvider.cs" /> + <Compile Include="TV\TheMovieDb\MovieDbSeriesImageProvider.cs" /> + <Compile Include="TV\TheMovieDb\MovieDbSeriesProvider.cs" /> + <Compile Include="TV\TheMovieDb\MovieDbEpisodeProvider.cs" /> + <Compile Include="TV\Omdb\OmdbEpisodeProvider.cs" /> <Compile Include="TV\SeriesMetadataService.cs" /> - <Compile Include="TV\TvdbEpisodeImageProvider.cs" /> + <Compile Include="TV\TheTVDB\TvdbEpisodeImageProvider.cs" /> <Compile Include="People\TvdbPersonImageProvider.cs" /> - <Compile Include="TV\TvdbSeasonIdentityProvider.cs" /> - <Compile Include="TV\TvdbSeasonImageProvider.cs" /> - <Compile Include="TV\TvdbSeriesImageProvider.cs" /> + <Compile Include="TV\TheTVDB\TvdbSeasonIdentityProvider.cs" /> + <Compile Include="TV\TheTVDB\TvdbSeasonImageProvider.cs" /> + <Compile Include="TV\TheTVDB\TvdbSeriesImageProvider.cs" /> <Compile Include="TV\SeasonMetadataService.cs" /> - <Compile Include="TV\TvdbEpisodeProvider.cs" /> - <Compile Include="TV\TvdbSeriesProvider.cs" /> + <Compile Include="TV\TheTVDB\TvdbEpisodeProvider.cs" /> + <Compile Include="TV\TheTVDB\TvdbSeriesProvider.cs" /> <Compile Include="TV\SeriesPostScanTask.cs" /> - <Compile Include="TV\TvdbPrescanTask.cs" /> + <Compile Include="TV\TheTVDB\TvdbPrescanTask.cs" /> <Compile Include="TV\TvExternalIds.cs" /> <Compile Include="Users\UserMetadataService.cs" /> <Compile Include="Videos\VideoMetadataService.cs" /> diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index c98a67bbd..f9108b9fd 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -107,11 +107,21 @@ namespace MediaBrowser.Providers.MediaInfo private string GetAudioImagePath(Audio item) { - var album = item.AlbumEntity; - var filename = item.Album ?? string.Empty; filename += string.Join(",", item.Artists.ToArray()); - filename += album == null ? item.Id.ToString("N") + "_primary" + item.DateModified.Ticks : album.Id.ToString("N") + album.DateModified.Ticks + "_primary"; + + if (!string.IsNullOrWhiteSpace(item.Album)) + { + filename += "_" + item.Album; + } + else if (!string.IsNullOrWhiteSpace(item.Name)) + { + filename += "_" + item.Name; + } + else + { + filename += "_" + item.Id.ToString("N"); + } filename = filename.GetMD5() + ".jpg"; diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs index ee05a89a8..5f556bffb 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs @@ -532,7 +532,7 @@ namespace MediaBrowser.Providers.MediaInfo _subtitleManager) .DownloadSubtitles(video, currentStreams.Concat(externalSubtitleStreams).ToList(), - subtitleOptions.SkipIfGraphicalSubtitlesPresent, + subtitleOptions.SkipIfEmbeddedSubtitlesPresent, subtitleOptions.SkipIfAudioTrackMatches, subtitleOptions.DownloadLanguages, cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs b/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs index 6230e7347..d82289032 100644 --- a/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs +++ b/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs @@ -26,7 +26,7 @@ namespace MediaBrowser.Providers.MediaInfo public async Task<List<string>> DownloadSubtitles(Video video, List<MediaStream> mediaStreams, - bool skipIfGraphicalSubtitlesPresent, + bool skipIfEmbeddedSubtitlesPresent, bool skipIfAudioTrackMatches, IEnumerable<string> languages, CancellationToken cancellationToken) @@ -59,7 +59,7 @@ namespace MediaBrowser.Providers.MediaInfo { 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); if (downloaded) @@ -78,7 +78,7 @@ namespace MediaBrowser.Providers.MediaInfo private async Task<bool> DownloadSubtitles(Video video, List<MediaStream> mediaStreams, - bool skipIfGraphicalSubtitlesPresent, + bool skipIfEmbeddedSubtitlesPresent, bool skipIfAudioTrackMatches, string language, VideoContentType mediaType, @@ -107,8 +107,8 @@ namespace MediaBrowser.Providers.MediaInfo } // 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; } diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs index 4953621f5..b8b17cefe 100644 --- a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs +++ b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs @@ -114,7 +114,7 @@ namespace MediaBrowser.Providers.MediaInfo _subtitleManager) .DownloadSubtitles(video, mediaStreams, - options.SkipIfGraphicalSubtitlesPresent, + options.SkipIfEmbeddedSubtitlesPresent, options.SkipIfAudioTrackMatches, options.DownloadLanguages, cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs index abd4a6202..157704240 100644 --- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs +++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs @@ -179,7 +179,7 @@ namespace MediaBrowser.Providers.Movies if (movieItem != null) { - movieItem.TmdbCollectionName = movieData.belongs_to_collection.name; + movieItem.CollectionName = movieData.belongs_to_collection.name; } } diff --git a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs index b6f93392b..6bfd9b7fa 100644 --- a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs @@ -42,23 +42,6 @@ namespace MediaBrowser.Providers.Movies public bool Supports(IHasImages item) { - var channelItem = item as IChannelMediaItem; - - if (channelItem != null) - { - if (channelItem.ContentType == ChannelMediaContentType.Movie) - { - return true; - } - if (channelItem.ContentType == ChannelMediaContentType.MovieExtra) - { - if (channelItem.ExtraType == ExtraType.Trailer) - { - return true; - } - } - } - // Supports images for tv movies var tvProgram = item as LiveTvProgram; if (tvProgram != null && tvProgram.IsMovie) @@ -66,7 +49,7 @@ namespace MediaBrowser.Providers.Movies return true; } - return item is Movie || item is MusicVideo; + return item is Movie || item is MusicVideo || item is Trailer; } public IEnumerable<ImageType> GetSupportedImages(IHasImages item) @@ -82,7 +65,7 @@ namespace MediaBrowser.Providers.Movies { var list = new List<RemoteImageInfo>(); - var results = await FetchImages((BaseItem)item, _jsonSerializer, cancellationToken).ConfigureAwait(false); + var results = await FetchImages((BaseItem)item, null, _jsonSerializer, cancellationToken).ConfigureAwait(false); if (results == null) { @@ -183,14 +166,13 @@ namespace MediaBrowser.Providers.Movies /// Fetches the images. /// </summary> /// <param name="item">The item.</param> + /// <param name="language">The language.</param> /// <param name="jsonSerializer">The json serializer.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{MovieImages}.</returns> - private async Task<MovieDbProvider.Images> FetchImages(BaseItem item, IJsonSerializer jsonSerializer, - CancellationToken cancellationToken) + private async Task<MovieDbProvider.Images> FetchImages(BaseItem item, string language, IJsonSerializer jsonSerializer, CancellationToken cancellationToken) { var tmdbId = item.GetProviderId(MetadataProviders.Tmdb); - var language = item.GetPreferredMetadataLanguage(); if (string.IsNullOrWhiteSpace(tmdbId)) { diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index 593c6f180..58efc9534 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -16,12 +16,14 @@ using System; using System.Collections.Generic; using System.Globalization; using System.IO; +using System.Linq; using System.Net; using System.Threading; using System.Threading.Tasks; using CommonIO; using MediaBrowser.Common; using MediaBrowser.Model.Net; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Providers.Movies { @@ -226,10 +228,6 @@ namespace MediaBrowser.Providers.Movies { throw new ArgumentNullException("tmdbId"); } - if (string.IsNullOrEmpty(language)) - { - throw new ArgumentNullException("language"); - } var path = GetDataFilePath(tmdbId, language); @@ -253,15 +251,15 @@ namespace MediaBrowser.Providers.Movies { throw new ArgumentNullException("tmdbId"); } - if (string.IsNullOrEmpty(preferredLanguage)) - { - throw new ArgumentNullException("preferredLanguage"); - } var path = GetMovieDataPath(_configurationManager.ApplicationPaths, tmdbId); - var filename = string.Format("all-{0}.json", - preferredLanguage); + if (string.IsNullOrWhiteSpace(preferredLanguage)) + { + preferredLanguage = "alllang"; + } + + var filename = string.Format("all-{0}.json", preferredLanguage); return Path.Combine(path, filename); } @@ -283,6 +281,20 @@ namespace MediaBrowser.Providers.Movies return string.Join(",", languages.ToArray()); } + public static string NormalizeLanguage(string language) + { + // They require this to be uppercase + // http://emby.media/community/index.php?/topic/32454-fr-follow-tmdbs-new-language-api-update/?p=311148 + var parts = language.Split('-'); + + if (parts.Length == 2) + { + language = parts[0] + "-" + parts[1].ToUpper(); + } + + return language; + } + /// <summary> /// Fetches the main result. /// </summary> @@ -297,12 +309,11 @@ namespace MediaBrowser.Providers.Movies if (!string.IsNullOrEmpty(language)) { - url += string.Format("&language={0}", language); - } + url += string.Format("&language={0}", NormalizeLanguage(language)); - var includeImageLanguageParam = GetImageLanguagesParam(language); - // Get images in english and with no language - url += "&include_image_language=" + includeImageLanguageParam; + // Get images in english and with no language + url += "&include_image_language=" + GetImageLanguagesParam(language); + } CompleteMovieData mainResult; @@ -348,7 +359,13 @@ namespace MediaBrowser.Providers.Movies { _logger.Info("MovieDbProvider couldn't find meta for language " + language + ". Trying English..."); - url = string.Format(GetMovieInfo3, id, ApiKey) + "&include_image_language=" + includeImageLanguageParam + "&language=en"; + url = string.Format(GetMovieInfo3, id, ApiKey) + "&language=en"; + + if (!string.IsNullOrEmpty(language)) + { + // Get images in english and with no language + url += "&include_image_language=" + GetImageLanguagesParam(language); + } using (var json = await GetMovieDbResponse(new HttpRequestOptions { diff --git a/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs b/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs index 2bb452df7..2b8686d5d 100644 --- a/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Movies { - public class MovieDbTrailerProvider : IHasOrder, IRemoteMetadataProvider<ChannelVideoItem, ChannelItemLookupInfo> + public class MovieDbTrailerProvider : IHasOrder, IRemoteMetadataProvider<Trailer, TrailerInfo> { private readonly IHttpClient _httpClient; @@ -26,24 +26,9 @@ namespace MediaBrowser.Providers.Movies return MovieDbProvider.Current.GetMovieSearchResults(searchInfo, cancellationToken); } - public Task<MetadataResult<ChannelVideoItem>> GetMetadata(ChannelItemLookupInfo info, CancellationToken cancellationToken) + public Task<MetadataResult<Trailer>> GetMetadata(TrailerInfo info, CancellationToken cancellationToken) { - if (info.ContentType != ChannelMediaContentType.MovieExtra || info.ExtraType != ExtraType.Trailer) - { - return Task.FromResult(new MetadataResult<ChannelVideoItem>()); - } - - return MovieDbProvider.Current.GetItemMetadata<ChannelVideoItem>(info, cancellationToken); - } - - public Task<IEnumerable<RemoteSearchResult>> GetSearchResults(ChannelItemLookupInfo info, CancellationToken cancellationToken) - { - if (info.ContentType != ChannelMediaContentType.MovieExtra || info.ExtraType != ExtraType.Trailer) - { - return Task.FromResult<IEnumerable<RemoteSearchResult>>(new List<RemoteSearchResult>()); - } - - return MovieDbProvider.Current.GetMovieSearchResults(info, cancellationToken); + return MovieDbProvider.Current.GetItemMetadata<Trailer>(info, cancellationToken); } public string Name diff --git a/MediaBrowser.Providers/Movies/MovieExternalIds.cs b/MediaBrowser.Providers/Movies/MovieExternalIds.cs index c582447a9..adaff5e77 100644 --- a/MediaBrowser.Providers/Movies/MovieExternalIds.cs +++ b/MediaBrowser.Providers/Movies/MovieExternalIds.cs @@ -28,13 +28,6 @@ namespace MediaBrowser.Providers.Movies public bool Supports(IHasProviderIds item) { - var channelItem = item as ChannelVideoItem; - - if (channelItem != null && channelItem.ContentType == ChannelMediaContentType.MovieExtra && channelItem.ExtraType == ExtraType.Trailer) - { - return true; - } - // Supports images for tv movies var tvProgram = item as LiveTvProgram; if (tvProgram != null && tvProgram.IsMovie) @@ -42,7 +35,7 @@ namespace MediaBrowser.Providers.Movies return true; } - return item is Movie || item is MusicVideo; + return item is Movie || item is MusicVideo || item is Trailer; } } @@ -88,7 +81,7 @@ namespace MediaBrowser.Providers.Movies public bool Supports(IHasProviderIds item) { - return item is Movie || item is MusicVideo; + return item is Movie || item is MusicVideo || item is Trailer; } } @@ -157,14 +150,7 @@ namespace MediaBrowser.Providers.Movies public bool Supports(IHasProviderIds item) { - var channelItem = item as ChannelVideoItem; - - if (channelItem != null && channelItem.ContentType == ChannelMediaContentType.MovieExtra && channelItem.ExtraType == ExtraType.Trailer) - { - return true; - } - - return item is Movie || item is MusicVideo || item is Series || item is Episode; + return item is Movie || item is MusicVideo || item is Series || item is Episode || item is Trailer; } } diff --git a/MediaBrowser.Providers/Movies/MovieMetadataService.cs b/MediaBrowser.Providers/Movies/MovieMetadataService.cs index 8757bdd0d..e70ec0057 100644 --- a/MediaBrowser.Providers/Movies/MovieMetadataService.cs +++ b/MediaBrowser.Providers/Movies/MovieMetadataService.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.IO; -using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; @@ -8,6 +7,7 @@ using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; using System.Collections.Generic; using CommonIO; +using MediaBrowser.Controller.Entities; namespace MediaBrowser.Providers.Movies { @@ -37,10 +37,42 @@ namespace MediaBrowser.Providers.Movies var sourceItem = source.Item; var targetItem = target.Item; - if (replaceData || string.IsNullOrEmpty(targetItem.TmdbCollectionName)) + if (replaceData || string.IsNullOrEmpty(targetItem.CollectionName)) { - targetItem.TmdbCollectionName = sourceItem.TmdbCollectionName; + targetItem.CollectionName = sourceItem.CollectionName; } } } + + public class TrailerMetadataService : MetadataService<Trailer, TrailerInfo> + { + public TrailerMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) + : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) + { + } + + protected override bool IsFullLocalMetadata(Trailer item) + { + if (string.IsNullOrWhiteSpace(item.Overview)) + { + return false; + } + if (!item.ProductionYear.HasValue) + { + return false; + } + return base.IsFullLocalMetadata(item); + } + + protected override void MergeData(MetadataResult<Trailer> source, MetadataResult<Trailer> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + + if (replaceData || target.Item.TrailerTypes.Count == 0) + { + target.Item.TrailerTypes = source.Item.TrailerTypes; + } + } + } + } diff --git a/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs b/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs index eaebd426f..345ed8adb 100644 --- a/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs @@ -81,23 +81,6 @@ namespace MediaBrowser.Providers.Omdb return false; } - var channelItem = item as IChannelMediaItem; - - if (channelItem != null) - { - if (channelItem.ContentType == ChannelMediaContentType.Movie) - { - return true; - } - if (channelItem.ContentType == ChannelMediaContentType.MovieExtra) - { - if (channelItem.ExtraType == ExtraType.Trailer) - { - return true; - } - } - } - // Supports images for tv movies var tvProgram = item as LiveTvProgram; if (tvProgram != null && tvProgram.IsMovie) @@ -105,7 +88,7 @@ namespace MediaBrowser.Providers.Omdb return true; } - return item is Movie; + return item is Movie || item is Trailer; } public int Order diff --git a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs index ace1a8ffb..0b092397f 100644 --- a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs @@ -22,7 +22,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Omdb { public class OmdbItemProvider : IRemoteMetadataProvider<Series, SeriesInfo>, - IRemoteMetadataProvider<Movie, MovieInfo>, IRemoteMetadataProvider<ChannelVideoItem, ChannelItemLookupInfo>, IRemoteMetadataProvider<LiveTvProgram, LiveTvProgramLookupInfo> + IRemoteMetadataProvider<Movie, MovieInfo>, IRemoteMetadataProvider<Trailer, TrailerInfo>, IRemoteMetadataProvider<LiveTvProgram, LiveTvProgramLookupInfo> { private readonly IJsonSerializer _jsonSerializer; private readonly IHttpClient _httpClient; @@ -100,13 +100,13 @@ namespace MediaBrowser.Providers.Omdb if (enableMultipleResults) { url += "&s=" + WebUtility.UrlEncode(name); + isSearch = true; } else { url += "&t=" + WebUtility.UrlEncode(name); } url += "&type=" + type; - isSearch = true; } else { @@ -196,23 +196,13 @@ namespace MediaBrowser.Providers.Omdb return list; } - public Task<MetadataResult<ChannelVideoItem>> GetMetadata(ChannelItemLookupInfo info, CancellationToken cancellationToken) + public Task<MetadataResult<Trailer>> GetMetadata(TrailerInfo info, CancellationToken cancellationToken) { - if (info.ContentType != ChannelMediaContentType.MovieExtra || info.ExtraType != ExtraType.Trailer) - { - return Task.FromResult(new MetadataResult<ChannelVideoItem>()); - } - - return GetMovieResult<ChannelVideoItem>(info, cancellationToken); + return GetMovieResult<Trailer>(info, cancellationToken); } - public Task<IEnumerable<RemoteSearchResult>> GetSearchResults(ChannelItemLookupInfo searchInfo, CancellationToken cancellationToken) + public Task<IEnumerable<RemoteSearchResult>> GetSearchResults(TrailerInfo searchInfo, CancellationToken cancellationToken) { - if (searchInfo.ContentType != ChannelMediaContentType.MovieExtra || searchInfo.ExtraType != ExtraType.Trailer) - { - return Task.FromResult<IEnumerable<RemoteSearchResult>>(new List<RemoteSearchResult>()); - } - return GetSearchResults(searchInfo, "movie", cancellationToken); } diff --git a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs index b5546683b..2d4d484e6 100644 --- a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs +++ b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs @@ -59,12 +59,12 @@ namespace MediaBrowser.Providers.People // Avoid implicitly captured closure var itemName = item.Name; - var seriesWithPerson = _libraryManager.GetItems(new InternalItemsQuery + var seriesWithPerson = _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(Series).Name }, Person = itemName - }).Items.Cast<Series>() + }).Cast<Series>() .Where(i => TvdbSeriesProvider.IsValidSeries(i.ProviderIds)) .ToList(); diff --git a/MediaBrowser.Providers/TV/DummySeasonProvider.cs b/MediaBrowser.Providers/TV/DummySeasonProvider.cs index d4e4b4844..3a1e05704 100644 --- a/MediaBrowser.Providers/TV/DummySeasonProvider.cs +++ b/MediaBrowser.Providers/TV/DummySeasonProvider.cs @@ -115,7 +115,7 @@ namespace MediaBrowser.Providers.TV { Name = seasonName, IndexNumber = seasonNumber, - Id = (series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName).GetMBId(typeof(Season)) + Id = _libraryManager.GetNewItemId((series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName), typeof(Season)) }; season.SetParent(series); diff --git a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArt/FanArtSeasonProvider.cs index 35129987d..35129987d 100644 --- a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/FanArt/FanArtSeasonProvider.cs diff --git a/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs b/MediaBrowser.Providers/TV/FanArt/FanArtTvUpdatesPostScanTask.cs index 71f02e028..71f02e028 100644 --- a/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs +++ b/MediaBrowser.Providers/TV/FanArt/FanArtTvUpdatesPostScanTask.cs diff --git a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs b/MediaBrowser.Providers/TV/FanArt/FanartSeriesProvider.cs index 5600c165a..5600c165a 100644 --- a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/FanArt/FanartSeriesProvider.cs diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs index ff31dbc92..248be675d 100644 --- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs @@ -422,7 +422,7 @@ namespace MediaBrowser.Providers.TV Name = name, IndexNumber = episodeNumber, ParentIndexNumber = seasonNumber, - Id = (series.Id + seasonNumber.ToString(_usCulture) + name).GetMBId(typeof(Episode)) + Id = _libraryManager.GetNewItemId((series.Id + seasonNumber.ToString(_usCulture) + name), typeof(Episode)) }; episode.SetParent(season); diff --git a/MediaBrowser.Providers/TV/OmdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/Omdb/OmdbEpisodeProvider.cs index 5a920c37f..5a920c37f 100644 --- a/MediaBrowser.Providers/TV/OmdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/Omdb/OmdbEpisodeProvider.cs diff --git a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs new file mode 100644 index 000000000..9d1684948 --- /dev/null +++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs @@ -0,0 +1,138 @@ +using CommonIO; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Localization; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Providers; +using MediaBrowser.Model.Serialization; +using MediaBrowser.Providers.Movies; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.TV +{ + public class MovieDbEpisodeImageProvider : + MovieDbProviderBase, + IRemoteImageProvider, + IHasOrder + { + public MovieDbEpisodeImageProvider(IHttpClient httpClient, IServerConfigurationManager configurationManager, IJsonSerializer jsonSerializer, IFileSystem fileSystem, ILocalizationManager localization, ILogManager logManager) + : base(httpClient, configurationManager, jsonSerializer, fileSystem, localization, logManager) + {} + + public IEnumerable<ImageType> GetSupportedImages(IHasImages item) + { + return new List<ImageType> + { + ImageType.Primary + }; + } + + public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken) + { + var episode = (Controller.Entities.TV.Episode)item; + var series = episode.Series; + + var seriesId = series != null ? series.GetProviderId(MetadataProviders.Tmdb) : null; + + var list = new List<RemoteImageInfo>(); + + if (string.IsNullOrEmpty(seriesId)) + { + return list; + } + + var seasonNumber = episode.ParentIndexNumber; + var episodeNumber = episode.IndexNumber; + + if (!seasonNumber.HasValue || !episodeNumber.HasValue) + { + return list; + } + + var response = await GetEpisodeInfo(seriesId, seasonNumber.Value, episodeNumber.Value, + item.GetPreferredMetadataLanguage(), cancellationToken).ConfigureAwait(false); + + var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false); + + var tmdbImageUrl = tmdbSettings.images.base_url + "original"; + + list.AddRange(GetPosters(response.images).Select(i => new RemoteImageInfo + { + Url = tmdbImageUrl + i.file_path, + CommunityRating = i.vote_average, + VoteCount = i.vote_count, + Width = i.width, + Height = i.height, + ProviderName = Name, + Type = ImageType.Primary, + RatingType = RatingType.Score + })); + + var language = item.GetPreferredMetadataLanguage(); + + var isLanguageEn = string.Equals(language, "en", StringComparison.OrdinalIgnoreCase); + + return list.OrderByDescending(i => + { + if (string.Equals(language, i.Language, StringComparison.OrdinalIgnoreCase)) + { + return 3; + } + if (!isLanguageEn) + { + if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase)) + { + return 2; + } + } + if (string.IsNullOrEmpty(i.Language)) + { + return isLanguageEn ? 3 : 2; + } + return 0; + }) + .ThenByDescending(i => i.CommunityRating ?? 0) + .ThenByDescending(i => i.VoteCount ?? 0) + .ToList(); + + } + + private IEnumerable<Still> GetPosters(Images images) + { + return images.stills ?? new List<Still>(); + } + + + public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken) + { + return GetResponse(url, cancellationToken); + } + + public string Name + { + get { return "TheMovieDb"; } + } + + public bool Supports(IHasImages item) + { + return item is Controller.Entities.TV.Episode; + } + + public int Order + { + get + { + // After tvdb + return 1; + } + } + } +} diff --git a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeProvider.cs new file mode 100644 index 000000000..42254f360 --- /dev/null +++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeProvider.cs @@ -0,0 +1,179 @@ +using CommonIO; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Localization; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Net; +using MediaBrowser.Model.Providers; +using MediaBrowser.Model.Serialization; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Net; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.TV +{ + class MovieDbEpisodeProvider : + MovieDbProviderBase, + IRemoteMetadataProvider<Episode, EpisodeInfo>, + IHasOrder + { + public MovieDbEpisodeProvider(IHttpClient httpClient, IServerConfigurationManager configurationManager, IJsonSerializer jsonSerializer, IFileSystem fileSystem, ILocalizationManager localization, ILogManager logManager) + : base(httpClient, configurationManager, jsonSerializer, fileSystem, localization, logManager) + { } + + public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(EpisodeInfo searchInfo, CancellationToken cancellationToken) + { + var list = new List<RemoteSearchResult>(); + + // The search query must either provide an episode number or date + if (!searchInfo.IndexNumber.HasValue || !searchInfo.ParentIndexNumber.HasValue) + { + return list; + } + + var metadataResult = await GetMetadata(searchInfo, cancellationToken); + + if (metadataResult.HasMetadata) + { + var item = metadataResult.Item; + + list.Add(new RemoteSearchResult + { + IndexNumber = item.IndexNumber, + Name = item.Name, + ParentIndexNumber = item.ParentIndexNumber, + PremiereDate = item.PremiereDate, + ProductionYear = item.ProductionYear, + ProviderIds = item.ProviderIds, + SearchProviderName = Name, + IndexNumberEnd = item.IndexNumberEnd + }); + } + + return list; + } + + public async Task<MetadataResult<Episode>> GetMetadata(EpisodeInfo info, CancellationToken cancellationToken) + { + var result = new MetadataResult<Episode>(); + + string seriesTmdbId; + info.SeriesProviderIds.TryGetValue(MetadataProviders.Tmdb.ToString(), out seriesTmdbId); + + if (string.IsNullOrEmpty(seriesTmdbId)) + { + return result; + } + + var seasonNumber = info.ParentIndexNumber; + var episodeNumber = info.IndexNumber; + + if (!seasonNumber.HasValue || !episodeNumber.HasValue) + { + return result; + } + + try + { + var response = await GetEpisodeInfo(seriesTmdbId, seasonNumber.Value, episodeNumber.Value, info.MetadataLanguage, cancellationToken).ConfigureAwait(false); + + result.HasMetadata = true; + + var item = new Episode(); + result.Item = item; + + item.Name = info.Name; + item.IndexNumber = info.IndexNumber; + item.ParentIndexNumber = info.ParentIndexNumber; + item.IndexNumberEnd = info.IndexNumberEnd; + + if (response.external_ids.tvdb_id > 0) + { + item.SetProviderId(MetadataProviders.Tvdb, response.external_ids.tvdb_id.ToString(CultureInfo.InvariantCulture)); + } + + item.PremiereDate = response.air_date; + item.ProductionYear = result.Item.PremiereDate.Value.Year; + + item.Name = response.name; + item.Overview = response.overview; + + item.CommunityRating = (float)response.vote_average; + item.VoteCount = response.vote_count; + + result.ResetPeople(); + + var credits = response.credits; + if (credits != null) + { + //Actors, Directors, Writers - all in People + //actors come from cast + if (credits.cast != null) + { + foreach (var actor in credits.cast.OrderBy(a => a.order)) + { + result.AddPerson(new PersonInfo { Name = actor.name.Trim(), Role = actor.character, Type = PersonType.Actor, SortOrder = actor.order }); + } + } + + // guest stars + if (credits.guest_stars != null) + { + foreach (var guest in credits.guest_stars.OrderBy(a => a.order)) + { + result.AddPerson(new PersonInfo { Name = guest.name.Trim(), Role = guest.character, Type = PersonType.GuestStar, SortOrder = guest.order }); + } + } + + //and the rest from crew + if (credits.crew != null) + { + foreach (var person in credits.crew) + { + result.AddPerson(new PersonInfo { Name = person.name.Trim(), Role = person.job, Type = person.department }); + } + } + } + } + catch (HttpException ex) + { + Logger.Error("No metadata found for {0}", seasonNumber.Value); + + if (ex.StatusCode.HasValue && ex.StatusCode.Value == HttpStatusCode.NotFound) + { + return result; + } + + throw; + } + + return result; + } + + public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken) + { + return GetResponse(url, cancellationToken); + } + + public int Order + { + get + { + // After TheTvDb + return 1; + } + } + + public string Name + { + get { return "TheMovieDb"; } + } + } +} diff --git a/MediaBrowser.Providers/TV/MovieDbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbProviderBase.cs index 115eadb96..d22827c25 100644 --- a/MediaBrowser.Providers/TV/MovieDbEpisodeImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbProviderBase.cs @@ -1,148 +1,45 @@ -using MediaBrowser.Common.IO; +using CommonIO; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Localization; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Providers; +using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Movies; using System; using System.Collections.Generic; using System.Globalization; using System.IO; -using System.Linq; using System.Threading; using System.Threading.Tasks; -using CommonIO; namespace MediaBrowser.Providers.TV { - public class MovieDbEpisodeImageProvider : IRemoteImageProvider, IHasOrder + public abstract class MovieDbProviderBase { - private const string GetTvInfo3 = @"http://api.themoviedb.org/3/tv/{0}/season/{1}/episode/{2}?api_key={3}&append_to_response=images,external_ids,credits,videos"; + private const string EpisodeUrlPattern = @"http://api.themoviedb.org/3/tv/{0}/season/{1}/episode/{2}?api_key={3}&append_to_response=images,external_ids,credits,videos"; private readonly IHttpClient _httpClient; private readonly IServerConfigurationManager _configurationManager; private readonly IJsonSerializer _jsonSerializer; private readonly IFileSystem _fileSystem; private readonly ILocalizationManager _localization; + private readonly ILogger _logger; - public MovieDbEpisodeImageProvider(IHttpClient httpClient, IServerConfigurationManager configurationManager, IJsonSerializer jsonSerializer, IFileSystem fileSystem, ILocalizationManager localization) + public MovieDbProviderBase(IHttpClient httpClient, IServerConfigurationManager configurationManager, IJsonSerializer jsonSerializer, IFileSystem fileSystem, ILocalizationManager localization, ILogManager logManager) { _httpClient = httpClient; _configurationManager = configurationManager; _jsonSerializer = jsonSerializer; _fileSystem = fileSystem; _localization = localization; + _logger = logManager.GetLogger(GetType().Name); } - public IEnumerable<ImageType> GetSupportedImages(IHasImages item) + protected ILogger Logger { - return new List<ImageType> - { - ImageType.Primary - }; - } - - public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken) - { - var episode = (Controller.Entities.TV.Episode)item; - var series = episode.Series; - - var seriesId = series != null ? series.GetProviderId(MetadataProviders.Tmdb) : null; - - var list = new List<RemoteImageInfo>(); - - if (string.IsNullOrEmpty(seriesId)) - { - return list; - } - - var seasonNumber = episode.ParentIndexNumber; - var episodeNumber = episode.IndexNumber; - - if (!seasonNumber.HasValue || !episodeNumber.HasValue) - { - return list; - } - - var response = await GetEpisodeInfo(seriesId, seasonNumber.Value, episodeNumber.Value, - item.GetPreferredMetadataLanguage(), cancellationToken).ConfigureAwait(false); - - var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false); - - var tmdbImageUrl = tmdbSettings.images.base_url + "original"; - - list.AddRange(GetPosters(response.images).Select(i => new RemoteImageInfo - { - Url = tmdbImageUrl + i.file_path, - CommunityRating = i.vote_average, - VoteCount = i.vote_count, - Width = i.width, - Height = i.height, - ProviderName = Name, - Type = ImageType.Primary, - RatingType = RatingType.Score - })); - - var language = item.GetPreferredMetadataLanguage(); - - var isLanguageEn = string.Equals(language, "en", StringComparison.OrdinalIgnoreCase); - - return list.OrderByDescending(i => - { - if (string.Equals(language, i.Language, StringComparison.OrdinalIgnoreCase)) - { - return 3; - } - if (!isLanguageEn) - { - if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase)) - { - return 2; - } - } - if (string.IsNullOrEmpty(i.Language)) - { - return isLanguageEn ? 3 : 2; - } - return 0; - }) - .ThenByDescending(i => i.CommunityRating ?? 0) - .ThenByDescending(i => i.VoteCount ?? 0) - .ToList(); - - } - - private IEnumerable<Still> GetPosters(Images images) - { - return images.stills ?? new List<Still>(); - } - - - public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken) - { - return _httpClient.GetResponse(new HttpRequestOptions - { - CancellationToken = cancellationToken, - Url = url, - ResourcePool = MovieDbProvider.Current.MovieDbResourcePool - }); - } - - public string Name - { - get { return "TheMovieDb"; } + get { return _logger; } } - public bool Supports(IHasImages item) - { - return item is Controller.Entities.TV.Episode; - } - - private async Task<RootObject> GetEpisodeInfo(string seriesTmdbId, int season, int episodeNumber, string preferredMetadataLanguage, + protected async Task<RootObject> GetEpisodeInfo(string seriesTmdbId, int season, int episodeNumber, string preferredMetadataLanguage, CancellationToken cancellationToken) { await EnsureEpisodeInfo(seriesTmdbId, season, episodeNumber, preferredMetadataLanguage, cancellationToken) @@ -203,7 +100,7 @@ namespace MediaBrowser.Providers.TV internal async Task DownloadEpisodeInfo(string id, int seasonNumber, int episodeNumber, string preferredMetadataLanguage, CancellationToken cancellationToken) { - var mainResult = await FetchMainResult(id, seasonNumber, episodeNumber, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false); + var mainResult = await FetchMainResult(EpisodeUrlPattern, id, seasonNumber, episodeNumber, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false); var dataFilePath = GetDataFilePath(id, seasonNumber, episodeNumber, preferredMetadataLanguage); @@ -211,9 +108,9 @@ namespace MediaBrowser.Providers.TV _jsonSerializer.SerializeToFile(mainResult, dataFilePath); } - internal async Task<RootObject> FetchMainResult(string id, int seasonNumber, int episodeNumber, string language, CancellationToken cancellationToken) + internal async Task<RootObject> FetchMainResult(string urlPattern, string id, int seasonNumber, int episodeNumber, string language, CancellationToken cancellationToken) { - var url = string.Format(GetTvInfo3, id, seasonNumber.ToString(CultureInfo.InvariantCulture), episodeNumber, MovieDbProvider.ApiKey); + var url = string.Format(urlPattern, id, seasonNumber.ToString(CultureInfo.InvariantCulture), episodeNumber, MovieDbProvider.ApiKey); if (!string.IsNullOrEmpty(language)) { @@ -238,6 +135,16 @@ namespace MediaBrowser.Providers.TV } } + protected Task<HttpResponseInfo> GetResponse(string url, CancellationToken cancellationToken) + { + return _httpClient.GetResponse(new HttpRequestOptions + { + CancellationToken = cancellationToken, + Url = url, + ResourcePool = MovieDbProvider.Current.MovieDbResourcePool + }); + } + public class Still { public double aspect_ratio { get; set; } @@ -308,7 +215,7 @@ namespace MediaBrowser.Providers.TV public class RootObject { - public string air_date { get; set; } + public DateTime air_date { get; set; } public int episode_number { get; set; } public string name { get; set; } public string overview { get; set; } @@ -323,14 +230,5 @@ namespace MediaBrowser.Providers.TV public Credits credits { get; set; } public Videos videos { get; set; } } - - public int Order - { - get - { - // After tvdb - return 1; - } - } } } diff --git a/MediaBrowser.Providers/TV/MovieDbSeasonProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeasonProvider.cs index 693390192..0033c8a2f 100644 --- a/MediaBrowser.Providers/TV/MovieDbSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeasonProvider.cs @@ -201,7 +201,7 @@ namespace MediaBrowser.Providers.TV if (!string.IsNullOrEmpty(language)) { - url += string.Format("&language={0}", language); + url += string.Format("&language={0}", MovieDbProvider.NormalizeLanguage(language)); } var includeImageLanguageParam = MovieDbProvider.GetImageLanguagesParam(language); diff --git a/MediaBrowser.Providers/TV/MovieDbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs index 3516fcbd1..f7c19988c 100644 --- a/MediaBrowser.Providers/TV/MovieDbSeriesImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs @@ -55,7 +55,7 @@ namespace MediaBrowser.Providers.TV { var list = new List<RemoteImageInfo>(); - var results = await FetchImages((BaseItem)item, _jsonSerializer, cancellationToken).ConfigureAwait(false); + var results = await FetchImages((BaseItem)item, null, _jsonSerializer, cancellationToken).ConfigureAwait(false); if (results == null) { @@ -146,14 +146,14 @@ namespace MediaBrowser.Providers.TV /// Fetches the images. /// </summary> /// <param name="item">The item.</param> + /// <param name="language">The language.</param> /// <param name="jsonSerializer">The json serializer.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{MovieImages}.</returns> - private async Task<MovieDbSeriesProvider.Images> FetchImages(BaseItem item, IJsonSerializer jsonSerializer, + private async Task<MovieDbSeriesProvider.Images> FetchImages(BaseItem item, string language, IJsonSerializer jsonSerializer, CancellationToken cancellationToken) { var tmdbId = item.GetProviderId(MetadataProviders.Tmdb); - var language = item.GetPreferredMetadataLanguage(); if (string.IsNullOrEmpty(tmdbId)) { diff --git a/MediaBrowser.Providers/TV/MovieDbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs index 994343ee2..ad2cfa12b 100644 --- a/MediaBrowser.Providers/TV/MovieDbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs @@ -301,12 +301,11 @@ namespace MediaBrowser.Providers.TV if (!string.IsNullOrEmpty(language)) { - url += string.Format("&language={0}", language); - } + url += string.Format("&language={0}", MovieDbProvider.NormalizeLanguage(language)); - var includeImageLanguageParam = MovieDbProvider.GetImageLanguagesParam(language); - // Get images in english and with no language - url += "&include_image_language=" + includeImageLanguageParam; + // Get images in english and with no language + url += "&include_image_language=" + MovieDbProvider.GetImageLanguagesParam(language); + } cancellationToken.ThrowIfCancellationRequested(); @@ -333,7 +332,13 @@ namespace MediaBrowser.Providers.TV { _logger.Info("MovieDbSeriesProvider couldn't find meta for language " + language + ". Trying English..."); - url = string.Format(GetTvInfo3, id, MovieDbProvider.ApiKey) + "&include_image_language=" + includeImageLanguageParam + "&language=en"; + url = string.Format(GetTvInfo3, id, MovieDbProvider.ApiKey) + "&language=en"; + + if (!string.IsNullOrEmpty(language)) + { + // Get images in english and with no language + url += "&include_image_language=" + MovieDbProvider.GetImageLanguagesParam(language); + } using (var json = await MovieDbProvider.Current.GetMovieDbResponse(new HttpRequestOptions { @@ -359,10 +364,6 @@ namespace MediaBrowser.Providers.TV { throw new ArgumentNullException("tmdbId"); } - if (string.IsNullOrEmpty(language)) - { - throw new ArgumentNullException("language"); - } var path = GetDataFilePath(tmdbId, language); @@ -386,15 +387,10 @@ namespace MediaBrowser.Providers.TV { throw new ArgumentNullException("tmdbId"); } - if (string.IsNullOrEmpty(preferredLanguage)) - { - throw new ArgumentNullException("preferredLanguage"); - } var path = GetSeriesDataPath(_configurationManager.ApplicationPaths, tmdbId); - var filename = string.Format("series-{0}.json", - preferredLanguage ?? string.Empty); + var filename = string.Format("series-{0}.json", preferredLanguage ?? string.Empty); return Path.Combine(path, filename); } diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs index 50ecc6bbf..50ecc6bbf 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs index 392033048..291214fcd 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs @@ -259,36 +259,36 @@ namespace MediaBrowser.Providers.TV return files; } - if (seasonNumber == null) - { - return files; - } - - var file = Path.Combine(seriesDataPath, string.Format("episode-{0}-{1}.xml", seasonNumber.Value, episodeNumber)); - - var fileInfo = _fileSystem.GetFileInfo(file); var usingAbsoluteData = false; - if (fileInfo.Exists) - { - files.Add(fileInfo); - } - else - { - file = Path.Combine(seriesDataPath, string.Format("episode-abs-{0}.xml", episodeNumber)); - fileInfo = _fileSystem.GetFileInfo(file); - if (fileInfo.Exists) - { - files.Add(fileInfo); - usingAbsoluteData = true; - } - } + if (seasonNumber.HasValue) + { + var file = Path.Combine(seriesDataPath, string.Format("episode-{0}-{1}.xml", seasonNumber.Value, episodeNumber)); + var fileInfo = _fileSystem.GetFileInfo(file); + + if (fileInfo.Exists) + { + files.Add(fileInfo); + } + } + else + { + usingAbsoluteData = true; + var file = Path.Combine(seriesDataPath, string.Format("episode-abs-{0}.xml", episodeNumber)); + var fileInfo = _fileSystem.GetFileInfo(file); + if (fileInfo.Exists) + { + files.Add(fileInfo); + } + } var end = endingEpisodeNumber ?? episodeNumber; episodeNumber++; while (episodeNumber <= end) { + string file; + if (usingAbsoluteData) { file = Path.Combine(seriesDataPath, string.Format("episode-abs-{0}.xml", episodeNumber)); @@ -298,7 +298,7 @@ namespace MediaBrowser.Providers.TV file = Path.Combine(seriesDataPath, string.Format("episode-{0}-{1}.xml", seasonNumber.Value, episodeNumber)); } - fileInfo = _fileSystem.GetFileInfo(file); + var fileInfo = _fileSystem.GetFileInfo(file); if (fileInfo.Exists) { files.Add(fileInfo); diff --git a/MediaBrowser.Providers/TV/TvdbPrescanTask.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs index d362ca722..d362ca722 100644 --- a/MediaBrowser.Providers/TV/TvdbPrescanTask.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs diff --git a/MediaBrowser.Providers/TV/TvdbSeasonIdentityProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonIdentityProvider.cs index edeea36e4..4198430c9 100644 --- a/MediaBrowser.Providers/TV/TvdbSeasonIdentityProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonIdentityProvider.cs @@ -27,6 +27,11 @@ namespace MediaBrowser.Providers.TV public static TvdbSeasonIdentity? ParseIdentity(string id) { + if (id == null) + { + return null; + } + try { var parts = id.Split(':'); diff --git a/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs index 7af85ecc9..7af85ecc9 100644 --- a/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs diff --git a/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs index eae389dfb..eae389dfb 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs index 4a7ae57fb..593507fb2 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs @@ -160,19 +160,19 @@ namespace MediaBrowser.Providers.TV var series = result.Item; string id; - if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id)) + if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id) && !string.IsNullOrEmpty(id)) { series.SetProviderId(MetadataProviders.Tvdb, id); } - if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out id)) + if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out id) && !string.IsNullOrEmpty(id)) { series.SetProviderId(MetadataProviders.Imdb, id); } var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds); - var seriesXmlPath = GetSeriesXmlPath (seriesProviderIds, metadataLanguage); + var seriesXmlPath = GetSeriesXmlPath(seriesProviderIds, metadataLanguage); var actorsXmlPath = Path.Combine(seriesDataPath, "actors.xml"); FetchSeriesInfo(series, seriesXmlPath, cancellationToken); @@ -320,7 +320,7 @@ namespace MediaBrowser.Providers.TV internal static bool IsValidSeries(Dictionary<string, string> seriesProviderIds) { string id; - if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id)) + if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id) && !string.IsNullOrEmpty(id)) { // This check should ideally never be necessary but we're seeing some cases of this and haven't tracked them down yet. if (!string.IsNullOrWhiteSpace(id)) @@ -329,7 +329,7 @@ namespace MediaBrowser.Providers.TV } } - if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out id)) + if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out id) && !string.IsNullOrEmpty(id)) { // This check should ideally never be necessary but we're seeing some cases of this and haven't tracked them down yet. if (!string.IsNullOrWhiteSpace(id)) @@ -340,7 +340,7 @@ namespace MediaBrowser.Providers.TV return false; } - private SemaphoreSlim _ensureSemaphore = new SemaphoreSlim(1,1); + private SemaphoreSlim _ensureSemaphore = new SemaphoreSlim(1, 1); internal async Task<string> EnsureSeriesInfo(Dictionary<string, string> seriesProviderIds, string preferredMetadataLanguage, CancellationToken cancellationToken) { await _ensureSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false); @@ -348,7 +348,7 @@ namespace MediaBrowser.Providers.TV try { string seriesId; - if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesId)) + if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesId) && !string.IsNullOrEmpty(seriesId)) { var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds); @@ -362,7 +362,7 @@ namespace MediaBrowser.Providers.TV return seriesDataPath; } - if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesId)) + if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesId) && !string.IsNullOrEmpty(seriesId)) { var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds); @@ -1300,14 +1300,14 @@ namespace MediaBrowser.Providers.TV internal static string GetSeriesDataPath(IApplicationPaths appPaths, Dictionary<string, string> seriesProviderIds) { string seriesId; - if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesId)) + if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesId) && !string.IsNullOrEmpty(seriesId)) { var seriesDataPath = Path.Combine(GetSeriesDataPath(appPaths), seriesId); return seriesDataPath; } - if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesId)) + if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesId) && !string.IsNullOrEmpty(seriesId)) { var seriesDataPath = Path.Combine(GetSeriesDataPath(appPaths), seriesId); @@ -1317,14 +1317,14 @@ namespace MediaBrowser.Providers.TV return null; } - public string GetSeriesXmlPath(Dictionary<string, string> seriesProviderIds, string language) - { - var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds); + public string GetSeriesXmlPath(Dictionary<string, string> seriesProviderIds, string language) + { + var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds); - var seriesXmlFilename = language.ToLower() + ".xml"; + var seriesXmlFilename = language.ToLower() + ".xml"; - return Path.Combine (seriesDataPath, seriesXmlFilename); - } + return Path.Combine(seriesDataPath, seriesXmlFilename); + } /// <summary> /// Gets the series data path. @@ -1466,4 +1466,4 @@ namespace MediaBrowser.Providers.TV }; } } -} +}
\ No newline at end of file diff --git a/MediaBrowser.Providers/packages.config b/MediaBrowser.Providers/packages.config index 89172044a..da365b0ce 100644 --- a/MediaBrowser.Providers/packages.config +++ b/MediaBrowser.Providers/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="MediaBrowser.BdInfo" version="1.0.0.10" targetFramework="net45" /> <package id="morelinq" version="1.4.0" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs index dac3a80f2..3239b20b2 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs @@ -20,11 +20,11 @@ namespace MediaBrowser.Server.Implementations.Channels public Task<IEnumerable<MediaSourceInfo>> GetMediaSources(IHasMediaSources item, CancellationToken cancellationToken) { - var channelItem = item as IChannelMediaItem; + var baseItem = (BaseItem) item; - if (channelItem != null) + if (baseItem.SourceType == SourceType.Channel) { - return _channelManager.GetDynamicMediaSources(channelItem, cancellationToken); + return _channelManager.GetDynamicMediaSources(baseItem, cancellationToken); } return Task.FromResult<IEnumerable<MediaSourceInfo>>(new List<MediaSourceInfo>()); diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index c7865b6aa..d849ce7bd 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -26,6 +26,9 @@ using System.Net; using System.Threading; using System.Threading.Tasks; using CommonIO; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; namespace MediaBrowser.Server.Implementations.Channels { @@ -248,9 +251,19 @@ namespace MediaBrowser.Server.Implementations.Channels return item; } - public async Task<IEnumerable<MediaSourceInfo>> GetStaticMediaSources(IChannelMediaItem item, bool includeCachedVersions, CancellationToken cancellationToken) + public async Task<IEnumerable<MediaSourceInfo>> GetStaticMediaSources(BaseItem item, bool includeCachedVersions, CancellationToken cancellationToken) { - IEnumerable<ChannelMediaInfo> results = item.ChannelMediaSources; + IEnumerable<ChannelMediaInfo> results = new List<ChannelMediaInfo>(); + var video = item as Video; + if (video != null) + { + results = video.ChannelMediaSources; + } + var audio = item as Audio; + if (audio != null) + { + results = audio.ChannelMediaSources ?? new List<ChannelMediaInfo>(); + } var sources = SortMediaInfoResults(results) .Select(i => GetMediaSource(item, i)) @@ -265,7 +278,7 @@ namespace MediaBrowser.Server.Implementations.Channels return sources; } - public async Task<IEnumerable<MediaSourceInfo>> GetDynamicMediaSources(IChannelMediaItem item, CancellationToken cancellationToken) + public async Task<IEnumerable<MediaSourceInfo>> GetDynamicMediaSources(BaseItem item, CancellationToken cancellationToken) { var channel = GetChannel(item.ChannelId); var channelPlugin = GetChannelProvider(channel); @@ -319,7 +332,7 @@ namespace MediaBrowser.Server.Implementations.Channels return list; } - private IEnumerable<MediaSourceInfo> GetCachedChannelItemMediaSources(IChannelMediaItem item) + private IEnumerable<MediaSourceInfo> GetCachedChannelItemMediaSources(BaseItem item) { var filenamePrefix = item.Id.ToString("N"); var parentPath = Path.Combine(ChannelDownloadPath, item.ChannelId); @@ -368,7 +381,7 @@ namespace MediaBrowser.Server.Implementations.Channels return new List<MediaSourceInfo>(); } - private MediaSourceInfo GetMediaSource(IChannelMediaItem item, ChannelMediaInfo info) + private MediaSourceInfo GetMediaSource(BaseItem item, ChannelMediaInfo info) { var source = info.ToMediaSource(); @@ -411,6 +424,7 @@ namespace MediaBrowser.Server.Implementations.Channels var parentFolderId = parentFolder.Id; var id = GetInternalChannelId(channelInfo.Name); + var idString = id.ToString("N"); var path = Channel.GetInternalMetadataPath(_config.ApplicationPaths.InternalMetadataPath, id); @@ -418,7 +432,6 @@ namespace MediaBrowser.Server.Implementations.Channels var forceUpdate = false; var item = _libraryManager.GetItemById(id) as Channel; - var channelId = channelInfo.Name.GetMD5().ToString("N"); if (item == null) { @@ -439,11 +452,11 @@ namespace MediaBrowser.Server.Implementations.Channels } item.Path = path; - if (!string.Equals(item.ChannelId, channelId, StringComparison.OrdinalIgnoreCase)) + if (!string.Equals(item.ChannelId, idString, StringComparison.OrdinalIgnoreCase)) { forceUpdate = true; } - item.ChannelId = channelId; + item.ChannelId = idString; if (item.ParentId != parentFolderId) { @@ -492,24 +505,26 @@ namespace MediaBrowser.Server.Implementations.Channels public Channel GetChannel(string id) { - return _libraryManager.GetItemById(new Guid(id)) as Channel; + return _libraryManager.GetItemById(id) as Channel; } public IEnumerable<ChannelFeatures> GetAllChannelFeatures() { - var inputItems = _libraryManager.GetItems(new InternalItemsQuery + return _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(Channel).Name }, SortBy = new[] { ItemSortBy.SortName } - }).Items; - - return inputItems - .Select(i => GetChannelFeatures(i.Id.ToString("N"))); + }).Select(i => GetChannelFeatures(i.Id.ToString("N"))); } public ChannelFeatures GetChannelFeatures(string id) { + if (string.IsNullOrWhiteSpace(id)) + { + throw new ArgumentNullException("id"); + } + var channel = GetChannel(id); var channelProvider = GetChannelProvider(channel); @@ -546,8 +561,7 @@ namespace MediaBrowser.Server.Implementations.Channels { throw new ArgumentNullException("name"); } - - return ("Channel " + name).GetMBId(typeof(Channel)); + return _libraryManager.GetNewItemId("Channel " + name, typeof(Channel)); } public async Task<QueryResult<BaseItemDto>> GetLatestChannelItems(AllChannelMediaQuery query, CancellationToken cancellationToken) @@ -1079,7 +1093,7 @@ namespace MediaBrowser.Server.Implementations.Channels if (!string.IsNullOrWhiteSpace(folderId)) { - var categoryItem = (IChannelItem)_libraryManager.GetItemById(new Guid(folderId)); + var categoryItem = _libraryManager.GetItemById(new Guid(folderId)); query.FolderId = categoryItem.ExternalId; } @@ -1195,7 +1209,7 @@ namespace MediaBrowser.Server.Implementations.Channels } private T GetItemById<T>(string idString, string channelName, string channnelDataVersion, out bool isNew) - where T : BaseItem, IChannelItem, new() + where T : BaseItem, new() { var id = GetIdToHash(idString, channelName).GetMBId(typeof(T)); @@ -1233,15 +1247,48 @@ namespace MediaBrowser.Server.Implementations.Channels if (info.Type == ChannelItemType.Folder) { - item = GetItemById<ChannelFolderItem>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + if (info.FolderType == ChannelFolderType.MusicAlbum) + { + item = GetItemById<MusicAlbum>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } + else if (info.FolderType == ChannelFolderType.PhotoAlbum) + { + item = GetItemById<PhotoAlbum>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } + else + { + item = GetItemById<Folder>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } } else if (info.MediaType == ChannelMediaType.Audio) { - item = GetItemById<ChannelAudioItem>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + if (info.ContentType == ChannelMediaContentType.Podcast) + { + item = GetItemById<AudioPodcast>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } + else + { + item = GetItemById<Audio>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } } else { - item = GetItemById<ChannelVideoItem>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + if (info.ContentType == ChannelMediaContentType.Episode) + { + item = GetItemById<Episode>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } + else if (info.ContentType == ChannelMediaContentType.Movie) + { + item = GetItemById<Movie>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } + else if (info.ContentType == ChannelMediaContentType.Trailer || info.ExtraType == ExtraType.Trailer) + { + item = GetItemById<Trailer>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } + else + { + item = GetItemById<Video>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew); + } } item.RunTimeTicks = info.RunTimeTicks; @@ -1263,9 +1310,17 @@ namespace MediaBrowser.Server.Implementations.Channels item.Tags = info.Tags; } - var channelItem = (IChannelItem)item; + var trailer = item as Trailer; + if (trailer != null) + { + if (!info.TrailerTypes.SequenceEqual(trailer.TrailerTypes)) + { + forceUpdate = true; + } + trailer.TrailerTypes = info.TrailerTypes; + } - channelItem.ChannelId = internalChannelId.ToString("N"); + item.ChannelId = internalChannelId.ToString("N"); if (item.ParentId != internalChannelId) { @@ -1273,22 +1328,29 @@ namespace MediaBrowser.Server.Implementations.Channels } item.ParentId = internalChannelId; - if (!string.Equals(channelItem.ExternalId, info.Id, StringComparison.OrdinalIgnoreCase)) + if (!string.Equals(item.ExternalId, info.Id, StringComparison.OrdinalIgnoreCase)) { forceUpdate = true; } - channelItem.ExternalId = info.Id; - - var channelMediaItem = item as IChannelMediaItem; + item.ExternalId = info.Id; - if (channelMediaItem != null) + var channelAudioItem = item as Audio; + if (channelAudioItem != null) { - channelMediaItem.ContentType = info.ContentType; - channelMediaItem.ExtraType = info.ExtraType; - channelMediaItem.ChannelMediaSources = info.MediaSources; + channelAudioItem.ExtraType = info.ExtraType; + channelAudioItem.ChannelMediaSources = info.MediaSources; var mediaSource = info.MediaSources.FirstOrDefault(); + item.Path = mediaSource == null ? null : mediaSource.Path; + } + + var channelVideoItem = item as Video; + if (channelVideoItem != null) + { + channelVideoItem.ExtraType = info.ExtraType; + channelVideoItem.ChannelMediaSources = info.MediaSources; + var mediaSource = info.MediaSources.FirstOrDefault(); item.Path = mediaSource == null ? null : mediaSource.Path; } @@ -1297,6 +1359,12 @@ namespace MediaBrowser.Server.Implementations.Channels item.SetImagePath(ImageType.Primary, info.ImageUrl); } + if (item.SourceType != SourceType.Channel) + { + item.SourceType = SourceType.Channel; + forceUpdate = true; + } + if (isNew) { await _libraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false); @@ -1334,7 +1402,12 @@ namespace MediaBrowser.Server.Implementations.Channels internal IChannel GetChannelProvider(Channel channel) { - var result = GetAllChannels().FirstOrDefault(i => string.Equals(i.Name.GetMD5().ToString("N"), channel.ChannelId, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Name, channel.Name, StringComparison.OrdinalIgnoreCase)); + if (channel == null) + { + throw new ArgumentNullException("channel"); + } + + var result = GetAllChannels().FirstOrDefault(i => string.Equals(GetInternalChannelId(i.Name).ToString("N"), channel.ChannelId, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Name, channel.Name, StringComparison.OrdinalIgnoreCase)); if (result == null) { @@ -1441,7 +1514,7 @@ namespace MediaBrowser.Server.Implementations.Channels return await _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken).ConfigureAwait(false); } - public async Task DownloadChannelItem(IChannelMediaItem item, string destination, + public async Task DownloadChannelItem(BaseItem item, string destination, IProgress<double> progress, CancellationToken cancellationToken) { var sources = await GetDynamicMediaSources(item, cancellationToken) @@ -1457,7 +1530,7 @@ namespace MediaBrowser.Server.Implementations.Channels } private async Task TryDownloadChannelItem(MediaSourceInfo source, - IChannelMediaItem item, + BaseItem item, string destination, IProgress<double> progress, CancellationToken cancellationToken) @@ -1469,7 +1542,6 @@ namespace MediaBrowser.Server.Implementations.Channels Progress = new Progress<double>() }; - var host = new Uri(source.Path).Host.ToLower(); var channel = GetChannel(item.ChannelId); var channelProvider = GetChannelProvider(channel); var features = channelProvider.GetChannelFeatures(); diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs b/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs index da4a72cd4..08783ae8d 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs @@ -55,7 +55,7 @@ namespace MediaBrowser.Server.Implementations.Channels } await CleanDatabase(cancellationToken).ConfigureAwait(false); - + progress.Report(100); } @@ -167,10 +167,14 @@ namespace MediaBrowser.Server.Implementations.Channels { var item = _libraryManager.GetItemById(id); + if (item == null) + { + return Task.FromResult(true); + } + return _libraryManager.DeleteItem(item, new DeleteOptions { DeleteFileLocation = false - }); } diff --git a/MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs b/MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs index 1a5c35df8..7db457c6e 100644 --- a/MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs +++ b/MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs @@ -145,7 +145,6 @@ namespace MediaBrowser.Server.Implementations.Configuration { var newConfig = (ServerConfiguration)newConfiguration; - ValidateItemByNamePath(newConfig); ValidatePathSubstitutions(newConfig); ValidateMetadataPath(newConfig); ValidateSslCertificate(newConfig); @@ -190,28 +189,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> /// Validates the metadata path. /// </summary> /// <param name="newConfig">The new configuration.</param> diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs index 12de5f6ef..1b951374e 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs @@ -8,6 +8,7 @@ using MediaBrowser.Model.Net; using System; using System.IO; using System.Net; +using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -47,44 +48,26 @@ namespace MediaBrowser.Server.Implementations.Connect _timer = new PeriodicTimer(TimerCallback, null, TimeSpan.FromSeconds(5), TimeSpan.FromHours(3)); } - private readonly string[] _ipLookups = { "http://bot.whatismyipaddress.com", "https://connect.emby.media/service/ip" }; + private readonly string[] _ipLookups = + { + "http://bot.whatismyipaddress.com", + "https://connect.emby.media/service/ip" + }; private async void TimerCallback(object state) { - var index = 0; + IPAddress validIpAddress = null; foreach (var ipLookupUrl in _ipLookups) { try { - // Sometimes whatismyipaddress might fail, but it won't do us any good having users raise alarms over it. - var logErrors = index > 0; - -#if DEBUG - logErrors = true; -#endif - using (var stream = await _httpClient.Get(new HttpRequestOptions - { - Url = ipLookupUrl, - UserAgent = "Emby/" + _appHost.ApplicationVersion, - LogErrors = logErrors, - - // Seeing block length errors with our server - EnableHttpCompression = false + validIpAddress = await GetIpAddress(ipLookupUrl).ConfigureAwait(false); - }).ConfigureAwait(false)) + // Try to find the ipv4 address, if present + if (validIpAddress.AddressFamily == AddressFamily.InterNetwork) { - using (var reader = new StreamReader(stream)) - { - var address = await reader.ReadToEndAsync().ConfigureAwait(false); - - if (IsValid(address, ipLookupUrl)) - { - ((ConnectManager)_connectManager).OnWanAddressResolved(address); - CacheAddress(address); - return; - } - } + break; } } catch (HttpException) @@ -94,8 +77,66 @@ namespace MediaBrowser.Server.Implementations.Connect { _logger.ErrorException("Error getting connection info", ex); } + } - index++; + // If this produced an ipv6 address, try again + if (validIpAddress == null || validIpAddress.AddressFamily == AddressFamily.InterNetworkV6) + { + foreach (var ipLookupUrl in _ipLookups) + { + try + { + validIpAddress = await GetIpAddress(ipLookupUrl, true).ConfigureAwait(false); + + // Try to find the ipv4 address, if present + if (validIpAddress.AddressFamily == AddressFamily.InterNetwork) + { + break; + } + } + catch (HttpException) + { + } + catch (Exception ex) + { + _logger.ErrorException("Error getting connection info", ex); + } + } + } + + if (validIpAddress != null) + { + ((ConnectManager)_connectManager).OnWanAddressResolved(validIpAddress); + CacheAddress(validIpAddress); + } + } + + private async Task<IPAddress> GetIpAddress(string lookupUrl, bool preferIpv4 = false) + { + // Sometimes whatismyipaddress might fail, but it won't do us any good having users raise alarms over it. + var logErrors = false; + +#if DEBUG + logErrors = true; +#endif + using (var stream = await _httpClient.Get(new HttpRequestOptions + { + Url = lookupUrl, + UserAgent = "Emby/" + _appHost.ApplicationVersion, + LogErrors = logErrors, + + // Seeing block length errors with our server + EnableHttpCompression = false, + PreferIpv4 = preferIpv4 + + }).ConfigureAwait(false)) + { + using (var reader = new StreamReader(stream)) + { + var addressString = await reader.ReadToEndAsync().ConfigureAwait(false); + + return IPAddress.Parse(addressString); + } } } @@ -104,14 +145,14 @@ namespace MediaBrowser.Server.Implementations.Connect get { return Path.Combine(_appPaths.DataPath, "wan.txt"); } } - private void CacheAddress(string address) + private void CacheAddress(IPAddress address) { var path = CacheFilePath; try { _fileSystem.CreateDirectory(Path.GetDirectoryName(path)); - _fileSystem.WriteAllText(path, address, Encoding.UTF8); + _fileSystem.WriteAllText(path, address.ToString(), Encoding.UTF8); } catch (Exception ex) { @@ -126,10 +167,11 @@ namespace MediaBrowser.Server.Implementations.Connect try { var endpoint = _fileSystem.ReadAllText(path, Encoding.UTF8); + IPAddress ipAddress; - if (IsValid(endpoint, "cache")) + if (IPAddress.TryParse(endpoint, out ipAddress)) { - ((ConnectManager)_connectManager).OnWanAddressResolved(endpoint); + ((ConnectManager)_connectManager).OnWanAddressResolved(ipAddress); } } catch (IOException) @@ -142,19 +184,6 @@ namespace MediaBrowser.Server.Implementations.Connect } } - private bool IsValid(string address, string source) - { - IPAddress ipAddress; - var valid = IPAddress.TryParse(address, out ipAddress); - - if (!valid) - { - _logger.Error("{0} is not a valid ip address. Source: {1}", address, source); - } - - return valid; - } - public void Dispose() { if (_timer != null) diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index d7477225c..ac0d2c569 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -19,6 +19,7 @@ using System.Globalization; using System.IO; using System.Linq; using System.Net; +using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -53,7 +54,7 @@ namespace MediaBrowser.Server.Implementations.Connect get { return _data.AccessKey; } } - public string DiscoveredWanIpAddress { get; private set; } + private IPAddress DiscoveredWanIpAddress { get; set; } public string WanIpAddress { @@ -61,9 +62,16 @@ namespace MediaBrowser.Server.Implementations.Connect { var address = _config.Configuration.WanDdns; - if (string.IsNullOrWhiteSpace(address)) + if (string.IsNullOrWhiteSpace(address) && DiscoveredWanIpAddress != null) { - address = DiscoveredWanIpAddress; + if (DiscoveredWanIpAddress.AddressFamily == AddressFamily.InterNetworkV6) + { + address = "[" + DiscoveredWanIpAddress + "]"; + } + else + { + address = DiscoveredWanIpAddress.ToString(); + } } return address; @@ -124,7 +132,7 @@ namespace MediaBrowser.Server.Implementations.Connect LoadCachedData(); } - internal void OnWanAddressResolved(string address) + internal void OnWanAddressResolved(IPAddress address) { DiscoveredWanIpAddress = address; @@ -316,7 +324,7 @@ namespace MediaBrowser.Server.Implementations.Connect try { - _fileSystem.CreateDirectory(Path.GetDirectoryName(path)); + _fileSystem.CreateDirectory(Path.GetDirectoryName(path)); var json = _json.SerializeToString(_data); @@ -324,7 +332,7 @@ namespace MediaBrowser.Server.Implementations.Connect lock (_dataFileLock) { - _fileSystem.WriteAllText(path, encrypted, Encoding.UTF8); + _fileSystem.WriteAllText(path, encrypted, Encoding.UTF8); } } catch (Exception ex) @@ -341,7 +349,7 @@ namespace MediaBrowser.Server.Implementations.Connect { lock (_dataFileLock) { - var encrypted = _fileSystem.ReadAllText(path, Encoding.UTF8); + var encrypted = _fileSystem.ReadAllText(path, Encoding.UTF8); var json = _encryption.DecryptString(encrypted); @@ -381,7 +389,7 @@ namespace MediaBrowser.Server.Implementations.Connect { await UpdateConnectInfo().ConfigureAwait(false); } - + await _operationLock.WaitAsync().ConfigureAwait(false); try @@ -480,7 +488,7 @@ namespace MediaBrowser.Server.Implementations.Connect { await UpdateConnectInfo().ConfigureAwait(false); } - + await _operationLock.WaitAsync().ConfigureAwait(false); try diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index a19a122c3..61465e1d7 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -94,12 +94,18 @@ namespace MediaBrowser.Server.Implementations.Dto var list = new List<BaseItemDto>(); var programTuples = new List<Tuple<BaseItem, BaseItemDto>> { }; + var channelTuples = new List<Tuple<BaseItemDto, LiveTvChannel>> { }; foreach (var item in items) { var dto = GetBaseItemDtoInternal(item, options, syncDictionary, user, owner); - if (item is LiveTvProgram) + var tvChannel = item as LiveTvChannel; + if (tvChannel != null) + { + channelTuples.Add(new Tuple<BaseItemDto, LiveTvChannel>(dto, tvChannel)); + } + else if (item is LiveTvProgram) { programTuples.Add(new Tuple<BaseItem, BaseItemDto>(item, dto)); } @@ -131,6 +137,11 @@ namespace MediaBrowser.Server.Implementations.Dto Task.WaitAll(task); } + if (channelTuples.Count > 0) + { + _livetvManager().AddChannelInfo(channelTuples, options, user); + } + return list; } @@ -151,8 +162,13 @@ namespace MediaBrowser.Server.Implementations.Dto var syncProgress = GetSyncedItemProgress(options); var dto = GetBaseItemDtoInternal(item, options, GetSyncedItemProgressDictionary(syncProgress), user, owner); - - if (item is LiveTvProgram) + var tvChannel = item as LiveTvChannel; + if (tvChannel != null) + { + var list = new List<Tuple<BaseItemDto, LiveTvChannel>> { new Tuple<BaseItemDto, LiveTvChannel>(dto, tvChannel) }; + _livetvManager().AddChannelInfo(list, options, user); + } + else if (item is LiveTvProgram) { var list = new List<Tuple<BaseItem, BaseItemDto>> { new Tuple<BaseItem, BaseItemDto>(item, dto) }; var task = _livetvManager().AddInfoToProgramDto(list, options.Fields, user); @@ -183,7 +199,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (person != null) { - var items = _libraryManager.GetItems(new InternalItemsQuery(user) + var items = _libraryManager.GetItemList(new InternalItemsQuery(user) { Person = byName.Name @@ -316,6 +332,11 @@ namespace MediaBrowser.Server.Implementations.Dto ServerId = _appHost.SystemId }; + if (item.SourceType == SourceType.Channel) + { + dto.SourceType = item.SourceType.ToString(); + } + if (fields.Contains(ItemFields.People)) { AttachPeople(dto, item); @@ -367,12 +388,6 @@ namespace MediaBrowser.Server.Implementations.Dto AttachBasicFields(dto, item, owner, options); - var tvChannel = item as LiveTvChannel; - if (tvChannel != null) - { - _livetvManager().AddChannelInfo(dto, tvChannel, options, user); - } - var collectionFolder = item as ICollectionFolder; if (collectionFolder != null) { @@ -452,6 +467,7 @@ namespace MediaBrowser.Server.Implementations.Dto dto.EpisodeCount = taggedItems.Count(i => i is Episode); dto.GameCount = taggedItems.Count(i => i is Game); 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.SeriesCount = taggedItems.Count(i => i is Series); dto.SongCount = taggedItems.Count(i => i is Audio); @@ -480,7 +496,7 @@ namespace MediaBrowser.Server.Implementations.Dto var folder = (Folder)item; - if (!(folder is IChannelItem) && !(folder is Channel)) + if (item.SourceType == SourceType.Library) { dto.ChildCount = GetChildCount(folder, user); @@ -1250,6 +1266,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (audio != null) { dto.Album = audio.Album; + dto.ExtraType = audio.ExtraType; var albumParent = audio.AlbumEntity; @@ -1352,6 +1369,8 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.Chapters = GetChapterInfoDtos(item); } + + dto.ExtraType = video.ExtraType; } if (fields.Contains(ItemFields.MediaStreams)) @@ -1378,16 +1397,6 @@ namespace MediaBrowser.Server.Implementations.Dto } } - // Add MovieInfo - var movie = item as Movie; - if (movie != null) - { - if (fields.Contains(ItemFields.TmdbCollectionName)) - { - dto.TmdbCollectionName = movie.TmdbCollectionName; - } - } - var hasSpecialFeatures = item as IHasSpecialFeatures; if (hasSpecialFeatures != null) { @@ -1541,16 +1550,13 @@ namespace MediaBrowser.Server.Implementations.Dto dto.ChannelId = item.ChannelId; - var channelItem = item as IChannelItem; - if (channelItem != null) + if (item.SourceType == SourceType.Channel && !string.IsNullOrWhiteSpace(item.ChannelId)) { - dto.ChannelName = _channelManagerFactory().GetChannel(channelItem.ChannelId).Name; - } - - var channelMediaItem = item as IChannelMediaItem; - if (channelMediaItem != null) - { - dto.ExtraType = channelMediaItem.ExtraType; + var channel = _libraryManager.GetItemById(item.ChannelId); + if (channel != null) + { + dto.ChannelName = channel.Name; + } } } @@ -1659,8 +1665,7 @@ namespace MediaBrowser.Server.Implementations.Dto { IsFolder = false, Recursive = true, - IsVirtualUnaired = false, - IsMissing = false, + ExcludeLocationTypes = new[] { LocationType.Virtual }, User = user }).Result.Items; diff --git a/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs b/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs index 28883e9a2..dfaedbc9d 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs @@ -342,7 +342,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints void _libraryManager_ItemRemoved(object sender, ItemChangeEventArgs e) { - if (e.Item is LiveTvProgram || e.Item is IChannelItem) + if (e.Item.SourceType != SourceType.Library) { return; } @@ -356,7 +356,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints void _libraryManager_ItemAdded(object sender, ItemChangeEventArgs e) { - if (e.Item is LiveTvProgram || e.Item is IChannelItem) + if (e.Item.SourceType != SourceType.Library) { return; } diff --git a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs index 703096a2b..237c7157b 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs @@ -282,7 +282,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints return false; } - return !(item is IChannelItem) && !(item is ILiveTvItem); + return item.SourceType == SourceType.Library; } /// <summary> diff --git a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs index a9e4aaa0b..da1d25f2c 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs @@ -346,7 +346,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications return false; } - return !(item is IChannelItem) && !(item is ILiveTvItem); + return item.SourceType == SourceType.Library; } private async void LibraryUpdateTimerCallback(object state) diff --git a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs index f9e167a8f..349e31907 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs @@ -547,7 +547,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization if (series == null) { - SmartMatchInfo info = options.SmartMatchInfos.FirstOrDefault(e => e.MatchStrings.Contains(seriesName, StringComparer.OrdinalIgnoreCase)); + SmartMatchInfo info = options.SmartMatchInfos.FirstOrDefault(e => e.MatchStrings.Contains(nameWithoutYear, StringComparer.OrdinalIgnoreCase)); if (info != null) { diff --git a/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs index 845fcdff2..43bd2f29c 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs @@ -84,7 +84,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization } catch (Exception ex) { - _logger.ErrorException("Error organizing episode {0}", ex, file); + _logger.ErrorException("Error organizing episode {0}", ex, file.FullName); } numComplete++; @@ -132,7 +132,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization { try { - return _fileSystem.GetFiles(path, true) + return _fileSystem.GetFiles(path, true) .ToList(); } catch (IOException ex) @@ -150,7 +150,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization /// <param name="extensions">The extensions.</param> private void DeleteLeftOverFiles(string path, IEnumerable<string> extensions) { - var eligibleFiles = _fileSystem.GetFiles(path, true) + var eligibleFiles = _fileSystem.GetFiles(path, true) .Where(i => extensions.Contains(i.Extension, StringComparer.OrdinalIgnoreCase)) .ToList(); @@ -206,4 +206,4 @@ namespace MediaBrowser.Server.Implementations.FileOrganization return watchLocations.Contains(path, StringComparer.OrdinalIgnoreCase); } } -} +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs index c284007f7..3e4f4a70c 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -21,6 +21,7 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Net; using MediaBrowser.Common.Security; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Server.Implementations.HttpServer { @@ -288,6 +289,36 @@ namespace MediaBrowser.Server.Implementations.HttpServer return Path.GetExtension(parts[0]); } + public static string RemoveQueryStringByKey(string url, string key) + { + var uri = new Uri(url); + + // this gets all the query string key value pairs as a collection + var newQueryString = MyHttpUtility.ParseQueryString(uri.Query); + + if (newQueryString.Count == 0) + { + return url; + } + + // this removes the key if exists + newQueryString.Remove(key); + + // this gets the page path from root without QueryString + string pagePathWithoutQueryString = uri.GetLeftPart(UriPartial.Path); + + return newQueryString.Count > 0 + ? String.Format("{0}?{1}", pagePathWithoutQueryString, newQueryString) + : pagePathWithoutQueryString; + } + + private string GetUrlToLog(string url) + { + url = RemoveQueryStringByKey(url, "api_key"); + + return url; + } + /// <summary> /// Overridable method that can be used to implement a custom hnandler /// </summary> @@ -305,21 +336,36 @@ namespace MediaBrowser.Server.Implementations.HttpServer var urlString = url.OriginalString; var enableLog = EnableLogging(urlString, localPath); + var urlToLog = urlString; if (enableLog) { - LoggerUtils.LogRequest(_logger, urlString, httpReq.HttpMethod, httpReq.UserAgent); + urlToLog = GetUrlToLog(urlString); + LoggerUtils.LogRequest(_logger, urlToLog, httpReq.HttpMethod, httpReq.UserAgent); } - + if (string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase) || - string.Equals(localPath, "/emby/", StringComparison.OrdinalIgnoreCase)) + string.Equals(localPath, "/mediabrowser", StringComparison.OrdinalIgnoreCase) || + localPath.IndexOf("mediabrowser/web", StringComparison.OrdinalIgnoreCase) != -1 || + localPath.IndexOf("dashboard/", StringComparison.OrdinalIgnoreCase) != -1) { - httpRes.RedirectToUrl(DefaultRedirectPath); - return Task.FromResult(true); + httpRes.StatusCode = 200; + httpRes.ContentType = "text/html"; + var newUrl = urlString.Replace("mediabrowser", "emby", StringComparison.OrdinalIgnoreCase) + .Replace("/dashboard/", "/web/", StringComparison.OrdinalIgnoreCase); + + if (!string.Equals(newUrl, urlString, StringComparison.OrdinalIgnoreCase)) + { + httpRes.Write("<!doctype html><html><head><title>Emby</title></head><body>Please update your Emby bookmark to <a href=\"" + newUrl + "\">" + newUrl + "</a></body></html>"); + + httpRes.Close(); + return Task.FromResult(true); + } } - if (string.Equals(localPath, "/mediabrowser", StringComparison.OrdinalIgnoreCase)) + + if (string.Equals(localPath, "/emby/", StringComparison.OrdinalIgnoreCase)) { - httpRes.RedirectToUrl("mediabrowser/" + DefaultRedirectPath); + httpRes.RedirectToUrl(DefaultRedirectPath); return Task.FromResult(true); } if (string.Equals(localPath, "/emby", StringComparison.OrdinalIgnoreCase)) @@ -353,7 +399,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer httpRes.RedirectToUrl("web/pin.html"); return Task.FromResult(true); } - + if (!string.IsNullOrWhiteSpace(GlobalResponse)) { httpRes.StatusCode = 503; @@ -390,7 +436,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer if (enableLog) { - LoggerUtils.LogResponse(_logger, statusCode, urlString, remoteIp, duration); + LoggerUtils.LogResponse(_logger, statusCode, urlToLog, remoteIp, duration); } }, TaskContinuationOptions.None); @@ -429,6 +475,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer Priority = route.Priority, Summary = route.Summary }); + routes.Add(new RouteAttribute(NormalizeRoutePath(route.Path), route.Verbs) { Notes = route.Notes, @@ -436,13 +483,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer Summary = route.Summary }); - // TODO: This is a hack for iOS. Remove it asap. - routes.Add(new RouteAttribute(DoubleNormalizeRoutePath(route.Path), route.Verbs) - { - Notes = route.Notes, - Priority = route.Priority, - Summary = route.Summary - }); routes.Add(new RouteAttribute(DoubleNormalizeEmbyRoutePath(route.Path), route.Verbs) { Notes = route.Notes, @@ -484,16 +524,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer return "mediabrowser/" + path; } - private string DoubleNormalizeRoutePath(string path) - { - if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase)) - { - return "/mediabrowser/mediabrowser" + path; - } - - return "mediabrowser/mediabrowser/" + path; - } - /// <summary> /// Releases the specified instance. /// </summary> diff --git a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs b/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs index 5b72860b6..2755a476c 100644 --- a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs +++ b/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs @@ -24,17 +24,15 @@ namespace MediaBrowser.Server.Implementations.Intros public class DefaultIntroProvider : IIntroProvider { private readonly ISecurityManager _security; - private readonly IChannelManager _channelManager; private readonly ILocalizationManager _localization; private readonly IConfigurationManager _serverConfig; private readonly ILibraryManager _libraryManager; private readonly IFileSystem _fileSystem; private readonly IMediaSourceManager _mediaSourceManager; - public DefaultIntroProvider(ISecurityManager security, IChannelManager channelManager, ILocalizationManager localization, IConfigurationManager serverConfig, ILibraryManager libraryManager, IFileSystem fileSystem, IMediaSourceManager mediaSourceManager) + public DefaultIntroProvider(ISecurityManager security, ILocalizationManager localization, IConfigurationManager serverConfig, ILibraryManager libraryManager, IFileSystem fileSystem, IMediaSourceManager mediaSourceManager) { _security = security; - _channelManager = channelManager; _localization = localization; _serverConfig = serverConfig; _libraryManager = libraryManager; @@ -79,76 +77,45 @@ namespace MediaBrowser.Server.Implementations.Intros AppearsInItemId = item.Id }); - if (config.EnableIntrosFromMoviesInLibrary) - { - var inputItems = _libraryManager.GetItems(new InternalItemsQuery(user) - { - IncludeItemTypes = new[] { typeof(Movie).Name } - - }, new string[] { }); - - var itemsWithTrailers = inputItems - .Where(i => - { - var hasTrailers = i as IHasTrailers; - - if (hasTrailers != null && hasTrailers.LocalTrailerIds.Count > 0) - { - if (i is Movie) - { - return !IsDuplicate(item, i); - } - } - return false; - }); - - candidates.AddRange(itemsWithTrailers.Select(i => new ItemWithTrailer - { - Item = i, - Type = ItemWithTrailerType.ItemWithTrailer, - User = user, - WatchingItem = item, - WatchingItemPeople = itemPeople, - AllPeople = allPeople, - Random = random, - LibraryManager = _libraryManager - })); - } - var trailerTypes = new List<TrailerType>(); - if (config.EnableIntrosFromUpcomingTrailers) - { - trailerTypes.Add(TrailerType.ComingSoonToTheaters); - } - if (config.EnableIntrosFromUpcomingDvdMovies) - { - trailerTypes.Add(TrailerType.ComingSoonToDvd); - } - if (config.EnableIntrosFromUpcomingStreamingMovies) + if (config.EnableIntrosFromMoviesInLibrary) { - trailerTypes.Add(TrailerType.ComingSoonToStreaming); + trailerTypes.Add(TrailerType.LocalTrailer); } - if (config.EnableIntrosFromSimilarMovies) + + if (IsSupporter) { - trailerTypes.Add(TrailerType.Archive); + if (config.EnableIntrosFromUpcomingTrailers) + { + trailerTypes.Add(TrailerType.ComingSoonToTheaters); + } + if (config.EnableIntrosFromUpcomingDvdMovies) + { + trailerTypes.Add(TrailerType.ComingSoonToDvd); + } + if (config.EnableIntrosFromUpcomingStreamingMovies) + { + trailerTypes.Add(TrailerType.ComingSoonToStreaming); + } + if (config.EnableIntrosFromSimilarMovies) + { + trailerTypes.Add(TrailerType.Archive); + } } - if (trailerTypes.Count > 0 && IsSupporter) + if (trailerTypes.Count > 0) { - var channelTrailers = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery + var trailerResult = _libraryManager.GetItemList(new InternalItemsQuery { - ContentTypes = new[] { ChannelMediaContentType.MovieExtra }, - ExtraTypes = new[] { ExtraType.Trailer }, - UserId = user.Id.ToString("N"), + IncludeItemTypes = new[] { typeof(Trailer).Name }, TrailerTypes = trailerTypes.ToArray() + }); - }, CancellationToken.None); - - candidates.AddRange(channelTrailers.Items.Select(i => new ItemWithTrailer + candidates.AddRange(trailerResult.Select(i => new ItemWithTrailer { Item = i, - Type = ItemWithTrailerType.ChannelTrailer, + Type = i.SourceType == SourceType.Channel ? ItemWithTrailerType.ChannelTrailer : ItemWithTrailerType.ItemWithTrailer, User = user, WatchingItem = item, WatchingItemPeople = itemPeople, @@ -156,7 +123,7 @@ namespace MediaBrowser.Server.Implementations.Intros Random = random, LibraryManager = _libraryManager })); - } + } return GetResult(item, candidates, config, ratingLevel); } @@ -556,7 +523,6 @@ namespace MediaBrowser.Server.Implementations.Intros internal enum ItemWithTrailerType { - LibraryTrailer, ChannelTrailer, ItemWithTrailer } diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 721603efe..0e61f2969 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -40,8 +40,10 @@ using CommonIO; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Library; using MediaBrowser.Model.Net; +using MediaBrowser.Server.Implementations.Library.Resolvers; using MoreLinq; using SortOrder = MediaBrowser.Model.Entities.SortOrder; +using VideoResolver = MediaBrowser.Naming.Video.VideoResolver; namespace MediaBrowser.Server.Implementations.Library { @@ -347,11 +349,7 @@ namespace MediaBrowser.Server.Implementations.Library private void RegisterItem(Guid id, BaseItem item) { - if (item is LiveTvProgram) - { - return; - } - if (item is IChannelItem) + if (item.SourceType != SourceType.Library) { return; } @@ -371,9 +369,14 @@ namespace MediaBrowser.Server.Implementations.Library public async Task DeleteItem(BaseItem item, DeleteOptions options) { + if (item == null) + { + throw new ArgumentNullException("item"); + } + _logger.Debug("Deleting item, Type: {0}, Name: {1}, Path: {2}, Id: {3}", item.GetType().Name, - item.Name, + item.Name ?? "Unknown name", item.Path ?? string.Empty, item.Id); @@ -427,7 +430,7 @@ namespace MediaBrowser.Server.Implementations.Library } else if (parent != null) { - await parent.RemoveChild(item, CancellationToken.None).ConfigureAwait(false); + parent.RemoveChild(item); } await ItemRepository.DeleteItem(item.Id, CancellationToken.None).ConfigureAwait(false); @@ -458,10 +461,11 @@ namespace MediaBrowser.Server.Implementations.Library /// Resolves the item. /// </summary> /// <param name="args">The args.</param> + /// <param name="resolvers">The resolvers.</param> /// <returns>BaseItem.</returns> - private BaseItem ResolveItem(ItemResolveArgs args) + private BaseItem ResolveItem(ItemResolveArgs args, IItemResolver[] resolvers) { - var item = EntityResolvers.Select(r => Resolve(args, r)) + var item = (resolvers ?? EntityResolvers).Select(r => Resolve(args, r)) .FirstOrDefault(i => i != null); if (item != null) @@ -504,7 +508,12 @@ namespace MediaBrowser.Server.Implementations.Library .Replace("/", "\\"); } - key = type.FullName + key.ToLower(); + if (!ConfigurationManager.Configuration.EnableCaseSensitiveItemIds) + { + key = key.ToLower(); + } + + key = type.FullName + key; return key.GetMD5(); } @@ -560,10 +569,10 @@ namespace MediaBrowser.Server.Implementations.Library public BaseItem ResolvePath(FileSystemMetadata fileInfo, Folder parent = null) { - return ResolvePath(fileInfo, new DirectoryService(_logger, _fileSystem), parent); + return ResolvePath(fileInfo, new DirectoryService(_logger, _fileSystem), null, parent); } - private BaseItem ResolvePath(FileSystemMetadata fileInfo, IDirectoryService directoryService, Folder parent = null, string collectionType = null) + private BaseItem ResolvePath(FileSystemMetadata fileInfo, IDirectoryService directoryService, IItemResolver[] resolvers, Folder parent = null, string collectionType = null) { if (fileInfo == null) { @@ -619,7 +628,7 @@ namespace MediaBrowser.Server.Implementations.Library return null; } - return ResolveItem(args); + return ResolveItem(args, resolvers); } public bool IgnoreFile(FileSystemMetadata file, BaseItem parent) @@ -662,11 +671,18 @@ namespace MediaBrowser.Server.Implementations.Library public IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemMetadata> files, IDirectoryService directoryService, Folder parent, string collectionType) { + return ResolvePaths(files, directoryService, parent, collectionType, EntityResolvers); + } + + public IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemMetadata> files, IDirectoryService directoryService, Folder parent, string collectionType, IItemResolver[] resolvers) + { var fileList = files.Where(i => !IgnoreFile(i, parent)).ToList(); if (parent != null) { - foreach (var resolver in MultiItemResolvers) + var multiItemResolvers = resolvers == null ? MultiItemResolvers : resolvers.OfType<IMultiItemResolver>().ToArray(); + + foreach (var resolver in multiItemResolvers) { var result = resolver.ResolveMultiple(parent, fileList, collectionType, directoryService); @@ -679,22 +695,22 @@ namespace MediaBrowser.Server.Implementations.Library { ResolverHelper.SetInitialItemValues(item, parent, _fileSystem, this, directoryService); } - items.AddRange(ResolveFileList(result.ExtraFiles, directoryService, parent, collectionType)); + items.AddRange(ResolveFileList(result.ExtraFiles, directoryService, parent, collectionType, resolvers)); return items; } } } - return ResolveFileList(fileList, directoryService, parent, collectionType); + return ResolveFileList(fileList, directoryService, parent, collectionType, resolvers); } - private IEnumerable<BaseItem> ResolveFileList(IEnumerable<FileSystemMetadata> fileList, IDirectoryService directoryService, Folder parent, string collectionType) + private IEnumerable<BaseItem> ResolveFileList(IEnumerable<FileSystemMetadata> fileList, IDirectoryService directoryService, Folder parent, string collectionType, IItemResolver[] resolvers) { return fileList.Select(f => { try { - return ResolvePath(f, directoryService, parent, collectionType); + return ResolvePath(f, directoryService, resolvers, parent, collectionType); } catch (Exception ex) { @@ -807,7 +823,7 @@ namespace MediaBrowser.Server.Implementations.Library { return null; } - + return RootFolder.FindByPath(path); } @@ -1044,11 +1060,6 @@ namespace MediaBrowser.Server.Implementations.Library return names; } - private void SetPropertiesFromSongs(MusicArtist artist, IEnumerable<IHasMetadata> items) - { - - } - /// <summary> /// Validate and refresh the People sub-set of the IBN. /// The items are stored in the db but not loaded into memory until actually requested by an operation. @@ -1304,7 +1315,7 @@ namespace MediaBrowser.Server.Implementations.Library return item; } - public QueryResult<BaseItem> GetItems(InternalItemsQuery query) + public IEnumerable<BaseItem> GetItemList(InternalItemsQuery query) { if (query.User != null) { @@ -1313,12 +1324,7 @@ namespace MediaBrowser.Server.Implementations.Library var result = ItemRepository.GetItemIdsList(query); - var items = result.Select(GetItemById).Where(i => i != null).ToArray(); - - return new QueryResult<BaseItem> - { - Items = items - }; + return result.Select(GetItemById).Where(i => i != null); } public QueryResult<BaseItem> QueryItems(InternalItemsQuery query) @@ -1341,7 +1347,7 @@ namespace MediaBrowser.Server.Implementations.Library return ItemRepository.GetItemIdsList(query); } - public IEnumerable<BaseItem> GetItems(InternalItemsQuery query, IEnumerable<string> parentIds) + public IEnumerable<BaseItem> GetItemList(InternalItemsQuery query, IEnumerable<string> parentIds) { var parents = parentIds.Select(i => GetItemById(new Guid(i))).Where(i => i != null).ToList(); @@ -1350,13 +1356,39 @@ namespace MediaBrowser.Server.Implementations.Library return GetItemIds(query).Select(GetItemById).Where(i => i != null); } + public QueryResult<BaseItem> GetItemsResult(InternalItemsQuery query) + { + if (query.Recursive && query.ParentId.HasValue) + { + var parent = GetItemById(query.ParentId.Value); + if (parent != null) + { + SetTopParentIdsOrAncestors(query, new List<BaseItem> { parent }); + query.ParentId = null; + } + } + + if (query.User != null) + { + AddUserToQuery(query, query.User); + } + + var initialResult = ItemRepository.GetItemIds(query); + + return new QueryResult<BaseItem> + { + TotalRecordCount = initialResult.TotalRecordCount, + Items = initialResult.Items.Select(GetItemById).Where(i => i != null).ToArray() + }; + } + public QueryResult<BaseItem> GetItemsResult(InternalItemsQuery query, IEnumerable<string> parentIds) { var parents = parentIds.Select(i => GetItemById(new Guid(i))).Where(i => i != null).ToList(); SetTopParentIdsOrAncestors(query, parents); - return GetItems(query); + return GetItemsResult(query); } private void SetTopParentIdsOrAncestors(InternalItemsQuery query, List<BaseItem> parents) @@ -2315,12 +2347,17 @@ namespace MediaBrowser.Server.Implementations.Library files.AddRange(currentVideo.Extras.Where(i => string.Equals(i.ExtraType, "trailer", StringComparison.OrdinalIgnoreCase)).Select(i => _fileSystem.GetFileInfo(i.Path))); } - return ResolvePaths(files, directoryService, null, null) - .OfType<Video>() + var resolvers = new IItemResolver[] + { + new GenericVideoResolver<Trailer>(this) + }; + + return ResolvePaths(files, directoryService, null, null, resolvers) + .OfType<Trailer>() .Select(video => { // Try to retrieve it from the db. If we don't find it, use the resolved version - var dbItem = GetItemById(video.Id) as Video; + var dbItem = GetItemById(video.Id) as Trailer; if (dbItem != null) { @@ -2539,7 +2576,7 @@ namespace MediaBrowser.Server.Implementations.Library // Remove this image to prevent it from retrying over and over item.RemoveImage(image); await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false); - + throw new InvalidOperationException(); } } diff --git a/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs b/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs index b72406730..4e23b5e93 100644 --- a/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs +++ b/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs @@ -4,6 +4,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Entities; using System; +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -28,12 +29,14 @@ namespace MediaBrowser.Server.Implementations.Library .Cast<IHasTrailers>() .ToList(); - var channelTrailerResult = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery + var trailers = _libraryManager.GetItemList(new InternalItemsQuery { - ExtraTypes = new[] { ExtraType.Trailer } - - }, CancellationToken.None); - var channelTrailers = channelTrailerResult.Items; + IncludeItemTypes = new[] { typeof(Trailer).Name }, + ExcludeTrailerTypes = new[] + { + TrailerType.LocalTrailer + } + }).ToArray(); var numComplete = 0; @@ -41,7 +44,7 @@ namespace MediaBrowser.Server.Implementations.Library { cancellationToken.ThrowIfCancellationRequested(); - await AssignTrailers(item, channelTrailers).ConfigureAwait(false); + await AssignTrailers(item, trailers).ConfigureAwait(false); numComplete++; double percent = numComplete; diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs index e4a085f42..dfc6fc125 100644 --- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -17,6 +17,7 @@ using System.Threading; using System.Threading.Tasks; using CommonIO; using MediaBrowser.Common.IO; +using MediaBrowser.Model.Configuration; namespace MediaBrowser.Server.Implementations.Library { @@ -276,7 +277,7 @@ namespace MediaBrowser.Server.Implementations.Library private void SetDefaultSubtitleStreamIndex(MediaSourceInfo source, UserItemData userData, User user) { - if (userData.SubtitleStreamIndex.HasValue && user.Configuration.RememberSubtitleSelections) + if (userData.SubtitleStreamIndex.HasValue && user.Configuration.RememberSubtitleSelections && user.Configuration.SubtitleMode != SubtitlePlaybackMode.None) { var index = userData.SubtitleStreamIndex.Value; // Make sure the saved index is still valid diff --git a/MediaBrowser.Server.Implementations/Library/MusicManager.cs b/MediaBrowser.Server.Implementations/Library/MusicManager.cs index 11a1f190a..aad7c112b 100644 --- a/MediaBrowser.Server.Implementations/Library/MusicManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MusicManager.cs @@ -80,7 +80,7 @@ namespace MediaBrowser.Server.Implementations.Library { var genreList = genres.ToList(); - var inputItems = _libraryManager.GetItems(new InternalItemsQuery(user) + var inputItems = _libraryManager.GetItemList(new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(Audio).Name }, diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/VideoResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/VideoResolver.cs index 97682db66..c7f21cef1 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/VideoResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/VideoResolver.cs @@ -34,4 +34,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers get { return ResolverPriority.Last; } } } + + public class GenericVideoResolver<T> : BaseVideoResolver<T> + where T : Video, new () + { + public GenericVideoResolver(ILibraryManager libraryManager) : base(libraryManager) + { + } + } } diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index 62392c1c7..276fc329f 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -157,7 +157,7 @@ namespace MediaBrowser.Server.Implementations.Library AddIfMissing(excludeItemTypes, typeof(CollectionFolder).Name); - var mediaItems = _libraryManager.GetItems(new InternalItemsQuery(user) + var mediaItems = _libraryManager.GetItemList(new InternalItemsQuery(user) { NameContains = searchTerm, ExcludeItemTypes = excludeItemTypes.ToArray(), diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index a375dde31..931f9b21e 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -80,7 +80,7 @@ namespace MediaBrowser.Server.Implementations.Library list.Add(folder); continue; } - + if (collectionFolder != null && UserView.IsEligibleForGrouping(folder) && user.IsFolderGrouped(folder.Id)) { groupedFolders.Add(collectionFolder); @@ -124,7 +124,7 @@ namespace MediaBrowser.Server.Implementations.Library var channels = channelResult.Items; - if (user.Configuration.DisplayChannelsInline && channels.Length > 0) + if (!user.Configuration.DisplayChannelsInline && channels.Length > 0) { list.Add(await _channelManager.GetInternalChannelFolder(cancellationToken).ConfigureAwait(false)); } @@ -272,9 +272,13 @@ namespace MediaBrowser.Server.Implementations.Library .ToArray(); } - var excludeItemTypes = includeItemTypes.Length == 0 ? new[] { "ChannelItem", "LiveTvItem", typeof(Person).Name, typeof(Studio).Name, typeof(Year).Name, typeof(GameGenre).Name, typeof(MusicGenre).Name, typeof(Genre).Name } : new string[] { }; + var excludeItemTypes = includeItemTypes.Length == 0 ? new[] + { + typeof(Person).Name, typeof(Studio).Name, typeof(Year).Name, typeof(GameGenre).Name, typeof(MusicGenre).Name, typeof(Genre).Name + + } : new string[] { }; - return _libraryManager.GetItems(new InternalItemsQuery(user) + return _libraryManager.GetItemList(new InternalItemsQuery(user) { IncludeItemTypes = includeItemTypes, SortOrder = SortOrder.Descending, @@ -282,7 +286,8 @@ namespace MediaBrowser.Server.Implementations.Library IsFolder = includeItemTypes.Length == 0 ? false : (bool?)null, ExcludeItemTypes = excludeItemTypes, ExcludeLocationTypes = new[] { LocationType.Virtual }, - Limit = limit * 20 + Limit = limit * 20, + ExcludeSourceTypes = parentIds.Length == 0 ? new[] { SourceType.Channel, SourceType.LiveTV } : new SourceType[] { } }, parentIds); } diff --git a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs index aa4583ef8..75186c1e1 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs @@ -219,7 +219,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV { try { - await provider.Item1.AddMetadata(provider.Item2, list, cancellationToken).ConfigureAwait(false); + await provider.Item1.AddMetadata(provider.Item2, enabledChannels, cancellationToken).ConfigureAwait(false); } catch (NotSupportedException) { @@ -232,7 +232,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV } } - _channelCache = list; + _channelCache = list.ToList(); return list; } @@ -314,6 +314,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV { } + catch (Exception ex) + { + _logger.ErrorException("Error deleting recording file {0}", ex, remove.Path); + } } _recordingProvider.Delete(remove); } @@ -498,7 +502,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV private bool IsListingProviderEnabledForTuner(ListingsProviderInfo info, string tunerHostId) { - return info.EnableAllTuners || info.EnabledTuners.Contains(tunerHostId ?? string.Empty, StringComparer.OrdinalIgnoreCase); + if (info.EnableAllTuners) + { + return true; + } + + if (string.IsNullOrWhiteSpace(tunerHostId)) + { + throw new ArgumentNullException("tunerHostId"); + } + + return info.EnabledTuners.Contains(tunerHostId, StringComparer.OrdinalIgnoreCase); } private async Task<IEnumerable<ProgramInfo>> GetProgramsAsyncInternal(string channelId, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken) @@ -510,9 +524,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV { if (!IsListingProviderEnabledForTuner(provider.Item2, channel.TunerHostId)) { + _logger.Debug("Skipping getting programs for channel {0}-{1} from {2}-{3}, because it's not enabled for this tuner.", channel.Number, channel.Name, provider.Item1.Name, provider.Item2.ListingsId ?? string.Empty); continue; } + _logger.Debug("Getting programs for channel {0}-{1} from {2}-{3}", channel.Number, channel.Name, provider.Item1.Name, provider.Item2.ListingsId ?? string.Empty); + var programs = await provider.Item1.GetProgramsAsync(provider.Item2, channel.Number, channel.Name, startDateUtc, endDateUtc, cancellationToken) .ConfigureAwait(false); @@ -1008,6 +1025,19 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV private IEnumerable<TimerInfo> GetTimersForSeries(SeriesTimerInfo seriesTimer, IEnumerable<ProgramInfo> allPrograms, IReadOnlyList<RecordingInfo> currentRecordings) { + if (seriesTimer == null) + { + throw new ArgumentNullException("seriesTimer"); + } + if (allPrograms == null) + { + throw new ArgumentNullException("allPrograms"); + } + if (currentRecordings == null) + { + throw new ArgumentNullException("currentRecordings"); + } + // Exclude programs that have already ended allPrograms = allPrograms.Where(i => i.EndDate > DateTime.UtcNow && i.StartDate > DateTime.UtcNow); diff --git a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs index 62c9cd171..69cc8ebf7 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs @@ -28,6 +28,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV private string _targetPath; private Process _process; private readonly IJsonSerializer _json; + private readonly TaskCompletionSource<bool> _taskCompletionSource = new TaskCompletionSource<bool>(); public EncodedRecorder(ILogger logger, IFileSystem fileSystem, IMediaEncoder mediaEncoder, IApplicationPaths appPaths, IJsonSerializer json) { @@ -93,11 +94,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV // Important - don't await the log task or we won't be able to kill ffmpeg when the user stops playback StartStreamingLog(process.StandardError.BaseStream, _logFileStream); - // Wait for the file to exist before proceeeding - while (!_hasExited) - { - await Task.Delay(100, cancellationToken).ConfigureAwait(false); - } + await _taskCompletionSource.Task.ConfigureAwait(false); } private string GetCommandLineArgs(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration) @@ -197,16 +194,27 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV { _hasExited = true; - _logger.Debug("Disposing stream resources"); DisposeLogStream(); try { - _logger.Info("FFMpeg exited with code {0}", process.ExitCode); + var exitCode = process.ExitCode; + + _logger.Info("FFMpeg recording exited with code {0} for {1}", exitCode, _targetPath); + + if (exitCode == 0) + { + _taskCompletionSource.TrySetResult(true); + } + else + { + _taskCompletionSource.TrySetException(new Exception(string.Format("Recording for {0} failed. Exit code {1}", _targetPath, exitCode))); + } } catch { - _logger.Error("FFMpeg exited with an error."); + _logger.Error("FFMpeg recording exited with an error for {0}.", _targetPath); + _taskCompletionSource.TrySetException(new Exception(string.Format("Recording for {0} failed", _targetPath))); } } @@ -220,7 +228,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV } catch (Exception ex) { - _logger.ErrorException("Error disposing log stream", ex); + _logger.ErrorException("Error disposing recording log stream", ex); } _logFileStream = null; @@ -250,7 +258,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV } catch (Exception ex) { - _logger.ErrorException("Error reading ffmpeg log", ex); + _logger.ErrorException("Error reading ffmpeg recording log", ex); } } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs index 68b3f1f71..79b26468e 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; using CommonIO; -using MediaBrowser.Common.IO; namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV { @@ -35,9 +34,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV { if (_items == null) { + Logger.Info("Loading live tv data from {0}", _dataPath); _items = GetItemsFromFile(_dataPath); } - return _items; + return _items.ToList(); } } @@ -47,7 +47,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV try { - return _jsonSerializer.DeserializeFromFile<List<T>>(jsonFile); + return _jsonSerializer.DeserializeFromFile<List<T>>(jsonFile) ?? new List<T>(); } catch (FileNotFoundException) { @@ -58,7 +58,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV catch (IOException ex) { Logger.ErrorException("Error deserializing {0}", ex, jsonFile); - throw; } catch (Exception ex) { @@ -69,6 +68,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV private void UpdateList(List<T> newList) { + if (newList == null) + { + throw new ArgumentNullException("newList"); + } + var file = _dataPath + ".json"; _fileSystem.CreateDirectory(Path.GetDirectoryName(file)); @@ -81,6 +85,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV public virtual void Update(T item) { + if (item == null) + { + throw new ArgumentNullException("item"); + } + var list = GetAll().ToList(); var index = list.FindIndex(i => EqualityComparer(i, item)); @@ -97,6 +106,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV public virtual void Add(T item) { + if (item == null) + { + throw new ArgumentNullException("item"); + } + var list = GetAll().ToList(); if (list.Any(i => EqualityComparer(i, item))) diff --git a/MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs b/MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs index 449943229..70638a8bd 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs @@ -28,8 +28,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings private const string ApiUrl = "https://json.schedulesdirect.org/20141201"; - private readonly ConcurrentDictionary<string, ScheduleDirect.Station> _channelPair = - new ConcurrentDictionary<string, ScheduleDirect.Station>(); + private readonly Dictionary<string, Dictionary<string, ScheduleDirect.Station>> _channelPairingCache = + new Dictionary<string, Dictionary<string, ScheduleDirect.Station>>(StringComparer.OrdinalIgnoreCase); public SchedulesDirect(ILogger logger, IJsonSerializer jsonSerializer, IHttpClient httpClient, IApplicationHost appHost) { @@ -68,29 +68,19 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings if (string.IsNullOrWhiteSpace(token)) { + _logger.Warn("SchedulesDirect token is empty, returning empty program list"); return programsInfo; } if (string.IsNullOrWhiteSpace(info.ListingsId)) { + _logger.Warn("ListingsId is null, returning empty program list"); return programsInfo; } - var httpOptions = new HttpRequestOptions() - { - Url = ApiUrl + "/schedules", - UserAgent = UserAgent, - CancellationToken = cancellationToken, - // The data can be large so give it some extra time - TimeoutMs = 60000, - LogErrorResponseBody = true - }; - - httpOptions.RequestHeaders["token"] = token; - var dates = GetScheduleRequestDates(startDateUtc, endDateUtc); - ScheduleDirect.Station station = GetStation(channelNumber, channelName); + ScheduleDirect.Station station = GetStation(info.ListingsId, channelNumber, channelName); if (station == null) { @@ -113,13 +103,26 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings var requestString = _jsonSerializer.SerializeToString(requestList); _logger.Debug("Request string for schedules is: " + requestString); + + var httpOptions = new HttpRequestOptions() + { + Url = ApiUrl + "/schedules", + UserAgent = UserAgent, + CancellationToken = cancellationToken, + // The data can be large so give it some extra time + TimeoutMs = 60000, + LogErrorResponseBody = true + }; + + httpOptions.RequestHeaders["token"] = token; + httpOptions.RequestContent = requestString; using (var response = await Post(httpOptions, true, info).ConfigureAwait(false)) { StreamReader reader = new StreamReader(response.Content); string responseString = reader.ReadToEnd(); var dailySchedules = _jsonSerializer.DeserializeFromString<List<ScheduleDirect.Day>>(responseString); - _logger.Debug("Found " + dailySchedules.Count() + " programs on " + channelNumber + " ScheduleDirect"); + _logger.Debug("Found " + dailySchedules.Count + " programs on " + channelNumber + " ScheduleDirect"); httpOptions = new HttpRequestOptions() { @@ -176,23 +179,77 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings return programsInfo; } - private ScheduleDirect.Station GetStation(string channelNumber, string channelName) + private readonly object _channelCacheLock = new object(); + private ScheduleDirect.Station GetStation(string listingsId, string channelNumber, string channelName) { - ScheduleDirect.Station station; + lock (_channelCacheLock) + { + Dictionary<string, ScheduleDirect.Station> channelPair; + if (_channelPairingCache.TryGetValue(listingsId, out channelPair)) + { + ScheduleDirect.Station station; + + if (channelPair.TryGetValue(channelNumber, out station)) + { + return station; + } - if (_channelPair.TryGetValue(channelNumber, out station)) + if (string.IsNullOrWhiteSpace(channelName)) + { + return null; + } + + channelName = NormalizeName(channelName); + + return channelPair.Values.FirstOrDefault(i => string.Equals(NormalizeName(i.callsign ?? string.Empty), channelName, StringComparison.OrdinalIgnoreCase)); + } + + return null; + } + } + + private void AddToChannelPairCache(string listingsId, string channelNumber, ScheduleDirect.Station schChannel) + { + lock (_channelCacheLock) { - return station; + Dictionary<string, ScheduleDirect.Station> cache; + if (_channelPairingCache.TryGetValue(listingsId, out cache)) + { + cache[channelNumber] = schChannel; + } + else + { + cache = new Dictionary<string, ScheduleDirect.Station>(); + cache[channelNumber] = schChannel; + _channelPairingCache[listingsId] = cache; + } } + } - if (string.IsNullOrWhiteSpace(channelName)) + private void ClearPairCache(string listingsId) + { + lock (_channelCacheLock) { - return null; + Dictionary<string, ScheduleDirect.Station> cache; + if (_channelPairingCache.TryGetValue(listingsId, out cache)) + { + cache.Clear(); + } } + } - channelName = NormalizeName(channelName); + private int GetChannelPairCacheCount(string listingsId) + { + lock (_channelCacheLock) + { + Dictionary<string, ScheduleDirect.Station> cache; + if (_channelPairingCache.TryGetValue(listingsId, out cache)) + { + return cache.Count; + } - return _channelPair.Values.FirstOrDefault(i => string.Equals(NormalizeName(i.callsign ?? string.Empty), channelName, StringComparison.OrdinalIgnoreCase)); + return 0; + } } private string NormalizeName(string value) @@ -203,7 +260,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings public async Task AddMetadata(ListingsProviderInfo info, List<ChannelInfo> channels, CancellationToken cancellationToken) { - if (string.IsNullOrWhiteSpace(info.ListingsId)) + var listingsId = info.ListingsId; + if (string.IsNullOrWhiteSpace(listingsId)) { throw new Exception("ListingsId required"); } @@ -215,11 +273,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings throw new Exception("token required"); } - _channelPair.Clear(); + ClearPairCache(listingsId); var httpOptions = new HttpRequestOptions() { - Url = ApiUrl + "/lineups/" + info.ListingsId, + Url = ApiUrl + "/lineups/" + listingsId, UserAgent = UserAgent, CancellationToken = cancellationToken, LogErrorResponseBody = true, @@ -232,7 +290,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings using (var response = await Get(httpOptions, true, info).ConfigureAwait(false)) { var root = _jsonSerializer.DeserializeFromStream<ScheduleDirect.Channel>(response); - _logger.Info("Found " + root.map.Count() + " channels on the lineup on ScheduleDirect"); + _logger.Info("Found " + root.map.Count + " channels on the lineup on ScheduleDirect"); _logger.Info("Mapping Stations to Channel"); foreach (ScheduleDirect.Map map in root.map) { @@ -251,13 +309,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings _logger.Debug("Found channel: " + channelNumber + " in Schedules Direct"); var schChannel = root.stations.FirstOrDefault(item => item.stationID == map.stationID); - _channelPair.TryAdd(channelNumber, schChannel); + AddToChannelPairCache(listingsId, channelNumber, schChannel); } - _logger.Info("Added " + _channelPair.Count + " channels to the dictionary"); + _logger.Info("Added " + GetChannelPairCacheCount(listingsId) + " channels to the dictionary"); foreach (ChannelInfo channel in channels) { - var station = GetStation(channel.Number, channel.Name); + var station = GetStation(listingsId, channel.Number, channel.Name); if (station != null) { diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs index 81ad6a387..7fe486de7 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -25,14 +25,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv private readonly IUserDataManager _userDataManager; private readonly IDtoService _dtoService; private readonly IApplicationHost _appHost; + private readonly ILibraryManager _libraryManager; - public LiveTvDtoService(IDtoService dtoService, IUserDataManager userDataManager, IImageProcessor imageProcessor, ILogger logger, IApplicationHost appHost) + public LiveTvDtoService(IDtoService dtoService, IUserDataManager userDataManager, IImageProcessor imageProcessor, ILogger logger, IApplicationHost appHost, ILibraryManager libraryManager) { _dtoService = dtoService; _userDataManager = userDataManager; _imageProcessor = imageProcessor; _logger = logger; _appHost = appHost; + _libraryManager = libraryManager; } public TimerInfoDto GetTimerInfoDto(TimerInfo info, ILiveTvService service, LiveTvProgram program, LiveTvChannel channel) @@ -152,21 +154,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv return pattern; } - /// <summary> - /// Convert the provider 0-5 scale to our 0-10 scale - /// </summary> - /// <param name="val"></param> - /// <returns></returns> - private float? GetClientCommunityRating(float? val) - { - if (!val.HasValue) - { - return null; - } - - return val.Value; - } - public LiveTvTunerInfoDto GetTunerInfoDto(string serviceName, LiveTvTunerInfo info, string channelName) { var dto = new LiveTvTunerInfoDto @@ -195,54 +182,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv return dto; } - /// <summary> - /// Gets the channel info dto. - /// </summary> - /// <param name="info">The info.</param> - /// <param name="options">The options.</param> - /// <param name="currentProgram">The current program.</param> - /// <param name="user">The user.</param> - /// <returns>ChannelInfoDto.</returns> - public ChannelInfoDto GetChannelInfoDto(LiveTvChannel info, DtoOptions options, LiveTvProgram currentProgram, User user = null) - { - var dto = new ChannelInfoDto - { - Name = info.Name, - ServiceName = info.ServiceName, - ChannelType = info.ChannelType, - Number = info.Number, - Type = info.GetClientTypeName(), - Id = info.Id.ToString("N"), - MediaType = info.MediaType, - ExternalId = info.ExternalId, - MediaSources = info.GetMediaSources(true).ToList(), - ServerId = _appHost.SystemId - }; - - if (user != null) - { - dto.UserData = _userDataManager.GetUserDataDto(info, user); - - dto.PlayAccess = info.GetPlayAccess(user); - } - - var imageTag = GetImageTag(info); - - if (imageTag != null) - { - dto.ImageTags[ImageType.Primary] = imageTag; - - _dtoService.AttachPrimaryImageAspectRatio(dto, info); - } - - if (currentProgram != null) - { - dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, options, user); - } - - return dto; - } - internal string GetImageTag(IHasImages info) { try @@ -263,7 +202,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var name = serviceName + externalId + InternalVersionNumber; - return name.ToLower().GetMBId(typeof(LiveTvChannel)); + return _libraryManager.GetNewItemId(name.ToLower(), typeof(LiveTvChannel)); } public Guid GetInternalTimerId(string serviceName, string externalId) @@ -284,14 +223,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var name = serviceName + externalId + InternalVersionNumber; - return name.ToLower().GetMBId(typeof(LiveTvProgram)); + return _libraryManager.GetNewItemId(name.ToLower(), typeof(LiveTvProgram)); } public Guid GetInternalRecordingId(string serviceName, string externalId) { var name = serviceName + externalId + InternalVersionNumber + "0"; - return name.ToLower().GetMBId(typeof(ILiveTvRecording)); + return _libraryManager.GetNewItemId(name.ToLower(), typeof(ILiveTvRecording)); } public async Task<TimerInfo> GetTimerInfo(TimerInfoDto dto, bool isNew, LiveTvManager liveTv, CancellationToken cancellationToken) @@ -324,7 +263,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (!string.IsNullOrEmpty(dto.ChannelId) && string.IsNullOrEmpty(info.ChannelId)) { - var channel = await liveTv.GetChannel(dto.ChannelId, cancellationToken).ConfigureAwait(false); + var channel = liveTv.GetInternalChannel(dto.ChannelId); if (channel != null) { @@ -387,7 +326,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (!string.IsNullOrEmpty(dto.ChannelId) && string.IsNullOrEmpty(info.ChannelId)) { - var channel = await liveTv.GetChannel(dto.ChannelId, cancellationToken).ConfigureAwait(false); + var channel = liveTv.GetInternalChannel(dto.ChannelId); if (channel != null) { diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index abb2710e7..526de62c8 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -30,6 +30,8 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using CommonIO; +using IniParser; +using IniParser.Model; namespace MediaBrowser.Server.Implementations.LiveTv { @@ -79,7 +81,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv _dtoService = dtoService; _userDataManager = userDataManager; - _tvDtoService = new LiveTvDtoService(dtoService, userDataManager, imageProcessor, logger, appHost); + _tvDtoService = new LiveTvDtoService(dtoService, userDataManager, imageProcessor, logger, appHost, _libraryManager); } /// <summary> @@ -133,11 +135,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); - var channels = _libraryManager.GetItems(new InternalItemsQuery + var channels = _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(LiveTvChannel).Name } - }).Items.Cast<LiveTvChannel>(); + }).Cast<LiveTvChannel>(); if (user != null) { @@ -242,42 +244,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv return result; } - public async Task<QueryResult<ChannelInfoDto>> GetChannels(LiveTvChannelQuery query, DtoOptions options, CancellationToken cancellationToken) - { - var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); - - var internalResult = await GetInternalChannels(query, cancellationToken).ConfigureAwait(false); - - var returnList = new List<ChannelInfoDto>(); - - var now = DateTime.UtcNow; - - var programs = query.AddCurrentProgram ? _libraryManager.QueryItems(new InternalItemsQuery - { - IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, - MaxStartDate = now, - MinEndDate = now, - ChannelIds = internalResult.Items.Select(i => i.Id.ToString("N")).ToArray() - - }).Items.Cast<LiveTvProgram>().OrderBy(i => i.StartDate).ToList() : new List<LiveTvProgram>(); - - foreach (var channel in internalResult.Items) - { - var channelIdString = channel.Id.ToString("N"); - var currentProgram = programs.FirstOrDefault(i => string.Equals(i.ChannelId, channelIdString, StringComparison.OrdinalIgnoreCase)); - - returnList.Add(_tvDtoService.GetChannelInfoDto(channel, options, currentProgram, user)); - } - - var result = new QueryResult<ChannelInfoDto> - { - Items = returnList.ToArray(), - TotalRecordCount = internalResult.TotalRecordCount - }; - - return result; - } - public LiveTvChannel GetInternalChannel(string id) { return GetInternalChannel(new Guid(id)); @@ -298,7 +264,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv 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)) { @@ -311,7 +277,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv }, cancellationToken).ConfigureAwait(false); - return result.Items.FirstOrDefault() as ILiveTvRecording; + return result.Items.FirstOrDefault(); } private readonly SemaphoreSlim _liveStreamSemaphore = new SemaphoreSlim(1, 1); @@ -356,7 +322,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv 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); } @@ -865,10 +836,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); } - _providerManager.QueueRefresh(item.Id, new MetadataRefreshOptions(_fileSystem) + if (info.Status != RecordingStatus.InProgress) { - MetadataRefreshMode = metadataRefreshMode - }); + _providerManager.QueueRefresh(item.Id, new MetadataRefreshOptions(_fileSystem) + { + MetadataRefreshMode = metadataRefreshMode + }); + } return item.Id; } @@ -923,16 +897,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv var queryResult = _libraryManager.QueryItems(internalQuery); - var returnArray = queryResult.Items - .Cast<LiveTvProgram>() - .Select(i => new Tuple<BaseItemDto, string, string>(_dtoService.GetBaseItemDto(i, options, user), i.ServiceName, i.ExternalId)) - .ToArray(); - - await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false); + var returnArray = _dtoService.GetBaseItemDtos(queryResult.Items, options, user).ToArray(); var result = new QueryResult<BaseItemDto> { - Items = returnArray.Select(i => i.Item1).ToArray(), + Items = returnArray, TotalRecordCount = queryResult.TotalRecordCount }; @@ -1003,15 +972,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv var user = _userManager.GetUserById(query.UserId); - var returnArray = internalResult.Items - .Select(i => new Tuple<BaseItemDto, string, string>(_dtoService.GetBaseItemDto(i, options, user), i.ServiceName, i.ExternalId)) - .ToArray(); - - await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false); + var returnArray = _dtoService.GetBaseItemDtos(internalResult.Items, options, user).ToArray(); var result = new QueryResult<BaseItemDto> { - Items = returnArray.Select(i => i.Item1).ToArray(), + Items = returnArray, TotalRecordCount = internalResult.TotalRecordCount }; @@ -1429,7 +1394,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv internalQuery.ChannelIds = new[] { query.ChannelId }; } - var queryResult = _libraryManager.GetItems(internalQuery, new string[] { }); + var queryResult = _libraryManager.GetItemList(internalQuery, new string[] { }); IEnumerable<ILiveTvRecording> recordings = queryResult.Cast<ILiveTvRecording>(); if (!string.IsNullOrWhiteSpace(query.Id)) @@ -1632,18 +1597,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv var internalResult = await GetInternalRecordings(query, cancellationToken).ConfigureAwait(false); - var tuples = internalResult.Items - .Select(i => new Tuple<BaseItem, BaseItemDto>(i, _dtoService.GetBaseItemDto(i, options, user))) - .ToArray(); - - if (user != null) - { - _dtoService.FillSyncInfo(tuples, new DtoOptions(), user); - } + var returnArray = _dtoService.GetBaseItemDtos(internalResult.Items, options, user).ToArray(); return new QueryResult<BaseItemDto> { - Items = tuples.Select(i => i.Item2).ToArray(), + Items = returnArray, TotalRecordCount = internalResult.TotalRecordCount }; } @@ -1704,6 +1662,19 @@ namespace MediaBrowser.Server.Implementations.LiveTv }; } + public Task OnRecordingFileDeleted(BaseItem recording) + { + var service = GetService(recording); + + if (service is EmbyTV.EmbyTV) + { + // We can't trust that we'll be able to direct stream it through emby server, no matter what the provider says + return service.DeleteRecordingAsync(recording.ExternalId, CancellationToken.None); + } + + return Task.FromResult(true); + } + public async Task DeleteRecording(string recordingId) { var recording = await GetInternalRecording(recordingId, CancellationToken.None).ConfigureAwait(false); @@ -1713,10 +1684,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv 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); @@ -1852,52 +1823,41 @@ namespace MediaBrowser.Server.Implementations.LiveTv }; } - public async Task<ChannelInfoDto> GetChannel(string id, CancellationToken cancellationToken, User user = null) + public void AddChannelInfo(List<Tuple<BaseItemDto, LiveTvChannel>> tuples, DtoOptions options, User user) { - var channel = GetInternalChannel(id); - var now = DateTime.UtcNow; - var programs = _libraryManager.GetItems(new InternalItemsQuery(user) + var channelIds = tuples.Select(i => i.Item2.Id.ToString("N")).Distinct().ToArray(); + + var programs = _libraryManager.GetItemList(new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, - ChannelIds = new[] { id }, + ChannelIds = channelIds, MaxStartDate = now, MinEndDate = now, - Limit = 1, + Limit = channelIds.Length, SortBy = new[] { "StartDate" } - }, new string[] { }).Cast<LiveTvProgram>(); + }, new string[] { }).ToList(); - var currentProgram = programs.FirstOrDefault(); - - var dto = _tvDtoService.GetChannelInfoDto(channel, new DtoOptions(), currentProgram, user); - - return dto; - } - - public void AddChannelInfo(BaseItemDto dto, LiveTvChannel channel, DtoOptions options, User user) - { - dto.MediaSources = channel.GetMediaSources(true).ToList(); - - var now = DateTime.UtcNow; - - var programs = _libraryManager.GetItems(new InternalItemsQuery(user) + foreach (var tuple in tuples) { - IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, - ChannelIds = new[] { channel.Id.ToString("N") }, - MaxStartDate = now, - MinEndDate = now, - Limit = 1, - SortBy = new[] { "StartDate" } + var dto = tuple.Item1; + var channel = tuple.Item2; - }, new string[] { }).Cast<LiveTvProgram>(); + dto.Number = channel.Number; + dto.ChannelType = channel.ChannelType; + dto.ServiceName = GetService(channel).Name; - var currentProgram = programs.FirstOrDefault(); + dto.MediaSources = channel.GetMediaSources(true).ToList(); - if (currentProgram != null) - { - dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, options, user); + var channelIdString = channel.Id.ToString("N"); + var currentProgram = programs.FirstOrDefault(i => string.Equals(i.ChannelId, channelIdString)); + + if (currentProgram != null) + { + dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, options, user); + } } } @@ -2488,5 +2448,38 @@ namespace MediaBrowser.Server.Implementations.LiveTv IsRegistered = true }); } + + public List<NameValuePair> GetSatIniMappings() + { + var names = GetType().Assembly.GetManifestResourceNames().Where(i => i.IndexOf("SatIp.ini.satellite", StringComparison.OrdinalIgnoreCase) != -1).ToList(); + + return names.Select(GetSatIniMappings).Where(i => i != null).DistinctBy(i => i.Value.Split('|')[0]).ToList(); + } + + public NameValuePair GetSatIniMappings(string resource) + { + using (var stream = GetType().Assembly.GetManifestResourceStream(resource)) + { + using (var reader = new StreamReader(stream)) + { + var parser = new StreamIniDataParser(); + IniData data = parser.ReadData(reader); + + var satType1 = data["SATTYPE"]["1"]; + var satType2 = data["SATTYPE"]["2"]; + + if (string.IsNullOrWhiteSpace(satType2)) + { + return null; + } + + return new NameValuePair + { + Name = satType1 + " " + satType2, + Value = satType2 + "|" + Path.GetFileName(resource) + }; + } + } + } } }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs index ff102b0f7..d3bb87bc7 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs @@ -36,15 +36,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv 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. private const char StreamIdDelimeter = '_'; 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; diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs index 0a03e60fa..9ba1c60cc 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs @@ -10,6 +10,7 @@ using System; using System.Linq; using System.Threading; using MediaBrowser.Common.Net; +using MediaBrowser.Model.Serialization; namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun { @@ -21,14 +22,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun private readonly ILiveTvManager _liveTvManager; private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); private readonly IHttpClient _httpClient; + private readonly IJsonSerializer _json; - public HdHomerunDiscovery(IDeviceDiscovery deviceDiscovery, IServerConfigurationManager config, ILogger logger, ILiveTvManager liveTvManager, IHttpClient httpClient) + public HdHomerunDiscovery(IDeviceDiscovery deviceDiscovery, IServerConfigurationManager config, ILogger logger, ILiveTvManager liveTvManager, IHttpClient httpClient, IJsonSerializer json) { _deviceDiscovery = deviceDiscovery; _config = config; _logger = logger; _liveTvManager = liveTvManager; _httpClient = httpClient; + _json = json; } public void Run() @@ -79,21 +82,37 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun url = new Uri(url).GetComponents(UriComponents.AbsoluteUri & ~UriComponents.Port, UriFormat.UriEscaped).TrimEnd('/'); // Test it by pulling down the lineup - using (await _httpClient.Get(new HttpRequestOptions + using (var stream = await _httpClient.Get(new HttpRequestOptions { - Url = string.Format("{0}/lineup.json", url), + Url = string.Format("{0}/discover.json", url), CancellationToken = CancellationToken.None })) { - } - - await _liveTvManager.SaveTunerHost(new TunerHostInfo - { - Type = HdHomerunHost.DeviceType, - Url = url, - DataVersion = 1 + var response = _json.DeserializeFromStream<HdHomerunHost.DiscoverResponse>(stream); - }).ConfigureAwait(false); + var existing = GetConfiguration().TunerHosts + .FirstOrDefault(i => string.Equals(i.Type, HdHomerunHost.DeviceType, StringComparison.OrdinalIgnoreCase) && string.Equals(i.DeviceId, response.DeviceID, StringComparison.OrdinalIgnoreCase)); + + if (existing == null) + { + await _liveTvManager.SaveTunerHost(new TunerHostInfo + { + Type = HdHomerunHost.DeviceType, + Url = url, + DataVersion = 1, + DeviceId = response.DeviceID + + }).ConfigureAwait(false); + } + else + { + if (!string.Equals(existing.Url, url, StringComparison.OrdinalIgnoreCase)) + { + existing.Url = url; + await _liveTvManager.SaveTunerHost(existing).ConfigureAwait(false); + } + } + } } catch (Exception ex) { diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs index bdfbee521..1995fc311 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs @@ -415,9 +415,21 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun public async Task Validate(TunerHostInfo info) { - if (info.IsEnabled) + if (!info.IsEnabled) { - await GetChannels(info, false, CancellationToken.None).ConfigureAwait(false); + return; + } + + // Test it by pulling down the lineup + using (var stream = await _httpClient.Get(new HttpRequestOptions + { + Url = string.Format("{0}/discover.json", GetApiUrl(info, false)), + CancellationToken = CancellationToken.None + })) + { + var response = JsonSerializer.DeserializeFromStream<DiscoverResponse>(stream); + + info.DeviceId = response.DeviceID; } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs index f8f003fa1..ffe95c862 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs @@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts extInf = line.Substring(8).Trim(); _logger.Info("Found m3u channel: {0}", extInf); } - else if (!string.IsNullOrWhiteSpace(extInf)) + else if (!string.IsNullOrWhiteSpace(extInf) && !line.StartsWith("#", StringComparison.OrdinalIgnoreCase)) { var channel = GetChannelnfo(extInf, tunerHostId); channel.Id = channelIdPrefix + urlHash + line.GetMD5().ToString("N"); diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpDiscovery.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpDiscovery.cs index f6db2f5a8..cdeb6dfa8 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpDiscovery.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpDiscovery.cs @@ -14,238 +14,292 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Plugins; -using MediaBrowser.Model.Extensions; using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.SatIp { - //public class SatIpDiscovery : IServerEntryPoint - //{ - // private readonly IDeviceDiscovery _deviceDiscovery; - // private readonly IServerConfigurationManager _config; - // private readonly ILogger _logger; - // private readonly ILiveTvManager _liveTvManager; - // private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); - // private readonly IHttpClient _httpClient; - // private readonly IJsonSerializer _json; - - // public static SatIpDiscovery Current; - - // private readonly List<TunerHostInfo> _discoveredHosts = new List<TunerHostInfo>(); - - // public List<TunerHostInfo> DiscoveredHosts - // { - // get { return _discoveredHosts.ToList(); } - // } - - // public SatIpDiscovery(IDeviceDiscovery deviceDiscovery, IServerConfigurationManager config, ILogger logger, ILiveTvManager liveTvManager, IHttpClient httpClient, IJsonSerializer json) - // { - // _deviceDiscovery = deviceDiscovery; - // _config = config; - // _logger = logger; - // _liveTvManager = liveTvManager; - // _httpClient = httpClient; - // _json = json; - // Current = this; - // } - - // public void Run() - // { - // _deviceDiscovery.DeviceDiscovered += _deviceDiscovery_DeviceDiscovered; - // } - - // void _deviceDiscovery_DeviceDiscovered(object sender, SsdpMessageEventArgs e) - // { - // string st = null; - // string nt = null; - // e.Headers.TryGetValue("ST", out st); - // e.Headers.TryGetValue("NT", out nt); - - // if (string.Equals(st, "urn:ses-com:device:SatIPServer:1", StringComparison.OrdinalIgnoreCase) || - // string.Equals(nt, "urn:ses-com:device:SatIPServer:1", StringComparison.OrdinalIgnoreCase)) - // { - // string location; - // if (e.Headers.TryGetValue("Location", out location) && !string.IsNullOrWhiteSpace(location)) - // { - // _logger.Debug("SAT IP found at {0}", location); - - // // Just get the beginning of the url - // AddDevice(location); - // } - // } - // } - - // private async void AddDevice(string location) - // { - // await _semaphore.WaitAsync().ConfigureAwait(false); - - // try - // { - // if (_discoveredHosts.Any(i => string.Equals(i.Type, SatIpHost.DeviceType, StringComparison.OrdinalIgnoreCase) && string.Equals(location, i.Url, StringComparison.OrdinalIgnoreCase))) - // { - // return; - // } - - // _logger.Debug("Will attempt to add SAT device {0}", location); - // var info = await GetInfo(location, CancellationToken.None).ConfigureAwait(false); - - // _discoveredHosts.Add(info); - // } - // catch (OperationCanceledException) - // { - - // } - // catch (NotImplementedException) - // { - - // } - // catch (Exception ex) - // { - // _logger.ErrorException("Error saving device", ex); - // } - // finally - // { - // _semaphore.Release(); - // } - // } - - // public void Dispose() - // { - // } - - // public async Task<SatIpTunerHostInfo> GetInfo(string url, CancellationToken cancellationToken) - // { - // var result = new SatIpTunerHostInfo - // { - // Url = url, - // IsEnabled = true, - // Type = SatIpHost.DeviceType, - // Tuners = 1, - // TunersAvailable = 1 - // }; - - // using (var stream = await _httpClient.Get(url, cancellationToken).ConfigureAwait(false)) - // { - // using (var streamReader = new StreamReader(stream)) - // { - // // Use XmlReader for best performance - // using (var reader = XmlReader.Create(streamReader)) - // { - // reader.MoveToContent(); - - // // Loop through each element - // while (reader.Read()) - // { - // if (reader.NodeType == XmlNodeType.Element) - // { - // switch (reader.Name) - // { - // case "device": - // using (var subtree = reader.ReadSubtree()) - // { - // FillFromDeviceNode(result, subtree); - // } - // break; - // default: - // reader.Skip(); - // break; - // } - // } - // } - // } - // } - // } - - // if (string.IsNullOrWhiteSpace(result.Id)) - // { - // throw new NotImplementedException(); - // } - - // // Device hasn't implemented an m3u list - // if (string.IsNullOrWhiteSpace(result.M3UUrl)) - // { - // result.IsEnabled = false; - // } - - // else if (!result.M3UUrl.StartsWith("http", StringComparison.OrdinalIgnoreCase)) - // { - // var fullM3uUrl = url.Substring(0, url.LastIndexOf('/')); - // result.M3UUrl = fullM3uUrl + "/" + result.M3UUrl.TrimStart('/'); - // } - - // _logger.Debug("SAT device result: {0}", _json.SerializeToString(result)); - - // return result; - // } - - // private void FillFromDeviceNode(SatIpTunerHostInfo info, XmlReader reader) - // { - // reader.MoveToContent(); - - // while (reader.Read()) - // { - // if (reader.NodeType == XmlNodeType.Element) - // { - // switch (reader.LocalName) - // { - // case "UDN": - // { - // info.Id = reader.ReadElementContentAsString(); - // break; - // } - - // case "friendlyName": - // { - // info.FriendlyName = reader.ReadElementContentAsString(); - // break; - // } - - // case "satip:X_SATIPCAP": - // case "X_SATIPCAP": - // { - // // <satip:X_SATIPCAP xmlns:satip="urn:ses-com:satip">DVBS2-2</satip:X_SATIPCAP> - // var value = reader.ReadElementContentAsString() ?? string.Empty; - // var parts = value.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries); - // if (parts.Length == 2) - // { - // int intValue; - // if (int.TryParse(parts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out intValue)) - // { - // info.TunersAvailable = intValue; - // } - - // if (int.TryParse(parts[0].Substring(parts[0].Length - 1), NumberStyles.Any, CultureInfo.InvariantCulture, out intValue)) - // { - // info.Tuners = intValue; - // } - // } - // break; - // } - - // case "satip:X_SATIPM3U": - // case "X_SATIPM3U": - // { - // // <satip:X_SATIPM3U xmlns:satip="urn:ses-com:satip">/channellist.lua?select=m3u</satip:X_SATIPM3U> - // info.M3UUrl = reader.ReadElementContentAsString(); - // break; - // } - - // default: - // reader.Skip(); - // break; - // } - // } - // } - // } - //} + public class SatIpDiscovery : IServerEntryPoint + { + private readonly IDeviceDiscovery _deviceDiscovery; + private readonly IServerConfigurationManager _config; + private readonly ILogger _logger; + private readonly ILiveTvManager _liveTvManager; + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); + private readonly IHttpClient _httpClient; + private readonly IJsonSerializer _json; + + public static SatIpDiscovery Current; + + public SatIpDiscovery(IDeviceDiscovery deviceDiscovery, IServerConfigurationManager config, ILogger logger, ILiveTvManager liveTvManager, IHttpClient httpClient, IJsonSerializer json) + { + _deviceDiscovery = deviceDiscovery; + _config = config; + _logger = logger; + _liveTvManager = liveTvManager; + _httpClient = httpClient; + _json = json; + Current = this; + } + + public void Run() + { + _deviceDiscovery.DeviceDiscovered += _deviceDiscovery_DeviceDiscovered; + } + + void _deviceDiscovery_DeviceDiscovered(object sender, SsdpMessageEventArgs e) + { + string st = null; + string nt = null; + e.Headers.TryGetValue("ST", out st); + e.Headers.TryGetValue("NT", out nt); + + if (string.Equals(st, "urn:ses-com:device:SatIPServer:1", StringComparison.OrdinalIgnoreCase) || + string.Equals(nt, "urn:ses-com:device:SatIPServer:1", StringComparison.OrdinalIgnoreCase)) + { + string location; + if (e.Headers.TryGetValue("Location", out location) && !string.IsNullOrWhiteSpace(location)) + { + _logger.Debug("SAT IP found at {0}", location); + + // Just get the beginning of the url + Uri uri; + if (Uri.TryCreate(location, UriKind.Absolute, out uri)) + { + var apiUrl = location.Replace(uri.LocalPath, String.Empty, StringComparison.OrdinalIgnoreCase) + .TrimEnd('/'); + + AddDevice(apiUrl, location); + } + } + } + } + + private async void AddDevice(string deviceUrl, string infoUrl) + { + await _semaphore.WaitAsync().ConfigureAwait(false); + + try + { + var options = GetConfiguration(); + + if (options.TunerHosts.Any(i => string.Equals(i.Type, SatIpHost.DeviceType, StringComparison.OrdinalIgnoreCase) && UriEquals(i.Url, deviceUrl))) + { + return; + } + + _logger.Debug("Will attempt to add SAT device {0}", deviceUrl); + var info = await GetInfo(infoUrl, CancellationToken.None).ConfigureAwait(false); + + var existing = GetConfiguration().TunerHosts + .FirstOrDefault(i => string.Equals(i.Type, SatIpHost.DeviceType, StringComparison.OrdinalIgnoreCase) && string.Equals(i.DeviceId, info.DeviceId, StringComparison.OrdinalIgnoreCase)); + + if (existing == null) + { + if (string.IsNullOrWhiteSpace(info.M3UUrl)) + { + return; + } + + await _liveTvManager.SaveTunerHost(new TunerHostInfo + { + Type = SatIpHost.DeviceType, + Url = deviceUrl, + InfoUrl = infoUrl, + DataVersion = 1, + DeviceId = info.DeviceId, + FriendlyName = info.FriendlyName, + Tuners = info.Tuners, + M3UUrl = info.M3UUrl, + IsEnabled = true + + }).ConfigureAwait(false); + } + else + { + existing.Url = deviceUrl; + existing.InfoUrl = infoUrl; + existing.M3UUrl = info.M3UUrl; + existing.FriendlyName = info.FriendlyName; + existing.Tuners = info.Tuners; + await _liveTvManager.SaveTunerHost(existing).ConfigureAwait(false); + } + } + catch (OperationCanceledException) + { + + } + catch (NotImplementedException) + { + + } + catch (Exception ex) + { + _logger.ErrorException("Error saving device", ex); + } + finally + { + _semaphore.Release(); + } + } + + private bool UriEquals(string savedUri, string location) + { + return string.Equals(NormalizeUrl(location), NormalizeUrl(savedUri), StringComparison.OrdinalIgnoreCase); + } + + private string NormalizeUrl(string url) + { + if (!url.StartsWith("http", StringComparison.OrdinalIgnoreCase)) + { + url = "http://" + url; + } + + url = url.TrimEnd('/'); + + // Strip off the port + return new Uri(url).GetComponents(UriComponents.AbsoluteUri & ~UriComponents.Port, UriFormat.UriEscaped); + } + + private LiveTvOptions GetConfiguration() + { + return _config.GetConfiguration<LiveTvOptions>("livetv"); + } + + public void Dispose() + { + } + + public async Task<SatIpTunerHostInfo> GetInfo(string url, CancellationToken cancellationToken) + { + var result = new SatIpTunerHostInfo + { + Url = url, + IsEnabled = true, + Type = SatIpHost.DeviceType, + Tuners = 1, + TunersAvailable = 1 + }; + + using (var stream = await _httpClient.Get(url, cancellationToken).ConfigureAwait(false)) + { + using (var streamReader = new StreamReader(stream)) + { + // Use XmlReader for best performance + using (var reader = XmlReader.Create(streamReader)) + { + reader.MoveToContent(); + + // Loop through each element + while (reader.Read()) + { + if (reader.NodeType == XmlNodeType.Element) + { + switch (reader.Name) + { + case "device": + using (var subtree = reader.ReadSubtree()) + { + FillFromDeviceNode(result, subtree); + } + break; + default: + reader.Skip(); + break; + } + } + } + } + } + } + + if (string.IsNullOrWhiteSpace(result.DeviceId)) + { + throw new NotImplementedException(); + } + + // Device hasn't implemented an m3u list + if (string.IsNullOrWhiteSpace(result.M3UUrl)) + { + result.IsEnabled = false; + } + + else if (!result.M3UUrl.StartsWith("http", StringComparison.OrdinalIgnoreCase)) + { + var fullM3uUrl = url.Substring(0, url.LastIndexOf('/')); + result.M3UUrl = fullM3uUrl + "/" + result.M3UUrl.TrimStart('/'); + } + + _logger.Debug("SAT device result: {0}", _json.SerializeToString(result)); + + return result; + } + + private void FillFromDeviceNode(SatIpTunerHostInfo info, XmlReader reader) + { + reader.MoveToContent(); + + while (reader.Read()) + { + if (reader.NodeType == XmlNodeType.Element) + { + switch (reader.LocalName) + { + case "UDN": + { + info.DeviceId = reader.ReadElementContentAsString(); + break; + } + + case "friendlyName": + { + info.FriendlyName = reader.ReadElementContentAsString(); + break; + } + + case "satip:X_SATIPCAP": + case "X_SATIPCAP": + { + // <satip:X_SATIPCAP xmlns:satip="urn:ses-com:satip">DVBS2-2</satip:X_SATIPCAP> + var value = reader.ReadElementContentAsString() ?? string.Empty; + var parts = value.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries); + if (parts.Length == 2) + { + int intValue; + if (int.TryParse(parts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out intValue)) + { + info.TunersAvailable = intValue; + } + + if (int.TryParse(parts[0].Substring(parts[0].Length - 1), NumberStyles.Any, CultureInfo.InvariantCulture, out intValue)) + { + info.Tuners = intValue; + } + } + break; + } + + case "satip:X_SATIPM3U": + case "X_SATIPM3U": + { + // <satip:X_SATIPM3U xmlns:satip="urn:ses-com:satip">/channellist.lua?select=m3u</satip:X_SATIPM3U> + info.M3UUrl = reader.ReadElementContentAsString(); + break; + } + + default: + reader.Skip(); + break; + } + } + } + } + } public class SatIpTunerHostInfo : TunerHostInfo { - public int Tuners { get; set; } public int TunersAvailable { get; set; } - public string M3UUrl { get; set; } - public string FriendlyName { get; set; } } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpHost.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpHost.cs index 11213be23..46a2a8524 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpHost.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/SatIpHost.cs @@ -19,153 +19,149 @@ using MediaBrowser.Model.Serialization; namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.SatIp { - //public class SatIpHost : BaseTunerHost, ITunerHost - //{ - // private readonly IFileSystem _fileSystem; - // private readonly IHttpClient _httpClient; - - // public SatIpHost(IConfigurationManager config, ILogger logger, IJsonSerializer jsonSerializer, IMediaEncoder mediaEncoder, IFileSystem fileSystem, IHttpClient httpClient) - // : base(config, logger, jsonSerializer, mediaEncoder) - // { - // _fileSystem = fileSystem; - // _httpClient = httpClient; - // } - - // private const string ChannelIdPrefix = "sat_"; - - // protected override async Task<IEnumerable<ChannelInfo>> GetChannelsInternal(TunerHostInfo tuner, CancellationToken cancellationToken) - // { - // var satInfo = (SatIpTunerHostInfo) tuner; - - // return await new M3uParser(Logger, _fileSystem, _httpClient).Parse(satInfo.M3UUrl, ChannelIdPrefix, tuner.Id, cancellationToken).ConfigureAwait(false); - // } - - // public static string DeviceType - // { - // get { return "satip"; } - // } - - // public override string Type - // { - // get { return DeviceType; } - // } - - // protected override async Task<List<MediaSourceInfo>> GetChannelStreamMediaSources(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken) - // { - // var urlHash = tuner.Url.GetMD5().ToString("N"); - // var prefix = ChannelIdPrefix + urlHash; - // if (!channelId.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) - // { - // return null; - // } - - // var channels = await GetChannels(tuner, true, cancellationToken).ConfigureAwait(false); - // var m3uchannels = channels.Cast<M3UChannel>(); - // var channel = m3uchannels.FirstOrDefault(c => string.Equals(c.Id, channelId, StringComparison.OrdinalIgnoreCase)); - // if (channel != null) - // { - // var path = channel.Path; - // MediaProtocol protocol = MediaProtocol.File; - // if (path.StartsWith("http", StringComparison.OrdinalIgnoreCase)) - // { - // protocol = MediaProtocol.Http; - // } - // else if (path.StartsWith("rtmp", StringComparison.OrdinalIgnoreCase)) - // { - // protocol = MediaProtocol.Rtmp; - // } - // else if (path.StartsWith("rtsp", StringComparison.OrdinalIgnoreCase)) - // { - // protocol = MediaProtocol.Rtsp; - // } - - // var mediaSource = new MediaSourceInfo - // { - // Path = channel.Path, - // Protocol = protocol, - // MediaStreams = new List<MediaStream> - // { - // new MediaStream - // { - // Type = MediaStreamType.Video, - // // Set the index to -1 because we don't know the exact index of the video stream within the container - // Index = -1, - // IsInterlaced = true - // }, - // new MediaStream - // { - // Type = MediaStreamType.Audio, - // // Set the index to -1 because we don't know the exact index of the audio stream within the container - // Index = -1 - - // } - // }, - // RequiresOpening = false, - // RequiresClosing = false - // }; - - // return new List<MediaSourceInfo> { mediaSource }; - // } - // return new List<MediaSourceInfo> { }; - // } - - // protected override async Task<MediaSourceInfo> GetChannelStream(TunerHostInfo tuner, string channelId, string streamId, CancellationToken cancellationToken) - // { - // var sources = await GetChannelStreamMediaSources(tuner, channelId, cancellationToken).ConfigureAwait(false); - - // return sources.First(); - // } - - // protected override async Task<bool> IsAvailableInternal(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken) - // { - // var updatedInfo = await SatIpDiscovery.Current.GetInfo(tuner.Url, cancellationToken).ConfigureAwait(false); - - // return updatedInfo.TunersAvailable > 0; - // } - - // protected override bool IsValidChannelId(string channelId) - // { - // return channelId.StartsWith(ChannelIdPrefix, StringComparison.OrdinalIgnoreCase); - // } - - // protected override List<TunerHostInfo> GetTunerHosts() - // { - // return SatIpDiscovery.Current.DiscoveredHosts; - // } - - // public string Name - // { - // get { return "Sat IP"; } - // } - - // public Task<List<LiveTvTunerInfo>> GetTunerInfos(CancellationToken cancellationToken) - // { - // var list = GetTunerHosts() - // .SelectMany(i => GetTunerInfos(i, cancellationToken)) - // .ToList(); - - // return Task.FromResult(list); - // } - - // public List<LiveTvTunerInfo> GetTunerInfos(TunerHostInfo info, CancellationToken cancellationToken) - // { - // var satInfo = (SatIpTunerHostInfo) info; - - // var list = new List<LiveTvTunerInfo>(); - - // for (var i = 0; i < satInfo.Tuners; i++) - // { - // list.Add(new LiveTvTunerInfo - // { - // Name = satInfo.FriendlyName ?? Name, - // SourceType = Type, - // Status = LiveTvTunerStatus.Available, - // Id = info.Url.GetMD5().ToString("N") + i.ToString(CultureInfo.InvariantCulture), - // Url = info.Url - // }); - // } - - // return list; - // } - //} + public class SatIpHost : BaseTunerHost, ITunerHost + { + private readonly IFileSystem _fileSystem; + private readonly IHttpClient _httpClient; + + public SatIpHost(IConfigurationManager config, ILogger logger, IJsonSerializer jsonSerializer, IMediaEncoder mediaEncoder, IFileSystem fileSystem, IHttpClient httpClient) + : base(config, logger, jsonSerializer, mediaEncoder) + { + _fileSystem = fileSystem; + _httpClient = httpClient; + } + + private const string ChannelIdPrefix = "sat_"; + + protected override async Task<IEnumerable<ChannelInfo>> GetChannelsInternal(TunerHostInfo tuner, CancellationToken cancellationToken) + { + if (!string.IsNullOrWhiteSpace(tuner.M3UUrl)) + { + return await new M3uParser(Logger, _fileSystem, _httpClient).Parse(tuner.M3UUrl, ChannelIdPrefix, tuner.Id, cancellationToken).ConfigureAwait(false); + } + + return new List<ChannelInfo>(); + } + + public static string DeviceType + { + get { return "satip"; } + } + + public override string Type + { + get { return DeviceType; } + } + + protected override async Task<List<MediaSourceInfo>> GetChannelStreamMediaSources(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken) + { + var urlHash = tuner.Url.GetMD5().ToString("N"); + var prefix = ChannelIdPrefix + urlHash; + if (!channelId.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) + { + return null; + } + + var channels = await GetChannels(tuner, true, cancellationToken).ConfigureAwait(false); + var m3uchannels = channels.Cast<M3UChannel>(); + var channel = m3uchannels.FirstOrDefault(c => string.Equals(c.Id, channelId, StringComparison.OrdinalIgnoreCase)); + if (channel != null) + { + var path = channel.Path; + MediaProtocol protocol = MediaProtocol.File; + if (path.StartsWith("http", StringComparison.OrdinalIgnoreCase)) + { + protocol = MediaProtocol.Http; + } + else if (path.StartsWith("rtmp", StringComparison.OrdinalIgnoreCase)) + { + protocol = MediaProtocol.Rtmp; + } + else if (path.StartsWith("rtsp", StringComparison.OrdinalIgnoreCase)) + { + protocol = MediaProtocol.Rtsp; + } + + var mediaSource = new MediaSourceInfo + { + Path = channel.Path, + Protocol = protocol, + MediaStreams = new List<MediaStream> + { + new MediaStream + { + Type = MediaStreamType.Video, + // Set the index to -1 because we don't know the exact index of the video stream within the container + Index = -1, + IsInterlaced = true + }, + new MediaStream + { + Type = MediaStreamType.Audio, + // Set the index to -1 because we don't know the exact index of the audio stream within the container + Index = -1 + + } + }, + RequiresOpening = false, + RequiresClosing = false + }; + + return new List<MediaSourceInfo> { mediaSource }; + } + return new List<MediaSourceInfo> { }; + } + + protected override async Task<MediaSourceInfo> GetChannelStream(TunerHostInfo tuner, string channelId, string streamId, CancellationToken cancellationToken) + { + var sources = await GetChannelStreamMediaSources(tuner, channelId, cancellationToken).ConfigureAwait(false); + + return sources.First(); + } + + protected override async Task<bool> IsAvailableInternal(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken) + { + var updatedInfo = await SatIpDiscovery.Current.GetInfo(tuner.InfoUrl, cancellationToken).ConfigureAwait(false); + + return updatedInfo.TunersAvailable > 0; + } + + protected override bool IsValidChannelId(string channelId) + { + return channelId.StartsWith(ChannelIdPrefix, StringComparison.OrdinalIgnoreCase); + } + + public string Name + { + get { return "Sat IP"; } + } + + public Task<List<LiveTvTunerInfo>> GetTunerInfos(CancellationToken cancellationToken) + { + var list = GetTunerHosts() + .SelectMany(i => GetTunerInfos(i, cancellationToken)) + .ToList(); + + return Task.FromResult(list); + } + + public List<LiveTvTunerInfo> GetTunerInfos(TunerHostInfo info, CancellationToken cancellationToken) + { + var list = new List<LiveTvTunerInfo>(); + + for (var i = 0; i < info.Tuners; i++) + { + list.Add(new LiveTvTunerInfo + { + Name = info.FriendlyName ?? Name, + SourceType = Type, + Status = LiveTvTunerStatus.Available, + Id = info.Url.GetMD5().ToString("N") + i.ToString(CultureInfo.InvariantCulture), + Url = info.Url + }); + } + + return list; + } + } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0030.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0030.ini new file mode 100644 index 000000000..1caa948cf --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0030.ini @@ -0,0 +1,100 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0030 +2=Eutelsat 3B/Rascom QAF 1R (3.0E) + +[DVB] +0=91 +1=3794,H,3590,23,S2,8PSK +2=3797,H,2442,23,DVB-S,QPSK +3=3970,V,2741,34,DVB-S,QPSK +4=3975,V,3111,23,DVB-S,QPSK +5=3986,V,13557,56,DVB-S,QPSK +6=4151,V,2141,56,S2,QPSK +7=4173,V,1917,56,S2,QPSK +8=10961,H,10000,34,S2,8PSK +9=10973,H,10000,34,S2,8PSK +10=10985,H,10000,34,S2,QPSK +11=11042,H,4279,89,S2,QPSK +12=11049,H,1000,23,S2,8PSK +13=11051,H,2100,56,S2,QPSK +14=11078,H,7430,56,S2,QPSK +15=11088,H,7430,56,S2,QPSK +16=11097,H,7430,56,S2,QPSK +17=11456,V,2876,78,DVB-S,QPSK +18=11456,H,1480,34,S2,8PSK +19=11457,H,3000,78,DVB-S,QPSK +20=11461,V,2000,34,DVB-S,QPSK +21=11465,V,2500,78,DVB-S,QPSK +22=11468,H,2963,34,DVB-S,QPSK +23=11471,V,2500,78,DVB-S,QPSK +24=11472,H,2600,34,DVB-S,QPSK +25=11476,H,2600,34,DVB-S,QPSK +26=11479,V,3000,56,S2,QPSK +27=11480,H,1480,78,DVB-S,QPSK +28=11482,V,11852,34,DVB-S,QPSK +29=11487,H,1480,34,S2,8PSK +30=11490,H,2222,56,DVB-S,QPSK +31=11496,H,3000,34,DVB-S,QPSK +32=11498,V,11852,34,DVB-S,QPSK +33=11503,H,1480,56,S2,8PSK +34=11507,H,1480,34,S2,8PSK +35=11521,H,8800,23,S2,8PSK +36=11521,V,1500,34,S2,8PSK +37=11530,V,1500,34,S2,8PSK +38=11532,V,1500,34,S2,8PSK +39=11533,H,8800,23,S2,8PSK +40=11544,H,3550,34,S2,8PSK +41=11555,H,8800,23,DVB-S,QPSK +42=11562,H,2850,34,DVB-S,QPSK +43=11585,H,9600,23,S2,8PSK +44=11585,V,9260,56,DVB-S,QPSK +45=11594,V,3333,78,DVB-S,QPSK +46=11597,H,2250,34,DVB-S,QPSK +47=11598,V,2250,34,DVB-S,QPSK +48=11606,V,1480,56,S2,8PSK +49=11609,H,9600,23,S2,8PSK +50=11615,V,2200,34,DVB-S,QPSK +51=11621,H,9600,56,S2,8PSK +52=11621,V,1200,34,S2,8PSK +53=11632,V,2200,34,DVB-S,QPSK +54=11642,H,1111,34,S2,8PSK +55=11645,H,3000,34,DVB-S,QPSK +56=11649,H,3000,34,DVB-S,QPSK +57=11655,H,2304,34,S2,8PSK +58=11660,H,2400,56,DVB-S,QPSK +59=11663,H,1550,56,S2,8PSK +60=11671,V,1500,34,S2,8PSK +61=11673,V,1500,34,S2,8PSK +62=11675,V,1500,56,S2,8PSK +63=11680,V,3750,34,DVB-S,QPSK +64=11692,V,1860,78,DVB-S,QPSK +65=11696,V,2000,34,DVB-S,QPSK +66=12526,H,4444,34,S2,8PSK +67=12531,H,2265,89,S2,QPSK +68=12534,H,2500,34,S2,8PSK +69=12537,H,2500,34,S2,8PSK +70=12548,V,3000,56,S2,QPSK +71=12553,V,1100,56,S2,8PSK +72=12554,V,1100,56,S2,8PSK +73=12556,V,1100,34,S2,8PSK +74=12557,V,1500,34,DVB-S,QPSK +75=12559,V,1500,56,S2,8PSK +76=12563,V,1500,34,S2,8PSK +77=12566,V,2750,23,S2,8PSK +78=12571,V,3650,23,S2,8PSK +79=12572,H,10000,34,S2,QPSK +80=12574,V,1447,34,DVB-S,QPSK +81=12576,V,1570,34,S2,8PSK +82=12609,H,9600,23,S2,8PSK +83=12638,V,14400,34,S2,8PSK +84=12692,H,1450,56,S2,8PSK +85=12702,H,13960,35,S2,QPSK +86=12703,V,3704,34,S2,8PSK +87=12707,V,2963,34,S2,8PSK +88=12717,V,2143,56,DVB-S,QPSK +89=12720,H,13960,35,S2,QPSK +90=12734,V,16750,35,S2,QPSK +91=12737,H,2930,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0049.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0049.ini new file mode 100644 index 000000000..92a0e7dda --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0049.ini @@ -0,0 +1,102 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0049 +2=Astra 4A/SES 5 (4.9E) + +[DVB] +0=93 +1=3644,H,1300,56,S2,QPSK +2=3843,V,1055,910,S2,QPSK +3=3857,V,1520,35,S2,QPSK +4=3863,V,1130,56,S2,QPSK +5=3866,V,1400,23,S2,QPSK +6=3868,V,1203,56,S2,QPSK +7=3871,V,1550,23,S2,QPSK +8=3876,V,6200,23,S2,QPSK +9=11265,H,30000,34,S2,8PSK +10=11265,V,30000,34,S2,8PSK +11=11305,H,30000,34,S2,8PSK +12=11305,V,30000,34,S2,8PSK +13=11345,H,30000,34,S2,8PSK +14=11345,V,30000,34,S2,8PSK +15=11385,V,30000,34,S2,8PSK +16=11727,H,27500,56,DVB-S,QPSK +17=11747,V,27500,23,S2,QPSK +18=11766,H,27500,34,DVB-S,QPSK +19=11785,V,27500,56,DVB-S,8PSK +20=11804,H,27500,34,DVB-S,QPSK +21=11823,V,27500,34,DVB-S,QPSK +22=11843,H,27500,34,DVB-S,QPSK +23=11862,V,27500,34,DVB-S,8PSK +24=11881,H,27500,34,DVB-S,QPSK +25=11900,V,27500,34,DVB-S,QPSK +26=11919,H,27500,34,DVB-S,QPSK +27=11938,V,27500,34,DVB-S,8PSK +28=11958,H,27500,34,DVB-S,QPSK +29=11977,V,27500,34,DVB-S,8PSK +30=11996,H,27500,34,DVB-S,8PSK +31=12015,V,27500,56,DVB-S,QPSK +32=12034,H,27500,34,DVB-S,QPSK +33=12054,V,27500,34,DVB-S,QPSK +34=12073,H,27500,34,DVB-S,8PSK +35=12092,V,27500,34,DVB-S,QPSK +36=12111,H,27500,56,DVB-S,QPSK +37=12130,V,27500,34,DVB-S,QPSK +38=12149,H,27500,34,DVB-S,QPSK +39=12169,V,27500,34,S2,8PSK +40=12188,H,30000,34,S2,8PSK +41=12207,V,30000,34,S2,8PSK +42=12245,V,27500,34,DVB-S,QPSK +43=12284,V,27500,34,DVB-S,QPSK +44=12303,H,25546,78,DVB-S,8PSK +45=12322,V,27500,56,S2,QPSK +46=12341,H,30000,34,S2,8PSK +47=12360,V,27500,56,S2,8PSK +48=12380,H,27500,34,DVB-S,8PSK +49=12399,V,27500,34,DVB-S,QPSK +50=12418,H,27500,34,DVB-S,8PSK +51=12437,V,27500,34,S2,8PSK +52=12476,V,27500,34,DVB-S,QPSK +53=12514,H,6111,34,DVB-S,QPSK +54=12515,V,7200,34,S2,8PSK +55=12519,H,4610,34,S2,8PSK +56=12524,V,7200,34,S2,8PSK +57=12528,H,9874,34,S2,8PSK +58=12538,V,4610,34,S2,8PSK +59=12540,H,3750,23,S2,8PSK +60=12543,V,4610,34,S2,8PSK +61=12551,V,7400,34,S2,8PSK +62=12560,V,7200,34,S2,8PSK +63=12580,V,3829,34,DVB-S,QPSK +64=12593,V,7200,34,S2,8PSK +65=12602,V,6111,34,DVB-S,QPSK +66=12608,H,27500,34,DVB-S,QPSK +67=12612,V,6111,34,DVB-S,QPSK +68=12620,V,6111,34,DVB-S,QPSK +69=12621,V,3660,23,DVB-S,QPSK +70=12637,H,14468,34,DVB-S,QPSK +71=12670,H,2600,23,DVB-S,QPSK +72=12671,V,3333,34,DVB-S,QPSK +73=12673,H,3750,35,S2,8PSK +74=12674,V,3333,34,DVB-S,QPSK +75=12678,H,6666,78,DVB-S,QPSK +76=12694,H,6666,34,DVB-S,QPSK +77=12694,V,3333,56,DVB-S,QPSK +78=12699,H,3040,78,DVB-S,QPSK +79=12702,V,3333,34,DVB-S,QPSK +80=12702,H,2100,34,S2,8PSK +81=12710,V,4430,34,DVB-S,QPSK +82=12712,H,5000,78,DVB-S,QPSK +83=12716,V,4430,34,DVB-S,QPSK +84=12719,H,2960,34,DVB-S,QPSK +85=12719,V,2950,34,DVB-S,QPSK +86=12722,V,4430,34,DVB-S,QPSK +87=12725,V,1480,89,S2,8PSK +88=12728,V,4430,34,DVB-S,QPSK +89=12730,V,2960,34,DVB-S,QPSK +90=12733,H,3400,34,DVB-S,QPSK +91=12734,V,4430,34,DVB-S,8PSK +92=12737,H,3472,34,DVB-S,QPSK +93=12740,V,4430,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0070.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0070.ini new file mode 100644 index 000000000..800b097c8 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0070.ini @@ -0,0 +1,134 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0070 +2=Eutelsat 7A/7B (7.0E) + +[DVB] +0=125 +1=10721,H,22000,34,DVB-S,8PSK +2=10721,V,27500,34,DVB-S,QPSK +3=10762,V,30000,34,DVB-S,QPSK +4=10804,H,30000,56,S2,QPSK +5=10804,V,29900,34,DVB-S,QPSK +6=10845,H,30000,56,S2,QPSK +7=10845,V,30000,34,DVB-S,QPSK +8=10887,H,30000,34,S2,QPSK +9=10887,V,30000,56,S2,QPSK +10=10928,H,30000,34,S2,8PSK +11=10928,V,30000,56,S2,QPSK +12=10958,V,4936,34,S2,8PSK +13=10959,H,4936,34,S2,8PSK +14=10962,H,3255,23,DVB-S,QPSK +15=10970,V,4434,78,DVB-S,QPSK +16=10971,H,4936,34,S2,8PSK +17=10976,H,4936,34,S2,8PSK +18=10978,V,7200,34,S2,8PSK +19=10987,H,4936,34,S2,8PSK +20=10994,V,4936,34,S2,8PSK +21=10997,H,9874,34,S2,8PSK +22=10999,H,3209,Auto,DVB-S,QPSK +23=11000,V,4936,34,S2,8PSK +24=11006,V,4936,34,S2,8PSK +25=11009,H,9874,34,S2,8PSK +26=11012,V,4936,34,S2,8PSK +27=11014,H,6111,Auto,DVB-S,QPSK +28=11018,V,3255,78,DVB-S,QPSK +29=11021,H,9874,34,S2,8PSK +30=11022,V,3676,34,S2,8PSK +31=11023,H,6111,Auto,S2,QPSK +32=11042,V,4936,34,S2,8PSK +33=11046,H,8335,56,S2,8PSK +34=11048,V,14400,34,S2,8PSK +35=11054,H,4936,34,S2,8PSK +36=11057,V,9874,34,S2,8PSK +37=11059,H,14238,56,S2,QPSK +38=11060,H,4936,34,S2,8PSK +39=11066,H,4936,34,S2,8PSK +40=11068,V,9874,34,S2,8PSK +41=11080,V,9874,34,S2,8PSK +42=11084,H,4936,34,S2,8PSK +43=11090,H,4936,34,S2,8PSK +44=11090,V,4936,34,S2,8PSK +45=11096,H,4936,34,S2,8PSK +46=11102,H,14400,34,S2,8PSK +47=11105,H,4340,34,DVB-S,QPSK +48=11107,V,7200,34,S2,8PSK +49=11124,V,3600,34,S2,8PSK +50=11128,H,9874,34,S2,8PSK +51=11128,V,3750,34,S2,8PSK +52=11134,V,5000,34,S2,8PSK +53=11137,H,4936,34,S2,8PSK +54=11140,V,9600,34,S2,8PSK +55=11143,H,4936,34,S2,8PSK +56=11148,H,4936,34,S2,8PSK +57=11153,V,7200,34,S2,8PSK +58=11154,H,4936,34,S2,8PSK +59=11160,H,3254,56,S2,8PSK +60=11161,V,4936,34,S2,8PSK +61=11164,H,3255,34,S2,8PSK +62=11165,V,3204,34,DVB-S,QPSK +63=11171,H,7500,56,S2,8PSK +64=11173,V,3674,34,S2,8PSK +65=11181,V,7442,34,S2,8PSK +66=11184,H,5714,Auto,DVB-S,QPSK +67=11186,V,3255,34,DVB-S,QPSK +68=11192,H,3210,34,DVB-S,QPSK +69=11192,V,3700,34,S2,8PSK +70=11221,H,27500,34,DVB-S,QPSK +71=11262,H,27500,56,DVB-S,QPSK +72=11356,H,45000,56,S2,QPSK +73=11387,H,27500,34,DVB-S,QPSK +74=11418,H,45000,56,S2,QPSK +75=11456,V,20050,34,DVB-S,QPSK +76=11471,H,30000,34,DVB-S,QPSK +77=11492,V,30000,34,DVB-S,QPSK +78=11513,H,29900,34,DVB-S,QPSK +79=11534,V,30000,34,DVB-S,QPSK +80=11554,H,30000,34,DVB-S,QPSK +81=11575,V,30000,34,DVB-S,QPSK +82=11596,H,30000,34,DVB-S,QPSK +83=11617,V,30000,34,DVB-S,QPSK +84=11668,V,30000,56,S2,QPSK +85=11678,H,30000,34,DVB-S,QPSK +86=12510,H,7120,34,S2,8PSK +87=12519,H,6144,34,S2,8PSK +88=12520,V,9800,34,S2,8PSK +89=12532,V,1852,23,S2,QPSK +90=12545,H,4950,34,S2,8PSK +91=12548,V,3650,34,S2,8PSK +92=12555,H,4830,78,DVB-S,8PSK +93=12556,V,4035,56,S2,8PSK +94=12565,H,6750,23,S2,8PSK +95=12573,H,7120,34,S2,8PSK +96=12596,V,2500,34,S2,8PSK +97=12603,H,30000,23,S2,8PSK +98=12603,V,2500,34,S2,8PSK +99=12606,V,2500,34,S2,8PSK +100=12611,V,5000,34,S2,8PSK +101=12615,V,2500,34,S2,8PSK +102=12619,V,4444,78,DVB-S,QPSK +103=12624,V,2500,34,S2,8PSK +104=12627,V,2500,34,S2,8PSK +105=12630,V,2500,34,S2,8PSK +106=12643,V,6430,23,S2,8PSK +107=12645,H,30000,23,S2,8PSK +108=12650,V,2400,34,S2,8PSK +109=12653,V,2400,56,S2,8PSK +110=12659,V,4936,34,S2,8PSK +111=12675,H,6430,23,S2,8PSK +112=12687,H,6975,56,S2,8PSK +113=12695,V,6666,78,DVB-S,8PSK +114=12701,H,4800,34,S2,8PSK +115=12704,V,7500,34,S2,8PSK +116=12711,V,4936,34,S2,8PSK +117=12727,V,10000,34,S2,8PSK +118=12728,H,30000,56,DVB-S,QPSK +119=12740,V,6111,34,DVB-S,QPSK +120=21439,H,6111,34,DVB-S,QPSK +121=21553,H,9600,56,S2,8PSK +122=21565,H,1571,78,DVB-S,QPSK +123=21571,H,2442,23,DVB-S,QPSK +124=21584,H,1100,34,S2,8PSK +125=21603,H,6428,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0090.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0090.ini new file mode 100644 index 000000000..6202569d9 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0090.ini @@ -0,0 +1,40 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0090 +2=Eutelsat 9A/Ka-Sat 9A (9.0E) + +[DVB] +0=31 +1=11727,V,27500,34,DVB-S,QPSK +2=11747,H,27500,23,S2,8PSK +3=11766,V,27500,34,DVB-S,QPSK +4=11785,H,27500,23,S2,8PSK +5=11804,V,27500,34,DVB-S,QPSK +6=11823,H,27500,34,DVB-S,QPSK +7=11843,V,27500,35,S2,8PSK +8=11861,H,27500,23,S2,8PSK +9=11881,V,27500,23,S2,8PSK +10=11900,H,27500,23,S2,8PSK +11=11919,V,27500,34,DVB-S,QPSK +12=11938,H,27500,34,DVB-S,QPSK +13=11958,V,27500,23,S2,8PSK +14=11996,V,27500,34,DVB-S,QPSK +15=12015,H,27500,23,S2,8PSK +16=12034,V,27500,34,S2,8PSK +17=12054,H,27500,23,S2,8PSK +18=12074,V,27500,34,S2,8PSK +19=12092,H,27500,34,S2,8PSK +20=12130,H,27500,34,DVB-S,QPSK +21=12149,V,27500,23,S2,8PSK +22=12226,V,27500,23,S2,8PSK +23=12265,V,27500,23,S2,8PSK +24=12284,H,27500,23,S2,8PSK +25=12322,H,27500,34,DVB-S,QPSK +26=12360,H,27500,23,S2,8PSK +27=12380,V,27500,23,S2,8PSK +28=12399,H,27500,23,S2,8PSK +29=12418,V,27500,23,S2,8PSK +30=12437,H,27500,23,S2,8PSK +31=20185,H,25000,23,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0100.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0100.ini new file mode 100644 index 000000000..0614ba88c --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0100.ini @@ -0,0 +1,206 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0100 +2=Eutelsat 10A (10.0E) + +[DVB] +0=197 +1=3649,H,20160,23,S2,QPSK +2=3706,V,6250,56,S2,8PSK +3=3708,H,1002,56,S2,8PSK +4=3721,V,3303,56,S2,8PSK +5=3729,V,10321,56,S2,8PSK +6=3741,V,10114,56,S2,8PSK +7=3759,V,19816,56,S2,8PSK +8=3781,V,16445,56,S2,8PSK +9=3827,V,3080,34,S2,8PSK +10=3835,V,1000,45,S2,QPSK +11=3837,V,1185,34,S2,8PSK +12=3839,V,1185,34,S2,8PSK +13=3865,V,13333,78,DVB-S,QPSK +14=3956,V,1500,23,DVB-S,QPSK +15=4039,V,2222,34,S2,8PSK +16=10707,V,3100,34,DVB-S,QPSK +17=10712,V,4167,56,DVB-S,QPSK +18=10717,V,3215,34,DVB-S,QPSK +19=10734,V,1447,34,DVB-S,QPSK +20=10738,V,2894,34,DVB-S,QPSK +21=10742,V,2894,34,DVB-S,QPSK +22=10747,V,4000,910,S2,8PSK +23=10756,V,2480,78,DVB-S,QPSK +24=10792,V,4936,34,S2,QPSK +25=10798,V,4936,34,S2,8PSK +26=10803,V,6111,34,DVB-S,QPSK +27=10810,V,4430,34,DVB-S,QPSK +28=10822,V,4430,34,S2,8PSK +29=10832,V,8876,56,S2,8PSK +30=10840,V,3255,12,DVB-S,QPSK +31=10848,V,6111,34,DVB-S,QPSK +32=10859,V,2875,Auto,S2,QPSK +33=10877,V,6111,34,DVB-S,QPSK +34=10886,V,6111,Auto,DVB-S,QPSK +35=10893,V,4936,34,S2,QPSK +36=10899,V,4936,34,S2,8PSK +37=10905,V,4936,34,S2,QPSK +38=10918,V,4430,34,DVB-S,QPSK +39=10923,V,4600,56,S2,8PSK +40=10931,V,7120,34,S2,8PSK +41=10940,V,6080,34,DVB-S,QPSK +42=10956,H,2500,56,DVB-S,QPSK +43=10960,V,4167,56,DVB-S,QPSK +44=10965,H,3124,34,DVB-S,QPSK +45=10965,V,4167,56,DVB-S,QPSK +46=10969,H,3124,34,DVB-S,QPSK +47=10970,V,4167,56,DVB-S,QPSK +48=10973,H,3124,34,DVB-S,QPSK +49=10976,V,4167,56,DVB-S,QPSK +50=10977,H,3124,34,DVB-S,QPSK +51=10981,H,3124,34,DVB-S,QPSK +52=10981,V,4600,56,S2,8PSK +53=10985,H,3124,34,DVB-S,QPSK +54=10988,H,3124,34,DVB-S,QPSK +55=10992,H,3124,34,DVB-S,QPSK +56=10998,V,2900,34,DVB-S,QPSK +57=11004,V,2400,34,DVB-S,QPSK +58=11005,H,7120,34,S2,8PSK +59=11008,V,2963,34,DVB-S,QPSK +60=11014,H,7120,34,S2,8PSK +61=11018,V,2857,34,DVB-S,QPSK +62=11022,V,2650,34,DVB-S,QPSK +63=11023,H,7120,34,S2,8PSK +64=11043,H,7120,23,S2,8PSK +65=11060,H,4937,34,S2,8PSK +66=11066,H,4937,34,S2,8PSK +67=11074,H,4937,34,S2,8PSK +68=11075,V,68571,34,DVB-S,QPSK +69=11093,H,9874,34,S2,8PSK +70=11107,H,4936,34,S2,8PSK +71=11124,H,3300,34,DVB-S,8PSK +72=11127,V,6111,34,DVB-S,QPSK +73=11129,H,3333,34,DVB-S,8PSK +74=11134,H,3333,34,DVB-S,QPSK +75=11136,V,7400,34,S2,8PSK +76=11138,H,2400,56,S2,8PSK +77=11144,H,6111,34,DVB-S,QPSK +78=11144,V,6666,78,DVB-S,QPSK +79=11151,H,3254,34,DVB-S,QPSK +80=11154,V,5632,34,DVB-S,QPSK +81=11160,H,2267,56,S2,8PSK +82=11162,V,2400,34,DVB-S,QPSK +83=11165,H,3750,34,S2,8PSK +84=11168,V,2300,34,DVB-S,QPSK +85=11169,H,3028,34,S2,QPSK +86=11173,H,3028,34,S2,QPSK +87=11179,H,2066,23,S2,8PSK +88=11182,H,2400,23,S2,8PSK +89=11186,H,2667,56,DVB-S,QPSK +90=11189,H,2352,34,DVB-S,QPSK +91=11193,H,2880,34,S2,QPSK +92=11207,H,7500,34,S2,8PSK +93=11221,V,30000,56,S2,QPSK +94=11291,H,9875,34,S2,8PSK +95=11294,V,14400,34,S2,8PSK +96=11317,H,7500,56,S2,8PSK +97=11346,H,27500,34,DVB-S,QPSK +98=11375,V,9874,34,S2,8PSK +99=11399,V,9874,34,S2,8PSK +100=11419,H,11814,56,S2,8PSK +101=11434,H,10098,35,S2,QPSK +102=11457,H,6111,34,DVB-S,QPSK +103=11483,V,4000,56,S2,8PSK +104=11488,H,2100,34,DVB-S,QPSK +105=11498,V,7450,34,S2,8PSK +106=11501,H,2894,34,DVB-S,QPSK +107=11505,H,3000,34,DVB-S,QPSK +108=11509,H,3000,34,DVB-S,QPSK +109=11511,V,3324,34,DVB-S,QPSK +110=11515,V,4200,34,DVB-S,QPSK +111=11520,V,4200,34,DVB-S,QPSK +112=11524,H,2810,34,DVB-S,QPSK +113=11525,V,4167,56,DVB-S,QPSK +114=11528,H,2800,34,DVB-S,QPSK +115=11534,V,2300,34,DVB-S,QPSK +116=11536,H,2960,34,DVB-S,QPSK +117=11538,V,2900,34,DVB-S,QPSK +118=11541,H,2600,34,S2,8PSK +119=11542,V,2816,78,DVB-S,QPSK +120=11551,V,1993,34,DVB-S,QPSK +121=11552,H,4800,34,S2,8PSK +122=11554,V,3700,56,DVB-S,QPSK +123=11557,H,3333,56,S2,8PSK +124=11561,V,6666,34,S2,8PSK +125=11561,H,3333,56,DVB-S,QPSK +126=11567,H,6666,78,DVB-S,QPSK +127=11584,H,9875,34,S2,8PSK +128=11590,H,2160,34,S2,8PSK +129=11595,V,30000,23,S2,8PSK +130=11615,H,2500,34,DVB-S,QPSK +131=11619,H,2900,34,DVB-S,QPSK +132=11624,V,2900,34,DVB-S,QPSK +133=11624,H,2500,34,DVB-S,QPSK +134=11627,H,2963,34,DVB-S,QPSK +135=11638,H,5300,56,DVB-S,QPSK +136=11645,H,4800,23,S2,QPSK +137=11651,H,2590,34,DVB-S,QPSK +138=11659,H,1500,56,S2,QPSK +139=11663,H,5540,34,DVB-S,QPSK +140=11664,V,6666,78,DVB-S,QPSK +141=11669,V,3000,56,DVB-S,QPSK +142=11671,H,7200,34,S2,8PSK +143=11676,H,11153,78,DVB-S,QPSK +144=11680,V,2220,34,DVB-S,QPSK +145=11681,H,3200,56,S2,8PSK +146=11684,V,2300,34,DVB-S,QPSK +147=11688,H,9874,34,DVB-S,QPSK +148=11693,V,2210,78,DVB-S,QPSK +149=11696,H,2980,34,DVB-S,QPSK +150=11697,V,2300,34,DVB-S,QPSK +151=12504,H,2880,56,DVB-S,QPSK +152=12508,H,2880,56,DVB-S,QPSK +153=12513,H,3214,34,DVB-S,QPSK +154=12520,H,1100,56,S2,8PSK +155=12526,V,3600,34,S2,8PSK +156=12527,H,2143,34,DVB-S,QPSK +157=12535,V,2220,Auto,DVB-S,QPSK +158=12545,H,3400,34,DVB-S,QPSK +159=12551,V,5632,34,DVB-S,QPSK +160=12553,H,2900,34,DVB-S,QPSK +161=12556,V,2900,78,DVB-S,QPSK +162=12563,V,5632,34,DVB-S,QPSK +163=12571,V,2220,78,DVB-S,QPSK +164=12576,V,3300,34,DVB-S,QPSK +165=12593,V,4800,34,S2,8PSK +166=12594,H,3300,Auto,DVB-S,QPSK +167=12602,V,3333,78,DVB-S,QPSK +168=12610,V,1852,34,DVB-S,QPSK +169=12611,H,2960,34,DVB-S,QPSK +170=12615,H,3214,34,S2,8PSK +171=12620,H,3750,56,S2,8PSK +172=12637,V,18400,23,S2,8PSK +173=12648,H,2300,56,DVB-S,QPSK +174=12652,H,4936,34,S2,8PSK +175=12654,V,2300,78,DVB-S,QPSK +176=12658,H,3214,34,S2,8PSK +177=12674,V,2962,56,DVB-S,QPSK +178=12674,H,3750,34,S2,8PSK +179=12679,V,2894,34,DVB-S,QPSK +180=12680,H,3750,34,S2,8PSK +181=12684,H,3200,34,DVB-S,QPSK +182=12688,H,3200,34,DVB-S,QPSK +183=12692,V,3146,34,DVB-S,QPSK +184=12694,H,6666,78,DVB-S,QPSK +185=12696,V,5632,34,DVB-S,QPSK +186=12701,V,2962,34,DVB-S,QPSK +187=12705,V,2922,34,DVB-S,QPSK +188=12706,H,3750,34,DVB-S,QPSK +189=12710,H,3750,34,S2,8PSK +190=12714,V,9874,34,S2,8PSK +191=12715,H,3200,34,DVB-S,QPSK +192=12729,V,4167,56,DVB-S,QPSK +193=12729,H,3325,34,DVB-S,QPSK +194=12733,H,3200,34,DVB-S,QPSK +195=12736,V,4600,56,S2,8PSK +196=12741,V,4167,56,DVB-S,QPSK +197=12742,H,3500,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0130.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0130.ini new file mode 100644 index 000000000..265104298 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0130.ini @@ -0,0 +1,106 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0130 +2=Eutelsat Hot Bird 13B/13C/13D (13.0E) + +[DVB] +0=97 +1=10719,V,27500,56,DVB-S,QPSK +2=10758,V,27500,34,S2,8PSK +3=10775,H,29900,56,DVB-S,QPSK +4=10796,V,27500,56,DVB-S,QPSK +5=10815,H,27500,56,DVB-S,QPSK +6=10834,V,27500,34,S2,8PSK +7=10853,H,29900,23,S2,8PSK +8=10873,V,27500,34,DVB-S,QPSK +9=10892,H,27500,34,DVB-S,QPSK +10=10911,V,27500,34,S2,8PSK +11=10930,H,30000,23,S2,8PSK +12=10949,V,27500,34,DVB-S,QPSK +13=10971,H,29700,23,S2,8PSK +14=10992,V,27500,23,DVB-S,QPSK +15=11034,V,27500,34,DVB-S,QPSK +16=11054,H,27500,56,DVB-S,QPSK +17=11075,V,27500,34,DVB-S,QPSK +18=11096,H,29900,23,S2,8PSK +19=11117,V,27500,34,DVB-S,QPSK +20=11137,H,27500,34,DVB-S,QPSK +21=11158,V,27500,56,DVB-S,QPSK +22=11179,H,27500,34,DVB-S,QPSK +23=11200,V,27500,56,DVB-S,QPSK +24=11219,H,29900,56,DVB-S,QPSK +25=11240,V,27500,34,DVB-S,QPSK +26=11258,H,27500,34,S2,8PSK +27=11278,V,27500,34,S2,8PSK +28=11296,H,27500,34,S2,8PSK +29=11317,V,27500,34,DVB-S,QPSK +30=11334,H,27500,34,DVB-S,QPSK +31=11355,V,29900,56,DVB-S,QPSK +32=11393,V,27500,56,DVB-S,QPSK +33=11411,H,27500,56,S2,8PSK +34=11449,H,27500,34,S2,8PSK +35=11471,V,27500,56,DVB-S,QPSK +36=11488,H,27500,56,DVB-S,QPSK +37=11508,V,27500,34,S2,8PSK +38=11526,H,27500,34,DVB-S,QPSK +39=11541,V,22000,56,DVB-S,QPSK +40=11566,H,27500,34,DVB-S,QPSK +41=11585,V,27500,34,DVB-S,QPSK +42=11604,H,27500,56,DVB-S,QPSK +43=11623,V,27500,34,DVB-S,QPSK +44=11642,H,27500,34,DVB-S,QPSK +45=11662,V,27500,34,S2,8PSK +46=11681,H,27500,34,S2,8PSK +47=11727,V,27500,34,DVB-S,QPSK +48=11747,H,27500,34,DVB-S,QPSK +49=11766,V,27500,23,DVB-S,QPSK +50=11785,H,29900,34,S2,8PSK +51=11804,V,27500,23,DVB-S,QPSK +52=11823,H,27500,34,DVB-S,QPSK +53=11843,V,29900,34,S2,8PSK +54=11862,H,29900,56,DVB-S,QPSK +55=11881,V,27500,34,DVB-S,QPSK +56=11900,H,29900,34,S2,8PSK +57=11919,V,29900,56,DVB-S,8PSK +58=11938,H,27500,34,S2,8PSK +59=11958,V,27500,34,DVB-S,QPSK +60=11977,H,29900,56,DVB-S,QPSK +61=11996,V,29900,34,S2,8PSK +62=12015,H,27500,34,DVB-S,QPSK +63=12034,V,29900,56,DVB-S,QPSK +64=12054,H,29900,56,DVB-S,QPSK +65=12073,V,29900,56,DVB-S,QPSK +66=12092,H,29900,34,S2,8PSK +67=12111,V,27500,34,DVB-S,QPSK +68=12130,H,27500,34,S2,8PSK +69=12149,V,27500,34,DVB-S,QPSK +70=12169,H,27500,34,S2,8PSK +71=12188,V,27500,56,DVB-S,QPSK +72=12207,H,29900,34,S2,8PSK +73=12226,V,27500,34,DVB-S,QPSK +74=12265,V,27500,34,S2,8PSK +75=12284,H,27500,56,DVB-S,QPSK +76=12303,V,27500,34,S2,8PSK +77=12322,H,27500,34,DVB-S,QPSK +78=12341,V,29900,34,S2,8PSK +79=12360,H,29900,34,S2,8PSK +80=12380,V,27500,34,DVB-S,QPSK +81=12399,H,27500,34,DVB-S,QPSK +82=12418,V,29900,34,S2,8PSK +83=12437,H,29900,34,S2,QPSK +84=12466,V,29900,56,DVB-S,QPSK +85=12476,H,29900,34,S2,8PSK +86=12520,V,27500,34,DVB-S,QPSK +87=12539,H,27500,23,S2,QPSK +88=12558,V,27500,34,DVB-S,QPSK +89=12577,H,27500,34,S2,8PSK +90=12597,V,27500,34,DVB-S,QPSK +91=12616,H,29900,56,DVB-S,QPSK +92=12635,V,29900,56,DVB-S,QPSK +93=12654,H,27500,56,DVB-S,QPSK +94=12673,V,29900,56,DVB-S,QPSK +95=12692,H,27500,34,S2,8PSK +96=12713,V,29900,56,DVB-S,QPSK +97=12731,H,29900,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0160.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0160.ini new file mode 100644 index 000000000..9a9503eb5 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0160.ini @@ -0,0 +1,156 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0160 +2=Eutelsat 16A (16.0E) + +[DVB] +0=147 +1=10721,H,27500,34,DVB-S,QPSK +2=10762,H,30000,35,S2,8PSK +3=10804,H,30000,23,S2,8PSK +4=10845,H,30000,Auto,S2,QPSK +5=10887,H,30000,Auto,S2,QPSK +6=10928,H,30000,89,S2,QPSK +7=10957,H,3750,34,S2,8PSK +8=10961,H,3750,34,S2,8PSK +9=10966,H,3750,34,S2,8PSK +10=10971,H,3750,34,S2,8PSK +11=10972,V,27500,56,DVB-S,QPSK +12=10975,H,3750,34,S2,8PSK +13=10977,H,24113,Auto,S2,8PSK +14=10981,H,3462,56,S2,8PSK +15=10992,H,2500,56,S2,8PSK +16=10997,H,2500,56,S2,8PSK +17=11001,H,2500,56,S2,8PSK +18=11007,H,5000,34,S2,8PSK +19=11011,V,27500,56,DVB-S,QPSK +20=11012,H,3333,78,DVB-S,QPSK +21=11016,H,1500,23,S2,8PSK +22=11019,H,1795,Auto,S2,QPSK +23=11023,H,7500,34,S2,8PSK +24=11024,H,3330,Auto,DVB-S,8PSK +25=11029,H,2300,Auto,DVB-S,QPSK +26=11046,H,10555,34,DVB-S,QPSK +27=11060,H,4615,56,DVB-S,QPSK +28=11063,H,3328,34,DVB-S,QPSK +29=11074,H,1250,34,DVB-S,QPSK +30=11082,H,10000,Auto,S2,QPSK +31=11092,H,3600,34,S2,8PSK +32=11104,H,7400,34,S2,8PSK +33=11127,H,10000,56,S2,8PSK +34=11131,V,16593,23,S2,8PSK +35=11139,H,10000,56,S2,8PSK +36=11151,V,13268,23,S2,8PSK +37=11152,H,10000,56,S2,8PSK +38=11164,H,10000,56,S2,8PSK +39=11175,H,10000,56,S2,8PSK +40=11178,V,27500,34,DVB-S,QPSK +41=11187,H,10000,56,S2,8PSK +42=11221,H,30000,34,DVB-S,QPSK +43=11231,V,30000,34,DVB-S,QPSK +44=11262,H,30000,23,DVB-S,QPSK +45=11283,V,30000,23,S2,8PSK +46=11294,H,45000,34,S2,8PSK +47=11303,H,30000,23,S2,8PSK +48=11324,V,30000,34,DVB-S,QPSK +49=11345,H,30000,35,S2,8PSK +50=11356,H,45000,34,S2,8PSK +51=11366,V,30000,34,DVB-S,QPSK +52=11387,H,30000,34,DVB-S,QPSK +53=11400,V,13846,34,S2,8PSK +54=11427,V,27500,34,S2,8PSK +55=11470,V,30000,56,S2,8PSK +56=11471,H,30000,89,S2,QPSK +57=11512,H,30000,89,S2,QPSK +58=11512,V,29950,23,S2,8PSK +59=11554,H,30000,56,S2,QPSK +60=11554,V,30000,56,S2,8PSK +61=11595,H,30000,34,S2,8PSK +62=11595,V,30000,56,S2,8PSK +63=11596,H,30000,89,S2,QPSK +64=11604,V,14400,34,S2,8PSK +65=11637,H,30000,89,S2,QPSK +66=11645,V,27700,56,S2,QPSK +67=11675,V,9874,34,S2,8PSK +68=11678,H,30000,35,S2,8PSK +69=11687,V,9874,34,S2,8PSK +70=12508,H,3600,34,S2,8PSK +71=12512,H,3166,23,S2,8PSK +72=12516,H,3166,23,S2,8PSK +73=12517,V,8000,56,S2,8PSK +74=12521,H,30000,23,S2,8PSK +75=12522,H,3166,23,S2,8PSK +76=12527,H,2816,34,DVB-S,QPSK +77=12528,V,10000,56,S2,8PSK +78=12533,H,6333,23,S2,8PSK +79=12538,H,3166,23,S2,8PSK +80=12541,V,10000,56,S2,8PSK +81=12542,H,2816,34,DVB-S,QPSK +82=12548,H,6333,23,S2,8PSK +83=12554,H,2816,34,DVB-S,QPSK +84=12557,H,3166,23,S2,8PSK +85=12559,V,2222,34,S2,QPSK +86=12562,H,3166,23,S2,8PSK +87=12564,H,30000,23,S2,8PSK +88=12564,V,3617,34,DVB-S,QPSK +89=12570,H,3703,78,DVB-S,QPSK +90=12575,V,6000,34,S2,8PSK +91=12593,H,7120,34,S2,8PSK +92=12593,V,2500,23,DVB-S,QPSK +93=12597,V,2848,23,DVB-S,QPSK +94=12600,H,3200,23,S2,8PSK +95=12604,H,30000,23,S2,8PSK +96=12605,H,3166,23,S2,8PSK +97=12605,V,7125,34,S2,QPSK +98=12609,H,3200,23,S2,8PSK +99=12611,V,1415,34,DVB-S,QPSK +100=12614,H,3200,23,S2,8PSK +101=12618,H,3166,23,S2,8PSK +102=12620,V,3750,56,S2,8PSK +103=12623,H,4936,34,S2,8PSK +104=12624,V,1650,56,S2,8PSK +105=12626,V,1650,56,S2,8PSK +106=12628,V,1650,56,S2,8PSK +107=12633,V,4883,12,DVB-S,QPSK +108=12644,V,13200,34,S2,QPSK +109=12654,H,11111,23,DVB-S,QPSK +110=12656,V,4883,12,DVB-S,QPSK +111=12676,H,4248,34,DVB-S,QPSK +112=12677,V,2400,34,S2,8PSK +113=12680,V,2400,34,S2,8PSK +114=12683,V,2400,34,S2,8PSK +115=12686,V,2400,34,S2,8PSK +116=12689,V,2400,34,S2,8PSK +117=12692,V,2400,34,S2,8PSK +118=12695,V,2400,34,S2,8PSK +119=12698,V,2400,34,S2,8PSK +120=12699,H,9880,12,DVB-S,QPSK +121=12701,V,2400,34,S2,8PSK +122=12704,V,2400,34,S2,8PSK +123=12707,V,2400,34,S2,8PSK +124=12710,H,5165,35,S2,8PSK +125=12710,V,2400,34,S2,8PSK +126=12713,V,2400,34,S2,8PSK +127=12717,H,4936,34,S2,8PSK +128=12717,V,2400,34,S2,8PSK +129=12720,V,2400,34,S2,8PSK +130=12723,V,2400,34,S2,8PSK +131=12723,H,4936,34,S2,8PSK +132=12728,V,2400,34,S2,8PSK +133=12737,V,2400,34,S2,8PSK +134=12738,H,4500,34,DVB-S,QPSK +135=21537,H,1070,34,S2,8PSK +136=21538,H,1054,34,S2,8PSK +137=21540,H,1071,34,S2,8PSK +138=21541,H,1071,34,S2,8PSK +139=21545,H,2143,56,S2,8PSK +140=21550,H,1054,34,S2,8PSK +141=21551,H,1060,23,DVB-S,QPSK +142=21559,H,1071,34,S2,8PSK +143=21560,H,1010,23,S2,8PSK +144=21562,H,1010,23,S2,8PSK +145=21563,H,1250,23,S2,8PSK +146=21569,H,1071,34,S2,8PSK +147=21571,H,2900,56,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0170.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0170.ini new file mode 100644 index 000000000..52ba9e5f7 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0170.ini @@ -0,0 +1,60 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0170 +2=Amos 5 (17.0E) + +[DVB] +0=51 +1=3538,V,4444,34,DVB-S,QPSK +2=3547,V,7200,34,S2,8PSK +3=3553,V,1285,56,S2,8PSK +4=3617,V,1167,23,S2,8PSK +5=3620,V,1000,34,S2,8PSK +6=3622,V,1000,23,S2,8PSK +7=3626,V,2000,34,DVB-S,QPSK +8=3626,H,1200,23,DVB-S,QPSK +9=3665,H,3300,78,DVB-S,QPSK +10=3685,V,1924,78,DVB-S,QPSK +11=3688,V,2000,34,DVB-S,QPSK +12=3728,H,3300,78,DVB-S,QPSK +13=3731,H,2500,56,S2,8PSK +14=3757,V,3300,78,DVB-S,QPSK +15=3785,V,1168,34,DVB-S,QPSK +16=3802,V,1666,34,S2,8PSK +17=3828,V,1250,23,S2,8PSK +18=3830,V,1480,56,S2,QPSK +19=3852,V,1000,56,S2,QPSK +20=4066,V,1000,23,S2,8PSK +21=4119,V,7200,34,DVB-S,QPSK +22=4125,V,2170,34,DVB-S,QPSK +23=4130,V,6850,35,S2,8PSK +24=4136,V,2500,23,S2,8PSK +25=4139,V,1000,34,S2,8PSK +26=4141,V,1550,34,S2,8PSK +27=4142,V,1000,23,S2,8PSK +28=4144,V,1334,56,DVB-S,QPSK +29=4160,V,4166,56,DVB-S,QPSK +30=10961,V,2200,12,S2,QPSK +31=10983,V,3333,56,DVB-S,QPSK +32=11038,V,1760,34,S2,QPSK +33=11041,V,1594,34,S2,QPSK +34=11057,V,4273,12,S2,QPSK +35=11062,V,1250,34,S2,QPSK +36=11064,V,1244,34,S2,QPSK +37=11087,V,1245,34,S2,QPSK +38=11092,V,1244,34,DVB-S,QPSK +39=11139,V,30000,Auto,S2,QPSK +40=11761,V,15000,34,S2,QPSK +41=11801,V,30000,23,S2,QPSK +42=11884,V,27500,34,DVB-S,QPSK +43=11967,V,30000,34,S2,QPSK +44=12004,V,30000,34,S2,QPSK +45=12035,H,4000,Auto,S2,8PSK +46=12068,V,45000,56,S2,QPSK +47=12208,H,17666,45,S2,QPSK +48=12260,V,17666,45,S2,QPSK +49=12335,V,27500,34,DVB-S,QPSK +50=12384,V,30000,34,S2,QPSK +51=12418,V,30000,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0192.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0192.ini new file mode 100644 index 000000000..fbe65c9b5 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0192.ini @@ -0,0 +1,127 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0192 +2=Astra 1KR/1L/1M/1N (19.2E) + +[DVB] +0=118 +1=10729,V,22000,23,S2,8PSK +2=10744,H,22000,56,DVB-S,QPSK +3=10758,V,22000,56,DVB-S,QPSK +4=10773,H,22000,34,S2,8PSK +5=10788,V,22000,56,DVB-S,QPSK +6=10803,H,22000,34,S2,8PSK +7=10818,V,22000,23,S2,8PSK +8=10832,H,22000,23,S2,8PSK +9=10847,V,22000,56,DVB-S,QPSK +10=10862,H,22000,23,S2,8PSK +11=10876,V,22000,56,DVB-S,QPSK +12=10891,H,22000,23,S2,8PSK +13=10906,V,22000,23,S2,8PSK +14=10921,H,22000,78,DVB-S,QPSK +15=10936,V,22000,23,S2,8PSK +16=10964,H,22000,23,S2,8PSK +17=10979,V,22000,56,DVB-S,QPSK +18=10994,H,22000,910,S2,QPSK +19=11023,H,23500,34,S2,8PSK +20=11038,V,22000,56,DVB-S,QPSK +21=11053,H,22000,23,S2,8PSK +22=11068,V,22000,56,DVB-S,QPSK +23=11082,H,22000,34,S2,8PSK +24=11097,V,22000,56,DVB-S,QPSK +25=11112,H,22000,23,S2,8PSK +26=11127,V,22000,23,S2,8PSK +27=11156,V,22000,56,DVB-S,QPSK +28=11171,H,22000,34,S2,8PSK +29=11186,V,22000,56,DVB-S,QPSK +30=11229,V,22000,23,S2,8PSK +31=11244,H,22000,56,DVB-S,QPSK +32=11259,V,22000,23,S2,8PSK +33=11273,H,22000,23,S2,8PSK +34=11288,V,22000,23,S2,8PSK +35=11303,H,22000,23,S2,8PSK +36=11318,V,22000,56,DVB-S,QPSK +37=11332,H,22000,34,S2,8PSK +38=11347,V,22000,23,S2,8PSK +39=11362,H,22000,23,S2,8PSK +40=11377,V,22000,23,S2,8PSK +41=11391,H,22000,56,DVB-S,QPSK +42=11421,H,22000,56,DVB-S,QPSK +43=11436,V,22000,23,S2,8PSK +44=11464,H,22000,23,S2,8PSK +45=11494,H,22000,23,S2,8PSK +46=11509,V,22000,56,DVB-S,QPSK +47=11523,H,22000,56,DVB-S,QPSK +48=11538,V,22000,56,DVB-S,QPSK +49=11553,H,22000,34,S2,8PSK +50=11568,V,22000,23,S2,8PSK +51=11582,H,22000,23,S2,8PSK +52=11597,V,22000,56,DVB-S,QPSK +53=11612,H,22000,56,DVB-S,QPSK +54=11627,V,22000,56,DVB-S,QPSK +55=11641,H,22000,56,DVB-S,QPSK +56=11671,H,22000,23,S2,8PSK +57=11686,V,22000,56,DVB-S,QPSK +58=11720,H,27500,34,DVB-S,QPSK +59=11739,V,27500,34,DVB-S,QPSK +60=11758,H,27500,34,DVB-S,QPSK +61=11778,V,27500,34,DVB-S,QPSK +62=11798,H,27500,34,DVB-S,QPSK +63=11817,V,29700,56,S2,QPSK +64=11836,H,27500,34,DVB-S,QPSK +65=11856,V,27500,34,DVB-S,QPSK +66=11876,H,27500,34,S2,8PSK +67=11914,H,27500,910,S2,QPSK +68=11934,V,27500,34,DVB-S,QPSK +69=11954,H,27500,34,DVB-S,QPSK +70=11973,V,27500,34,DVB-S,QPSK +71=11992,H,27500,910,S2,QPSK +72=12012,V,29700,56,S2,QPSK +73=12032,H,27500,34,DVB-S,QPSK +74=12051,V,27500,34,DVB-S,QPSK +75=12070,H,27500,34,DVB-S,QPSK +76=12090,V,29700,56,S2,QPSK +77=12110,H,27500,34,DVB-S,QPSK +78=12129,V,29700,56,S2,QPSK +79=12148,H,27500,34,DVB-S,QPSK +80=12168,V,29700,56,S2,QPSK +81=12188,H,27500,34,DVB-S,QPSK +82=12207,V,29700,56,S2,QPSK +83=12226,H,27500,34,DVB-S,QPSK +84=12246,V,29700,56,S2,QPSK +85=12266,H,27500,34,DVB-S,QPSK +86=12285,V,29700,23,S2,8PSK +87=12304,H,27500,910,S2,QPSK +88=12324,V,29700,56,S2,QPSK +89=12363,V,27500,34,DVB-S,QPSK +90=12382,H,27500,910,S2,QPSK +91=12402,V,27500,34,DVB-S,QPSK +92=12422,H,27500,34,DVB-S,QPSK +93=12441,V,29700,56,S2,QPSK +94=12460,H,27500,34,DVB-S,QPSK +95=12480,V,27500,34,DVB-S,QPSK +96=12515,H,22000,56,DVB-S,QPSK +97=12522,V,22000,23,S2,8PSK +98=12545,H,22000,56,DVB-S,QPSK +99=12552,V,22000,56,DVB-S,QPSK +100=12574,H,22000,23,S2,8PSK +101=12581,V,22000,23,S2,8PSK +102=12604,H,22000,56,DVB-S,QPSK +103=12610,V,22000,23,S2,8PSK +104=12633,H,22000,56,DVB-S,QPSK +105=12640,V,22000,23,S2,8PSK +106=12663,H,22000,56,DVB-S,QPSK +107=12670,V,22000,23,S2,8PSK +108=12692,H,22000,56,DVB-S,QPSK +109=12699,V,22000,56,DVB-S,QPSK +110=12722,H,23500,23,S2,8PSK +111=12728,V,22000,56,DVB-S,QPSK +112=18366,V,15000,12,S2,QPSK +113=18515,V,3630,23,S2,8PSK +114=18538,V,3344,34,S2,8PSK +115=18556,V,3630,23,S2,8PSK +116=18754,H,4500,34,DVB-S,QPSK +117=18760,H,5500,23,S2,8PSK +118=18766,H,3110,12,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0200.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0200.ini new file mode 100644 index 000000000..6eb757f16 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0200.ini @@ -0,0 +1,19 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0200 +2=Arabsat 5C (20.0E) + +[DVB] +0=10 +1=3710,V,2600,34,DVB-S,QPSK +2=3714,V,2600,34,DVB-S,QPSK +3=3720,V,6660,34,DVB-S,QPSK +4=3796,H,1850,34,DVB-S,QPSK +5=3884,V,27500,56,DVB-S,QPSK +6=3934,H,27500,78,DVB-S,QPSK +7=4004,V,27500,34,DVB-S,QPSK +8=4054,H,27500,34,DVB-S,QPSK +9=4110,V,3889,78,DVB-S,QPSK +10=4114,V,2988,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0215.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0215.ini new file mode 100644 index 000000000..30f3d5c6e --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0215.ini @@ -0,0 +1,103 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0215 +2=Eutelsat 21B (21.5E) + +[DVB] +0=94 +1=10955,H,3220,56,DVB-S,QPSK +2=10958,H,2590,34,DVB-S,QPSK +3=10966,H,2590,34,DVB-S,QPSK +4=10970,H,2500,34,DVB-S,QPSK +5=10975,H,2200,56,S2,8PSK +6=10978,V,2170,34,DVB-S,QPSK +7=10986,H,2150,34,DVB-S,QPSK +8=10992,H,3220,56,S2,8PSK +9=10995,H,2667,34,DVB-S,QPSK +10=10998,V,8888,34,DVB-S,QPSK +11=10999,H,3590,34,S2,8PSK +12=11003,H,2222,34,DVB-S,QPSK +13=11006,H,2592,56,DVB-S,QPSK +14=11009,H,2170,78,DVB-S,QPSK +15=11010,V,10000,34,S2,8PSK +16=11012,H,2667,34,DVB-S,QPSK +17=11015,H,2667,34,DVB-S,QPSK +18=11027,H,2200,34,S2,QPSK +19=11036,H,2100,34,DVB-S,QPSK +20=11038,V,2000,34,DVB-S,QPSK +21=11040,H,3600,34,DVB-S,QPSK +22=11061,V,2000,34,DVB-S,QPSK +23=11082,V,7400,23,S2,8PSK +24=11093,V,10000,34,S2,8PSK +25=11110,H,2667,34,DVB-S,QPSK +26=11128,H,10450,45,S2,QPSK +27=11190,V,6666,23,DVB-S,QPSK +28=11341,H,26460,23,S2,8PSK +29=11464,H,2590,34,DVB-S,QPSK +30=11468,H,1317,56,S2,8PSK +31=11470,H,2000,34,DVB-S,QPSK +32=11473,H,1900,56,S2,8PSK +33=11475,V,2100,34,DVB-S,QPSK +34=11476,H,2857,34,DVB-S,QPSK +35=11479,H,3184,34,DVB-S,QPSK +36=11480,V,2970,34,DVB-S,QPSK +37=11482,H,2856,34,DVB-S,QPSK +38=11483,V,3000,34,DVB-S,QPSK +39=11487,H,2700,56,DVB-S,QPSK +40=11488,V,2150,34,DVB-S,QPSK +41=11490,V,2220,34,DVB-S,QPSK +42=11497,V,2170,34,DVB-S,QPSK +43=11503,V,3300,34,DVB-S,QPSK +44=11508,V,3300,34,DVB-S,QPSK +45=11517,H,3333,56,S2,8PSK +46=11519,V,1500,56,S2,8PSK +47=11521,H,3300,34,DVB-S,QPSK +48=11526,H,2200,56,DVB-S,QPSK +49=11530,H,2200,34,DVB-S,QPSK +50=11532,V,2857,34,DVB-S,QPSK +51=11537,V,2755,34,DVB-S,QPSK +52=11541,V,6534,45,S2,QPSK +53=11546,V,2592,34,DVB-S,QPSK +54=11550,V,2142,34,DVB-S,QPSK +55=11557,H,3000,23,S2,8PSK +56=11558,V,1650,34,S2,8PSK +57=11564,V,7214,34,S2,8PSK +58=11574,V,2300,56,S2,8PSK +59=11578,V,3300,34,DVB-S,QPSK +60=11581,H,5000,34,DVB-S,QPSK +61=11582,V,2850,78,DVB-S,QPSK +62=11585,V,1600,34,DVB-S,QPSK +63=11588,H,5000,34,DVB-S,QPSK +64=11590,V,2856,78,DVB-S,QPSK +65=11593,V,1500,34,S2,8PSK +66=11596,H,5000,34,DVB-S,QPSK +67=11610,H,6200,78,DVB-S,QPSK +68=11619,V,12500,23,DVB-S,QPSK +69=11627,H,4260,56,S2,8PSK +70=11633,H,4260,56,S2,8PSK +71=11639,H,4260,56,S2,8PSK +72=11645,V,1600,45,S2,8PSK +73=11649,V,1600,34,S2,8PSK +74=11653,V,1600,34,S2,8PSK +75=11659,V,2850,78,DVB-S,QPSK +76=11663,H,3220,56,S2,8PSK +77=11665,V,2850,34,S2,8PSK +78=11673,V,2000,34,DVB-S,QPSK +79=11676,H,2150,34,DVB-S,QPSK +80=11678,V,2850,78,DVB-S,QPSK +81=11681,H,2963,34,DVB-S,QPSK +82=11684,V,2100,34,S2,8PSK +83=11686,H,1800,34,DVB-S,QPSK +84=11689,H,1500,34,DVB-S,QPSK +85=11691,V,1447,34,DVB-S,QPSK +86=11693,H,1500,34,S2,8PSK +87=11697,H,2500,34,DVB-S,QPSK +88=12508,H,3300,34,DVB-S,QPSK +89=12516,H,2200,34,DVB-S,QPSK +90=12521,H,2857,34,DVB-S,QPSK +91=12532,H,2220,34,DVB-S,QPSK +92=12536,H,2200,34,DVB-S,QPSK +93=12591,V,3124,34,DVB-S,QPSK +94=12622,V,3124,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0235.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0235.ini new file mode 100644 index 000000000..b1abb39c6 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0235.ini @@ -0,0 +1,127 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0235 +2=Astra 3B (23.5E) + +[DVB] +0=118 +1=11459,V,6666,78,DVB-S,QPSK +2=11460,H,7200,34,S2,QPSK +3=11469,H,3214,34,S2,8PSK +4=11470,V,7500,34,S2,8PSK +5=11476,V,3703,34,DVB-S,QPSK +6=11479,H,4444,34,DVB-S,QPSK +7=11484,V,4444,34,DVB-S,QPSK +8=11490,V,3250,34,DVB-S,QPSK +9=11490,H,3300,56,S2,8PSK +10=11496,V,2170,Auto,DVB-S,QPSK +11=11501,H,7200,56,S2,8PSK +12=11501,V,3750,89,S2,8PSK +13=11506,H,4800,34,S2,8PSK +14=11508,V,3600,34,S2,QPSK +15=11512,V,4800,34,S2,QPSK +16=11516,H,4444,34,DVB-S,QPSK +17=11516,V,3600,34,S2,QPSK +18=11521,H,3630,23,S2,8PSK +19=11527,H,7200,34,S2,QPSK +20=11530,V,4800,34,S2,8PSK +21=11532,H,3333,34,DVB-S,QPSK +22=11579,H,4333,78,DVB-S,QPSK +23=11583,V,10000,56,S2,8PSK +24=11591,H,7500,34,S2,8PSK +25=11597,V,4500,78,DVB-S,QPSK +26=11599,H,4800,56,S2,8PSK +27=11608,H,7200,34,S2,8PSK +28=11619,V,3750,23,S2,8PSK +29=11620,H,7200,34,S2,8PSK +30=11622,V,2333,56,S2,QPSK +31=11625,V,2333,56,S2,QPSK +32=11628,V,2333,56,S2,QPSK +33=11630,H,6666,78,DVB-S,QPSK +34=11631,V,2333,56,S2,QPSK +35=11634,V,2333,56,S2,QPSK +36=11636,H,3630,23,S2,8PSK +37=11642,V,2333,910,S2,8PSK +38=11648,H,6666,78,DVB-S,QPSK +39=11650,V,4610,34,S2,8PSK +40=11658,V,2333,56,S2,QPSK +41=11663,V,4666,56,S2,QPSK +42=11668,V,3656,34,S2,8PSK +43=11671,H,4444,34,DVB-S,QPSK +44=11672,V,3656,34,S2,8PSK +45=11676,V,1410,45,S2,QPSK +46=11678,V,1024,23,S2,8PSK +47=11679,H,6111,34,S2,8PSK +48=11679,V,1024,23,S2,8PSK +49=11680,V,1024,23,S2,8PSK +50=11683,V,2734,56,DVB-S,QPSK +51=11686,V,2750,34,S2,8PSK +52=11720,H,28200,56,S2,8PSK +53=11739,V,27500,23,S2,8PSK +54=11758,H,30000,Auto,S2,QPSK +55=11778,V,27500,910,S2,QPSK +56=11798,H,29500,34,S2,8PSK +57=11836,H,27500,56,DVB-S,QPSK +58=11856,V,27500,23,S2,8PSK +59=11876,H,29900,34,S2,8PSK +60=11895,V,27500,56,DVB-S,QPSK +61=11914,H,29900,23,S2,8PSK +62=11934,V,27500,34,S2,8PSK +63=11973,V,27500,56,DVB-S,QPSK +64=12032,H,27500,910,S2,QPSK +65=12070,H,27500,34,DVB-S,QPSK +66=12110,H,27500,34,S2,8PSK +67=12129,V,27500,23,S2,8PSK +68=12148,H,27500,56,S2,8PSK +69=12168,V,27500,34,DVB-S,QPSK +70=12188,H,27500,23,S2,8PSK +71=12207,V,27500,56,S2,8PSK +72=12304,H,27500,56,S2,8PSK +73=12344,H,27500,56,S2,8PSK +74=12363,V,29500,34,S2,8PSK +75=12382,H,30000,89,S2,8PSK +76=12402,V,30000,34,S2,8PSK +77=12525,H,27500,56,S2,8PSK +78=12525,V,27500,34,DVB-S,QPSK +79=12550,V,1663,56,S2,8PSK +80=12550,H,14400,34,S2,8PSK +81=12554,V,1666,56,S2,8PSK +82=12562,V,4937,34,S2,8PSK +83=12568,V,4937,34,S2,8PSK +84=12572,V,3300,78,DVB-S,QPSK +85=12576,V,3300,78,DVB-S,QPSK +86=12580,V,4937,34,S2,8PSK +87=12591,H,7200,34,S2,8PSK +88=12593,V,9600,34,S2,8PSK +89=12601,H,6666,78,DVB-S,QPSK +90=12608,V,4800,34,S2,8PSK +91=12609,H,6666,78,DVB-S,QPSK +92=12614,V,5000,56,S2,8PSK +93=12621,H,4936,34,S2,8PSK +94=12621,V,3750,34,S2,8PSK +95=12631,H,7200,34,S2,8PSK +96=12636,V,5000,34,S2,8PSK +97=12652,V,3333,34,S2,8PSK +98=12656,V,3600,34,S2,8PSK +99=12658,H,7200,34,S2,8PSK +100=12661,V,3600,34,S2,8PSK +101=12671,H,6666,78,DVB-S,QPSK +102=12674,V,3600,34,S2,8PSK +103=12677,V,2200,34,S2,8PSK +104=12680,V,2400,56,S2,8PSK +105=12680,H,6666,78,DVB-S,QPSK +106=12683,V,2400,56,S2,8PSK +107=12687,V,2400,56,S2,8PSK +108=12690,H,7200,34,S2,8PSK +109=12692,V,4800,34,S2,8PSK +110=12697,V,4800,34,S2,8PSK +111=12699,H,6666,78,S2,8PSK +112=12710,V,4800,34,S2,8PSK +113=12717,V,4800,34,S2,QPSK +114=12723,V,4800,34,S2,QPSK +115=12725,H,30000,89,S2,8PSK +116=12730,V,3600,34,S2,QPSK +117=12735,V,3600,34,S2,QPSK +118=12740,V,2400,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0255.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0255.ini new file mode 100644 index 000000000..f72c91b41 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0255.ini @@ -0,0 +1,19 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0255 +2=Eutelsat 25B/Es'hail 1 (25.5E) + +[DVB] +0=10 +1=11046,H,27500,34,DVB-S,QPSK +2=11142,V,27500,34,DVB-S,QPSK +3=11547,V,27500,23,S2,8PSK +4=11566,H,27500,34,DVB-S,8PSK +5=11585,V,27500,23,S2,8PSK +6=11604,H,27500,34,DVB-S,QPSK +7=11623,V,27500,23,S2,8PSK +8=11642,H,27500,23,S2,8PSK +9=11678,H,27500,56,DVB-S,QPSK +10=21421,V,27500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0260.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0260.ini new file mode 100644 index 000000000..299779fb5 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0260.ini @@ -0,0 +1,107 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0260 +2=Badr 4/5/6 (26.0E) + +[DVB] +0=98 +1=3958,V,12000,34,DVB-S,QPSK +2=10730,H,27500,34,DVB-S,QPSK +3=10730,V,27500,34,S2,8PSK +4=10770,H,27500,34,DVB-S,QPSK +5=10810,H,27500,34,DVB-S,QPSK +6=10810,V,27500,12,S2,8PSK +7=10850,H,27500,56,DVB-S,QPSK +8=10850,V,27500,34,DVB-S,QPSK +9=10890,H,27500,34,S2,8PSK +10=10890,V,27500,34,S2,8PSK +11=10930,H,27500,34,DVB-S,QPSK +12=10930,V,27500,34,S2,8PSK +13=11228,V,27500,34,DVB-S,QPSK +14=11557,H,2960,34,DVB-S,QPSK +15=11563,H,1500,34,DVB-S,QPSK +16=11727,H,27500,Auto,S2,8PSK +17=11747,V,27500,34,DVB-S,QPSK +18=11785,V,27500,34,DVB-S,QPSK +19=11804,H,27500,34,DVB-S,QPSK +20=11823,V,27500,12,S2,8PSK +21=11843,H,27500,34,DVB-S,QPSK +22=11862,V,27500,34,DVB-S,QPSK +23=11881,H,27500,56,S2,8PSK +24=11900,V,27500,34,DVB-S,QPSK +25=11919,H,27500,34,DVB-S,QPSK +26=11938,V,27500,34,DVB-S,QPSK +27=11958,H,27500,34,DVB-S,QPSK +28=11996,H,27500,34,DVB-S,QPSK +29=12015,V,27500,34,DVB-S,QPSK +30=12034,H,27500,34,DVB-S,QPSK +31=12054,V,27500,34,DVB-S,QPSK +32=12073,H,27500,34,DVB-S,QPSK +33=12092,V,27500,34,DVB-S,QPSK +34=12111,H,27500,34,DVB-S,QPSK +35=12130,V,27500,34,DVB-S,QPSK +36=12149,H,30000,56,S2,QPSK +37=12169,V,22000,34,S2,QPSK +38=12182,H,16200,34,DVB-S,QPSK +39=12207,V,27500,34,DVB-S,QPSK +40=12226,H,27500,34,DVB-S,QPSK +41=12245,V,27500,56,S2,QPSK +42=12265,H,27500,56,S2,QPSK +43=12284,V,27500,34,DVB-S,QPSK +44=12303,H,27500,34,DVB-S,QPSK +45=12322,V,27500,34,DVB-S,QPSK +46=12360,V,27500,34,DVB-S,QPSK +47=12399,V,27500,34,S2,8PSK +48=12418,H,27500,34,S2,8PSK +49=12437,V,27500,34,DVB-S,QPSK +50=12456,H,27500,34,DVB-S,QPSK +51=12476,V,27500,34,DVB-S,QPSK +52=12523,H,27500,34,DVB-S,QPSK +53=12547,H,2000,34,DVB-S,QPSK +54=12550,H,2950,34,DVB-S,QPSK +55=12550,V,7000,56,S2,8PSK +56=12558,V,7000,56,S2,8PSK +57=12559,H,2220,34,DVB-S,QPSK +58=12562,H,2220,34,DVB-S,QPSK +59=12565,H,2220,34,DVB-S,QPSK +60=12567,V,2200,34,DVB-S,QPSK +61=12568,H,1850,34,DVB-S,QPSK +62=12570,V,2200,34,DVB-S,QPSK +63=12570,H,1820,34,DVB-S,QPSK +64=12575,H,2200,56,DVB-S,QPSK +65=12576,V,7000,56,S2,8PSK +66=12579,H,2100,34,DVB-S,QPSK +67=12586,V,2220,34,DVB-S,QPSK +68=12587,H,2000,34,DVB-S,QPSK +69=12591,H,2200,34,DVB-S,QPSK +70=12591,V,2200,34,DVB-S,QPSK +71=12594,H,2200,34,DVB-S,QPSK +72=12600,V,7000,56,S2,QPSK +73=12602,H,2960,56,DVB-S,QPSK +74=12605,V,2220,34,DVB-S,QPSK +75=12607,H,3000,34,DVB-S,QPSK +76=12608,V,1820,34,DVB-S,QPSK +77=12611,V,2220,34,DVB-S,QPSK +78=12618,H,2220,34,DVB-S,QPSK +79=12620,V,2200,34,DVB-S,QPSK +80=12644,V,1850,34,DVB-S,QPSK +81=12647,H,2950,34,DVB-S,QPSK +82=12647,V,1595,34,S2,8PSK +83=12656,H,2892,34,DVB-S,QPSK +84=12666,H,2400,34,DVB-S,QPSK +85=12672,H,4440,34,DVB-S,QPSK +86=12679,H,2220,78,DVB-S,QPSK +87=12683,V,27500,34,DVB-S,QPSK +88=12705,H,2220,56,DVB-S,QPSK +89=12708,H,2220,56,DVB-S,QPSK +90=12711,H,2220,34,DVB-S,8PSK +91=12711,V,5632,34,DVB-S,QPSK +92=12717,V,2143,56,DVB-S,QPSK +93=12718,H,3000,56,DVB-S,QPSK +94=12722,H,3000,56,DVB-S,QPSK +95=12729,H,2200,34,DVB-S,QPSK +96=12734,H,3000,34,DVB-S,QPSK +97=12736,V,5632,34,DVB-S,QPSK +98=12740,H,2200,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0282.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0282.ini new file mode 100644 index 000000000..07c5ccebe --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0282.ini @@ -0,0 +1,101 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0282 +2=Astra 2E/2F/2G (28.2E) + +[DVB] +0=92 +1=10714,H,22000,56,DVB-S,QPSK +2=10729,V,22000,56,DVB-S,QPSK +3=10744,H,22000,56,DVB-S,QPSK +4=10758,V,22000,56,DVB-S,QPSK +5=10773,H,22000,56,DVB-S,QPSK +6=10788,V,22000,56,DVB-S,QPSK +7=10803,H,22000,56,DVB-S,QPSK +8=10818,V,22000,56,DVB-S,QPSK +9=10832,H,22000,56,DVB-S,QPSK +10=10847,V,23000,23,S2,8PSK +11=10862,H,23000,23,S2,8PSK +12=10876,V,22000,56,DVB-S,QPSK +13=10891,H,22000,56,DVB-S,QPSK +14=10906,V,22000,56,DVB-S,QPSK +15=10936,V,23000,23,S2,8PSK +16=10964,H,22000,56,DVB-S,QPSK +17=10994,H,22000,56,DVB-S,QPSK +18=11023,H,23000,23,S2,8PSK +19=11053,H,23000,34,S2,8PSK +20=11068,V,23000,23,S2,8PSK +21=11082,H,22000,56,DVB-S,QPSK +22=11097,V,23000,23,S2,8PSK +23=11112,H,22000,56,DVB-S,QPSK +24=11126,V,22000,56,DVB-S,QPSK +25=11141,H,22000,56,DVB-S,QPSK +26=11171,H,22000,56,DVB-S,QPSK +27=11224,H,27500,23,DVB-S,QPSK +28=11224,V,27500,23,DVB-S,QPSK +29=11264,V,27500,23,DVB-S,QPSK +30=11264,H,27500,23,DVB-S,QPSK +31=11306,V,27500,23,DVB-S,QPSK +32=11306,H,27500,23,DVB-S,QPSK +33=11344,V,27500,23,DVB-S,QPSK +34=11344,H,27500,23,DVB-S,QPSK +35=11386,V,27500,23,DVB-S,QPSK +36=11386,H,27500,23,DVB-S,QPSK +37=11426,H,27500,23,DVB-S,QPSK +38=11426,V,27500,23,DVB-S,QPSK +39=11464,H,22000,56,DVB-S,QPSK +40=11479,V,22000,56,DVB-S,QPSK +41=11509,V,22000,56,DVB-S,QPSK +42=11523,H,22000,56,DVB-S,QPSK +43=11538,V,23000,23,S2,8PSK +44=11553,H,22000,56,DVB-S,QPSK +45=11568,V,22000,56,DVB-S,QPSK +46=11582,H,22000,56,DVB-S,QPSK +47=11597,V,22000,56,DVB-S,QPSK +48=11618,V,1562,56,S2,QPSK +49=11671,H,22000,56,DVB-S,QPSK +50=11675,H,30000,56,S2,QPSK +51=11686,V,22000,56,DVB-S,QPSK +52=11720,H,29500,34,S2,QPSK +53=11739,V,29500,34,S2,QPSK +54=11758,H,29500,34,S2,QPSK +55=11798,H,29500,34,S2,QPSK +56=11817,V,27500,23,DVB-S,QPSK +57=11836,H,27500,56,DVB-S,QPSK +58=11856,V,29500,34,S2,QPSK +59=11876,H,27500,23,DVB-S,QPSK +60=11895,V,27500,23,DVB-S,QPSK +61=11914,H,27500,56,DVB-S,QPSK +62=11934,V,27500,56,DVB-S,QPSK +63=11954,H,27500,23,DVB-S,QPSK +64=11973,V,29500,34,S2,QPSK +65=11992,H,27500,23,DVB-S,QPSK +66=12012,V,29500,34,S2,QPSK +67=12051,V,27500,23,DVB-S,QPSK +68=12070,H,27500,56,DVB-S,QPSK +69=12090,V,29500,34,S2,QPSK +70=12110,H,27500,56,DVB-S,QPSK +71=12148,H,27500,56,DVB-S,QPSK +72=12168,V,29500,34,S2,QPSK +73=12188,H,27500,56,DVB-S,QPSK +74=12207,V,27500,56,DVB-S,QPSK +75=12226,H,29500,34,S2,QPSK +76=12246,V,29500,34,S2,QPSK +77=12266,H,27500,56,DVB-S,QPSK +78=12285,V,27500,23,DVB-S,QPSK +79=12324,V,29500,34,S2,QPSK +80=12344,H,29500,34,S2,QPSK +81=12363,V,29500,34,S2,QPSK +82=12441,V,29500,34,S2,QPSK +83=12460,H,29500,34,S2,QPSK +84=12480,V,27500,23,DVB-S,QPSK +85=12522,V,27000,Auto,DVB-S,QPSK +86=12573,H,6960,23,S2,QPSK +87=12581,V,7200,34,S2,8PSK +88=12582,H,6960,23,S2,QPSK +89=12603,V,3095,Auto,S2,QPSK +90=12683,H,6960,23,S2,8PSK +91=12692,H,6960,23,S2,8PSK +92=12699,H,4640,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0305.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0305.ini new file mode 100644 index 000000000..196196c95 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0305.ini @@ -0,0 +1,96 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0305 +2=Arabsat 5A (30.5E) + +[DVB] +0=87 +1=3770,V,2200,34,DVB-S,QPSK +2=3820,V,2848,34,DVB-S,QPSK +3=3880,V,3888,78,DVB-S,QPSK +4=3884,V,3888,78,DVB-S,QPSK +5=3888,V,3888,78,DVB-S,QPSK +6=3947,V,2200,34,DVB-S,QPSK +7=3951,V,2220,34,DVB-S,QPSK +8=4061,V,1615,78,DVB-S,QPSK +9=4126,V,2892,34,DVB-S,QPSK +10=10717,H,2069,23,S2,8PSK +11=10721,H,4300,23,S2,8PSK +12=10727,H,4300,23,DVB-S,QPSK +13=10744,H,4300,23,DVB-S,QPSK +14=10749,H,3125,Auto,DVB-S,QPSK +15=10757,H,2220,34,DVB-S,QPSK +16=10760,H,2050,23,S2,8PSK +17=10765,H,1950,34,S2,QPSK +18=10770,H,1650,23,S2,8PSK +19=10777,H,2960,34,DVB-S,QPSK +20=10782,H,2960,34,DVB-S,QPSK +21=10797,H,8000,56,S2,8PSK +22=10805,H,3885,56,DVB-S,QPSK +23=10816,H,8000,56,DVB-S,QPSK +24=10827,H,5800,34,DVB-S,QPSK +25=10832,V,2780,56,DVB-S,QPSK +26=10858,V,2960,34,DVB-S,QPSK +27=10924,H,17000,34,DVB-S,QPSK +28=10940,H,8000,56,DVB-S,QPSK +29=10946,H,2400,78,DVB-S,QPSK +30=12503,V,2220,34,DVB-S,QPSK +31=12506,V,2220,34,DVB-S,QPSK +32=12507,H,2220,34,DVB-S,QPSK +33=12509,V,2222,34,DVB-S,QPSK +34=12511,V,2200,34,DVB-S,QPSK +35=12514,V,2220,34,DVB-S,QPSK +36=12516,H,2230,34,DVB-S,QPSK +37=12523,V,6000,Auto,DVB-S,QPSK +38=12533,V,3890,34,DVB-S,QPSK +39=12538,V,2690,34,DVB-S,QPSK +40=12539,H,2960,34,DVB-S,QPSK +41=12543,V,2410,34,S2,8PSK +42=12559,H,2963,34,DVB-S,QPSK +43=12568,H,2960,Auto,DVB-S,QPSK +44=12576,H,1613,Auto,S2,QPSK +45=12588,H,3000,34,DVB-S,QPSK +46=12593,H,2960,34,DVB-S,QPSK +47=12596,H,2220,34,DVB-S,QPSK +48=12596,V,1800,78,DVB-S,QPSK +49=12603,V,3300,34,DVB-S,QPSK +50=12607,V,2590,56,DVB-S,QPSK +51=12608,H,2200,34,DVB-S,QPSK +52=12610,V,2970,34,DVB-S,QPSK +53=12611,H,3000,34,DVB-S,QPSK +54=12614,H,2200,34,DVB-S,QPSK +55=12614,V,3820,89,S2,QPSK +56=12618,H,2960,34,DVB-S,QPSK +57=12621,V,3800,34,S2,8PSK +58=12624,V,2220,34,DVB-S,QPSK +59=12630,V,2893,34,DVB-S,QPSK +60=12634,V,2893,34,DVB-S,QPSK +61=12638,V,2894,34,DVB-S,QPSK +62=12641,V,2894,34,DVB-S,QPSK +63=12644,V,2894,34,DVB-S,QPSK +64=12647,H,2960,34,DVB-S,QPSK +65=12648,V,2894,34,DVB-S,QPSK +66=12651,H,3885,34,DVB-S,QPSK +67=12652,V,2893,34,DVB-S,QPSK +68=12655,H,2410,34,DVB-S,QPSK +69=12656,V,1660,56,S2,8PSK +70=12667,H,4112,34,DVB-S,QPSK +71=12667,V,2220,34,DVB-S,QPSK +72=12671,V,2600,34,DVB-S,QPSK +73=12675,V,4300,34,DVB-S,QPSK +74=12679,V,3000,34,DVB-S,QPSK +75=12685,V,4300,34,DVB-S,QPSK +76=12697,V,4300,34,DVB-S,QPSK +77=12708,V,2590,34,DVB-S,QPSK +78=12712,H,2220,34,DVB-S,QPSK +79=12713,V,1850,34,DVB-S,QPSK +80=12716,V,2600,34,DVB-S,QPSK +81=12719,H,2960,34,DVB-S,QPSK +82=12719,V,3000,34,DVB-S,QPSK +83=12722,H,2200,34,DVB-S,QPSK +84=12724,V,2220,34,DVB-S,QPSK +85=12732,V,2000,78,DVB-S,QPSK +86=12733,H,2960,34,DVB-S,QPSK +87=12737,H,2220,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0308.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0308.ini new file mode 100644 index 000000000..fe4f41569 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0308.ini @@ -0,0 +1,30 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0308 +2=Eutelsat 31A (30.8E) + +[DVB] +0=21 +1=10960,H,3330,78,DVB-S,QPSK +2=10965,H,3330,78,DVB-S,QPSK +3=10970,H,3330,78,DVB-S,QPSK +4=10975,H,3330,78,DVB-S,QPSK +5=10979,H,3330,78,DVB-S,QPSK +6=10984,H,3330,56,DVB-S,QPSK +7=10988,H,3330,78,DVB-S,QPSK +8=10992,H,3330,78,DVB-S,QPSK +9=11004,H,7500,34,S2,8PSK +10=11011,H,3330,56,DVB-S,QPSK +11=11015,H,3330,78,DVB-S,QPSK +12=11019,H,3330,78,DVB-S,QPSK +13=11024,H,3330,78,DVB-S,QPSK +14=11044,H,21000,56,S2,QPSK +15=11560,H,21000,56,S2,8PSK +16=11622,H,2300,56,DVB-S,QPSK +17=11624,H,2200,56,DVB-S,QPSK +18=11627,H,2300,56,DVB-S,QPSK +19=11630,H,2222,56,DVB-S,QPSK +20=11644,H,2300,910,S2,8PSK +21=11651,H,7500,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0310.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0310.ini new file mode 100644 index 000000000..be556fdd2 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0310.ini @@ -0,0 +1,10 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0310 +2=Hylas 2 (31.0E) + +[DVB] +0=1 +1=20036,H,10000,12,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0315.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0315.ini new file mode 100644 index 000000000..6581c9169 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0315.ini @@ -0,0 +1,24 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0315 +2=Astra 5B (31.5E) + +[DVB] +0=15 +1=11758,H,27500,34,DVB-S,QPSK +2=11817,V,27500,34,DVB-S,QPSK +3=11934,V,30000,23,S2,8PSK +4=11954,H,27500,56,S2,8PSK +5=11973,V,27500,56,S2,8PSK +6=12012,V,30000,34,S2,8PSK +7=12070,H,30000,34,S2,8PSK +8=12090,V,30000,34,S2,8PSK +9=12168,V,30000,34,S2,8PSK +10=12207,V,27500,56,S2,8PSK +11=12246,V,30000,34,S2,8PSK +12=12266,H,27500,56,S2,8PSK +13=12324,V,30000,34,S2,8PSK +14=12402,V,30000,34,S2,8PSK +15=12480,V,30000,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0330.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0330.ini new file mode 100644 index 000000000..b395913cc --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0330.ini @@ -0,0 +1,47 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0330 +2=Eutelsat 33B/33C/Intelsat 28 (33.0E) + +[DVB] +0=38 +1=10968,V,6665,45,S2,QPSK +2=10975,H,30000,910,S2,QPSK +3=10976,V,6665,45,S2,QPSK +4=11043,H,7200,34,S2,8PSK +5=11052,H,7200,56,S2,8PSK +6=11072,H,3333,78,DVB-S,QPSK +7=11077,H,3750,34,S2,8PSK +8=11094,H,3000,34,S2,8PSK +9=11098,H,2960,56,DVB-S,QPSK +10=11101,H,2222,56,DVB-S,QPSK +11=11105,H,3333,34,S2,8PSK +12=11154,V,15710,12,DVB-S,QPSK +13=11429,V,10098,35,S2,QPSK +14=11457,V,1704,56,S2,8PSK +15=11461,V,2000,78,DVB-S,QPSK +16=11467,V,3600,34,S2,8PSK +17=11471,V,3820,34,S2,8PSK +18=11475,V,3820,34,S2,8PSK +19=11476,H,3820,34,S2,8PSK +20=11580,H,2478,23,S2,8PSK +21=11583,H,2478,23,S2,8PSK +22=11593,H,15710,12,DVB-S,QPSK +23=11605,V,3333,56,S2,8PSK +24=11608,H,3810,56,S2,8PSK +25=12630,V,2400,35,S2,8PSK +26=12634,V,4800,34,S2,8PSK +27=12640,V,2400,23,S2,8PSK +28=12643,V,2400,23,S2,8PSK +29=12646,V,4800,34,S2,8PSK +30=12650,V,2400,23,S2,8PSK +31=12653,V,2400,23,S2,8PSK +32=12656,V,2400,23,S2,8PSK +33=12684,V,2050,56,S2,8PSK +34=12691,V,2222,78,DVB-S,QPSK +35=12698,V,3333,34,DVB-S,QPSK +36=12722,V,16730,34,S2,QPSK +37=12736,V,4444,34,DVB-S,QPSK +38=12742,V,4444,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0360.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0360.ini new file mode 100644 index 000000000..49042dfb7 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0360.ini @@ -0,0 +1,111 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0360 +2=Eutelsat 36A/36B (36.0E) + +[DVB] +0=102 +1=11053,V,2894,34,DVB-S,QPSK +2=11057,V,2894,34,DVB-S,QPSK +3=11212,H,14400,35,S2,8PSK +4=11221,V,30000,56,S2,QPSK +5=11263,V,30000,56,S2,QPSK +6=11304,V,30000,56,S2,QPSK +7=11346,V,30000,56,S2,QPSK +8=11387,V,30000,56,S2,QPSK +9=11429,V,30000,56,S2,QPSK +10=11429,H,2893,34,DVB-S,QPSK +11=11442,H,2500,56,S2,8PSK +12=11474,V,30000,56,DVB-S,QPSK +13=11481,V,2200,34,S2,8PSK +14=11510,V,30000,56,DVB-S,QPSK +15=11590,V,2524,35,S2,QPSK +16=11593,V,2524,35,S2,QPSK +17=11727,H,27500,34,S2,8PSK +18=11727,V,27500,34,DVB-S,QPSK +19=11747,H,27500,34,DVB-S,QPSK +20=11747,V,27500,34,S2,8PSK +21=11766,V,27500,34,DVB-S,QPSK +22=11766,H,27500,34,S2,8PSK +23=11785,H,27500,34,DVB-S,QPSK +24=11785,V,27500,34,DVB-S,QPSK +25=11804,V,27500,34,S2,8PSK +26=11804,H,27500,34,S2,8PSK +27=11823,H,27500,34,DVB-S,QPSK +28=11823,V,27500,34,S2,8PSK +29=11843,V,27500,34,DVB-S,QPSK +30=11843,H,27500,34,S2,8PSK +31=11862,H,27500,34,DVB-S,QPSK +32=11862,V,27500,34,DVB-S,QPSK +33=11881,V,27500,34,DVB-S,QPSK +34=11881,H,27500,34,DVB-S,QPSK +35=11900,H,26480,12,DVB-S,QPSK +36=11900,V,27500,34,DVB-S,QPSK +37=11919,V,27500,34,S2,8PSK +38=11919,H,27500,34,S2,8PSK +39=11938,V,27500,34,S2,8PSK +40=11940,H,27500,34,DVB-S,QPSK +41=11958,V,27500,34,DVB-S,QPSK +42=11958,H,27500,34,S2,8PSK +43=11977,H,27500,34,DVB-S,QPSK +44=11977,V,27500,34,DVB-S,QPSK +45=11996,V,27500,34,S2,8PSK +46=11996,H,27500,34,S2,8PSK +47=12015,H,27500,34,DVB-S,QPSK +48=12015,V,27500,34,S2,8PSK +49=12034,V,27500,34,DVB-S,QPSK +50=12034,H,27500,34,S2,8PSK +51=12054,H,27500,34,DVB-S,QPSK +52=12054,V,27500,34,S2,8PSK +53=12073,H,27500,34,S2,8PSK +54=12073,V,27500,34,DVB-S,QPSK +55=12092,H,27500,23,S2,8PSK +56=12092,V,27500,34,DVB-S,QPSK +57=12111,H,27500,34,S2,8PSK +58=12130,V,27500,34,S2,8PSK +59=12149,H,27500,34,S2,8PSK +60=12169,V,27500,34,S2,8PSK +61=12174,H,4340,34,DVB-S,QPSK +62=12190,H,20000,34,DVB-S,QPSK +63=12207,V,27500,34,S2,8PSK +64=12226,H,27500,34,DVB-S,QPSK +65=12245,V,27500,34,DVB-S,QPSK +66=12245,H,27500,34,DVB-S,QPSK +67=12265,H,27500,34,DVB-S,QPSK +68=12284,V,27500,34,DVB-S,QPSK +69=12303,H,27500,34,DVB-S,QPSK +70=12322,V,27500,34,DVB-S,QPSK +71=12322,H,23437,34,DVB-S,QPSK +72=12341,H,27500,34,DVB-S,QPSK +73=12360,V,27500,34,S2,8PSK +74=12360,H,26480,12,DVB-S,QPSK +75=12380,H,27500,34,DVB-S,QPSK +76=12399,V,27500,34,DVB-S,QPSK +77=12418,H,27500,34,S2,8PSK +78=12437,V,27500,34,S2,8PSK +79=12440,H,23437,23,DVB-S,QPSK +80=12456,H,27500,34,DVB-S,QPSK +81=12476,V,27500,34,DVB-S,QPSK +82=12476,H,26040,23,DVB-S,QPSK +83=12511,H,4340,12,DVB-S,QPSK +84=12520,H,4340,12,DVB-S,QPSK +85=12522,V,1346,34,DVB-S,QPSK +86=12540,V,2220,34,DVB-S,QPSK +87=12557,V,1346,34,S2,QPSK +88=12563,H,7120,34,DVB-S,QPSK +89=12571,H,2894,34,DVB-S,QPSK +90=12572,V,1786,34,S2,8PSK +91=12575,H,2894,34,DVB-S,QPSK +92=12608,V,6200,34,S2,QPSK +93=12629,H,3444,34,S2,8PSK +94=12654,V,1800,78,DVB-S,QPSK +95=12689,V,2170,34,DVB-S,QPSK +96=12693,V,2532,34,DVB-S,QPSK +97=12699,V,6000,34,DVB-S,QPSK +98=12703,V,2200,78,DVB-S,QPSK +99=12706,V,1800,78,DVB-S,QPSK +100=12709,V,2200,78,DVB-S,QPSK +101=12713,V,1800,78,DVB-S,QPSK +102=12716,V,1800,78,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0380.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0380.ini new file mode 100644 index 000000000..25b53cd3d --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0380.ini @@ -0,0 +1,79 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0380 +2=Paksat 1R (38.0E) + +[DVB] +0=70 +1=3715,V,7200,34,DVB-S,QPSK +2=3732,V,18000,89,S2,QPSK +3=3762,V,4340,34,DVB-S,QPSK +4=3770,V,7700,78,DVB-S,QPSK +5=3775,V,1004,34,DVB-S,QPSK +6=3782,V,2170,34,DVB-S,QPSK +7=3800,V,7300,34,DVB-S,QPSK +8=3806,V,1444,34,S2,QPSK +9=3818,V,2200,34,DVB-S,QPSK +10=3824,V,2800,34,DVB-S,QPSK +11=3830,H,2000,34,DVB-S,QPSK +12=3833,V,2600,34,DVB-S,QPSK +13=3856,V,2894,34,DVB-S,QPSK +14=3860,V,3333,34,DVB-S,QPSK +15=3865,V,2894,34,DVB-S,QPSK +16=3959,V,7234,34,DVB-S,QPSK +17=3966,V,2800,34,DVB-S,QPSK +18=3973,V,6510,34,DVB-S,QPSK +19=3976,H,1750,34,DVB-S,QPSK +20=3979,V,3255,34,DVB-S,QPSK +21=3981,H,2222,34,DVB-S,QPSK +22=3984,V,2893,34,DVB-S,QPSK +23=3992,V,2170,56,DVB-S,QPSK +24=4003,V,15550,34,DVB-S,QPSK +25=4005,H,13845,78,DVB-S,QPSK +26=4013,V,2893,34,DVB-S,QPSK +27=4023,V,5700,35,S2,8PSK +28=4031,V,1078,34,DVB-S,QPSK +29=4037,V,4800,56,S2,QPSK +30=4042,V,2800,34,S2,QPSK +31=4047,V,3255,34,DVB-S,QPSK +32=4054,V,7000,34,DVB-S,QPSK +33=4060,H,23000,56,DVB-S,QPSK +34=4060,V,2893,34,DVB-S,QPSK +35=4073,V,6150,34,S2,QPSK +36=4081,V,3255,34,DVB-S,QPSK +37=4085,V,2960,34,DVB-S,QPSK +38=4090,V,3330,34,DVB-S,QPSK +39=4093,V,2527,34,DVB-S,QPSK +40=4098,H,1600,34,DVB-S,QPSK +41=4101,V,2800,34,DVB-S,QPSK +42=4105,V,2310,56,DVB-S,QPSK +43=4114,V,5700,34,DVB-S,QPSK +44=4124,V,5000,34,DVB-S,QPSK +45=4130,V,2500,34,DVB-S,QPSK +46=4133,V,2220,89,S2,QPSK +47=4135,H,3330,34,DVB-S,QPSK +48=4141,V,2800,34,DVB-S,QPSK +49=4158,V,12000,34,DVB-S,QPSK +50=4168,V,2800,34,DVB-S,QPSK +51=4172,V,2800,34,DVB-S,QPSK +52=4180,V,2170,34,DVB-S,QPSK +53=4184,V,2800,34,S2,QPSK +54=4188,V,2170,34,DVB-S,QPSK +55=10971,V,1000,56,S2,8PSK +56=10972,V,1000,56,S2,8PSK +57=10990,V,1650,34,DVB-S,QPSK +58=10992,V,1500,34,DVB-S,QPSK +59=11103,V,3012,34,DVB-S,QPSK +60=11122,V,1808,34,DVB-S,QPSK +61=11124,V,1300,34,DVB-S,QPSK +62=11150,V,3760,34,DVB-S,QPSK +63=11167,V,3000,78,DVB-S,QPSK +64=11184,V,2000,34,DVB-S,QPSK +65=11188,V,2000,34,DVB-S,QPSK +66=11191,V,2000,34,DVB-S,QPSK +67=12652,V,2050,34,DVB-S,QPSK +68=12687,V,2170,78,DVB-S,QPSK +69=12691,V,3333,34,DVB-S,QPSK +70=12696,V,3333,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0390.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0390.ini new file mode 100644 index 000000000..e77919753 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0390.ini @@ -0,0 +1,60 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0390 +2=Hellas Sat 2 (39.0E) + +[DVB] +0=51 +1=10955,V,4444,34,S2,8PSK +2=10960,V,1852,34,DVB-S,QPSK +3=10968,V,4400,34,DVB-S,QPSK +4=10972,V,3300,34,DVB-S,QPSK +5=10977,V,3300,34,DVB-S,QPSK +6=10981,V,3300,34,DVB-S,QPSK +7=10987,V,3333,78,DVB-S,QPSK +8=11012,V,30000,34,S2,8PSK +9=11053,V,30000,34,S2,8PSK +10=11078,V,3333,34,DVB-S,QPSK +11=11083,V,4400,34,DVB-S,QPSK +12=11091,V,1666,34,DVB-S,QPSK +13=11097,H,6111,34,DVB-S,QPSK +14=11104,V,14400,34,DVB-S,QPSK +15=11135,V,30000,23,S2,8PSK +16=11464,H,3224,78,DVB-S,QPSK +17=11473,H,4444,34,S2,8PSK +18=11479,H,3190,56,DVB-S,QPSK +19=11482,H,2905,34,DVB-S,QPSK +20=11486,H,2509,56,S2,8PSK +21=11496,H,2960,34,DVB-S,QPSK +22=11500,H,2960,23,S2,8PSK +23=11503,H,2200,56,DVB-S,QPSK +24=11507,H,2220,34,DVB-S,QPSK +25=11559,H,1950,23,S2,8PSK +26=11565,H,2250,34,DVB-S,QPSK +27=11608,H,2100,34,DVB-S,QPSK +28=11611,H,2100,34,DVB-S,QPSK +29=11618,H,2500,78,DVB-S,QPSK +30=11622,H,2800,56,DVB-S,QPSK +31=11624,V,3255,34,DVB-S,QPSK +32=11625,H,3333,34,DVB-S,QPSK +33=11628,H,2800,56,DVB-S,QPSK +34=11632,H,2800,56,DVB-S,QPSK +35=11649,H,4433,34,DVB-S,QPSK +36=11663,H,5925,34,DVB-S,QPSK +37=11670,H,3720,34,DVB-S,QPSK +38=11679,H,3700,56,DVB-S,QPSK +39=11685,H,3700,34,DVB-S,QPSK +40=11692,H,2300,78,DVB-S,QPSK +41=12524,V,30000,78,DVB-S,QPSK +42=12524,H,30000,78,DVB-S,QPSK +43=12565,V,30000,78,DVB-S,QPSK +44=12565,H,30000,78,DVB-S,QPSK +45=12606,V,30000,78,DVB-S,QPSK +46=12606,H,30000,78,DVB-S,QPSK +47=12647,V,30000,78,DVB-S,QPSK +48=12647,H,30000,34,S2,8PSK +49=12688,V,30000,78,DVB-S,QPSK +50=12688,H,30000,78,DVB-S,QPSK +51=12729,V,30000,78,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0400.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0400.ini new file mode 100644 index 000000000..c1a56c845 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0400.ini @@ -0,0 +1,30 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0400 +2=Express AM7 (40.0E) + +[DVB] +0=21 +1=3557,V,2894,78,DVB-S,QPSK +2=3558,H,3720,34,S2,8PSK +3=3561,V,2905,34,DVB-S,QPSK +4=3563,H,3600,34,S2,8PSK +5=3565,V,2896,34,DVB-S,QPSK +6=3566,H,1850,34,S2,8PSK +7=3569,V,2905,34,DVB-S,QPSK +8=3573,V,2896,34,DVB-S,QPSK +9=3577,V,2905,34,DVB-S,QPSK +10=3581,V,2894,34,DVB-S,QPSK +11=3585,V,2905,34,DVB-S,QPSK +12=3589,V,2905,34,DVB-S,QPSK +13=3592,V,2894,34,DVB-S,QPSK +14=3615,V,14990,34,S2,8PSK +15=3635,V,15280,34,S2,8PSK +16=3665,H,14990,34,S2,8PSK +17=3675,V,33483,78,DVB-S,QPSK +18=3685,H,15284,34,S2,8PSK +19=3725,H,28108,35,S2,QPSK +20=3739,V,1922,78,DVB-S,QPSK +21=3742,V,2893,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0420.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0420.ini new file mode 100644 index 000000000..3d884a86b --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0420.ini @@ -0,0 +1,199 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0420 +2=Türksat 2A/3A/4A (42.0E) + +[DVB] +0=190 +1=10962,H,16666,34,DVB-S,QPSK +2=10970,V,30000,56,S2,8PSK +3=10974,H,2660,56,S2,8PSK +4=10978,H,2660,56,S2,8PSK +5=10982,H,2660,56,S2,8PSK +6=10986,H,2660,56,S2,8PSK +7=10997,H,3333,56,DVB-S,QPSK +8=11001,H,3200,34,DVB-S,QPSK +9=11006,H,2222,56,DVB-S,QPSK +10=11012,V,30000,56,DVB-S,QPSK +11=11014,H,9600,34,DVB-S,QPSK +12=11021,H,2222,34,DVB-S,QPSK +13=11027,H,2222,56,DVB-S,QPSK +14=11031,H,2222,56,DVB-S,QPSK +15=11039,H,4800,23,S2,8PSK +16=11045,H,4800,34,DVB-S,QPSK +17=11053,H,8000,34,DVB-S,QPSK +18=11054,V,30000,34,S2,8PSK +19=11062,H,4820,34,DVB-S,QPSK +20=11068,H,2400,56,DVB-S,QPSK +21=11071,H,2200,56,DVB-S,QPSK +22=11096,V,30000,56,DVB-S,QPSK +23=11096,H,30000,56,DVB-S,QPSK +24=11128,H,3150,56,S2,QPSK +25=11137,H,2960,56,DVB-S,QPSK +26=11138,V,13000,12,S2,QPSK +27=11142,H,2221,56,DVB-S,QPSK +28=11146,H,3330,Auto,DVB-S,QPSK +29=11152,H,2222,Auto,DVB-S,QPSK +30=11156,V,2222,56,DVB-S,QPSK +31=11157,H,3180,56,DVB-S,QPSK +32=11161,V,2222,56,DVB-S,QPSK +33=11161,H,3180,56,DVB-S,QPSK +34=11165,H,3180,56,DVB-S,QPSK +35=11169,V,3333,56,DVB-S,QPSK +36=11169,H,3180,56,DVB-S,QPSK +37=11173,H,3180,56,DVB-S,QPSK +38=11174,V,2200,Auto,DVB-S,QPSK +39=11177,H,2222,56,DVB-S,QPSK +40=11178,V,3600,56,DVB-S,QPSK +41=11180,H,2960,56,S2,8PSK +42=11183,V,2222,56,DVB-S,QPSK +43=11187,H,2080,56,DVB-S,QPSK +44=11191,H,2070,78,DVB-S,QPSK +45=11195,H,4000,56,S2,8PSK +46=11196,V,3200,56,DVB-S,QPSK +47=11458,V,3200,34,S2,8PSK +48=11462,V,3200,34,S2,8PSK +49=11466,V,3200,34,S2,8PSK +50=11470,V,3200,34,S2,8PSK +51=11472,H,23450,56,DVB-S,QPSK +52=11473,V,3200,34,S2,8PSK +53=11477,V,3200,34,S2,8PSK +54=11480,V,3200,34,S2,8PSK +55=11486,V,3200,34,S2,8PSK +56=11490,V,3200,56,DVB-S,QPSK +57=11496,V,2960,56,DVB-S,QPSK +58=11500,V,2222,56,DVB-S,QPSK +59=11504,V,3200,56,DVB-S,QPSK +60=11509,H,30000,23,DVB-S,QPSK +61=11518,V,2222,Auto,DVB-S,QPSK +62=11521,V,2222,Auto,DVB-S,QPSK +63=11524,V,2222,Auto,DVB-S,QPSK +64=11528,V,2960,Auto,DVB-S,QPSK +65=11540,H,3600,56,DVB-S,QPSK +66=11545,H,4425,56,DVB-S,QPSK +67=11550,H,2110,56,S2,QPSK +68=11558,V,30000,23,DVB-S,QPSK +69=11566,H,3200,56,S2,QPSK +70=11573,H,1800,56,DVB-S,QPSK +71=11574,V,2222,56,DVB-S,QPSK +72=11577,H,2222,Auto,DVB-S,QPSK +73=11594,V,25000,23,DVB-S,QPSK +74=11596,H,22000,34,S2,QPSK +75=11622,V,2960,56,DVB-S,QPSK +76=11624,V,2222,56,DVB-S,QPSK +77=11624,H,2960,56,DVB-S,QPSK +78=11626,V,2300,56,DVB-S,QPSK +79=11627,H,4444,56,DVB-S,QPSK +80=11633,V,2222,78,DVB-S,QPSK +81=11637,V,2222,56,DVB-S,QPSK +82=11642,V,2220,56,DVB-S,QPSK +83=11647,H,3333,Auto,DVB-S,QPSK +84=11649,V,2960,Auto,DVB-S,QPSK +85=11651,H,2222,56,DVB-S,QPSK +86=11652,V,2222,56,DVB-S,QPSK +87=11656,V,3200,56,DVB-S,QPSK +88=11660,H,7500,34,S2,8PSK +89=11667,H,2960,56,DVB-S,QPSK +90=11675,H,2222,Auto,DVB-S,QPSK +91=11676,V,24444,34,DVB-S,QPSK +92=11680,H,1666,23,DVB-S,QPSK +93=11683,H,2222,56,DVB-S,QPSK +94=11691,H,2222,56,DVB-S,QPSK +95=11691,V,2222,56,DVB-S,QPSK +96=11727,V,27000,56,DVB-S,QPSK +97=11746,H,27500,56,DVB-S,QPSK +98=11775,V,27500,34,S2,8PSK +99=11794,H,27500,56,DVB-S,QPSK +100=11797,V,8800,56,DVB-S,QPSK +101=11807,V,8000,34,S2,8PSK +102=11821,H,17000,34,DVB-S,QPSK +103=11824,V,8000,34,DVB-S,QPSK +104=11853,H,25000,23,S2,8PSK +105=11855,V,30000,34,DVB-S,QPSK +106=11880,H,20000,23,S2,8PSK +107=11883,V,4800,56,DVB-S,QPSK +108=11916,V,30000,34,DVB-S,QPSK +109=11958,V,27500,56,DVB-S,QPSK +110=11977,H,27500,56,DVB-S,QPSK +111=11986,V,9600,56,DVB-S,QPSK +112=11999,V,11666,23,S2,8PSK +113=12009,V,4444,34,DVB-S,QPSK +114=12015,H,27500,56,DVB-S,QPSK +115=12034,V,27500,56,DVB-S,QPSK +116=12054,H,27500,56,DVB-S,QPSK +117=12073,V,27500,56,S2,8PSK +118=12079,H,6400,56,DVB-S,QPSK +119=12086,H,2960,56,DVB-S,QPSK +120=12090,H,2960,56,DVB-S,QPSK +121=12095,H,4800,56,DVB-S,QPSK +122=12103,H,8333,23,S2,8PSK +123=12123,H,15000,34,S2,8PSK +124=12130,V,27500,56,DVB-S,QPSK +125=12188,V,27500,56,DVB-S,QPSK +126=12196,H,9600,23,S2,8PSK +127=12209,H,10000,34,S2,8PSK +128=12213,V,5833,23,S2,8PSK +129=12219,H,6500,34,DVB-S,QPSK +130=12220,V,4800,56,DVB-S,QPSK +131=12228,V,8400,56,DVB-S,QPSK +132=12238,V,7200,56,DVB-S,QPSK +133=12245,H,27500,56,S2,8PSK +134=12265,V,27500,56,DVB-S,QPSK +135=12303,V,27500,56,DVB-S,QPSK +136=12329,H,6666,23,S2,8PSK +137=12336,H,5520,34,DVB-S,QPSK +138=12344,V,30000,34,DVB-S,QPSK +139=12346,H,9600,34,DVB-S,QPSK +140=12356,H,7100,23,S2,8PSK +141=12379,H,30000,34,DVB-S,QPSK +142=12380,V,27500,34,DVB-S,QPSK +143=12422,V,27500,34,DVB-S,QPSK +144=12422,H,30000,34,DVB-S,QPSK +145=12442,H,2963,78,DVB-S,QPSK +146=12447,H,2400,34,DVB-S,QPSK +147=12455,H,10800,23,S2,8PSK +148=12458,V,30000,34,DVB-S,QPSK +149=12509,H,3333,56,DVB-S,QPSK +150=12513,H,2215,56,DVB-S,QPSK +151=12516,H,2222,56,DVB-S,QPSK +152=12519,H,2222,56,DVB-S,QPSK +153=12524,V,22500,23,DVB-S,QPSK +154=12540,H,30000,34,DVB-S,QPSK +155=12559,V,27500,23,DVB-S,QPSK +156=12562,H,2960,56,S2,8PSK +157=12576,H,2090,78,DVB-S,QPSK +158=12578,H,2222,56,DVB-S,QPSK +159=12588,V,22500,34,DVB-S,QPSK +160=12588,H,3200,56,S2,8PSK +161=12595,H,4800,56,S2,8PSK +162=12605,V,27500,23,DVB-S,QPSK +163=12606,H,2222,78,DVB-S,QPSK +164=12611,H,5924,56,DVB-S,QPSK +165=12617,H,3333,56,DVB-S,QPSK +166=12620,V,2244,56,DVB-S,QPSK +167=12621,H,3333,56,DVB-S,QPSK +168=12624,V,2170,56,DVB-S,QPSK +169=12627,V,2278,78,DVB-S,QPSK +170=12632,V,2220,78,DVB-S,8PSK +171=12635,V,2240,56,S2,8PSK +172=12639,V,5000,56,S2,8PSK +173=12641,H,30000,23,DVB-S,QPSK +174=12646,V,4000,56,S2,8PSK +175=12651,V,5000,34,S2,8PSK +176=12658,V,2222,56,DVB-S,QPSK +177=12673,V,9600,34,DVB-S,QPSK +178=12685,H,30000,34,DVB-S,QPSK +179=12687,V,11400,34,DVB-S,QPSK +180=12699,V,7700,56,S2,QPSK +181=12711,V,2278,78,DVB-S,QPSK +182=12714,V,2960,56,DVB-S,QPSK +183=12718,V,2278,56,DVB-S,QPSK +184=12721,V,2278,78,DVB-S,QPSK +185=12723,V,2222,56,DVB-S,QPSK +186=12728,V,2222,56,DVB-S,QPSK +187=12729,H,27500,23,DVB-S,QPSK +188=12731,V,2222,56,DVB-S,QPSK +189=12746,V,2222,56,DVB-S,QPSK +190=18669,H,22500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0435.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0435.ini new file mode 100644 index 000000000..a7e5fdb79 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0435.ini @@ -0,0 +1,35 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0435 +2=Astra 2G (43.5E) + +[DVB] +0=26 +1=10964,H,22000,56,DVB-S,QPSK +2=10994,H,22000,56,DVB-S,QPSK +3=11023,H,23000,23,S2,8PSK +4=11053,H,23000,34,S2,8PSK +5=11068,V,23000,23,S2,8PSK +6=11082,H,22000,56,DVB-S,QPSK +7=11097,V,23000,23,S2,8PSK +8=11112,H,22000,56,DVB-S,QPSK +9=11126,V,22000,56,DVB-S,QPSK +10=11141,H,22000,56,DVB-S,QPSK +11=11171,H,22000,56,DVB-S,QPSK +12=11224,V,27500,23,DVB-S,QPSK +13=11224,H,27500,23,DVB-S,QPSK +14=11264,V,27500,23,DVB-S,QPSK +15=11264,H,27500,23,DVB-S,QPSK +16=11464,H,22000,56,DVB-S,QPSK +17=11479,V,22000,56,DVB-S,QPSK +18=11509,V,22000,56,DVB-S,QPSK +19=11523,H,22000,56,DVB-S,QPSK +20=11538,V,23000,23,S2,8PSK +21=11553,H,22000,56,DVB-S,QPSK +22=11568,V,22000,56,DVB-S,QPSK +23=11582,H,22000,56,DVB-S,QPSK +24=11597,V,22000,56,DVB-S,QPSK +25=11671,H,22000,56,DVB-S,QPSK +26=11686,V,22000,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0450.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0450.ini new file mode 100644 index 000000000..0737fb4f1 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0450.ini @@ -0,0 +1,23 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0450 +2=Intelsat 12 (45.0E) + +[DVB] +0=14 +1=11451,H,3254,78,DVB-S,QPSK +2=11468,V,27689,56,DVB-S,8PSK +3=11493,V,2960,78,DVB-S,QPSK +4=11506,V,1808,34,DVB-S,QPSK +5=11509,V,10000,23,S2,8PSK +6=11517,V,2960,78,DVB-S,QPSK +7=11523,V,5787,34,DVB-S,QPSK +8=11550,V,28800,35,S2,8PSK +9=11591,V,27689,56,DVB-S,8PSK +10=11632,V,27689,56,DVB-S,8PSK +11=11673,V,27689,56,DVB-S,8PSK +12=12518,H,14236,34,S2,8PSK +13=12568,V,8335,23,S2,8PSK +14=12580,H,6600,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0460.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0460.ini new file mode 100644 index 000000000..7611715ec --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0460.ini @@ -0,0 +1,49 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0460 +2=AzerSpace 1/Africasat 1a (46.0E) + +[DVB] +0=40 +1=3730,V,30000,34,S2,8PSK +2=3753,V,30000,23,S2,8PSK +3=3833,V,1077,23,S2,8PSK +4=3953,V,1180,34,S2,8PSK +5=4016,V,1200,34,S2,8PSK +6=4021,V,1180,34,S2,8PSK +7=4024,V,1190,34,S2,8PSK +8=4026,V,1200,34,S2,8PSK +9=4028,V,1166,34,S2,8PSK +10=4105,H,1320,56,S2,QPSK +11=4145,H,6666,23,DVB-S,QPSK +12=10961,V,7500,23,S2,8PSK +13=10968,V,5000,23,S2,8PSK +14=10973,H,2221,56,DVB-S,QPSK +15=10979,V,7500,56,S2,8PSK +16=10987,V,7500,56,S2,8PSK +17=10988,H,2400,56,S2,8PSK +18=10991,H,1536,56,DVB-S,QPSK +19=10999,V,3570,56,DVB-S,QPSK +20=11002,V,2222,56,DVB-S,QPSK +21=11005,V,2222,56,DVB-S,QPSK +22=11008,V,2222,56,DVB-S,QPSK +23=11011,V,2222,56,DVB-S,QPSK +24=11014,V,2222,56,DVB-S,QPSK +25=11015,H,30000,56,DVB-S,QPSK +26=11024,V,12700,56,DVB-S,QPSK +27=11038,H,3333,56,S2,8PSK +28=11039,V,3700,78,DVB-S,QPSK +29=11047,V,10000,34,DVB-S,QPSK +30=11058,H,7500,56,DVB-S,QPSK +31=11061,V,3333,34,DVB-S,QPSK +32=11067,H,7500,56,S2,8PSK +33=11073,H,3333,78,DVB-S,QPSK +34=11077,V,2500,56,S2,8PSK +35=11095,H,27500,56,DVB-S,QPSK +36=11110,V,2222,56,DVB-S,QPSK +37=11134,H,27500,56,DVB-S,QPSK +38=11135,V,28800,56,S2,8PSK +39=11175,V,28800,56,S2,8PSK +40=11175,H,27500,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0475.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0475.ini new file mode 100644 index 000000000..bc671123f --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0475.ini @@ -0,0 +1,31 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0475 +2=Intelsat 10 (47.5E) + +[DVB] +0=22 +1=11475,V,2700,34,DVB-S,QPSK +2=11531,V,2755,34,DVB-S,QPSK +3=11548,V,2000,56,S2,QPSK +4=11606,V,2200,56,S2,8PSK +5=11639,V,1900,78,DVB-S,QPSK +6=11642,V,1480,34,S2,8PSK +7=11644,V,1450,56,DVB-S,QPSK +8=11647,V,3200,34,DVB-S,QPSK +9=11654,V,1450,56,DVB-S,QPSK +10=11665,V,2000,34,DVB-S,QPSK +11=11670,V,2123,34,DVB-S,QPSK +12=11675,V,1900,78,DVB-S,QPSK +13=12517,H,6660,78,DVB-S,QPSK +14=12532,V,14395,34,S2,8PSK +15=12548,H,6111,Auto,DVB-S,QPSK +16=12564,H,3750,56,S2,QPSK +17=12574,H,6111,34,DVB-S,QPSK +18=12602,V,10112,12,S2,QPSK +19=12673,H,7200,34,DVB-S,QPSK +20=12691,H,14400,34,S2,8PSK +21=12712,H,13200,34,DVB-S,QPSK +22=12721,V,10000,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0480.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0480.ini new file mode 100644 index 000000000..fa955de65 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0480.ini @@ -0,0 +1,10 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0480 +2=Afghansat 1 (48.0E) + +[DVB] +0=1 +1=11293,V,27500,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0490.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0490.ini new file mode 100644 index 000000000..a85ad11b9 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0490.ini @@ -0,0 +1,30 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0490 +2=Yamal 202 (49.0E) + +[DVB] +0=21 +1=3635,H,3230,34,DVB-S,QPSK +2=3640,H,3215,34,DVB-S,QPSK +3=3644,H,3230,34,DVB-S,QPSK +4=3660,H,3333,34,DVB-S,QPSK +5=3714,H,8888,34,DVB-S,QPSK +6=3735,V,3219,34,DVB-S,QPSK +7=3743,H,34075,34,DVB-S,QPSK +8=3752,V,3230,34,DVB-S,QPSK +9=3781,H,1900,34,DVB-S,QPSK +10=3793,H,1800,34,DVB-S,QPSK +11=3826,H,2960,34,DVB-S,QPSK +12=3832,V,1500,34,DVB-S,QPSK +13=3866,H,3310,Auto,DVB-S,QPSK +14=3908,H,1356,12,DVB-S,QPSK +15=3936,H,3230,34,DVB-S,QPSK +16=3941,H,4000,34,DVB-S,QPSK +17=3950,H,3500,34,S2,8PSK +18=3961,H,8570,34,DVB-S,QPSK +19=3970,H,4275,34,DVB-S,QPSK +20=3976,H,4285,34,DVB-S,QPSK +21=4078,H,14400,89,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0505.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0505.ini new file mode 100644 index 000000000..5bbfe6297 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0505.ini @@ -0,0 +1,11 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0505 +2=NSS 5 (50.5E) + +[DVB] +0=2 +1=4172,V,13330,34,DVB-S,QPSK +2=12710,V,26670,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0510.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0510.ini new file mode 100644 index 000000000..355d0e5b5 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0510.ini @@ -0,0 +1,28 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0510 +2=Express AM6 (51.0E) + +[DVB] +0=19 +1=3675,V,33483,78,DVB-S,QPSK +2=3708,H,4280,78,DVB-S,QPSK +3=10974,H,8150,34,DVB-S,QPSK +4=10990,V,3111,34,DVB-S,QPSK +5=10995,H,3255,34,DVB-S,QPSK +6=11001,H,4160,56,S2,QPSK +7=11044,V,44950,34,DVB-S,QPSK +8=11471,H,2400,34,DVB-S,QPSK +9=11474,H,4666,34,DVB-S,QPSK +10=11504,H,2200,56,DVB-S,QPSK +11=11506,H,1481,34,DVB-S,QPSK +12=11520,H,4800,56,DVB-S,QPSK +13=12511,V,2170,34,DVB-S,QPSK +14=12528,H,2100,34,S2,8PSK +15=12545,H,3000,23,DVB-S,QPSK +16=12572,H,1320,78,DVB-S,QPSK +17=12594,V,2050,34,DVB-S,QPSK +18=12594,H,2050,34,DVB-S,QPSK +19=12631,V,3000,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0520.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0520.ini new file mode 100644 index 000000000..8631604aa --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0520.ini @@ -0,0 +1,11 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0520 +2=TurkmenÄlem52E/MonacoSat (52.0E) + +[DVB] +0=2 +1=12265,V,27500,23,S2,QPSK +2=12303,V,27500,23,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0525.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0525.ini new file mode 100644 index 000000000..2eb001a81 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0525.ini @@ -0,0 +1,24 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0525 +2=Y1A (52.5E) + +[DVB] +0=15 +1=11747,H,27500,89,S2,QPSK +2=11766,V,27500,56,DVB-S,QPSK +3=11785,H,27500,56,DVB-S,QPSK +4=11823,H,27500,89,S2,QPSK +5=11862,H,27500,56,DVB-S,QPSK +6=11881,V,27500,56,DVB-S,QPSK +7=11900,H,27500,56,DVB-S,QPSK +8=11938,H,27500,56,DVB-S,QPSK +9=11958,V,27500,78,DVB-S,QPSK +10=11977,H,27500,89,S2,QPSK +11=11996,V,27500,56,DVB-S,QPSK +12=12015,H,27500,56,DVB-S,QPSK +13=12034,V,27500,23,S2,8PSK +14=12073,V,27500,78,DVB-S,QPSK +15=12092,H,27500,89,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0530.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0530.ini new file mode 100644 index 000000000..965c41f15 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0530.ini @@ -0,0 +1,28 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0530 +2=Express AM6 (53.0E) + +[DVB] +0=19 +1=3675,V,33483,78,DVB-S,QPSK +2=3708,H,4280,78,DVB-S,QPSK +3=10974,H,8150,34,DVB-S,QPSK +4=10990,V,3111,34,DVB-S,QPSK +5=10995,H,3255,34,DVB-S,QPSK +6=11001,H,4160,56,S2,QPSK +7=11044,V,44950,34,DVB-S,QPSK +8=11471,H,2400,34,DVB-S,QPSK +9=11474,H,4666,34,DVB-S,QPSK +10=11504,H,2200,56,DVB-S,QPSK +11=11506,H,1481,34,DVB-S,QPSK +12=11520,H,4800,56,DVB-S,QPSK +13=12511,V,2170,34,DVB-S,QPSK +14=12528,H,2100,34,S2,8PSK +15=12545,H,3000,23,DVB-S,QPSK +16=12572,H,1320,78,DVB-S,QPSK +17=12594,H,2050,34,DVB-S,QPSK +18=12594,V,2050,34,DVB-S,QPSK +19=12631,V,3000,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0549.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0549.ini new file mode 100644 index 000000000..b2fdf5a5c --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0549.ini @@ -0,0 +1,37 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0549 +2=G-Sat 8/Yamal 402 (54.9E) + +[DVB] +0=28 +1=10845,V,32727,Auto,S2,QPSK +2=10962,V,5926,34,DVB-S,QPSK +3=10968,V,2951,Auto,DVB-S,QPSK +4=10976,H,2200,35,S2,8PSK +5=11008,V,3600,34,S2,QPSK +6=11045,V,40000,23,DVB-S,QPSK +7=11156,V,22000,12,S2,QPSK +8=11186,V,6642,34,S2,8PSK +9=11215,H,13000,12,S2,QPSK +10=11225,V,30000,89,S2,8PSK +11=11232,H,17000,34,S2,QPSK +12=11265,V,30000,34,DVB-S,QPSK +13=11305,V,10000,34,S2,QPSK +14=11345,V,30000,34,S2,8PSK +15=11425,V,30000,12,S2,QPSK +16=11486,V,8000,12,S2,QPSK +17=11531,H,3015,34,DVB-S,QPSK +18=11554,V,3800,56,DVB-S,QPSK +19=11686,H,3333,23,DVB-S,QPSK +20=12522,V,27500,34,S2,8PSK +21=12531,H,2500,56,S2,QPSK +22=12604,V,16080,56,DVB-S,QPSK +23=12630,H,3333,34,DVB-S,QPSK +24=12674,V,14940,34,S2,8PSK +25=12685,H,30000,34,S2,QPSK +26=12694,V,15282,34,S2,8PSK +27=12720,H,30000,34,S2,QPSK +28=12732,V,9557,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0560.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0560.ini new file mode 100644 index 000000000..bed5b87b5 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0560.ini @@ -0,0 +1,31 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0560 +2=Express AT1 (56.0E) + +[DVB] +0=22 +1=11727,H,27500,34,S2,8PSK +2=11881,H,27500,34,S2,8PSK +3=11919,H,27500,34,S2,8PSK +4=11958,H,27500,34,S2,8PSK +5=11996,H,27500,34,S2,8PSK +6=12034,H,27500,34,S2,8PSK +7=12073,H,27500,34,S2,8PSK +8=12111,H,27500,34,S2,8PSK +9=12130,V,27500,34,S2,8PSK +10=12149,H,27500,34,DVB-S,QPSK +11=12169,V,27500,56,S2,8PSK +12=12188,H,27500,34,DVB-S,QPSK +13=12226,H,27500,34,DVB-S,QPSK +14=12245,V,27500,56,S2,8PSK +15=12265,H,27500,34,S2,8PSK +16=12284,V,27500,34,DVB-S,QPSK +17=12303,H,27500,34,S2,8PSK +18=12322,V,27500,56,S2,8PSK +19=12341,H,27500,34,S2,8PSK +20=12399,V,27500,56,S2,8PSK +21=12437,V,27500,56,DVB-S,QPSK +22=12476,V,27500,56,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0570.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0570.ini new file mode 100644 index 000000000..27df36311 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0570.ini @@ -0,0 +1,67 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0570 +2=NSS 12 (57.0E) + +[DVB] +0=58 +1=3632,V,2625,23,DVB-S,QPSK +2=3636,V,1762,23,DVB-S,QPSK +3=3661,H,8882,34,DVB-S,QPSK +4=3800,V,20000,35,S2,QPSK +5=3912,V,2222,23,DVB-S,QPSK +6=4026,H,2963,34,DVB-S,QPSK +7=4031,H,3689,34,DVB-S,QPSK +8=4055,V,26000,34,DVB-S,QPSK +9=4061,H,3500,12,DVB-S,QPSK +10=4065,H,3500,12,DVB-S,QPSK +11=4069,V,3500,12,DVB-S,QPSK +12=4071,H,3500,12,DVB-S,QPSK +13=4074,V,3500,12,DVB-S,QPSK +14=4079,H,2000,78,DVB-S,QPSK +15=4082,H,2000,12,DVB-S,QPSK +16=4147,V,9246,56,S2,QPSK +17=11007,H,4883,12,DVB-S,QPSK +18=11039,V,3100,34,DVB-S,QPSK +19=11042,H,2600,34,DVB-S,QPSK +20=11051,H,1230,34,DVB-S,QPSK +21=11105,H,45000,45,S2,QPSK +22=11129,V,2200,34,DVB-S,QPSK +23=11134,V,2200,34,S2,QPSK +24=11140,V,2200,56,S2,8PSK +25=11181,V,2400,56,S2,8PSK +26=11184,V,1211,34,S2,QPSK +27=11186,V,2290,34,DVB-S,QPSK +28=11189,V,1775,34,S2,QPSK +29=11191,V,1452,34,S2,QPSK +30=11460,H,3500,23,DVB-S,QPSK +31=11461,H,3500,23,DVB-S,QPSK +32=11464,H,3100,34,DVB-S,QPSK +33=11469,H,3100,34,DVB-S,QPSK +34=11473,H,3100,34,DVB-S,QPSK +35=11499,H,4090,23,DVB-S,QPSK +36=11503,H,2880,12,DVB-S,QPSK +37=11509,H,3333,23,DVB-S,QPSK +38=11510,H,3330,Auto,DVB-S,QPSK +39=11520,H,2222,56,S2,8PSK +40=11554,H,3300,34,S2,QPSK +41=11598,H,4200,78,DVB-S,QPSK +42=11604,H,4200,78,DVB-S,QPSK +43=11605,H,45000,45,S2,QPSK +44=11606,V,1852,56,S2,8PSK +45=11645,V,3333,34,DVB-S,QPSK +46=12292,V,2500,34,DVB-S,QPSK +47=12306,V,2000,34,DVB-S,QPSK +48=12313,V,2123,56,DVB-S,QPSK +49=12316,V,2123,34,DVB-S,QPSK +50=12413,V,1600,34,DVB-S,QPSK +51=12429,V,3500,34,S2,8PSK +52=12554,V,1800,34,DVB-S,QPSK +53=12556,V,1600,34,DVB-S,QPSK +54=12559,V,1600,34,DVB-S,QPSK +55=12571,V,2500,34,DVB-S,QPSK +56=12579,V,4000,34,DVB-S,QPSK +57=12621,V,2000,34,DVB-S,QPSK +58=12625,V,2200,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0600.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0600.ini new file mode 100644 index 000000000..1a711cf26 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0600.ini @@ -0,0 +1,48 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0600 +2=Intelsat 904 (60.0E) + +[DVB] +0=39 +1=3676,H,3617,34,DVB-S,QPSK +2=3698,V,1666,56,S2,QPSK +3=3718,H,13333,78,DVB-S,QPSK +4=3730,H,2815,34,DVB-S,QPSK +5=3740,H,10750,56,DVB-S,QPSK +6=3744,V,18315,56,S2,QPSK +7=3756,V,2315,34,DVB-S,QPSK +8=3759,V,2315,34,DVB-S,QPSK +9=3765,V,5000,34,DVB-S,QPSK +10=3768,V,2067,34,S2,8PSK +11=3775,V,9361,12,S2,8PSK +12=3964,V,5000,34,DVB-S,QPSK +13=4168,V,14240,34,S2,8PSK +14=4185,V,2895,34,DVB-S,QPSK +15=4194,H,1594,Auto,DVB-S,QPSK +16=4194,V,6111,34,DVB-S,QPSK +17=10957,V,3700,34,DVB-S,QPSK +18=10962,V,3730,34,DVB-S,QPSK +19=10964,H,3327,34,DVB-S,QPSK +20=10967,V,2573,78,DVB-S,QPSK +21=10973,V,3330,34,DVB-S,QPSK +22=10977,V,3225,34,DVB-S,QPSK +23=11020,V,3700,34,DVB-S,QPSK +24=11460,V,3730,34,DVB-S,QPSK +25=11464,V,1000,78,DVB-S,QPSK +26=11473,V,1324,56,S2,8PSK +27=11475,V,1324,56,S2,8PSK +28=11477,V,1324,56,S2,8PSK +29=11481,V,2645,34,S2,8PSK +30=11484,V,2645,78,DVB-S,QPSK +31=11490,V,5788,34,DVB-S,QPSK +32=11497,V,4284,78,DVB-S,QPSK +33=11502,V,4284,78,DVB-S,QPSK +34=11555,H,30000,34,S2,8PSK +35=11567,V,10000,78,DVB-S,QPSK +36=11595,H,29270,56,DVB-S,QPSK +37=11622,V,8527,34,S2,8PSK +38=11635,H,30000,34,S2,8PSK +39=11675,H,30000,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0620.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0620.ini new file mode 100644 index 000000000..ae5cf34bf --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0620.ini @@ -0,0 +1,70 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0620 +2=Intelsat 902 (62.0E) + +[DVB] +0=61 +1=3715,H,6111,34,DVB-S,QPSK +2=3727,V,34286,89,S2,8PSK +3=3763,V,34286,89,S2,8PSK +4=3807,V,34286,89,S2,8PSK +5=3814,H,4213,35,S2,QPSK +6=3843,V,34286,89,S2,8PSK +7=3853,H,1445,Auto,DVB-S,QPSK +8=3857,H,2465,Auto,DVB-S,QPSK +9=3860,H,3100,34,DVB-S,QPSK +10=3967,H,9326,Auto,DVB-S,QPSK +11=3992,H,26000,56,DVB-S,QPSK +12=4047,V,4444,12,DVB-S,QPSK +13=4055,V,34286,89,S2,8PSK +14=4107,H,12780,78,DVB-S,QPSK +15=10952,V,2700,78,DVB-S,QPSK +16=10961,V,3000,78,DVB-S,QPSK +17=10967,V,3000,78,DVB-S,QPSK +18=10975,V,3200,34,S2,8PSK +19=10978,V,1591,56,S2,8PSK +20=10982,V,4800,34,S2,8PSK +21=10986,V,1600,34,S2,8PSK +22=10989,V,3200,34,S2,8PSK +23=10992,V,1600,34,S2,8PSK +24=10996,V,4800,34,S2,8PSK +25=10998,H,3333,34,DVB-S,QPSK +26=11003,V,4800,34,S2,8PSK +27=11008,V,3200,34,S2,8PSK +28=11011,V,1600,34,S2,8PSK +29=11015,V,4800,34,S2,8PSK +30=11019,V,1600,34,S2,8PSK +31=11022,V,3200,34,S2,8PSK +32=11025,V,1600,34,S2,8PSK +33=11029,V,4820,34,S2,8PSK +34=11036,H,3000,34,DVB-S,QPSK +35=11043,H,2300,78,DVB-S,QPSK +36=11058,V,6111,34,DVB-S,QPSK +37=11063,H,3100,34,DVB-S,QPSK +38=11074,H,2300,78,DVB-S,QPSK +39=11082,H,3333,34,DVB-S,QPSK +40=11085,H,2700,78,DVB-S,QPSK +41=11088,H,2800,78,DVB-S,QPSK +42=11091,H,3400,34,DVB-S,QPSK +43=11122,H,2600,34,S2,8PSK +44=11165,H,2300,78,DVB-S,QPSK +45=11168,H,2500,78,DVB-S,QPSK +46=11172,H,2190,78,DVB-S,QPSK +47=11467,H,12500,34,S2,8PSK +48=11509,H,7500,34,S2,8PSK +49=11513,V,2300,34,S2,8PSK +50=11518,H,7500,34,S2,8PSK +51=11522,V,2200,78,DVB-S,QPSK +52=11555,V,30000,23,S2,8PSK +53=11555,H,28900,34,S2,8PSK +54=11587,V,5632,34,DVB-S,QPSK +55=11595,H,31003,78,DVB-S,QPSK +56=11625,V,1550,78,DVB-S,QPSK +57=11662,H,7500,56,S2,QPSK +58=11674,H,2200,78,DVB-S,QPSK +59=11680,H,10000,34,S2,8PSK +60=11683,V,15000,56,S2,8PSK +61=11688,H,7500,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0642.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0642.ini new file mode 100644 index 000000000..324d99e83 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0642.ini @@ -0,0 +1,28 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0642 +2=Intelsat 906 (64.2E) + +[DVB] +0=19 +1=3644,V,8545,23,DVB-S,QPSK +2=3654,V,5632,34,DVB-S,QPSK +3=3721,V,4882,23,DVB-S,QPSK +4=3760,H,2790,78,DVB-S,QPSK +5=3765,V,1413,34,S2,QPSK +6=3884,H,4900,12,DVB-S,QPSK +7=3893,H,3072,12,DVB-S,QPSK +8=3900,H,3800,12,DVB-S,QPSK +9=4039,H,2034,23,DVB-S,QPSK +10=4044,H,2848,Auto,DVB-S,QPSK +11=4066,H,2848,23,DVB-S,QPSK +12=4094,H,3680,23,DVB-S,QPSK +13=4185,V,2532,34,DVB-S,QPSK +14=10990,V,53000,34,S2,QPSK +15=11127,V,4000,34,DVB-S,QPSK +16=11134,V,4000,34,DVB-S,QPSK +17=11140,V,4000,34,DVB-S,QPSK +18=11146,V,4000,34,DVB-S,QPSK +19=11152,V,4000,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0650.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0650.ini new file mode 100644 index 000000000..81021a0b2 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0650.ini @@ -0,0 +1,15 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0650 +2=Amos 4 (65.0E) + +[DVB] +0=6 +1=10736,V,45000,23,S2,QPSK +2=10790,V,45000,23,S2,QPSK +3=10861,V,45000,12,S2,QPSK +4=10915,V,45000,12,S2,QPSK +5=11236,V,45000,12,S2,QPSK +6=11290,V,45000,12,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0660.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0660.ini new file mode 100644 index 000000000..a118dfa38 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0660.ini @@ -0,0 +1,39 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0660 +2=Intelsat 17 (66.0E) + +[DVB] +0=30 +1=3845,H,30000,34,S2,8PSK +2=3845,V,27692,78,DVB-S,QPSK +3=3876,H,14300,34,S2,8PSK +4=3885,V,30000,34,S2,8PSK +5=3894,H,13840,56,S2,8PSK +6=3914,H,11200,34,S2,8PSK +7=3925,V,30000,34,S2,8PSK +8=3966,H,14400,23,S2,8PSK +9=3968,V,8800,23,S2,8PSK +10=3984,H,14400,23,S2,8PSK +11=4006,H,14400,23,S2,8PSK +12=4015,V,30000,34,S2,8PSK +13=4024,H,14400,23,S2,8PSK +14=4121,H,7200,34,S2,QPSK +15=10962,H,3100,Auto,DVB-S,QPSK +16=11011,H,2811,34,DVB-S,QPSK +17=11498,H,2400,Auto,DVB-S,QPSK +18=11505,H,13271,34,DVB-S,QPSK +19=11515,H,1735,Auto,DVB-S,QPSK +20=11519,H,3255,34,DVB-S,QPSK +21=11527,H,3094,Auto,DVB-S,QPSK +22=11556,H,20129,12,S2,QPSK +23=12602,H,2000,56,S2,QPSK +24=12605,H,1025,78,DVB-S,QPSK +25=12613,H,3965,78,DVB-S,QPSK +26=12648,H,3900,78,DVB-S,QPSK +27=12652,H,3900,78,DVB-S,QPSK +28=12687,H,3400,78,DVB-S,QPSK +29=12703,H,3400,78,DVB-S,QPSK +30=12708,H,3400,78,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0685.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0685.ini new file mode 100644 index 000000000..7c2cab681 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0685.ini @@ -0,0 +1,110 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0685 +2=Intelsat 20 (68.5E) + +[DVB] +0=101 +1=3708,V,7900,34,S2,8PSK +2=3712,H,14454,34,S2,QPSK +3=3723,V,9600,34,S2,8PSK +4=3732,V,7200,34,S2,8PSK +5=3739,H,26590,12,DVB-S,QPSK +6=3742,V,7000,34,S2,8PSK +7=3752,V,9300,34,S2,8PSK +8=3765,V,2950,56,DVB-S,QPSK +9=3774,V,2944,34,DVB-S,QPSK +10=3777,V,2940,34,DVB-S,QPSK +11=3782,V,2965,34,DVB-S,QPSK +12=3790,H,7200,34,S2,8PSK +13=3790,V,1681,34,S2,QPSK +14=3796,V,7300,34,S2,8PSK +15=3802,H,10000,34,DVB-S,QPSK +16=3802,V,1954,34,DVB-S,QPSK +17=3810,H,3312,23,DVB-S,QPSK +18=3828,V,7200,23,S2,8PSK +19=3836,V,7200,23,S2,8PSK +20=3838,H,16296,34,DVB-S,QPSK +21=3845,V,6111,34,DVB-S,QPSK +22=3854,V,7500,34,DVB-S,QPSK +23=3863,V,6111,34,DVB-S,QPSK +24=3867,V,9875,34,S2,8PSK +25=3873,V,7200,34,DVB-S,QPSK +26=3887,V,2960,34,DVB-S,QPSK +27=3891,V,1954,56,DVB-S,QPSK +28=3900,H,22222,56,DVB-S,QPSK +29=3900,V,10370,34,DVB-S,QPSK +30=3913,V,6510,34,DVB-S,QPSK +31=3919,H,1600,56,S2,QPSK +32=3922,H,3200,56,S2,QPSK +33=3922,V,7000,56,S2,QPSK +34=3930,H,9600,56,S2,QPSK +35=3940,V,7200,34,S2,QPSK +36=3974,H,19500,34,DVB-S,QPSK +37=3974,V,19850,34,DVB-S,QPSK +38=3994,H,4000,23,DVB-S,QPSK +39=3996,V,6666,34,DVB-S,QPSK +40=4000,H,6500,34,DVB-S,QPSK +41=4003,V,7200,34,S2,8PSK +42=4006,H,2990,34,DVB-S,QPSK +43=4013,H,7200,34,S2,8PSK +44=4013,V,6111,34,DVB-S,QPSK +45=4034,H,20500,23,DVB-S,QPSK +46=4036,V,21600,56,S2,QPSK +47=4054,V,4400,34,DVB-S,QPSK +48=4059,V,3529,34,DVB-S,QPSK +49=4064,H,19850,78,DVB-S,QPSK +50=4064,V,4400,34,DVB-S,QPSK +51=4070,V,4340,34,DVB-S,QPSK +52=4076,V,3600,34,S2,8PSK +53=4085,V,7020,34,DVB-S,QPSK +54=4090,H,14368,34,S2,8PSK +55=4092,V,2963,34,DVB-S,QPSK +56=4103,H,5720,34,DVB-S,QPSK +57=4103,V,7800,34,S2,8PSK +58=4117,H,3333,23,DVB-S,QPSK +59=4118,V,8800,Auto,S2,8PSK +60=4130,H,6400,34,S2,8PSK +61=4130,V,10369,34,DVB-S,QPSK +62=4150,H,15000,23,S2,8PSK +63=4155,V,22500,56,S2,8PSK +64=4163,H,7200,34,S2,QPSK +65=4184,V,21600,56,S2,8PSK +66=10970,V,30000,56,DVB-S,QPSK +67=10970,H,30000,56,DVB-S,QPSK +68=11010,V,30000,56,DVB-S,QPSK +69=11010,H,30000,56,DVB-S,QPSK +70=11014,V,3750,34,S2,8PSK +71=11050,V,30000,23,S2,8PSK +72=11050,H,30000,56,DVB-S,QPSK +73=11090,V,30000,56,DVB-S,QPSK +74=11090,H,30000,56,DVB-S,QPSK +75=11092,H,1024,34,DVB-S,QPSK +76=11130,V,30000,56,DVB-S,QPSK +77=11130,H,30000,56,DVB-S,QPSK +78=11170,V,28800,56,S2,8PSK +79=11170,H,30000,56,DVB-S,QPSK +80=11474,H,30000,56,DVB-S,QPSK +81=11477,V,2170,34,DVB-S,QPSK +82=11514,V,28750,12,S2,QPSK +83=11514,H,30000,23,S2,8PSK +84=11554,V,30000,23,S2,8PSK +85=11554,H,30000,23,S2,8PSK +86=11594,V,27500,56,DVB-S,QPSK +87=11594,H,30000,56,DVB-S,QPSK +88=11634,V,30000,56,DVB-S,QPSK +89=11634,H,30000,23,S2,8PSK +90=11674,H,30000,56,DVB-S,QPSK +91=12522,V,27500,34,DVB-S,QPSK +92=12562,H,26657,23,DVB-S,QPSK +93=12567,V,3100,34,DVB-S,QPSK +94=12574,V,9700,12,DVB-S,QPSK +95=12602,V,26657,23,DVB-S,QPSK +96=12638,V,4690,34,DVB-S,QPSK +97=12657,V,4883,34,DVB-S,QPSK +98=12682,V,30000,23,DVB-S,QPSK +99=12682,H,26657,23,DVB-S,QPSK +100=12722,V,26657,12,DVB-S,QPSK +101=12722,H,26657,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0705.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0705.ini new file mode 100644 index 000000000..0af8237c9 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0705.ini @@ -0,0 +1,20 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0705 +2=Eutelsat 70B (70.5E) + +[DVB] +0=11 +1=11092,V,1028,34,DVB-S,QPSK +2=11211,H,5110,12,DVB-S,QPSK +3=11213,V,16667,56,S2,8PSK +4=11255,V,4832,Auto,S2,QPSK +5=11294,H,44900,23,S2,QPSK +6=11356,V,44900,34,S2,QPSK +7=11477,V,2170,12,S2,QPSK +8=11490,V,2150,23,S2,QPSK +9=11520,V,3332,12,S2,QPSK +10=11555,H,3034,12,S2,QPSK +11=11565,H,11401,Auto,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0721.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0721.ini new file mode 100644 index 000000000..c25a6ecf5 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0721.ini @@ -0,0 +1,14 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0721 +2=Intelsat 22 (72.1E) + +[DVB] +0=5 +1=3724,H,16073,34,S2,8PSK +2=3735,H,2325,23,S2,8PSK +3=3754,H,7500,34,DVB-S,QPSK +4=4067,V,6111,34,DVB-S,QPSK +5=12541,H,2300,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0740.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0740.ini new file mode 100644 index 000000000..91356547c --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0740.ini @@ -0,0 +1,47 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0740 +2=Insat 3C/4CR (74.0E) + +[DVB] +0=38 +1=3740,V,2500,34,DVB-S,QPSK +2=3745,V,2500,34,DVB-S,QPSK +3=3752,V,2500,34,DVB-S,QPSK +4=3756,V,2500,34,DVB-S,QPSK +5=3776,V,3800,34,DVB-S,QPSK +6=3780,H,6250,34,DVB-S,QPSK +7=3781,V,2000,34,DVB-S,QPSK +8=3788,V,3800,34,DVB-S,QPSK +9=3796,V,3800,34,DVB-S,QPSK +10=3801,V,3800,34,DVB-S,QPSK +11=3868,H,2250,34,DVB-S,QPSK +12=3871,H,2250,34,DVB-S,QPSK +13=3874,H,1923,34,DVB-S,QPSK +14=3879,H,2200,34,DVB-S,QPSK +15=3884,H,2250,34,DVB-S,QPSK +16=3889,H,2250,34,DVB-S,QPSK +17=3895,H,2000,34,DVB-S,QPSK +18=3898,H,1500,34,DVB-S,QPSK +19=3901,H,1500,34,DVB-S,QPSK +20=4165,H,26000,12,DVB-S,QPSK +21=11513,H,3000,23,DVB-S,QPSK +22=11520,H,1700,34,DVB-S,QPSK +23=11523,H,1700,34,DVB-S,QPSK +24=11526,H,1700,34,DVB-S,QPSK +25=11578,H,5000,78,DVB-S,QPSK +26=11587,V,4000,78,DVB-S,QPSK +27=11592,V,2000,34,DVB-S,QPSK +28=11597,H,2000,34,DVB-S,QPSK +29=11599,V,1800,34,DVB-S,QPSK +30=11603,V,2000,34,DVB-S,QPSK +31=11607,V,2000,34,DVB-S,QPSK +32=11656,V,3333,34,DVB-S,QPSK +33=11667,V,3000,34,DVB-S,QPSK +34=11672,V,2500,34,DVB-S,QPSK +35=11680,H,1400,34,DVB-S,QPSK +36=11680,V,2965,34,DVB-S,QPSK +37=11683,H,1600,34,DVB-S,QPSK +38=11685,V,2900,78,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0750.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0750.ini new file mode 100644 index 000000000..8cdc07590 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0750.ini @@ -0,0 +1,44 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0750 +2=ABS 2 (75.0E) + +[DVB] +0=35 +1=3545,H,1956,34,S2,QPSK +2=3590,V,1850,34,DVB-S,QPSK +3=3618,V,29000,56,S2,QPSK +4=3766,V,3000,34,DVB-S,QPSK +5=3770,V,2142,23,S2,8PSK +6=3772,V,2400,23,S2,QPSK +7=3779,V,7495,34,DVB-S,QPSK +8=3781,V,35342,23,S2,QPSK +9=3791,V,3703,23,DVB-S,QPSK +10=3846,V,2300,34,DVB-S,QPSK +11=3942,V,30000,23,S2,QPSK +12=3978,V,29000,56,S2,QPSK +13=4123,V,2800,56,S2,8PSK +14=10985,H,35007,34,S2,8PSK +15=11045,H,44922,56,DVB-S,QPSK +16=11105,H,43200,56,DVB-S,QPSK +17=11473,V,22500,34,S2,8PSK +18=11491,V,4650,23,S2,8PSK +19=11505,V,3400,78,DVB-S,QPSK +20=11531,V,22000,56,DVB-S,QPSK +21=11559,V,22000,56,DVB-S,QPSK +22=11605,V,43200,78,DVB-S,QPSK +23=11665,V,44922,56,DVB-S,QPSK +24=11733,V,43000,56,DVB-S,QPSK +25=11734,H,44000,23,DVB-S,QPSK +26=11790,H,44000,23,DVB-S,QPSK +27=11793,V,43200,56,DVB-S,QPSK +28=11853,V,45000,23,S2,8PSK +29=11913,V,45000,23,S2,8PSK +30=11973,V,45000,23,S2,8PSK +31=12033,V,45000,23,S2,8PSK +32=12093,V,45000,23,S2,8PSK +33=12153,V,45000,23,S2,8PSK +34=12153,H,41900,45,S2,QPSK +35=12524,H,30000,12,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0765.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0765.ini new file mode 100644 index 000000000..1a6195f9a --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0765.ini @@ -0,0 +1,85 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0765 +2=Apstar 7 (76.5E) + +[DVB] +0=76 +1=3629,H,1489,34,S2,QPSK +2=3638,H,1600,35,S2,8PSK +3=3685,V,3333,34,DVB-S,QPSK +4=3690,H,13000,34,S2,8PSK +5=3705,V,8888,23,S2,8PSK +6=3720,H,29620,34,S2,8PSK +7=3747,H,2500,34,DVB-S,QPSK +8=3753,H,2400,34,DVB-S,QPSK +9=3757,H,4440,34,S2,QPSK +10=3769,H,13333,56,DVB-S,QPSK +11=3780,V,30000,34,S2,8PSK +12=3787,H,4600,23,DVB-S,QPSK +13=3793,H,4443,34,DVB-S,QPSK +14=3805,H,4800,34,S2,8PSK +15=3812,H,2200,34,S2,8PSK +16=3815,H,3333,34,DVB-S,QPSK +17=3824,H,2400,34,DVB-S,QPSK +18=3832,V,6111,34,DVB-S,QPSK +19=3835,H,3256,34,DVB-S,QPSK +20=3840,H,3000,34,DVB-S,QPSK +21=3847,H,5357,78,DVB-S,QPSK +22=3847,V,7857,56,S2,QPSK +23=3852,H,3000,34,DVB-S,QPSK +24=3857,H,3200,Auto,S2,8PSK +25=3880,H,30000,34,S2,8PSK +26=3914,V,3255,34,DVB-S,QPSK +27=3920,H,28340,56,DVB-S,QPSK +28=3932,V,1480,34,DVB-S,QPSK +29=3951,V,1480,34,DVB-S,QPSK +30=3960,H,30000,34,S2,8PSK +31=3985,H,3700,34,DVB-S,QPSK +32=3990,H,4300,34,S2,QPSK +33=3998,H,3200,34,DVB-S,QPSK +34=4003,H,4340,34,DVB-S,QPSK +35=4009,H,4300,34,DVB-S,QPSK +36=4016,H,4340,34,DVB-S,QPSK +37=4019,V,2222,23,S2,QPSK +38=4022,V,2961,12,DVB-S,QPSK +39=4026,H,4800,34,DVB-S,QPSK +40=4034,H,4300,34,DVB-S,QPSK +41=4038,H,1600,23,S2,8PSK +42=4041,H,1600,23,S2,QPSK +43=4044,H,1600,23,S2,QPSK +44=4048,V,2450,23,S2,8PSK +45=4050,H,4300,34,DVB-S,QPSK +46=4056,H,3600,35,S2,8PSK +47=4059,V,7857,56,S2,QPSK +48=4063,H,1250,34,DVB-S,QPSK +49=4067,H,2500,89,S2,QPSK +50=4079,H,1600,34,S2,QPSK +51=4082,H,2857,23,S2,8PSK +52=4088,V,7750,56,S2,8PSK +53=4104,H,5000,34,S2,QPSK +54=4110,H,4600,34,DVB-S,QPSK +55=4117,H,4285,34,DVB-S,QPSK +56=4125,H,4441,34,DVB-S,QPSK +57=4129,V,11395,34,DVB-S,QPSK +58=4131,H,3600,34,DVB-S,QPSK +59=4135,H,3333,34,DVB-S,QPSK +60=4151,H,14670,34,S2,8PSK +61=4188,V,3200,34,DVB-S,QPSK +62=10973,V,24500,23,S2,QPSK +63=11010,V,30000,12,DVB-S,QPSK +64=11052,V,30000,23,DVB-S,QPSK +65=11105,V,45000,23,DVB-S,QPSK +66=11167,V,45000,23,DVB-S,QPSK +67=11532,H,3732,56,S2,8PSK +68=11536,H,3732,56,S2,8PSK +69=11541,H,3450,34,S2,8PSK +70=11547,H,2500,34,S2,QPSK +71=11568,H,3330,34,S2,8PSK +72=11596,H,3732,56,S2,8PSK +73=12531,V,15000,34,S2,QPSK +74=12604,V,30000,56,S2,QPSK +75=12638,V,15000,34,S2,8PSK +76=12719,V,45000,56,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0785.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0785.ini new file mode 100644 index 000000000..8dcf19d37 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0785.ini @@ -0,0 +1,112 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0785 +2=Thaicom 5/6 (78.5E) + +[DVB] +0=103 +1=3408,V,2916,34,DVB-S,QPSK +2=3414,V,2916,34,DVB-S,QPSK +3=3418,V,3750,34,S2,QPSK +4=3422,V,2222,34,DVB-S,QPSK +5=3425,V,2592,12,DVB-S,QPSK +6=3433,V,5000,34,DVB-S,QPSK +7=3438,V,2915,34,DVB-S,QPSK +8=3440,H,26666,34,DVB-S,QPSK +9=3441,V,1556,34,DVB-S,QPSK +10=3444,V,1630,34,DVB-S,QPSK +11=3450,V,2500,34,DVB-S,QPSK +12=3454,V,3333,34,DVB-S,QPSK +13=3457,V,2857,34,DVB-S,QPSK +14=3462,V,2857,34,DVB-S,QPSK +15=3480,H,30000,56,DVB-S,QPSK +16=3515,V,2917,34,DVB-S,QPSK +17=3520,H,28125,34,DVB-S,QPSK +18=3545,V,30000,56,DVB-S,QPSK +19=3551,H,13333,34,DVB-S,QPSK +20=3563,H,5555,35,S2,8PSK +21=3574,H,6510,34,DVB-S,QPSK +22=3585,V,30000,56,DVB-S,QPSK +23=3600,H,26667,34,DVB-S,QPSK +24=3625,V,30000,34,S2,8PSK +25=3640,H,28066,34,DVB-S,QPSK +26=3665,H,3704,34,DVB-S,QPSK +27=3683,H,7500,34,S2,8PSK +28=3690,H,2417,78,DVB-S,QPSK +29=3696,H,4167,35,S2,8PSK +30=3703,V,3333,78,DVB-S,QPSK +31=3709,H,13333,23,S2,8PSK +32=3711,V,1458,78,DVB-S,QPSK +33=3715,V,1481,34,DVB-S,QPSK +34=3718,V,1600,34,DVB-S,QPSK +35=3719,H,2500,23,S2,8PSK +36=3731,H,12500,78,DVB-S,QPSK +37=3745,V,4688,34,DVB-S,QPSK +38=3749,V,4688,34,DVB-S,QPSK +39=3757,V,4688,34,DVB-S,QPSK +40=3758,H,28066,34,DVB-S,QPSK +41=3760,H,30000,56,DVB-S,QPSK +42=3784,V,4262,34,DVB-S,QPSK +43=3792,V,4262,34,DVB-S,QPSK +44=3797,V,4262,34,DVB-S,QPSK +45=3800,H,30000,56,DVB-S,QPSK +46=3803,V,4551,34,DVB-S,QPSK +47=3809,V,4550,34,DVB-S,QPSK +48=3826,H,4700,34,DVB-S,QPSK +49=3834,H,8000,56,S2,8PSK +50=3840,V,30000,56,DVB-S,QPSK +51=3841,H,2900,34,DVB-S,QPSK +52=3847,H,4700,34,DVB-S,QPSK +53=3851,H,2900,34,DVB-S,QPSK +54=3880,H,30000,34,DVB-S,QPSK +55=3910,V,14650,45,S2,QPSK +56=3920,H,30000,34,DVB-S,QPSK +57=3930,V,15000,56,S2,QPSK +58=3949,V,2550,78,DVB-S,QPSK +59=3975,V,2500,35,S2,8PSK +60=3990,V,12000,23,S2,8PSK +61=4000,V,4815,34,DVB-S,QPSK +62=4000,H,30000,23,S2,8PSK +63=4005,V,4815,34,DVB-S,QPSK +64=4017,V,1800,34,DVB-S,QPSK +65=4040,H,30000,23,S2,8PSK +66=4053,V,8333,34,DVB-S,QPSK +67=4080,H,30000,35,S2,8PSK +68=4091,V,2000,34,DVB-S,QPSK +69=4096,V,5295,34,DVB-S,QPSK +70=4120,V,30000,910,S2,QPSK +71=4120,H,30000,56,DVB-S,QPSK +72=4144,H,2530,34,DVB-S,QPSK +73=4148,H,4688,34,DVB-S,QPSK +74=4154,H,3125,34,DVB-S,QPSK +75=4157,H,2530,34,DVB-S,QPSK +76=4160,V,30000,56,DVB-S,QPSK +77=4160,H,2530,34,DVB-S,QPSK +78=4163,H,2530,34,DVB-S,QPSK +79=4167,H,2530,34,DVB-S,QPSK +80=4170,H,2530,34,DVB-S,QPSK +81=4173,H,2530,34,DVB-S,QPSK +82=4177,H,2530,34,DVB-S,QPSK +83=12272,H,30000,23,DVB-S,QPSK +84=12313,H,30000,23,DVB-S,QPSK +85=12313,V,30000,34,DVB-S,QPSK +86=12355,H,30000,56,DVB-S,QPSK +87=12355,V,30000,23,S2,8PSK +88=12396,H,30000,35,S2,8PSK +89=12405,V,45000,34,S2,8PSK +90=12438,H,30000,23,DVB-S,QPSK +91=12467,V,45000,34,DVB-S,QPSK +92=12479,H,30000,35,S2,8PSK +93=12521,H,30000,35,S2,8PSK +94=12521,V,30000,34,S2,8PSK +95=12562,H,25776,23,DVB-S,QPSK +96=12562,V,30000,34,S2,8PSK +97=12604,H,30000,56,DVB-S,8PSK +98=12604,V,30000,34,DVB-S,QPSK +99=12645,V,30000,23,S2,8PSK +100=12657,H,45000,34,S2,8PSK +101=12687,V,30000,23,DVB-S,QPSK +102=12720,H,45000,34,S2,8PSK +103=12728,V,30000,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0830.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0830.ini new file mode 100644 index 000000000..ac7588e57 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0830.ini @@ -0,0 +1,74 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0830 +2=G-Sat 10/Insat 4A (83.0E) + +[DVB] +0=65 +1=3725,H,26666,34,DVB-S,QPSK +2=3756,H,13333,34,DVB-S,QPSK +3=3756,V,3200,Auto,DVB-S,QPSK +4=3767,H,3000,34,S2,QPSK +5=3774,V,4250,Auto,DVB-S,QPSK +6=3777,H,10900,34,DVB-S,QPSK +7=3805,H,28500,78,DVB-S,QPSK +8=3828,H,3200,34,DVB-S,QPSK +9=3832,H,2100,34,DVB-S,QPSK +10=3836,H,1800,34,DVB-S,QPSK +11=3841,H,6920,78,DVB-S,QPSK +12=3847,H,3333,34,DVB-S,QPSK +13=3860,H,6920,34,DVB-S,QPSK +14=3868,H,3000,34,DVB-S,QPSK +15=3874,H,3400,34,S2,8PSK +16=3880,H,4600,34,DVB-S,QPSK +17=3884,H,1500,34,DVB-S,QPSK +18=3888,H,1071,34,DVB-S,QPSK +19=3892,H,3300,34,DVB-S,QPSK +20=3898,H,6800,34,DVB-S,QPSK +21=3909,H,4000,34,S2,8PSK +22=3921,H,13000,78,DVB-S,QPSK +23=3936,H,10100,78,DVB-S,QPSK +24=3949,H,3673,56,S2,8PSK +25=3958,H,9500,78,DVB-S,QPSK +26=3968,H,2000,34,DVB-S,QPSK +27=3976,H,3200,34,DVB-S,QPSK +28=3979,H,1451,34,DVB-S,QPSK +29=3983,H,1451,34,DVB-S,QPSK +30=3990,H,2140,34,DVB-S,QPSK +31=4004,H,22220,56,DVB-S,QPSK +32=4020,H,2140,34,DVB-S,QPSK +33=4030,H,4440,34,DVB-S,QPSK +34=4040,H,7500,78,DVB-S,QPSK +35=4054,H,13230,34,DVB-S,QPSK +36=4072,H,6500,34,DVB-S,QPSK +37=4076,H,1500,34,DVB-S,QPSK +38=4080,H,2000,34,DVB-S,QPSK +39=4083,H,2100,34,DVB-S,QPSK +40=4087,H,3300,34,DVB-S,QPSK +41=4091,H,3000,34,DVB-S,QPSK +42=4096,H,2170,23,S2,8PSK +43=4100,H,4750,34,DVB-S,QPSK +44=4109,H,1800,34,DVB-S,QPSK +45=4115,H,7776,34,DVB-S,QPSK +46=4122,H,1800,34,DVB-S,QPSK +47=4133,H,11888,34,S2,8PSK +48=4142,H,1255,34,DVB-S,QPSK +49=4151,H,6500,34,DVB-S,QPSK +50=4161,H,6500,34,DVB-S,QPSK +51=4170,H,4650,34,DVB-S,QPSK +52=4175,H,2977,56,DVB-S,QPSK +53=4180,H,3233,34,DVB-S,QPSK +54=10970,H,32000,23,S2,8PSK +55=11010,H,27500,34,DVB-S,8PSK +56=11050,H,32000,23,S2,8PSK +57=11090,H,32000,23,S2,8PSK +58=11130,H,32000,23,S2,8PSK +59=11170,H,32000,23,DVB-S,8PSK +60=11470,H,32000,23,S2,8PSK +61=11510,H,32000,23,S2,8PSK +62=11550,H,32000,23,S2,8PSK +63=11590,H,32000,23,S2,8PSK +64=11630,H,32000,23,S2,8PSK +65=11670,H,32000,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0851.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0851.ini new file mode 100644 index 000000000..faefe54dc --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0851.ini @@ -0,0 +1,38 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0851 +2=Horizons 2/Intelsat 15 (85.1E) + +[DVB] +0=29 +1=10969,H,1800,34,S2,8PSK +2=10980,H,2220,34,DVB-S,QPSK +3=11466,H,2000,56,S2,8PSK +4=11468,H,2000,56,S2,8PSK +5=11470,H,1100,56,S2,8PSK +6=11479,H,2200,34,DVB-S,QPSK +7=11483,H,1800,56,DVB-S,QPSK +8=11559,H,2200,78,DVB-S,QPSK +9=11588,H,2500,34,DVB-S,QPSK +10=11594,H,2500,34,DVB-S,QPSK +11=11687,H,2000,89,S2,8PSK +12=11720,H,28800,34,DVB-S,QPSK +13=11760,H,28800,23,S2,8PSK +14=11800,H,28800,23,S2,8PSK +15=11840,H,28800,23,S2,8PSK +16=11872,H,15000,12,DVB-S,8PSK +17=11920,H,28800,23,S2,8PSK +18=11960,H,28800,35,S2,8PSK +19=12000,H,28000,23,DVB-S,QPSK +20=12040,H,28800,34,DVB-S,QPSK +21=12080,H,26700,35,S2,8PSK +22=12120,H,26700,35,S2,8PSK +23=12160,H,28800,35,S2,8PSK +24=12504,V,4217,34,DVB-S,QPSK +25=12510,V,3700,78,DVB-S,QPSK +26=12515,V,3353,34,S2,8PSK +27=12560,V,30000,56,DVB-S,QPSK +28=12600,V,30000,23,S2,8PSK +29=12640,V,30000,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0865.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0865.ini new file mode 100644 index 000000000..f5a946f00 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0865.ini @@ -0,0 +1,30 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0865 +2=KazSat 2 (86.5E) + +[DVB] +0=21 +1=11495,V,8750,89,S2,8PSK +2=11504,V,6250,89,S2,8PSK +3=11632,V,1457,89,S2,QPSK +4=11642,V,1080,34,S2,8PSK +5=11643,V,1080,34,S2,8PSK +6=11645,V,1080,34,S2,8PSK +7=11646,V,1080,34,S2,8PSK +8=11647,V,1080,34,S2,8PSK +9=11649,V,1080,34,S2,8PSK +10=11650,V,1080,34,S2,8PSK +11=11651,V,1080,34,S2,8PSK +12=11653,V,1080,34,S2,8PSK +13=11654,V,1080,34,S2,8PSK +14=11656,V,2100,34,S2,8PSK +15=11658,V,1080,34,S2,8PSK +16=11660,V,2100,34,S2,8PSK +17=11663,V,5500,56,S2,8PSK +18=11672,V,5500,34,S2,8PSK +19=11678,V,5500,56,S2,8PSK +20=11683,V,5500,56,S2,8PSK +21=11689,V,5500,56,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0875.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0875.ini new file mode 100644 index 000000000..3f856ba71 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0875.ini @@ -0,0 +1,13 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0875 +2=ChinaSat 12 (87.5E) + +[DVB] +0=4 +1=3774,H,1800,34,S2,QPSK +2=4035,H,1200,34,DVB-S,QPSK +3=4067,H,1500,56,S2,QPSK +4=4140,V,28800,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0880.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0880.ini new file mode 100644 index 000000000..a2716d762 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0880.ini @@ -0,0 +1,34 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0880 +2=ST 2 (88.0E) + +[DVB] +0=25 +1=3629,H,24700,34,S2,8PSK +2=3632,V,30000,34,S2,8PSK +3=3657,H,3000,34,DVB-S,QPSK +4=3671,H,9256,34,DVB-S,QPSK +5=11062,V,1000,89,S2,8PSK +6=11066,V,2000,56,DVB-S,QPSK +7=11164,H,44995,23,S2,8PSK +8=11164,V,44995,23,S2,8PSK +9=11483,V,44995,23,S2,8PSK +10=11483,H,44995,23,S2,8PSK +11=11546,H,44995,23,S2,8PSK +12=11546,V,44995,23,S2,8PSK +13=11609,V,43975,23,S2,8PSK +14=11609,H,44995,23,S2,8PSK +15=11633,H,30000,56,S2,QPSK +16=11669,H,30000,56,S2,QPSK +17=11672,V,44995,23,S2,8PSK +18=11672,H,44995,23,S2,8PSK +19=12516,H,10833,34,DVB-S,QPSK +20=12533,H,9620,34,S2,8PSK +21=12642,H,24000,34,DVB-S,QPSK +22=12702,H,20000,34,DVB-S,QPSK +23=12705,V,2200,56,DVB-S,QPSK +24=12722,H,2200,56,DVB-S,QPSK +25=12730,H,3202,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0900.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0900.ini new file mode 100644 index 000000000..d423f69b6 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0900.ini @@ -0,0 +1,59 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0900 +2=Yamal 401 (90.0E) + +[DVB] +0=50 +1=3539,H,2500,34,DVB-S,QPSK +2=3553,H,20000,34,DVB-S,QPSK +3=3582,H,2850,34,DVB-S,QPSK +4=3588,H,4285,34,DVB-S,QPSK +5=3594,H,2850,34,DVB-S,QPSK +6=3600,H,5925,34,DVB-S,QPSK +7=3603,V,3300,34,DVB-S,QPSK +8=3605,H,2626,34,DVB-S,QPSK +9=3613,H,4285,34,DVB-S,QPSK +10=3617,V,1850,34,DVB-S,QPSK +11=3618,H,3038,34,DVB-S,QPSK +12=3623,H,4285,34,DVB-S,QPSK +13=3645,H,28000,34,DVB-S,QPSK +14=3675,H,17500,34,DVB-S,QPSK +15=3819,H,13333,34,S2,8PSK +16=3837,H,14815,34,DVB-S,QPSK +17=3858,H,1850,78,DVB-S,QPSK +18=3908,H,2850,34,DVB-S,QPSK +19=3920,H,3000,34,DVB-S,QPSK +20=3924,H,2850,34,DVB-S,QPSK +21=4026,H,14940,35,S2,8PSK +22=4046,H,15284,34,S2,8PSK +23=4106,V,14990,34,S2,8PSK +24=4124,H,14990,34,S2,8PSK +25=4126,V,15284,34,S2,8PSK +26=4144,H,15284,34,S2,8PSK +27=10972,H,11200,34,DVB-S,QPSK +28=11057,H,22222,34,S2,8PSK +29=11092,H,30000,34,S2,8PSK +30=11131,V,11160,23,S2,8PSK +31=11165,H,25000,23,S2,8PSK +32=11239,V,2737,34,S2,8PSK +33=11462,V,1400,78,DVB-S,QPSK +34=11492,H,6115,34,S2,QPSK +35=11504,H,2080,34,DVB-S,QPSK +36=11507,V,7000,56,DVB-S,QPSK +37=11512,H,6160,Auto,S2,QPSK +38=11524,V,2000,78,DVB-S,QPSK +39=11531,V,4280,34,DVB-S,QPSK +40=11558,H,20000,34,S2,QPSK +41=11565,V,1980,23,S2,8PSK +42=11573,V,5000,34,DVB-S,QPSK +43=11649,H,2170,34,DVB-S,QPSK +44=11654,H,6500,34,DVB-S,QPSK +45=11670,H,14400,56,S2,8PSK +46=11674,V,7800,56,S2,8PSK +47=12505,V,2020,Auto,S2,8PSK +48=12533,V,11760,34,S2,QPSK +49=12718,H,27500,56,S2,8PSK +50=12718,V,27500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0915.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0915.ini new file mode 100644 index 000000000..3c28ff254 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0915.ini @@ -0,0 +1,84 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0915 +2=Measat 3/3a/3b (91.5E) + +[DVB] +0=75 +1=3464,H,2963,23,DVB-S,QPSK +2=3469,V,7500,34,S2,8PSK +3=3472,H,6000,34,DVB-S,QPSK +4=3475,H,2963,23,DVB-S,QPSK +5=3480,V,2961,23,DVB-S,QPSK +6=3481,H,2963,23,DVB-S,QPSK +7=3485,V,2961,23,DVB-S,QPSK +8=3492,H,2963,23,DVB-S,QPSK +9=3606,V,3750,34,DVB-S,QPSK +10=3625,V,1600,34,DVB-S,QPSK +11=3638,H,6666,34,DVB-S,QPSK +12=3641,V,13333,23,S2,8PSK +13=3650,H,6666,34,DVB-S,QPSK +14=3705,H,4290,34,DVB-S,QPSK +15=3708,V,1400,34,S2,QPSK +16=3710,H,2860,34,DVB-S,QPSK +17=3717,H,7500,23,S2,8PSK +18=3718,V,1916,56,S2,QPSK +19=3720,V,2170,78,DVB-S,QPSK +20=3724,V,3030,23,S2,8PSK +21=3727,H,9833,23,S2,8PSK +22=3760,V,29700,56,S2,8PSK +23=3786,V,7200,56,S2,QPSK +24=3795,V,5064,34,S2,QPSK +25=3802,V,3333,34,DVB-S,QPSK +26=3805,V,3255,34,S2,QPSK +27=3814,V,6660,35,S2,8PSK +28=3840,H,30000,56,S2,8PSK +29=3840,V,29720,56,S2,8PSK +30=3880,V,29720,56,S2,8PSK +31=3904,H,2916,23,S2,8PSK +32=3918,H,18385,23,S2,8PSK +33=3920,V,29720,56,S2,8PSK +34=3960,H,29700,56,S2,8PSK +35=4000,H,29700,56,S2,8PSK +36=4040,H,28600,56,S2,8PSK +37=4120,V,29720,56,S2,8PSK +38=4120,H,30000,56,S2,8PSK +39=4147,H,7200,56,S2,QPSK +40=4153,V,2090,34,S2,QPSK +41=4164,H,20640,23,S2,8PSK +42=10852,V,30000,Auto,S2,QPSK +43=10932,V,30000,Auto,S2,QPSK +44=10982,V,30000,34,DVB-S,QPSK +45=11022,V,30000,34,S2,8PSK +46=11062,V,30000,34,DVB-S,QPSK +47=11142,V,30000,78,DVB-S,QPSK +48=11182,V,30000,78,DVB-S,QPSK +49=11482,V,30000,78,DVB-S,QPSK +50=11522,V,30000,78,DVB-S,QPSK +51=11562,V,30000,78,DVB-S,QPSK +52=11602,V,30000,78,DVB-S,QPSK +53=11642,V,30000,78,DVB-S,QPSK +54=11682,V,30000,78,DVB-S,QPSK +55=12276,V,30000,35,S2,8PSK +56=12316,H,30000,56,DVB-S,8PSK +57=12316,V,30000,35,S2,8PSK +58=12356,V,30000,35,S2,8PSK +59=12396,V,30000,35,S2,8PSK +60=12396,H,31000,23,S2,8PSK +61=12436,V,30000,35,S2,8PSK +62=12436,H,31000,23,S2,8PSK +63=12476,V,30000,35,S2,8PSK +64=12523,V,30000,78,DVB-S,QPSK +65=12523,H,30000,56,DVB-S,QPSK +66=12563,V,30000,56,S2,8PSK +67=12563,H,30000,56,S2,8PSK +68=12603,V,30000,56,S2,8PSK +69=12603,H,30000,56,S2,8PSK +70=12643,V,30000,78,DVB-S,QPSK +71=12643,H,30000,56,S2,8PSK +72=12683,V,30000,56,DVB-S,QPSK +73=12683,H,27500,56,DVB-S,QPSK +74=12723,V,30000,56,DVB-S,QPSK +75=12723,H,30000,56,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0922.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0922.ini new file mode 100644 index 000000000..1aaa16641 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0922.ini @@ -0,0 +1,19 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0922 +2=ChinaSat 9 (92.2E) + +[DVB] +0=10 +1=11880,H,28800,34,DVB-S,QPSK +2=11920,H,28800,34,DVB-S,QPSK +3=11940,V,28800,34,DVB-S,QPSK +4=11960,H,28800,34,DVB-S,QPSK +5=11980,V,28800,34,DVB-S,QPSK +6=12020,V,28800,34,DVB-S,QPSK +7=12060,V,28800,34,DVB-S,QPSK +8=12100,V,28800,34,DVB-S,QPSK +9=12140,V,28800,34,DVB-S,QPSK +10=12180,V,28800,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0935.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0935.ini new file mode 100644 index 000000000..e47df3277 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0935.ini @@ -0,0 +1,77 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0935 +2=Insat 3A/4B (93.5E) + +[DVB] +0=68 +1=3725,H,27500,34,DVB-S,QPSK +2=3732,V,6250,34,DVB-S,QPSK +3=3740,V,6250,34,DVB-S,QPSK +4=3750,V,6250,34,DVB-S,QPSK +5=3750,H,3000,34,DVB-S,QPSK +6=3756,H,3000,34,DVB-S,QPSK +7=3758,V,6250,34,DVB-S,QPSK +8=3762,H,2500,34,DVB-S,QPSK +9=3768,H,2500,34,DVB-S,QPSK +10=3772,V,6250,34,DVB-S,QPSK +11=3774,H,4250,34,DVB-S,QPSK +12=3780,V,6250,34,DVB-S,QPSK +13=3780,H,2500,34,DVB-S,QPSK +14=3790,H,2500,34,DVB-S,QPSK +15=3791,V,8600,34,DVB-S,QPSK +16=3797,H,4250,34,DVB-S,QPSK +17=3800,V,4250,34,DVB-S,QPSK +18=3802,H,4250,34,DVB-S,QPSK +19=3808,H,2500,34,DVB-S,QPSK +20=3812,V,6250,34,DVB-S,QPSK +21=3815,H,2500,34,DVB-S,QPSK +22=3821,V,6250,34,DVB-S,QPSK +23=3822,H,4250,34,DVB-S,QPSK +24=3831,V,8600,34,DVB-S,QPSK +25=3832,H,6250,34,DVB-S,QPSK +26=3840,H,6250,34,DVB-S,QPSK +27=3841,V,4250,34,DVB-S,QPSK +28=3848,H,4250,34,DVB-S,QPSK +29=3855,H,3800,34,DVB-S,QPSK +30=3860,H,2500,34,DVB-S,QPSK +31=3888,V,1400,34,DVB-S,QPSK +32=3891,V,2000,34,DVB-S,QPSK +33=3894,V,2000,34,DVB-S,QPSK +34=3894,H,1500,34,DVB-S,QPSK +35=3897,V,1500,34,DVB-S,QPSK +36=3907,V,3125,34,DVB-S,QPSK +37=3910,V,1500,34,DVB-S,QPSK +38=3913,V,1000,34,DVB-S,QPSK +39=3916,V,1300,34,DVB-S,QPSK +40=3919,V,2000,34,DVB-S,QPSK +41=3922,V,2000,34,DVB-S,QPSK +42=3925,H,27500,34,DVB-S,QPSK +43=3932,V,6250,34,DVB-S,QPSK +44=3940,V,6250,34,DVB-S,QPSK +45=3950,V,6250,34,DVB-S,QPSK +46=3958,V,6250,34,DVB-S,QPSK +47=4086,V,1400,34,DVB-S,QPSK +48=4092,V,6250,34,DVB-S,QPSK +49=4101,V,6250,34,DVB-S,QPSK +50=4109,V,4250,34,DVB-S,QPSK +51=4115,V,4250,34,DVB-S,QPSK +52=4120,V,4250,34,DVB-S,QPSK +53=4132,V,4000,34,DVB-S,QPSK +54=4136,V,2000,34,DVB-S,QPSK +55=4141,V,5150,34,DVB-S,QPSK +56=4148,V,3000,34,DVB-S,QPSK +57=4151,V,2100,34,DVB-S,QPSK +58=10990,V,28500,34,DVB-S,QPSK +59=11030,V,32000,34,S2,8PSK +60=11053,V,1800,34,DVB-S,QPSK +61=11070,V,28500,34,DVB-S,QPSK +62=11110,V,30000,35,S2,8PSK +63=11150,V,28500,34,DVB-S,QPSK +64=11197,V,3333,34,DVB-S,QPSK +65=11490,V,30000,35,S2,8PSK +66=11508,V,1400,78,DVB-S,QPSK +67=11528,V,1400,34,DVB-S,QPSK +68=11570,V,28500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0950.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0950.ini new file mode 100644 index 000000000..1b6ba4775 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0950.ini @@ -0,0 +1,47 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0950 +2=NSS 6/SES 8 (95.0E) + +[DVB] +0=38 +1=10977,V,40000,78,DVB-S,QPSK +2=11004,V,2355,34,DVB-S,QPSK +3=11037,H,40700,34,DVB-S,QPSK +4=11038,V,45000,56,DVB-S,QPSK +5=11090,H,30000,56,S2,QPSK +6=11090,V,30000,34,DVB-S,QPSK +7=11147,V,2750,23,DVB-S,QPSK +8=11164,V,3300,34,DVB-S,QPSK +9=11172,H,30000,56,DVB-S,QPSK +10=11456,H,3125,34,DVB-S,QPSK +11=11460,H,3125,34,DVB-S,QPSK +12=11468,H,3000,34,DVB-S,QPSK +13=11475,H,6111,34,DVB-S,QPSK +14=11481,H,45000,34,DVB-S,QPSK +15=11483,H,3125,34,DVB-S,QPSK +16=11503,H,6111,34,DVB-S,QPSK +17=11542,V,43200,34,S2,8PSK +18=11542,H,45000,56,S2,8PSK +19=11604,V,3200,34,DVB-S,QPSK +20=11619,H,5000,34,S2,8PSK +21=11635,H,27500,34,DVB-S,QPSK +22=11651,V,3333,34,DVB-S,QPSK +23=11661,H,5632,34,DVB-S,QPSK +24=11670,V,5000,23,DVB-S,QPSK +25=11676,V,28800,34,S2,8PSK +26=11685,V,6600,34,DVB-S,QPSK +27=11990,H,43000,Auto,DVB-S,QPSK +28=12110,H,40700,34,DVB-S,QPSK +29=12170,H,40700,Auto,DVB-S,QPSK +30=12535,V,43200,34,DVB-S,QPSK +31=12595,H,43200,34,DVB-S,QPSK +32=12595,V,43200,34,DVB-S,QPSK +33=12647,H,30000,Auto,DVB-S,QPSK +34=12647,V,32700,56,DVB-S,QPSK +35=12688,H,3270,34,DVB-S,QPSK +36=12688,V,27500,56,DVB-S,QPSK +37=12729,H,26400,34,DVB-S,QPSK +38=12729,V,32700,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0965.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0965.ini new file mode 100644 index 000000000..45d28a1fe --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/0965.ini @@ -0,0 +1,28 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=0965 +2=Express AM33 (96.5E) + +[DVB] +0=19 +1=3675,V,33483,78,DVB-S,QPSK +2=3758,V,4340,34,DVB-S,QPSK +3=3808,V,3215,34,DVB-S,QPSK +4=3817,V,4270,34,DVB-S,QPSK +5=3838,V,3230,34,DVB-S,QPSK +6=3843,V,3220,34,DVB-S,QPSK +7=3875,V,33390,89,S2,8PSK +8=3925,V,4883,12,DVB-S,QPSK +9=4108,V,4275,34,DVB-S,QPSK +10=4114,V,4285,34,DVB-S,QPSK +11=4175,V,3294,34,DVB-S,QPSK +12=10980,H,3200,34,DVB-S,QPSK +13=11000,H,5700,34,DVB-S,QPSK +14=11006,H,4444,34,DVB-S,QPSK +15=11028,V,1666,78,DVB-S,QPSK +16=11053,V,1570,23,S2,8PSK +17=11055,V,1666,23,S2,8PSK +18=11116,V,34000,89,S2,8PSK +19=11117,H,4444,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1005.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1005.ini new file mode 100644 index 000000000..fe9374bcf --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1005.ini @@ -0,0 +1,80 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1005 +2=AsiaSat 5 (100.5E) + +[DVB] +0=71 +1=3660,V,27500,34,DVB-S,QPSK +2=3668,H,7120,34,DVB-S,QPSK +3=3674,H,1500,34,DVB-S,QPSK +4=3678,H,3600,35,S2,QPSK +5=3686,H,7120,34,S2,8PSK +6=3693,H,6111,34,DVB-S,QPSK +7=3700,V,30000,34,S2,8PSK +8=3707,H,7120,34,S2,8PSK +9=3717,H,4167,34,DVB-S,QPSK +10=3730,H,13800,34,S2,8PSK +11=3733,V,6111,34,DVB-S,QPSK +12=3744,V,7120,34,S2,8PSK +13=3754,V,7120,34,S2,8PSK +14=3760,H,27500,34,DVB-S,QPSK +15=3765,V,4640,34,S2,8PSK +16=3770,V,2644,34,S2,QPSK +17=3774,H,6111,34,DVB-S,QPSK +18=3776,V,6111,34,DVB-S,QPSK +19=3786,H,6000,78,DVB-S,QPSK +20=3794,H,4640,35,S2,8PSK +21=3799,H,3255,34,DVB-S,QPSK +22=3816,H,3624,23,S2,8PSK +23=3820,V,27500,34,DVB-S,QPSK +24=3840,H,26666,34,S2,8PSK +25=3854,H,7500,Auto,S2,QPSK +26=3860,V,30000,23,S2,8PSK +27=3877,H,7200,Auto,S2,8PSK +28=3884,H,7200,Auto,S2,QPSK +29=3886,V,7500,34,DVB-S,QPSK +30=3895,V,6111,34,DVB-S,QPSK +31=3908,H,6666,34,DVB-S,QPSK +32=3913,V,6111,34,DVB-S,QPSK +33=3915,H,7120,Auto,S2,QPSK +34=3924,H,7200,Auto,S2,QPSK +35=3928,V,7200,Auto,S2,QPSK +36=3935,H,7120,34,S2,8PSK +37=3937,V,4500,34,DVB-S,QPSK +38=3945,V,6200,34,DVB-S,QPSK +39=3953,V,7200,Auto,S2,QPSK +40=3960,H,30000,56,S2,8PSK +41=3980,V,29720,56,S2,8PSK +42=4000,H,28125,34,DVB-S,QPSK +43=4040,H,29720,56,S2,8PSK +44=4076,H,7200,Auto,S2,8PSK +45=4086,H,7200,34,S2,8PSK +46=4094,H,9874,Auto,S2,QPSK +47=4114,H,18400,23,S2,8PSK +48=4132,H,10587,23,S2,QPSK +49=4148,H,7100,Auto,S2,QPSK +50=4148,V,11852,34,DVB-S,QPSK +51=4155,H,6666,34,DVB-S,QPSK +52=4165,H,6673,Auto,S2,QPSK +53=4175,H,7200,34,S2,8PSK +54=12267,V,3000,34,DVB-S,QPSK +55=12288,V,1330,34,DVB-S,QPSK +56=12323,V,12000,34,DVB-S,QPSK +57=12377,V,2000,34,DVB-S,QPSK +58=12381,V,2000,34,DVB-S,QPSK +59=12386,V,2000,34,DVB-S,QPSK +60=12437,V,2590,34,DVB-S,QPSK +61=12515,H,6200,34,DVB-S,QPSK +62=12522,V,40700,34,DVB-S,QPSK +63=12542,H,6111,34,DVB-S,QPSK +64=12582,H,5632,34,DVB-S,QPSK +65=12582,V,40700,23,S2,8PSK +66=12591,H,5632,34,DVB-S,QPSK +67=12602,H,5632,34,DVB-S,QPSK +68=12620,H,6300,34,DVB-S,QPSK +69=12635,H,8880,34,DVB-S,QPSK +70=12642,V,40700,23,S2,8PSK +71=12702,V,40700,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1030.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1030.ini new file mode 100644 index 000000000..f4607ef89 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1030.ini @@ -0,0 +1,13 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1030 +2=Express AM3 (103.0E) + +[DVB] +0=4 +1=3610,V,2500,56,S2,QPSK +2=3675,V,31900,56,S2,8PSK +3=11606,V,34425,35,S2,8PSK +4=11669,V,34425,35,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1055.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1055.ini new file mode 100644 index 000000000..79c54d9d8 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1055.ini @@ -0,0 +1,57 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1055 +2=AsiaSat 7/8 (105.5E) + +[DVB] +0=48 +1=3683,H,27500,Auto,S2,QPSK +2=3706,H,6000,34,DVB-S,QPSK +3=3712,V,9000,35,S2,8PSK +4=3715,H,8167,34,DVB-S,QPSK +5=3725,V,4833,45,S2,QPSK +6=3729,H,13650,34,DVB-S,QPSK +7=3732,V,6500,34,DVB-S,QPSK +8=3739,V,2815,34,DVB-S,QPSK +9=3742,V,1500,34,DVB-S,QPSK +10=3745,V,2626,34,DVB-S,QPSK +11=3755,V,4418,78,DVB-S,QPSK +12=3760,H,26000,78,DVB-S,QPSK +13=3780,V,28100,34,DVB-S,QPSK +14=3820,V,27500,34,DVB-S,QPSK +15=3840,H,29720,56,S2,8PSK +16=3860,V,28100,56,S2,8PSK +17=3880,H,27500,34,DVB-S,QPSK +18=3890,V,11838,35,S2,8PSK +19=3898,V,2240,35,S2,8PSK +20=3906,V,2913,34,DVB-S,QPSK +21=3915,V,7260,56,DVB-S,QPSK +22=3940,V,28100,56,S2,8PSK +23=3960,H,27500,34,DVB-S,QPSK +24=3980,V,28100,34,DVB-S,QPSK +25=4000,H,26850,78,DVB-S,QPSK +26=4020,V,27250,34,DVB-S,QPSK +27=4040,H,26500,12,DVB-S,QPSK +28=4060,V,26666,34,DVB-S,QPSK +29=4065,H,4296,34,DVB-S,QPSK +30=4078,H,3185,78,DVB-S,QPSK +31=4082,H,3185,56,DVB-S,QPSK +32=4087,H,3185,34,DVB-S,QPSK +33=4091,H,2894,34,DVB-S,QPSK +34=4095,H,2894,34,DVB-S,QPSK +35=4100,V,29720,56,S2,8PSK +36=4120,H,27500,78,DVB-S,QPSK +37=4140,V,27500,34,DVB-S,QPSK +38=4146,H,5317,34,DVB-S,QPSK +39=4155,H,9833,35,S2,8PSK +40=4165,H,5040,34,DVB-S,QPSK +41=4172,H,2480,34,DVB-S,QPSK +42=4176,H,2444,34,DVB-S,QPSK +43=4180,V,26666,34,DVB-S,QPSK +44=12468,H,4195,34,DVB-S,QPSK +45=12534,H,3300,34,S2,8PSK +46=12579,H,4000,34,S2,8PSK +47=12596,V,30000,56,DVB-S,QPSK +48=12720,V,30000,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1082.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1082.ini new file mode 100644 index 000000000..a53b0c2e8 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1082.ini @@ -0,0 +1,99 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1082 +2=NSS 11/SES 7/Telkom 1 (108.2E) + +[DVB] +0=90 +1=2535,H,22500,78,DVB-S,QPSK +2=2535,V,22500,34,S2,8PSK +3=2565,H,22500,78,DVB-S,QPSK +4=2565,V,22500,78,DVB-S,QPSK +5=2595,H,20000,78,DVB-S,QPSK +6=2595,V,22500,78,DVB-S,QPSK +7=2625,H,22500,78,DVB-S,QPSK +8=2625,V,22500,34,S2,QPSK +9=2655,H,22500,78,DVB-S,QPSK +10=2655,V,22500,Auto,S2,8PSK +11=3483,V,3000,34,DVB-S,QPSK +12=3515,V,23111,23,S2,QPSK +13=3552,H,3100,34,DVB-S,QPSK +14=3580,H,30000,34,S2,8PSK +15=3600,V,30000,34,S2,8PSK +16=3620,H,30000,34,S2,8PSK +17=3640,V,30000,34,S2,8PSK +18=3707,H,6000,34,S2,8PSK +19=3722,H,3330,34,DVB-S,QPSK +20=3727,V,7000,34,DVB-S,QPSK +21=3732,H,4160,34,DVB-S,QPSK +22=3735,H,1200,34,DVB-S,QPSK +23=3745,H,3000,34,DVB-S,QPSK +24=3776,H,4280,34,DVB-S,QPSK +25=3787,H,6750,34,DVB-S,QPSK +26=3793,H,3000,34,DVB-S,QPSK +27=3797,H,3905,34,DVB-S,QPSK +28=3802,H,3000,78,DVB-S,QPSK +29=3812,H,3000,34,DVB-S,QPSK +30=3817,H,3000,34,DVB-S,QPSK +31=3830,H,3000,34,DVB-S,QPSK +32=3880,H,3000,34,S2,8PSK +33=3890,H,6000,34,DVB-S,QPSK +34=3895,H,2500,34,DVB-S,QPSK +35=3913,H,2400,34,DVB-S,QPSK +36=3916,H,3330,34,DVB-S,QPSK +37=3920,H,3000,34,DVB-S,QPSK +38=3947,H,1500,34,DVB-S,QPSK +39=3960,H,3000,34,DVB-S,QPSK +40=3971,H,2100,34,DVB-S,QPSK +41=3981,V,1235,34,DVB-S,QPSK +42=3990,H,6000,34,DVB-S,QPSK +43=3998,H,3000,34,DVB-S,QPSK +44=4004,H,6000,34,DVB-S,QPSK +45=4014,H,6000,34,DVB-S,QPSK +46=4029,H,5122,34,DVB-S,QPSK +47=4036,H,3100,34,DVB-S,QPSK +48=4040,H,3000,34,DVB-S,QPSK +49=4079,H,3100,34,DVB-S,QPSK +50=4086,H,6000,34,DVB-S,QPSK +51=4092,H,3570,34,DVB-S,QPSK +52=4097,H,3125,34,DVB-S,QPSK +53=4130,V,2100,34,DVB-S,QPSK +54=4159,H,3000,34,DVB-S,QPSK +55=4163,V,1840,34,DVB-S,QPSK +56=11480,V,28800,23,S2,8PSK +57=11481,H,18750,34,S2,8PSK +58=11483,H,26600,34,S2,8PSK +59=11510,H,20000,34,S2,8PSK +60=11520,V,30000,34,S2,8PSK +61=11520,H,30000,34,S2,8PSK +62=11560,V,30000,34,S2,8PSK +63=11560,H,30000,34,S2,8PSK +64=11568,V,20000,34,S2,8PSK +65=11568,H,20000,34,S2,8PSK +66=11598,V,20000,34,S2,8PSK +67=11598,H,20000,23,S2,8PSK +68=11600,V,30000,34,S2,8PSK +69=11600,H,30000,34,S2,8PSK +70=11627,H,20000,34,S2,8PSK +71=11640,V,30000,34,S2,8PSK +72=11640,H,24000,34,S2,8PSK +73=11656,H,18750,34,DVB-S,QPSK +74=11680,V,30000,34,S2,8PSK +75=11685,H,18750,34,DVB-S,QPSK +76=12328,H,5000,34,DVB-S,QPSK +77=12401,V,2400,34,S2,8PSK +78=12406,V,3330,56,DVB-S,QPSK +79=12421,V,2962,34,DVB-S,QPSK +80=12427,V,4440,34,DVB-S,QPSK +81=12431,H,30000,56,DVB-S,QPSK +82=12434,H,2000,34,DVB-S,QPSK +83=12439,H,1900,12,DVB-S,QPSK +84=12444,H,1900,34,DVB-S,QPSK +85=12447,H,3000,34,DVB-S,QPSK +86=12471,H,30000,56,DVB-S,QPSK +87=12486,H,2000,34,DVB-S,QPSK +88=12651,V,26667,34,DVB-S,QPSK +89=12711,H,30000,23,S2,8PSK +90=12731,V,30000,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1100.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1100.ini new file mode 100644 index 000000000..789b56cca --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1100.ini @@ -0,0 +1,33 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1100 +2=BSAT 3A/3C/JCSAT 110R/N-Sat 110 (110.0E) + +[DVB] +0=24 +1=11727,V,28860,23,DVB-S,8PSK +2=11766,V,28860,23,DVB-S,8PSK +3=11804,V,28860,23,DVB-S,8PSK +4=11843,V,28860,23,DVB-S,8PSK +5=11881,V,28860,23,DVB-S,8PSK +6=11919,V,28860,23,DVB-S,8PSK +7=11958,V,28860,23,DVB-S,8PSK +8=11996,V,28860,23,DVB-S,8PSK +9=12034,V,28860,23,DVB-S,QPSK +10=12073,V,28860,23,DVB-S,8PSK +11=12111,V,28860,23,DVB-S,8PSK +12=12149,V,28860,23,DVB-S,8PSK +13=12291,V,28860,23,DVB-S,QPSK +14=12331,V,28860,23,DVB-S,QPSK +15=12371,V,28860,23,DVB-S,QPSK +16=12411,V,28860,23,DVB-S,QPSK +17=12451,V,28860,23,DVB-S,QPSK +18=12491,V,28860,23,DVB-S,QPSK +19=12531,V,28860,23,DVB-S,QPSK +20=12571,V,28860,23,DVB-S,QPSK +21=12611,V,28860,23,DVB-S,QPSK +22=12651,V,28860,23,DVB-S,QPSK +23=12691,V,28860,23,DVB-S,QPSK +24=12731,V,28860,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1105.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1105.ini new file mode 100644 index 000000000..aafe00455 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1105.ini @@ -0,0 +1,14 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1105 +2=ChinaSat 10 (110.5E) + +[DVB] +0=5 +1=3650,V,6200,56,S2,8PSK +2=3660,V,6200,56,S2,8PSK +3=3728,V,4340,34,DVB-S,QPSK +4=3984,V,3617,34,DVB-S,QPSK +5=4134,V,4340,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1130.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1130.ini new file mode 100644 index 000000000..d9c69d3f7 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1130.ini @@ -0,0 +1,81 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1130 +2=Koreasat 5/Palapa D (113.0E) + +[DVB] +0=72 +1=3420,H,5000,Auto,S2,QPSK +2=3433,H,4383,56,DVB-S,8PSK +3=3437,H,1800,34,S2,8PSK +4=3460,H,29900,34,S2,QPSK +5=3574,V,6363,78,DVB-S,QPSK +6=3600,V,31000,23,S2,8PSK +7=3628,H,17985,23,DVB-S,QPSK +8=3709,H,10000,35,S2,QPSK +9=3720,H,30000,34,S2,QPSK +10=3744,H,3125,78,DVB-S,QPSK +11=3747,H,6250,34,DVB-S,QPSK +12=3756,H,6250,34,S2,8PSK +13=3762,H,3500,34,DVB-S,QPSK +14=3767,H,4000,45,S2,QPSK +15=3770,V,3000,34,DVB-S,QPSK +16=3774,H,6520,34,DVB-S,QPSK +17=3780,V,29900,34,S2,8PSK +18=3786,H,5632,34,DVB-S,QPSK +19=3792,H,3000,34,DVB-S,8PSK +20=3818,V,27500,34,S2,8PSK +21=3832,H,12592,34,DVB-S,QPSK +22=3852,V,2000,56,DVB-S,QPSK +23=3863,V,4333,34,DVB-S,QPSK +24=3880,H,30000,34,S2,QPSK +25=3917,H,3000,34,DVB-S,QPSK +26=3925,H,2590,34,DVB-S,QPSK +27=3932,V,15800,56,DVB-S,QPSK +28=3934,H,6500,34,DVB-S,QPSK +29=3946,V,7400,56,DVB-S,QPSK +30=3952,V,3000,34,DVB-S,QPSK +31=3957,V,3000,34,DVB-S,QPSK +32=3960,H,30000,34,S2,8PSK +33=3980,V,31000,23,S2,8PSK +34=3984,H,2244,34,S2,8PSK +35=3987,H,2250,34,DVB-S,QPSK +36=3992,H,2250,34,DVB-S,QPSK +37=4006,V,6400,34,DVB-S,QPSK +38=4016,V,3000,34,S2,8PSK +39=4025,H,2124,34,DVB-S,QPSK +40=4035,V,6000,34,DVB-S,QPSK +41=4044,H,2124,34,DVB-S,QPSK +42=4044,V,2833,34,DVB-S,QPSK +43=4048,H,2124,34,DVB-S,QPSK +44=4051,V,1600,56,S2,8PSK +45=4052,H,3333,78,DVB-S,QPSK +46=4055,H,3000,34,DVB-S,QPSK +47=4074,V,3000,34,DVB-S,QPSK +48=4080,H,28125,34,DVB-S,QPSK +49=4100,V,30000,34,S2,8PSK +50=4110,H,11669,34,S2,8PSK +51=4124,H,5632,34,DVB-S,QPSK +52=4136,H,3000,34,DVB-S,QPSK +53=4140,V,30000,78,DVB-S,QPSK +54=4165,H,20000,34,DVB-S,QPSK +55=4171,V,15000,Auto,S2,QPSK +56=4184,V,6700,34,DVB-S,QPSK +57=12347,H,3180,23,S2,8PSK +58=12390,V,25600,56,DVB-S,QPSK +59=12430,V,25600,56,DVB-S,QPSK +60=12436,H,3564,56,DVB-S,QPSK +61=12452,H,2500,56,S2,8PSK +62=12470,V,25600,56,DVB-S,QPSK +63=12530,H,26000,56,DVB-S,QPSK +64=12560,H,2300,23,S2,8PSK +65=12590,H,29900,34,S2,8PSK +66=12590,V,28000,34,DVB-S,QPSK +67=12618,V,3900,12,DVB-S,QPSK +68=12645,V,2893,34,DVB-S,QPSK +69=12665,H,4320,34,S2,8PSK +70=12670,V,28000,34,DVB-S,QPSK +71=12673,H,30000,34,S2,8PSK +72=12710,H,29900,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1155.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1155.ini new file mode 100644 index 000000000..4bfa66270 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1155.ini @@ -0,0 +1,53 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1155 +2=ChinaSat 6B (115.5E) + +[DVB] +0=44 +1=3600,V,27500,78,DVB-S,QPSK +2=3640,V,27500,78,DVB-S,QPSK +3=3680,V,27500,78,DVB-S,QPSK +4=3709,H,10920,34,DVB-S,QPSK +5=3740,V,27500,34,DVB-S,QPSK +6=3750,H,10490,34,DVB-S,QPSK +7=3769,H,13400,78,DVB-S,QPSK +8=3780,V,27500,34,DVB-S,QPSK +9=3796,H,6930,12,DVB-S,QPSK +10=3807,V,6000,34,DVB-S,QPSK +11=3808,H,8800,34,DVB-S,QPSK +12=3815,V,4420,34,DVB-S,QPSK +13=3825,V,6780,34,DVB-S,QPSK +14=3834,V,5400,34,DVB-S,QPSK +15=3840,H,27500,34,DVB-S,QPSK +16=3846,V,5950,34,DVB-S,QPSK +17=3854,V,4420,34,DVB-S,QPSK +18=3861,V,4800,34,DVB-S,QPSK +19=3871,V,9080,34,DVB-S,QPSK +20=3880,H,27500,34,DVB-S,QPSK +21=3885,V,4340,34,DVB-S,QPSK +22=3892,V,4420,34,DVB-S,QPSK +23=3903,V,9300,34,DVB-S,QPSK +24=3913,V,6400,34,DVB-S,QPSK +25=3920,H,27500,34,DVB-S,QPSK +26=3929,V,8840,34,DVB-S,QPSK +27=3940,V,5948,34,DVB-S,QPSK +28=3950,H,11406,56,DVB-S,QPSK +29=3951,V,9520,34,DVB-S,QPSK +30=3960,H,3570,34,DVB-S,QPSK +31=3971,H,10000,34,DVB-S,QPSK +32=3980,V,27500,34,DVB-S,QPSK +33=4000,H,27500,34,DVB-S,QPSK +34=4020,V,27500,34,DVB-S,QPSK +35=4040,H,27500,34,DVB-S,QPSK +36=4060,V,27500,34,DVB-S,QPSK +37=4080,H,27500,34,DVB-S,QPSK +38=4116,H,21374,34,DVB-S,QPSK +39=4140,V,27500,34,DVB-S,QPSK +40=4147,H,6150,34,DVB-S,QPSK +41=4158,H,8680,34,DVB-S,QPSK +42=4171,H,9200,34,DVB-S,QPSK +43=4175,V,18000,12,DVB-S,QPSK +44=4192,V,6000,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1160.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1160.ini new file mode 100644 index 000000000..3ef951d9a --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1160.ini @@ -0,0 +1,42 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1160 +2=ABS 7/Koreasat 6 (116.0E) + +[DVB] +0=33 +1=11747,H,21300,56,S2,8PSK +2=11785,H,21300,78,DVB-S,QPSK +3=11823,H,21300,56,S2,8PSK +4=11862,H,21300,56,S2,8PSK +5=11900,H,21300,23,S2,8PSK +6=11938,H,21300,56,S2,8PSK +7=12290,H,27489,34,S2,8PSK +8=12330,H,27489,34,S2,8PSK +9=12350,V,26700,78,DVB-S,QPSK +10=12370,H,27489,34,S2,8PSK +11=12390,V,26700,78,DVB-S,QPSK +12=12410,H,29500,34,S2,8PSK +13=12430,V,26700,78,DVB-S,QPSK +14=12450,H,27489,34,S2,8PSK +15=12467,V,12300,34,S2,QPSK +16=12490,H,27489,34,S2,8PSK +17=12497,V,4331,34,S2,8PSK +18=12501,V,3515,34,DVB-S,QPSK +19=12506,V,3515,34,DVB-S,QPSK +20=12511,V,3515,34,DVB-S,QPSK +21=12517,V,3515,34,DVB-S,QPSK +22=12523,V,7900,56,S2,8PSK +23=12530,H,27489,34,S2,8PSK +24=12570,H,27489,34,S2,8PSK +25=12610,H,27489,34,S2,8PSK +26=12650,H,27489,34,S2,8PSK +27=12670,V,26700,78,DVB-S,QPSK +28=12687,H,2050,34,DVB-S,QPSK +29=12690,H,27489,34,S2,8PSK +30=12695,V,3515,34,DVB-S,QPSK +31=12706,V,6000,34,DVB-S,QPSK +32=12724,V,5330,34,S2,8PSK +33=12730,H,27489,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1180.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1180.ini new file mode 100644 index 000000000..d41e3f5ad --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1180.ini @@ -0,0 +1,11 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1180 +2=Telkom 2 (118.0E) + +[DVB] +0=2 +1=3776,H,2132,34,DVB-S,QPSK +2=4110,H,2900,12,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1195.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1195.ini new file mode 100644 index 000000000..42af4d1c9 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1195.ini @@ -0,0 +1,14 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1195 +2=Thaicom 4 (119.5E) + +[DVB] +0=5 +1=11542,V,15533,Auto,S2,QPSK +2=11592,V,25000,12,S2,QPSK +3=11675,V,45000,23,S2,8PSK +4=12696,V,30000,23,S2,QPSK +5=12732,V,30000,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1222.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1222.ini new file mode 100644 index 000000000..4d833f21b --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1222.ini @@ -0,0 +1,29 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1222 +2=AsiaSat 4 (122.2E) + +[DVB] +0=20 +1=3756,H,21600,23,S2,8PSK +2=3827,H,6620,34,DVB-S,QPSK +3=3845,H,6620,34,DVB-S,QPSK +4=3900,V,26660,23,DVB-S,QPSK +5=4040,H,4000,34,DVB-S,QPSK +6=4157,H,2170,34,DVB-S,QPSK +7=4160,H,2300,34,S2,8PSK +8=4164,H,5037,78,DVB-S,QPSK +9=11727,V,25000,23,S2,8PSK +10=11766,V,27500,23,S2,8PSK +11=11804,V,27500,23,S2,8PSK +12=11881,V,275000,23,S2,8PSK +13=11958,V,27500,23,S2,8PSK +14=12034,V,27500,23,S2,8PSK +15=12274,V,6000,34,DVB-S,QPSK +16=12414,V,43200,23,S2,QPSK +17=12536,V,4800,56,S2,8PSK +18=12545,V,2400,34,S2,8PSK +19=12590,V,6620,34,DVB-S,QPSK +20=12743,H,10000,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1240.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1240.ini new file mode 100644 index 000000000..ed948c78e --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1240.ini @@ -0,0 +1,43 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1240 +2=JCSAT 4B (124.0E) + +[DVB] +0=34 +1=12268,V,23303,35,S2,8PSK +2=12313,H,23303,35,S2,8PSK +3=12330,H,30000,56,S2,8PSK +4=12343,H,23303,35,S2,8PSK +5=12358,V,23303,35,S2,8PSK +6=12370,H,30000,56,S2,8PSK +7=12373,H,23303,35,S2,8PSK +8=12388,V,23303,35,S2,8PSK +9=12410,H,30000,56,S2,8PSK +10=12418,V,23303,35,S2,8PSK +11=12432,H,23303,35,S2,8PSK +12=12448,V,21096,34,DVB-S,QPSK +13=12450,H,30000,56,S2,8PSK +14=12490,H,30000,56,S2,8PSK +15=12493,H,23303,35,S2,8PSK +16=12508,V,23303,35,S2,8PSK +17=12530,H,30000,56,S2,8PSK +18=12538,V,23303,35,S2,8PSK +19=12553,H,23303,35,S2,8PSK +20=12568,V,23303,35,S2,8PSK +21=12570,H,30000,56,S2,8PSK +22=12583,H,23303,35,S2,8PSK +23=12598,V,23303,35,S2,8PSK +24=12610,H,30000,56,S2,8PSK +25=12613,H,23303,35,S2,8PSK +26=12628,V,23303,35,S2,8PSK +27=12643,H,23303,35,S2,8PSK +28=12650,H,30000,56,S2,8PSK +29=12673,H,23303,35,S2,8PSK +30=12688,V,23303,35,S2,8PSK +31=12690,H,30000,56,S2,8PSK +32=12703,H,23303,35,S2,8PSK +33=12718,V,23303,35,S2,8PSK +34=12730,H,30000,56,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1250.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1250.ini new file mode 100644 index 000000000..738a7debe --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1250.ini @@ -0,0 +1,38 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1250 +2=ChinaSat 6A (125.0E) + +[DVB] +0=29 +1=3720,H,27500,34,DVB-S,QPSK +2=3740,V,27500,34,DVB-S,QPSK +3=3750,H,14900,34,DVB-S,QPSK +4=3780,V,27500,34,DVB-S,QPSK +5=3800,H,30600,34,DVB-S,QPSK +6=3820,V,30000,34,DVB-S,QPSK +7=3827,H,6220,34,DVB-S,QPSK +8=3845,H,17778,34,DVB-S,QPSK +9=3857,V,25000,34,DVB-S,QPSK +10=3885,H,5720,34,DVB-S,QPSK +11=3889,V,9988,34,DVB-S,QPSK +12=3893,H,6880,34,DVB-S,QPSK +13=3909,H,8934,34,DVB-S,QPSK +14=3912,V,9900,34,DVB-S,QPSK +15=3922,H,7250,34,DVB-S,QPSK +16=3933,H,6590,34,DVB-S,QPSK +17=3951,H,13400,78,DVB-S,QPSK +18=3970,H,11580,34,DVB-S,QPSK +19=3970,V,13400,78,DVB-S,QPSK +20=3989,H,9070,34,DVB-S,QPSK +21=3999,H,4420,34,DVB-S,QPSK +22=4006,H,4420,34,DVB-S,QPSK +23=4013,H,3950,34,DVB-S,QPSK +24=4013,V,16600,78,DVB-S,QPSK +25=4033,V,9580,78,DVB-S,QPSK +26=4040,H,30600,34,DVB-S,QPSK +27=4080,H,27500,34,DVB-S,QPSK +28=4100,V,27500,34,DVB-S,QPSK +29=4120,H,27500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1280.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1280.ini new file mode 100644 index 000000000..bb2f556c0 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1280.ini @@ -0,0 +1,24 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1280 +2=JCSAT 3A (128.0E) + +[DVB] +0=15 +1=4120,V,30000,34,S2,8PSK +2=4160,V,30000,34,S2,8PSK +3=12348,V,23303,35,S2,8PSK +4=12428,V,23303,35,S2,8PSK +5=12468,V,23303,35,S2,8PSK +6=12523,H,23303,35,S2,8PSK +7=12553,H,23303,35,S2,8PSK +8=12583,H,23303,35,S2,8PSK +9=12598,V,23303,35,S2,8PSK +10=12613,H,23303,35,S2,8PSK +11=12628,V,21096,34,DVB-S,QPSK +12=12643,H,23303,35,S2,8PSK +13=12673,H,23303,35,S2,8PSK +14=12703,H,23303,35,S2,8PSK +15=12733,H,23303,35,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1320.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1320.ini new file mode 100644 index 000000000..4694425d3 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1320.ini @@ -0,0 +1,51 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1320 +2=JCSAT 5A/Vinasat 1/2 (132.0E) + +[DVB] +0=42 +1=3413,V,10800,23,S2,8PSK +2=3433,V,13600,34,S2,8PSK +3=3446,V,1666,34,S2,8PSK +4=3451,V,1668,23,S2,8PSK +5=3480,V,3000,34,S2,8PSK +6=3493,H,1600,34,DVB-S,QPSK +7=3544,V,1600,34,S2,8PSK +8=3549,V,1200,34,S2,8PSK +9=3560,V,1510,34,DVB-S,QPSK +10=3572,V,8000,23,S2,8PSK +11=3590,V,19200,23,S2,8PSK +12=10968,H,28800,34,S2,8PSK +13=11008,H,28800,34,S2,8PSK +14=11048,H,28800,56,DVB-S,QPSK +15=11050,V,30000,34,S2,8PSK +16=11085,H,24000,34,S2,8PSK +17=11088,V,28800,34,S2,8PSK +18=11119,V,14400,34,S2,8PSK +19=11135,H,9600,34,S2,8PSK +20=11167,V,30000,34,S2,8PSK +21=11472,H,23200,34,S2,8PSK +22=11510,V,30000,34,S2,8PSK +23=11517,H,4702,34,DVB-S,QPSK +24=11523,H,4702,34,DVB-S,QPSK +25=11531,H,2500,34,DVB-S,QPSK +26=11549,H,28500,56,DVB-S,QPSK +27=11550,V,30000,34,S2,8PSK +28=11589,H,28800,34,DVB-S,QPSK +29=11590,V,30000,34,S2,8PSK +30=11629,H,28800,34,DVB-S,QPSK +31=11630,V,30000,34,S2,8PSK +32=11669,H,30000,34,S2,8PSK +33=11670,V,30000,34,S2,8PSK +34=12257,V,3096,34,DVB-S,QPSK +35=12288,H,7241,34,DVB-S,QPSK +36=12320,V,7241,34,DVB-S,QPSK +37=12340,H,7241,34,DVB-S,QPSK +38=12400,V,7241,34,DVB-S,QPSK +39=12408,H,7241,34,DVB-S,QPSK +40=12420,H,7241,34,DVB-S,QPSK +41=12711,V,19476,12,S2,8PSK +42=12746,H,3096,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1340.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1340.ini new file mode 100644 index 000000000..4ca7c83a0 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1340.ini @@ -0,0 +1,27 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1340 +2=Apstar 6 (134.0E) + +[DVB] +0=18 +1=3720,H,30000,Auto,S2,QPSK +2=3776,H,5632,34,DVB-S,QPSK +3=3830,V,3700,34,S2,8PSK +4=3840,H,27500,34,DVB-S,QPSK +5=3878,H,3000,34,DVB-S,QPSK +6=3913,V,1920,45,S2,QPSK +7=4020,V,30000,34,S2,8PSK +8=4032,H,2688,34,S2,8PSK +9=4051,H,9628,34,DVB-S,QPSK +10=4149,H,13500,34,DVB-S,QPSK +11=4160,H,2963,34,DVB-S,QPSK +12=12269,V,18000,12,DVB-S,QPSK +13=12322,V,3600,34,DVB-S,QPSK +14=12395,V,27500,34,DVB-S,QPSK +15=12435,V,27500,34,DVB-S,QPSK +16=12515,V,27500,34,DVB-S,QPSK +17=12595,V,27500,34,DVB-S,QPSK +18=12675,V,27500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1380.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1380.ini new file mode 100644 index 000000000..cb952425b --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1380.ini @@ -0,0 +1,37 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1380 +2=Telstar 18 (138.0E) + +[DVB] +0=28 +1=3703,V,4444,23,S2,8PSK +2=3707,H,4500,34,S2,8PSK +3=3734,H,2222,34,S2,8PSK +4=3820,V,30000,34,S2,8PSK +5=3837,H,2200,34,DVB-S,QPSK +6=3847,H,4444,34,S2,8PSK +7=3854,H,6700,34,DVB-S,QPSK +8=3866,H,4290,34,DVB-S,QPSK +9=3872,H,6660,34,DVB-S,QPSK +10=3933,V,3000,34,DVB-S,QPSK +11=3948,V,17600,34,S2,8PSK +12=12272,H,33333,23,S2,8PSK +13=12292,V,45000,Auto,S2,8PSK +14=12354,V,43000,34,DVB-S,QPSK +15=12401,V,22425,34,DVB-S,QPSK +16=12429,H,3330,12,DVB-S,QPSK +17=12430,V,22425,56,S2,8PSK +18=12439,H,2500,34,DVB-S,QPSK +19=12443,H,1495,34,DVB-S,QPSK +20=12472,V,33500,34,S2,8PSK +21=12499,V,7200,34,S2,8PSK +22=12507,H,45000,23,S2,8PSK +23=12538,V,41250,12,DVB-S,QPSK +24=12598,V,43000,34,S2,8PSK +25=12629,H,43200,34,S2,8PSK +26=12660,V,45000,56,DVB-S,QPSK +27=12690,H,43200,34,S2,8PSK +28=12721,V,41250,12,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1400.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1400.ini new file mode 100644 index 000000000..b4e6dc7c0 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1400.ini @@ -0,0 +1,31 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1400 +2=Express AM5/AT2 (140.0E) + +[DVB] +0=22 +1=3571,V,3000,34,DVB-S,QPSK +2=3577,V,4285,34,DVB-S,QPSK +3=3584,V,3000,34,DVB-S,QPSK +4=3589,V,4340,34,DVB-S,QPSK +5=3609,V,4340,34,DVB-S,QPSK +6=3627,V,4340,34,DVB-S,QPSK +7=3632,V,4340,34,DVB-S,QPSK +8=3639,V,1000,34,DVB-S,QPSK +9=3675,V,33483,78,DVB-S,QPSK +10=3874,V,3200,34,DVB-S,QPSK +11=4180,V,4340,34,DVB-S,QPSK +12=10981,V,44948,56,DVB-S,QPSK +13=11082,H,2500,56,S2,8PSK +14=11104,V,3617,34,S2,8PSK +15=11495,V,10600,34,S2,8PSK +16=11530,H,22250,23,S2,8PSK +17=11557,H,22250,23,S2,8PSK +18=11657,V,24800,56,DVB-S,QPSK +19=11681,V,15520,23,S2,8PSK +20=12188,H,27500,34,DVB-S,QPSK +21=12207,V,27500,34,S2,8PSK +22=12341,H,27500,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1440.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1440.ini new file mode 100644 index 000000000..e31e028ab --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1440.ini @@ -0,0 +1,22 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1440 +2=Superbird C2 (144.0E) + +[DVB] +0=13 +1=12276,V,7457,23,S2,8PSK +2=12306,V,7457,23,S2,8PSK +3=12319,V,14910,34,DVB-S,QPSK +4=12336,V,7457,23,S2,QPSK +5=12385,V,7457,23,S2,8PSK +6=12394,V,7457,23,S2,QPSK +7=12403,V,7457,23,S2,8PSK +8=12508,V,21096,34,DVB-S,QPSK +9=12546,H,9365,35,S2,8PSK +10=12549,V,2900,34,DVB-S,QPSK +11=12558,V,3515,34,DVB-S,QPSK +12=12598,V,21096,34,DVB-S,QPSK +13=12658,V,21096,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1500.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1500.ini new file mode 100644 index 000000000..6acfb1679 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1500.ini @@ -0,0 +1,12 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1500 +2=JCSAT 1B (150.0E) + +[DVB] +0=3 +1=12423,V,6912,12,DVB-S,QPSK +2=12662,V,12825,34,DVB-S,QPSK +3=12693,V,12825,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1520.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1520.ini new file mode 100644 index 000000000..0034b3e13 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1520.ini @@ -0,0 +1,25 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1520 +2=Optus D2 (152.0E) + +[DVB] +0=16 +1=12274,V,6670,34,DVB-S,QPSK +2=12295,V,1644,Auto,DVB-S,QPSK +3=12328,V,15000,78,DVB-S,QPSK +4=12469,H,6670,Auto,DVB-S,QPSK +5=12519,V,22500,34,DVB-S,QPSK +6=12536,H,6980,34,DVB-S,QPSK +7=12545,H,6980,34,DVB-S,QPSK +8=12546,V,22500,34,DVB-S,QPSK +9=12554,H,6980,34,DVB-S,QPSK +10=12581,H,22500,34,DVB-S,QPSK +11=12608,H,22500,34,DVB-S,QPSK +12=12639,V,15000,78,DVB-S,QPSK +13=12657,V,15000,78,DVB-S,QPSK +14=12675,V,15000,78,DVB-S,QPSK +15=12706,V,22500,34,DVB-S,QPSK +16=12734,V,22500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1540.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1540.ini new file mode 100644 index 000000000..365575a8c --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1540.ini @@ -0,0 +1,32 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1540 +2=JCSAT 2A (154.0E) + +[DVB] +0=23 +1=3936,V,3333,34,DVB-S,QPSK +2=12263,V,5082,34,DVB-S,QPSK +3=12278,V,4820,34,DVB-S,QPSK +4=12280,H,4820,34,DVB-S,QPSK +5=12298,V,21096,34,DVB-S,QPSK +6=12310,H,3515,34,S2,8PSK +7=12317,H,6036,35,S2,QPSK +8=12318,V,4820,34,DVB-S,QPSK +9=12324,V,4820,34,DVB-S,QPSK +10=12331,V,4820,34,DVB-S,QPSK +11=12338,V,4820,34,DVB-S,QPSK +12=12362,V,4820,34,DVB-S,QPSK +13=12373,H,7082,34,S2,8PSK +14=12376,V,1680,34,S2,QPSK +15=12409,V,4820,34,DVB-S,QPSK +16=12436,H,3100,34,DVB-S,QPSK +17=12505,H,2856,23,S2,8PSK +18=12505,V,4821,34,DVB-S,QPSK +19=12576,V,7242,34,DVB-S,QPSK +20=12613,H,21096,34,DVB-S,QPSK +21=12688,V,21096,34,DVB-S,QPSK +22=12700,H,5274,34,DVB-S,QPSK +23=12729,V,3096,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1560.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1560.ini new file mode 100644 index 000000000..be5b9c2f6 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1560.ini @@ -0,0 +1,44 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1560 +2=Optus C1/D3 (156.0E) + +[DVB] +0=35 +1=11720,H,29455,35,S2,8PSK +2=11762,H,27800,34,DVB-S,QPSK +3=11804,V,30000,35,S2,8PSK +4=11845,V,27800,Auto,DVB-S,QPSK +5=11886,V,30000,35,S2,8PSK +6=11886,H,27800,34,DVB-S,QPSK +7=11928,V,30000,35,S2,8PSK +8=11928,H,27800,34,DVB-S,QPSK +9=11970,H,27800,34,DVB-S,QPSK +10=12011,V,27800,34,DVB-S,QPSK +11=12011,H,29455,35,S2,8PSK +12=12052,V,27800,34,DVB-S,QPSK +13=12052,H,29455,35,S2,8PSK +14=12094,V,27800,34,DVB-S,QPSK +15=12094,H,29455,35,S2,8PSK +16=12136,V,27800,34,DVB-S,QPSK +17=12136,H,27800,34,DVB-S,QPSK +18=12177,V,27800,34,DVB-S,QPSK +19=12177,H,27800,34,DVB-S,QPSK +20=12358,H,27800,34,DVB-S,QPSK +21=12369,V,30000,35,S2,8PSK +22=12398,H,27800,34,DVB-S,QPSK +23=12407,V,24450,Auto,DVB-S,QPSK +24=12438,H,27800,34,DVB-S,QPSK +25=12478,H,27800,34,DVB-S,QPSK +26=12487,V,30000,35,S2,8PSK +27=12518,H,27800,34,DVB-S,QPSK +28=12558,H,27800,34,DVB-S,QPSK +29=12567,V,30000,35,S2,8PSK +30=12598,H,27800,34,DVB-S,QPSK +31=12607,V,30000,35,S2,8PSK +32=12638,H,27800,34,DVB-S,QPSK +33=12647,V,30000,35,S2,8PSK +34=12689,H,27800,34,DVB-S,QPSK +35=12707,H,22500,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1590.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1590.ini new file mode 100644 index 000000000..567b3cc09 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1590.ini @@ -0,0 +1,14 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1590 +2=ABS 6 (159.0E) + +[DVB] +0=5 +1=3888,V,8340,23,DVB-S,QPSK +2=3897,V,4445,34,DVB-S,QPSK +3=3908,V,4445,34,DVB-S,QPSK +4=3915,V,4445,34,DVB-S,QPSK +5=12696,V,10000,12,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1600 OPTUS D1 FTA (160.0E).ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1600 OPTUS D1 FTA (160.0E).ini new file mode 100644 index 000000000..865061739 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1600 OPTUS D1 FTA (160.0E).ini @@ -0,0 +1,11 @@ +[SATTYPE] +1=1600.0 +2=OPTUS D1 FTA (160.0E) + +[DVB] +0=5 +1=12456,H,22500,0 +2=12483,H,22500,0 +3=12644,H,22500,0 +4=12707,H,22500,0 +5=12381,V,3750,23,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1600.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1600.ini new file mode 100644 index 000000000..08083f62f --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1600.ini @@ -0,0 +1,47 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1600 +2=Optus D1 (160.0E) + +[DVB] +0=38 +1=12267,H,22500,23,S2,8PSK +2=12295,H,22500,34,S2,8PSK +3=12331,H,22500,23,S2,8PSK +4=12348,H,14293,78,DVB-S,QPSK +5=12358,H,22500,23,S2,8PSK +6=12381,V,3750,23,S2,QPSK +7=12394,H,22500,34,DVB-S,QPSK +8=12421,H,22500,34,DVB-S,QPSK +9=12430,V,6111,Auto,DVB-S,QPSK +10=12452,H,12600,56,DVB-S,QPSK +11=12456,H,22500,34,DVB-S,QPSK +12=12470,H,12600,56,DVB-S,QPSK +13=12483,H,22500,34,DVB-S,QPSK +14=12487,H,12600,56,DVB-S,QPSK +15=12514,H,14294,78,DVB-S,QPSK +16=12519,H,22500,34,DVB-S,QPSK +17=12528,V,6660,Auto,DVB-S,QPSK +18=12532,H,14294,78,DVB-S,QPSK +19=12546,V,6670,Auto,DVB-S,QPSK +20=12546,H,22500,34,DVB-S,QPSK +21=12550,H,14294,78,DVB-S,QPSK +22=12556,V,6670,Auto,DVB-S,QPSK +23=12577,H,14294,78,DVB-S,QPSK +24=12581,H,22500,34,DVB-S,QPSK +25=12595,H,14294,78,DVB-S,QPSK +26=12607,V,7177,Auto,DVB-S,QPSK +27=12608,H,22500,34,DVB-S,QPSK +28=12613,H,14294,78,DVB-S,QPSK +29=12637,V,5100,Auto,DVB-S,QPSK +30=12644,H,22500,34,DVB-S,QPSK +31=12661,V,7200,Auto,DVB-S,QPSK +32=12670,V,7200,Auto,DVB-S,QPSK +33=12671,H,22500,34,DVB-S,QPSK +34=12679,V,7200,Auto,DVB-S,QPSK +35=12681,H,7200,34,DVB-S,QPSK +36=12699,H,7200,34,DVB-S,QPSK +37=12707,H,22500,34,DVB-S,QPSK +38=12734,H,22500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1620.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1620.ini new file mode 100644 index 000000000..9a16504dc --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1620.ini @@ -0,0 +1,32 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1620 +2=Superbird B2 (162.0E) + +[DVB] +0=23 +1=12277,V,6150,34,DVB-S,QPSK +2=12286,V,6150,34,DVB-S,QPSK +3=12295,V,6150,34,DVB-S,QPSK +4=12304,V,6150,34,DVB-S,QPSK +5=12373,V,4095,34,DVB-S,QPSK +6=12382,H,14143,56,S2,QPSK +7=12384,V,4095,34,DVB-S,QPSK +8=12423,V,6143,35,S2,8PSK +9=12440,V,11708,34,S2,QPSK +10=12455,H,4095,34,DVB-S,QPSK +11=12500,H,10000,23,DVB-S,QPSK +12=12523,V,6428,34,DVB-S,QPSK +13=12526,H,5274,34,DVB-S,QPSK +14=12535,H,5274,34,DVB-S,QPSK +15=12543,H,5274,34,DVB-S,QPSK +16=12550,H,5274,34,DVB-S,QPSK +17=12557,V,5275,34,DVB-S,QPSK +18=12596,V,6620,34,DVB-S,QPSK +19=12644,H,5275,34,DVB-S,QPSK +20=12656,V,5275,34,DVB-S,QPSK +21=12664,V,5275,34,DVB-S,QPSK +22=12676,H,6144,34,DVB-S,QPSK +23=12724,H,7072,34,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1640.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1640.ini new file mode 100644 index 000000000..9650ab47a --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1640.ini @@ -0,0 +1,12 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1640 +2=Optus 10/B3 (164.0E) + +[DVB] +0=3 +1=12345,V,7200,Auto,DVB-S,QPSK +2=12388,H,7200,Auto,DVB-S,QPSK +3=12463,V,7200,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1660.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1660.ini new file mode 100644 index 000000000..8c040e884 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1660.ini @@ -0,0 +1,52 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1660 +2=Intelsat 19 (166.0E) + +[DVB] +0=43 +1=3705,V,3000,78,DVB-S,QPSK +2=3719,V,1620,56,S2,8PSK +3=3724,V,5185,34,DVB-S,QPSK +4=3736,V,2963,34,DVB-S,QPSK +5=3740,H,27500,34,DVB-S,QPSK +6=3760,V,27690,34,DVB-S,QPSK +7=3780,H,25000,34,DVB-S,QPSK +8=3784,V,1464,35,S2,8PSK +9=3795,V,3500,34,DVB-S,QPSK +10=3800,V,3500,34,DVB-S,QPSK +11=3805,V,3960,34,S2,QPSK +12=3810,H,15000,Auto,S2,8PSK +13=3815,V,4400,34,DVB-S,QPSK +14=3851,V,9950,34,DVB-S,QPSK +15=3900,H,30000,23,S2,8PSK +16=3920,V,28800,12,S2,QPSK +17=3940,H,27690,78,DVB-S,QPSK +18=3959,V,7090,34,DVB-S,QPSK +19=3980,H,27690,34,DVB-S,QPSK +20=4040,V,30000,34,S2,8PSK +21=4060,H,26590,12,DVB-S,QPSK +22=4080,V,28270,23,S2,8PSK +23=4086,H,5787,34,DVB-S,QPSK +24=4096,H,5787,34,DVB-S,QPSK +25=4146,V,5632,34,DVB-S,QPSK +26=4165,V,3448,35,S2,QPSK +27=4180,H,30000,23,S2,8PSK +28=12286,H,30000,34,S2,QPSK +29=12390,H,7200,23,S2,8PSK +30=12399,H,7200,23,S2,8PSK +31=12407,H,29500,34,S2,8PSK +32=12412,V,14400,Auto,S2,8PSK +33=12432,H,5632,Auto,DVB-S,QPSK +34=12480,V,6666,Auto,DVB-S,QPSK +35=12495,H,15000,23,S2,8PSK +36=12526,H,30000,34,S2,8PSK +37=12557,H,15000,34,S2,8PSK +38=12575,H,13845,23,DVB-S,QPSK +39=12592,H,2894,34,DVB-S,QPSK +40=12613,H,2222,12,DVB-S,QPSK +41=12646,H,28066,34,DVB-S,QPSK +42=12686,H,28124,34,DVB-S,QPSK +43=12726,H,28066,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1690.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1690.ini new file mode 100644 index 000000000..c7470a5e4 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1690.ini @@ -0,0 +1,14 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1690 +2=Intelsat 8 (169.0E) + +[DVB] +0=5 +1=3771,H,13234,Auto,S2,QPSK +2=3809,V,4286,34,DVB-S,QPSK +3=3815,V,4286,34,DVB-S,QPSK +4=3816,H,6620,34,DVB-S,QPSK +5=4032,H,8545,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1720.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1720.ini new file mode 100644 index 000000000..6f0a6f0ea --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1720.ini @@ -0,0 +1,17 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1720 +2=Eutelsat 172A (172.0E) + +[DVB] +0=8 +1=3916,H,3330,34,DVB-S,QPSK +2=11515,V,2500,89,S2,QPSK +3=11537,V,1500,Auto,S2,QPSK +4=11623,V,3500,89,S2,QPSK +5=11646,V,2200,Auto,S2,QPSK +6=12716,V,7200,34,DVB-S,QPSK +7=12725,V,7200,34,DVB-S,QPSK +8=12734,V,7200,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1800.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1800.ini new file mode 100644 index 000000000..a3f5044cf --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1800.ini @@ -0,0 +1,19 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1800 +2=Intelsat 18 (180.0E) + +[DVB] +0=10 +1=3753,V,28000,34,DVB-S,QPSK +2=4015,H,30000,Auto,S2,QPSK +3=4070,V,3443,34,S2,QPSK +4=4095,H,30000,Auto,S2,QPSK +5=4174,H,3680,23,DVB-S,QPSK +6=10995,H,45000,34,S2,QPSK +7=11075,V,45000,34,S2,8PSK +8=11075,H,45000,34,S2,QPSK +9=11155,V,28588,34,S2,8PSK +10=11155,H,28588,56,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1830.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1830.ini new file mode 100644 index 000000000..8775bb5d3 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/1830.ini @@ -0,0 +1,18 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=1830 +2=NSS 9/Yamal 300K (177.0W) + +[DVB] +0=9 +1=3792,V,2048,23,S2,QPSK +2=3922,V,1122,56,S2,QPSK +3=3976,H,30000,23,DVB-S,QPSK +4=3987,V,8950,23,DVB-S,QPSK +5=3999,V,2960,34,DVB-S,QPSK +6=4055,H,30000,34,DVB-S,QPSK +7=4103,V,15196,56,S2,QPSK +8=4152,V,2127,Auto,DVB-S,QPSK +9=4163,V,2644,34,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2210.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2210.ini new file mode 100644 index 000000000..123055dd4 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2210.ini @@ -0,0 +1,12 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2210 +2=AMC 8 (139.0W) + +[DVB] +0=3 +1=3756,V,2100,34,DVB-S,QPSK +2=4056,H,13250,34,DVB-S,QPSK +3=4111,V,5000,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2230.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2230.ini new file mode 100644 index 000000000..fe661385b --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2230.ini @@ -0,0 +1,11 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2230 +2=AMC 7 (137.0W) + +[DVB] +0=2 +1=3760,H,25195,34,DVB-S,QPSK +2=4100,V,6500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2250.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2250.ini new file mode 100644 index 000000000..4f5a9494d --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2250.ini @@ -0,0 +1,25 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2250 +2=AMC 10 (135.0W) + +[DVB] +0=16 +1=3720,V,30000,56,S2,8PSK +2=3760,V,30000,56,S2,8PSK +3=3780,H,29200,34,DVB-S,QPSK +4=3800,V,30000,56,S2,QPSK +5=3820,H,29270,34,DVB-S,QPSK +6=3840,V,29270,34,DVB-S,QPSK +7=3900,H,29270,34,DVB-S,QPSK +8=3920,V,29270,34,DVB-S,QPSK +9=3960,V,29270,34,DVB-S,QPSK +10=3980,H,29270,34,DVB-S,QPSK +11=4040,V,30000,56,S2,8PSK +12=4080,V,29270,34,DVB-S,QPSK +13=4120,V,30000,34,S2,8PSK +14=4136,H,19510,34,DVB-S,QPSK +15=4149,H,9760,34,DVB-S,QPSK +16=4180,H,29270,78,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2270.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2270.ini new file mode 100644 index 000000000..18a777c4b --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2270.ini @@ -0,0 +1,32 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2270 +2=Galaxy 15 (133.0W) + +[DVB] +0=23 +1=3720,H,29270,56,DVB-S,QPSK +2=3740,V,31250,34,S2,8PSK +3=3760,H,19510,34,DVB-S,QPSK +4=3780,V,31250,34,S2,8PSK +5=3790,H,11936,34,DVB-S,QPSK +6=3808,H,16303,34,S2,8PSK +7=3825,V,13800,56,DVB-S,QPSK +8=3840,H,29270,34,DVB-S,QPSK +9=3860,V,28000,34,DVB-S,QPSK +10=3900,V,31250,34,S2,8PSK +11=3960,H,19510,34,DVB-S,QPSK +12=3980,V,29270,34,DVB-S,QPSK +13=4000,H,30000,56,S2,8PSK +14=4020,V,29270,Auto,DVB-S,QPSK +15=4025,H,4880,34,DVB-S,QPSK +16=4044,H,22500,56,S2,8PSK +17=4060,V,29270,78,DVB-S,QPSK +18=4080,H,30000,56,S2,8PSK +19=4100,V,31250,34,S2,8PSK +20=4120,H,31250,34,S2,8PSK +21=4140,V,31250,34,S2,8PSK +22=4160,H,29270,78,DVB-S,QPSK +23=4180,V,29270,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2290.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2290.ini new file mode 100644 index 000000000..631af13d2 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2290.ini @@ -0,0 +1,32 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2290 +2=AMC 11 (131.0W) + +[DVB] +0=23 +1=3760,V,19510,34,DVB-S,QPSK +2=3780,H,29270,34,DVB-S,QPSK +3=3790,V,12400,78,DVB-S,QPSK +4=3808,V,15800,56,S2,8PSK +5=3860,H,30000,56,S2,8PSK +6=3880,V,19510,34,DVB-S,QPSK +7=3900,H,30000,56,S2,QPSK +8=3910,V,13200,56,DVB-S,8PSK +9=3928,V,14323,56,DVB-S,QPSK +10=3940,H,29270,34,DVB-S,QPSK +11=3960,V,30000,34,S2,8PSK +12=3980,H,30000,56,S2,8PSK +13=3995,V,19510,34,DVB-S,QPSK +14=4020,H,29270,34,DVB-S,QPSK +15=4040,V,29270,34,DVB-S,QPSK +16=4060,H,29270,34,DVB-S,QPSK +17=4075,V,19510,34,DVB-S,QPSK +18=4092,V,9760,34,DVB-S,QPSK +19=4100,H,30000,56,S2,8PSK +20=4120,V,30000,56,S2,8PSK +21=4140,H,19510,34,DVB-S,QPSK +22=4160,V,29200,34,DVB-S,QPSK +23=4180,H,29270,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2310.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2310.ini new file mode 100644 index 000000000..5915c2365 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2310.ini @@ -0,0 +1,41 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2310 +2=Ciel 2/Galaxy 12 (129.0W) + +[DVB] +0=32 +1=12224,V,21500,23,DVB-S,8PSK +2=12239,H,21500,23,DVB-S,8PSK +3=12253,V,21500,23,DVB-S,8PSK +4=12268,H,21500,23,DVB-S,8PSK +5=12282,V,21500,23,DVB-S,8PSK +6=12297,H,21500,23,DVB-S,8PSK +7=12311,V,21500,23,DVB-S,8PSK +8=12326,H,21500,23,DVB-S,8PSK +9=12341,V,21500,23,DVB-S,8PSK +10=12355,H,21500,23,DVB-S,8PSK +11=12370,V,21500,23,DVB-S,8PSK +12=12384,H,21500,23,DVB-S,8PSK +13=12399,V,20000,78,DVB-S,8PSK +14=12414,H,21500,23,DVB-S,8PSK +15=12428,V,21500,23,DVB-S,8PSK +16=12443,H,21500,23,DVB-S,8PSK +17=12457,V,21500,23,DVB-S,8PSK +18=12472,H,21500,23,DVB-S,8PSK +19=12486,V,21500,23,DVB-S,8PSK +20=12501,H,21500,23,DVB-S,8PSK +21=12516,V,20000,56,DVB-S,QPSK +22=12530,H,21500,23,DVB-S,8PSK +23=12545,V,21500,23,DVB-S,8PSK +24=12559,H,21500,23,DVB-S,8PSK +25=12574,V,21500,23,DVB-S,8PSK +26=12588,H,21500,23,DVB-S,8PSK +27=12603,V,21500,23,DVB-S,8PSK +28=12618,H,21500,23,DVB-S,8PSK +29=12632,V,21500,23,DVB-S,8PSK +30=12647,H,21500,23,DVB-S,8PSK +31=12661,V,21500,23,DVB-S,8PSK +32=12676,H,21500,23,DVB-S,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2330.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2330.ini new file mode 100644 index 000000000..3ab17e6a1 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2330.ini @@ -0,0 +1,32 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2330 +2=Galaxy 13/Horizons 1 (127.0W) + +[DVB] +0=23 +1=3760,V,28076,34,DVB-S,QPSK +2=3780,H,30000,23,S2,8PSK +3=3800,V,27690,34,DVB-S,QPSK +4=3820,H,30000,56,S2,8PSK +5=3840,V,30000,56,S2,8PSK +6=3880,V,30000,89,S2,8PSK +7=3900,H,29270,78,DVB-S,QPSK +8=3920,V,29270,78,DVB-S,QPSK +9=3960,V,30000,56,S2,8PSK +10=3980,H,30000,34,S2,8PSK +11=4000,V,30000,89,S2,8PSK +12=4052,H,17500,56,S2,8PSK +13=4066,H,3310,34,DVB-S,QPSK +14=4070,H,3257,34,S2,8PSK +15=4080,V,28076,34,DVB-S,QPSK +16=4120,V,30000,56,S2,8PSK +17=4140,H,30000,34,S2,8PSK +18=4160,V,30000,56,S2,8PSK +19=11727,V,6620,Auto,DVB-S,QPSK +20=12050,H,13020,Auto,DVB-S,QPSK +21=12087,V,6111,Auto,DVB-S,QPSK +22=12140,V,30000,34,DVB-S,QPSK +23=12180,V,16278,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2350.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2350.ini new file mode 100644 index 000000000..cdaa5042e --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2350.ini @@ -0,0 +1,43 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2350 +2=AMC 21/Galaxy 14 (125.0W) + +[DVB] +0=34 +1=3720,H,26667,34,DVB-S,QPSK +2=3740,V,30000,56,S2,8PSK +3=3760,H,19886,34,DVB-S,QPSK +4=3780,V,30000,34,S2,8PSK +5=3820,V,30000,34,S2,8PSK +6=3840,H,30000,56,S2,8PSK +7=3860,V,30000,56,S2,8PSK +8=3880,H,30000,56,S2,8PSK +9=3900,V,29079,56,S2,8PSK +10=3920,H,29270,34,DVB-S,QPSK +11=3940,V,19510,34,DVB-S,QPSK +12=3960,H,29270,34,DVB-S,QPSK +13=3980,V,30000,56,S2,8PSK +14=4020,V,30000,56,S2,8PSK +15=4040,H,30000,34,S2,8PSK +16=4080,H,30000,34,S2,8PSK +17=4100,V,29270,78,DVB-S,QPSK +18=4120,H,29270,34,DVB-S,QPSK +19=4140,V,30000,34,S2,8PSK +20=4160,H,30000,56,S2,8PSK +21=4180,V,30000,56,S2,8PSK +22=11740,V,30000,34,S2,QPSK +23=11760,H,30000,34,S2,QPSK +24=11780,V,30000,34,S2,QPSK +25=11800,H,30000,34,S2,QPSK +26=11980,V,30000,34,S2,QPSK +27=12106,V,2398,23,S2,QPSK +28=12112,V,8703,34,S2,8PSK +29=12146,H,6250,34,S2,QPSK +30=12155,H,6250,34,S2,QPSK +31=12163,H,4444,34,DVB-S,QPSK +32=12169,H,4444,34,DVB-S,QPSK +33=12175,H,4444,34,DVB-S,QPSK +34=12180,V,30000,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2370.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2370.ini new file mode 100644 index 000000000..ce1a1f239 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2370.ini @@ -0,0 +1,23 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2370 +2=Galaxy 18 (123.0W) + +[DVB] +0=14 +1=4020,H,30000,56,S2,8PSK +2=4040,V,29270,34,DVB-S,QPSK +3=4100,H,29270,34,DVB-S,QPSK +4=4120,V,29270,34,DVB-S,QPSK +5=4140,H,30000,56,S2,8PSK +6=4160,V,29270,34,DVB-S,QPSK +7=4176,H,20000,34,DVB-S,QPSK +8=11732,H,13240,34,DVB-S,QPSK +9=11747,V,2667,Auto,DVB-S,QPSK +10=11772,V,3361,34,S2,QPSK +11=11776,V,2848,23,DVB-S,QPSK +12=11848,V,1784,34,S2,8PSK +13=12033,H,8200,34,DVB-S,QPSK +14=12078,V,3680,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2390.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2390.ini new file mode 100644 index 000000000..73ca36a7b --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2390.ini @@ -0,0 +1,42 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2390 +2=EchoStar 9/Galaxy 23 (121.0W) + +[DVB] +0=33 +1=3714,H,4340,78,DVB-S,QPSK +2=3730,H,8824,34,DVB-S,QPSK +3=3732,V,14400,89,S2,8PSK +4=3750,V,14027,34,DVB-S,QPSK +5=3780,V,29270,78,DVB-S,QPSK +6=3800,H,19510,34,DVB-S,QPSK +7=3820,V,29270,34,DVB-S,QPSK +8=3840,H,30000,56,S2,8PSK +9=3877,H,4444,34,DVB-S,QPSK +10=3889,H,13020,34,DVB-S,QPSK +11=3910,H,14400,34,S2,8PSK +12=3980,V,29270,78,DVB-S,QPSK +13=4000,H,19510,34,DVB-S,QPSK +14=4011,V,15000,56,S2,8PSK +15=4033,V,8333,56,DVB-S,QPSK +16=4050,V,2590,34,DVB-S,QPSK +17=4055,V,6510,34,DVB-S,QPSK +18=4080,H,30000,56,S2,8PSK +19=4100,V,29270,34,DVB-S,QPSK +20=4115,H,18085,34,DVB-S,QPSK +21=4172,V,18916,23,S2,8PSK +22=4192,V,11070,56,DVB-S,QPSK +23=11715,V,6510,Auto,DVB-S,QPSK +24=11724,V,6510,Auto,DVB-S,QPSK +25=11899,V,20000,34,DVB-S,QPSK +26=11928,V,20000,34,DVB-S,QPSK +27=11943,H,20000,34,DVB-S,QPSK +28=11957,V,20000,12,DVB-S,QPSK +29=11990,H,20000,34,DVB-S,QPSK +30=12016,V,20000,34,DVB-S,QPSK +31=12045,V,20000,34,DVB-S,QPSK +32=12167,H,6000,Auto,DVB-S,QPSK +33=12171,V,5800,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2410.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2410.ini new file mode 100644 index 000000000..188507e9d --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2410.ini @@ -0,0 +1,72 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2410 +2=Anik F3/DirecTV 7S/EchoStar 14 (119.0W) + +[DVB] +0=63 +1=3934,H,5714,34,DVB-S,QPSK +2=11715,V,20000,34,DVB-S,QPSK +3=11728,H,20000,34,DVB-S,QPSK +4=11745,V,20000,34,DVB-S,QPSK +5=11758,H,20000,34,DVB-S,QPSK +6=11776,V,20000,34,DVB-S,QPSK +7=11789,H,20000,34,DVB-S,QPSK +8=11806,V,20000,34,DVB-S,QPSK +9=11819,H,20000,34,DVB-S,QPSK +10=11837,V,20000,34,DVB-S,QPSK +11=11850,H,20000,34,DVB-S,QPSK +12=11867,V,20000,34,DVB-S,QPSK +13=11880,H,20000,34,DVB-S,QPSK +14=11898,V,20000,34,DVB-S,QPSK +15=11911,H,20000,34,DVB-S,QPSK +16=11928,V,20000,34,DVB-S,QPSK +17=11972,H,20000,34,DVB-S,QPSK +18=11989,V,20000,34,DVB-S,QPSK +19=12002,H,20000,34,DVB-S,QPSK +20=12020,V,20000,34,DVB-S,QPSK +21=12033,H,20000,34,DVB-S,QPSK +22=12050,V,20000,34,DVB-S,QPSK +23=12063,H,20000,34,DVB-S,QPSK +24=12081,V,20000,34,DVB-S,QPSK +25=12094,H,20000,34,DVB-S,QPSK +26=12111,V,20000,34,DVB-S,QPSK +27=12124,H,20000,34,DVB-S,QPSK +28=12142,V,20000,34,DVB-S,QPSK +29=12155,H,20000,34,DVB-S,QPSK +30=12172,V,20000,34,DVB-S,QPSK +31=12185,H,20000,34,DVB-S,QPSK +32=12224,V,21500,23,DVB-S,8PSK +33=12239,H,21500,23,DVB-S,8PSK +34=12253,V,21500,23,DVB-S,8PSK +35=12268,H,21500,23,DVB-S,8PSK +36=12282,V,21500,23,DVB-S,8PSK +37=12297,H,20000,78,DVB-S,QPSK +38=12311,V,21500,23,DVB-S,8PSK +39=12326,H,20000,78,DVB-S,QPSK +40=12341,V,20000,78,DVB-S,QPSK +41=12355,H,20000,78,DVB-S,QPSK +42=12370,V,20000,78,DVB-S,QPSK +43=12384,H,20000,78,DVB-S,QPSK +44=12399,V,20000,78,DVB-S,QPSK +45=12414,H,20000,78,DVB-S,QPSK +46=12428,V,20000,78,DVB-S,QPSK +47=12443,H,20000,78,DVB-S,QPSK +48=12457,V,20000,78,DVB-S,QPSK +49=12472,H,20000,78,DVB-S,QPSK +50=12486,V,20000,78,DVB-S,QPSK +51=12501,H,20000,78,DVB-S,QPSK +52=12516,V,20000,78,DVB-S,QPSK +53=12530,H,20000,Auto,DVB-S,QPSK +54=12545,V,20000,Auto,DVB-S,QPSK +55=12559,H,20000,23,S2,8PSK +56=12574,V,20000,Auto,DVB-S,QPSK +57=12588,H,20000,Auto,DVB-S,QPSK +58=12603,V,20000,Auto,DVB-S,QPSK +59=12618,H,20000,Auto,DVB-S,QPSK +60=12632,V,20000,Auto,DVB-S,QPSK +61=12647,H,20000,Auto,DVB-S,QPSK +62=12661,V,20000,Auto,DVB-S,QPSK +63=12676,H,20000,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2432.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2432.ini new file mode 100644 index 000000000..aacb92c28 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2432.ini @@ -0,0 +1,85 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2432 +2=Eutelsat 117 West A (116.8W) + +[DVB] +0=76 +1=3720,V,27000,34,DVB-S,QPSK +2=3744,V,2665,34,S2,8PSK +3=3748,V,2100,78,DVB-S,QPSK +4=3768,V,4800,34,S2,8PSK +5=3772,V,3515,34,DVB-S,QPSK +6=3786,V,6900,34,DVB-S,QPSK +7=3793,V,4240,34,S2,QPSK +8=3798,V,5225,56,S2,8PSK +9=3804,V,1480,56,S2,8PSK +10=3804,H,4000,34,DVB-S,QPSK +11=3808,H,2170,34,DVB-S,QPSK +12=3820,H,2000,34,S2,8PSK +13=3824,H,1808,34,DVB-S,QPSK +14=3835,V,19510,23,DVB-S,QPSK +15=3850,H,4710,34,DVB-S,QPSK +16=3853,H,1667,34,S2,8PSK +17=3854,V,8333,23,S2,8PSK +18=3868,V,8131,34,S2,8PSK +19=3883,H,1350,34,S2,8PSK +20=3885,H,1481,34,DVB-S,QPSK +21=3888,V,1480,23,S2,8PSK +22=3889,H,4181,34,DVB-S,QPSK +23=3895,H,3609,34,DVB-S,QPSK +24=3897,V,1480,34,DVB-S,QPSK +25=3899,H,4167,34,S2,QPSK +26=3903,H,1480,56,S2,8PSK +27=3903,V,2200,78,DVB-S,QPSK +28=3905,H,1600,34,S2,QPSK +29=3908,H,2170,34,DVB-S,QPSK +30=3911,H,2500,34,DVB-S,QPSK +31=3914,H,2105,56,S2,8PSK +32=3916,H,1520,34,DVB-S,QPSK +33=3920,V,7320,34,DVB-S,QPSK +34=3926,V,2222,34,DVB-S,QPSK +35=3930,V,2310,78,DVB-S,QPSK +36=3932,V,1447,34,S2,8PSK +37=3940,H,29270,34,DVB-S,QPSK +38=3949,V,11250,23,S2,8PSK +39=3957,V,1595,56,S2,8PSK +40=3960,V,1595,56,S2,8PSK +41=3962,V,1800,34,S2,QPSK +42=3968,V,7500,34,DVB-S,QPSK +43=3969,H,1100,34,S2,QPSK +44=3975,H,2170,34,S2,8PSK +45=3976,V,2666,34,DVB-S,QPSK +46=3984,V,3100,34,DVB-S,QPSK +47=3989,V,2892,34,DVB-S,QPSK +48=4009,V,6379,34,DVB-S,QPSK +49=4015,V,3000,34,DVB-S,QPSK +50=4031,V,15200,56,DVB-S,QPSK +51=4044,H,3333,34,DVB-S,QPSK +52=4049,H,3330,34,DVB-S,QPSK +53=4052,V,4307,34,DVB-S,QPSK +54=4056,V,1800,23,DVB-S,QPSK +55=4064,H,19510,34,DVB-S,QPSK +56=4075,H,2962,34,DVB-S,QPSK +57=4084,H,3162,78,DVB-S,QPSK +58=4090,H,5000,56,S2,8PSK +59=4103,H,1600,23,S2,8PSK +60=4106,H,3200,23,DVB-S,QPSK +61=4109,H,2885,34,S2,QPSK +62=4116,H,2900,34,S2,QPSK +63=4120,V,30000,56,S2,8PSK +64=4134,H,4400,34,DVB-S,QPSK +65=4152,H,1321,35,S2,8PSK +66=4155,H,1480,34,S2,8PSK +67=4175,H,1850,Auto,S2,8PSK +68=4178,H,2800,34,S2,8PSK +69=4189,H,9760,34,DVB-S,QPSK +70=12060,V,30000,34,DVB-S,8PSK +71=12080,H,30000,34,DVB-S,8PSK +72=12100,V,29000,34,DVB-S,8PSK +73=12126,V,5400,34,DVB-S,QPSK +74=12175,H,3704,34,DVB-S,QPSK +75=12180,H,3000,12,DVB-S,QPSK +76=12189,H,1660,78,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2451.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2451.ini new file mode 100644 index 000000000..0272503f2 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2451.ini @@ -0,0 +1,14 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2451 +2=Eutelsat 115 West A (114.9W) + +[DVB] +0=5 +1=12041,V,1562,Auto,DVB-S,QPSK +2=12044,V,1955,Auto,S2,QPSK +3=12049,V,1955,Auto,S2,QPSK +4=12063,H,3332,Auto,DVB-S,QPSK +5=12087,V,3400,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2470.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2470.ini new file mode 100644 index 000000000..0042e0ef1 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2470.ini @@ -0,0 +1,64 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2470 +2=Eutelsat 113 West A (113.0W) + +[DVB] +0=55 +1=3704,V,2222,34,S2,QPSK +2=3709,V,3255,34,DVB-S,QPSK +3=3714,V,2120,34,DVB-S,QPSK +4=3731,V,3782,78,DVB-S,QPSK +5=3734,H,3410,Auto,DVB-S,QPSK +6=3736,V,3254,34,DVB-S,QPSK +7=3744,V,2893,34,DVB-S,QPSK +8=3752,V,2893,34,DVB-S,QPSK +9=3760,V,2893,34,DVB-S,QPSK +10=3764,H,2934,34,DVB-S,QPSK +11=3765,V,3254,34,DVB-S,QPSK +12=3768,H,2976,78,DVB-S,QPSK +13=3769,V,3363,34,DVB-S,QPSK +14=3773,V,2532,34,DVB-S,QPSK +15=3773,H,2875,34,DVB-S,QPSK +16=3780,H,4406,56,DVB-S,QPSK +17=3784,H,2666,78,DVB-S,QPSK +18=3787,H,2083,34,DVB-S,QPSK +19=3821,H,3255,78,DVB-S,QPSK +20=3825,H,3621,56,S2,8PSK +21=3828,V,2550,56,DVB-S,QPSK +22=3829,H,3620,56,S2,8PSK +23=3834,H,3620,56,S2,8PSK +24=3835,V,1807,34,DVB-S,QPSK +25=3837,V,2550,78,DVB-S,QPSK +26=3848,V,13842,34,S2,8PSK +27=3848,H,2893,34,DVB-S,QPSK +28=3853,H,3255,34,DVB-S,QPSK +29=3857,H,2804,34,DVB-S,QPSK +30=3863,H,3200,34,DVB-S,QPSK +31=3867,H,2415,35,S2,8PSK +32=3875,H,4166,34,DVB-S,QPSK +33=3880,V,29270,34,DVB-S,QPSK +34=3900,H,30000,35,S2,8PSK +35=3920,V,29270,34,DVB-S,QPSK +36=3955,H,2400,Auto,S2,QPSK +37=4034,H,3551,34,DVB-S,QPSK +38=4064,V,3080,34,S2,8PSK +39=4080,V,2920,34,DVB-S,QPSK +40=4140,H,20008,56,S2,8PSK +41=11989,V,3750,34,DVB-S,QPSK +42=11994,V,4340,23,DVB-S,QPSK +43=12028,H,2600,Auto,DVB-S,QPSK +44=12046,H,14200,35,S2,8PSK +45=12089,H,11719,34,DVB-S,QPSK +46=12110,H,2170,Auto,DVB-S,QPSK +47=12126,V,6022,Auto,DVB-S,QPSK +48=12136,V,3255,Auto,DVB-S,QPSK +49=12151,V,3255,Auto,DVB-S,QPSK +50=12157,V,3038,Auto,DVB-S,QPSK +51=12161,H,1480,34,DVB-S,QPSK +52=12165,H,3333,Auto,DVB-S,QPSK +53=12165,V,3255,Auto,DVB-S,QPSK +54=12172,V,3333,Auto,DVB-S,QPSK +55=12193,V,3255,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2489.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2489.ini new file mode 100644 index 000000000..c71cfdd79 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2489.ini @@ -0,0 +1,40 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2489 +2=Anik F2 (111.1W) + +[DVB] +0=31 +1=4168,V,9737,12,S2,8PSK +2=11745,V,20500,23,DVB-S,8PSK +3=11758,H,20500,23,DVB-S,8PSK +4=11770,V,3270,Auto,DVB-S,QPSK +5=11819,H,20500,23,DVB-S,8PSK +6=11837,V,20500,23,DVB-S,8PSK +7=11850,H,20500,23,DVB-S,8PSK +8=11880,H,20500,23,DVB-S,8PSK +9=11898,V,20500,23,DVB-S,8PSK +10=11928,V,20500,23,DVB-S,8PSK +11=11972,H,20500,23,DVB-S,8PSK +12=11989,V,20500,23,DVB-S,8PSK +13=12002,H,19510,34,DVB-S,QPSK +14=12020,V,20500,23,DVB-S,8PSK +15=12033,H,20500,23,DVB-S,8PSK +16=12050,V,20500,23,DVB-S,8PSK +17=12063,H,19510,34,DVB-S,QPSK +18=12081,V,20500,23,DVB-S,8PSK +19=12094,H,19510,34,DVB-S,QPSK +20=12111,V,19510,34,DVB-S,QPSK +21=12142,V,20500,23,DVB-S,8PSK +22=12155,H,20500,23,DVB-S,8PSK +23=12172,V,19510,34,DVB-S,QPSK +24=12185,H,20500,23,DVB-S,8PSK +25=19776,H,15000,34,DVB-S,QPSK +26=19794,H,15000,34,DVB-S,QPSK +27=19814,H,15000,34,DVB-S,QPSK +28=19905,H,22500,34,DVB-S,QPSK +29=19932,H,22500,34,DVB-S,QPSK +30=19966,H,15000,12,DVB-S,QPSK +31=20002,H,15000,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2500.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2500.ini new file mode 100644 index 000000000..0fb566b48 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2500.ini @@ -0,0 +1,38 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2500 +2=DirecTV 5/EchoStar 10/11 (110.0W) + +[DVB] +0=29 +1=12224,V,20000,78,DVB-S,QPSK +2=12239,H,20000,78,DVB-S,QPSK +3=12253,V,20000,78,DVB-S,QPSK +4=12268,H,21500,23,DVB-S,8PSK +5=12282,V,20000,78,DVB-S,QPSK +6=12297,H,20000,78,DVB-S,QPSK +7=12311,V,21500,23,DVB-S,8PSK +8=12326,H,20000,78,DVB-S,QPSK +9=12341,V,20000,78,DVB-S,QPSK +10=12355,H,20000,78,DVB-S,QPSK +11=12370,V,20000,78,DVB-S,QPSK +12=12384,H,20000,56,DVB-S,QPSK +13=12399,V,21500,23,DVB-S,8PSK +14=12414,H,20000,78,DVB-S,QPSK +15=12428,V,20000,78,DVB-S,QPSK +16=12443,H,20000,78,DVB-S,QPSK +17=12472,H,21500,23,DVB-S,8PSK +18=12486,V,21500,23,DVB-S,8PSK +19=12501,H,21500,23,DVB-S,8PSK +20=12516,V,20000,78,DVB-S,QPSK +21=12530,H,21500,23,DVB-S,8PSK +22=12545,V,21500,23,DVB-S,8PSK +23=12559,H,20000,78,DVB-S,QPSK +24=12574,V,20000,56,DVB-S,8PSK +25=12588,H,20000,56,DVB-S,QPSK +26=12603,V,20000,56,DVB-S,QPSK +27=12618,H,20000,Auto,DVB-S,QPSK +28=12632,V,21500,23,DVB-S,8PSK +29=12661,V,21500,23,DVB-S,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2527.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2527.ini new file mode 100644 index 000000000..41b4e2981 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2527.ini @@ -0,0 +1,79 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2527 +2=Anik F1R/G1 (107.3W) + +[DVB] +0=70 +1=3734,V,1665,56,DVB-S,QPSK +2=3780,V,28346,78,DVB-S,QPSK +3=3807,V,6500,12,DVB-S,QPSK +4=3825,V,6500,12,DVB-S,QPSK +5=3840,H,30000,34,S2,8PSK +6=3860,V,30000,23,S2,8PSK +7=3913,V,7078,23,S2,8PSK +8=3920,H,30000,34,DVB-S,8PSK +9=3924,V,3000,78,DVB-S,QPSK +10=3948,V,14630,34,DVB-S,QPSK +11=3962,H,9120,78,DVB-S,QPSK +12=4020,V,30000,56,S2,8PSK +13=4040,H,30000,34,S2,8PSK +14=4060,V,28346,78,DVB-S,QPSK +15=4080,H,30000,34,S2,8PSK +16=4100,V,28346,78,DVB-S,QPSK +17=4107,H,7440,56,DVB-S,QPSK +18=4117,H,6200,56,DVB-S,QPSK +19=4140,V,30000,56,S2,8PSK +20=4160,H,30000,34,S2,8PSK +21=11092,V,22000,89,DVB-S,8PSK +22=11092,H,22000,89,DVB-S,8PSK +23=11122,V,22000,89,DVB-S,8PSK +24=11122,H,22000,89,DVB-S,8PSK +25=11152,V,22000,89,DVB-S,8PSK +26=11152,H,22000,89,DVB-S,8PSK +27=11183,V,22000,89,DVB-S,8PSK +28=11183,H,22000,89,DVB-S,8PSK +29=11592,V,22000,56,DVB-S,8PSK +30=11592,H,22000,89,DVB-S,8PSK +31=11622,V,22000,56,DVB-S,8PSK +32=11622,H,22000,89,DVB-S,8PSK +33=11652,V,22000,56,DVB-S,8PSK +34=11683,V,22000,56,DVB-S,8PSK +35=11683,H,20500,56,DVB-S,8PSK +36=11715,V,21000,34,DVB-S,8PSK +37=11728,H,19510,34,DVB-S,QPSK +38=11745,V,19510,34,DVB-S,QPSK +39=11758,H,19510,34,DVB-S,QPSK +40=11776,V,19510,34,DVB-S,QPSK +41=11789,H,19510,34,DVB-S,QPSK +42=11806,V,19510,34,DVB-S,QPSK +43=11819,H,19510,34,DVB-S,QPSK +44=11837,V,19510,34,DVB-S,QPSK +45=11850,H,19510,34,DVB-S,QPSK +46=11867,V,19510,34,DVB-S,QPSK +47=11880,H,19510,34,DVB-S,QPSK +48=11898,V,19510,34,DVB-S,QPSK +49=11902,H,5859,34,DVB-S,QPSK +50=11912,H,5859,34,DVB-S,QPSK +51=11928,V,19510,34,DVB-S,QPSK +52=11933,H,5859,34,DVB-S,QPSK +53=11941,H,5859,34,DVB-S,QPSK +54=11949,H,5859,34,DVB-S,QPSK +55=11959,V,19510,34,DVB-S,QPSK +56=11972,H,19510,34,DVB-S,QPSK +57=11989,V,20500,23,DVB-S,8PSK +58=12002,H,19510,34,DVB-S,QPSK +59=12020,V,19510,34,DVB-S,QPSK +60=12033,H,19510,34,DVB-S,QPSK +61=12050,V,19510,34,DVB-S,QPSK +62=12063,H,19510,34,DVB-S,QPSK +63=12081,V,20500,23,DVB-S,8PSK +64=12094,H,19510,34,DVB-S,QPSK +65=12111,V,19510,34,DVB-S,QPSK +66=12124,H,19510,34,DVB-S,QPSK +67=12142,V,19510,34,DVB-S,QPSK +68=12155,H,19510,34,DVB-S,QPSK +69=12172,V,19510,34,DVB-S,QPSK +70=12185,H,19510,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2550.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2550.ini new file mode 100644 index 000000000..d573433b8 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2550.ini @@ -0,0 +1,37 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2550 +2=AMC 15/18 (105.0W) + +[DVB] +0=28 +1=3720,V,19510,34,DVB-S,QPSK +2=3760,V,28068,34,DVB-S,QPSK +3=3780,H,30000,34,S2,8PSK +4=3840,V,30000,56,S2,8PSK +5=3860,H,30000,56,S2,8PSK +6=3900,H,19510,34,DVB-S,QPSK +7=3940,H,30000,56,S2,8PSK +8=4000,V,30000,56,S2,8PSK +9=4020,H,30000,56,S2,8PSK +10=4060,H,19510,34,DVB-S,QPSK +11=4080,V,30000,56,S2,8PSK +12=4100,H,19510,34,DVB-S,QPSK +13=4120,V,19510,34,DVB-S,QPSK +14=4140,H,19510,34,DVB-S,QPSK +15=4160,V,30000,56,S2,8PSK +16=4180,H,19510,34,DVB-S,QPSK +17=11706,V,6620,34,DVB-S,QPSK +18=11716,V,6620,34,DVB-S,QPSK +19=11724,V,6113,34,DVB-S,QPSK +20=11729,H,3979,34,DVB-S,QPSK +21=11734,V,6113,34,DVB-S,QPSK +22=11756,V,6113,34,DVB-S,QPSK +23=11766,V,4411,Auto,DVB-S,QPSK +24=11766,H,6113,34,DVB-S,QPSK +25=11830,V,6620,Auto,DVB-S,QPSK +26=11834,H,13235,Auto,DVB-S,QPSK +27=11856,V,3548,12,DVB-S,QPSK +28=12122,H,1000,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2570.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2570.ini new file mode 100644 index 000000000..1fcd35643 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2570.ini @@ -0,0 +1,73 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2570 +2=SES 3/Spaceway 1 & DirecTV 10/12 (103.0W) + +[DVB] +0=64 +1=3740,V,29270,78,DVB-S,QPSK +2=3760,H,30000,34,S2,8PSK +3=3780,V,28800,56,S2,8PSK +4=3800,H,29270,78,DVB-S,QPSK +5=3820,V,29270,34,DVB-S,QPSK +6=3840,H,26681,34,DVB-S,QPSK +7=3860,V,30000,56,S2,8PSK +8=3891,V,14400,23,S2,8PSK +9=3904,V,6667,23,S2,8PSK +10=3906,H,6511,34,DVB-S,QPSK +11=3913,H,2927,34,DVB-S,QPSK +12=3920,H,3150,56,DVB-S,QPSK +13=3924,H,2734,Auto,S2,QPSK +14=3960,H,30000,56,S2,8PSK +15=3972,V,14800,56,DVB-S,QPSK +16=4040,H,30000,23,S2,8PSK +17=4081,H,7233,34,DVB-S,QPSK +18=4089,H,5923,56,S2,8PSK +19=4091,V,14029,34,DVB-S,QPSK +20=4120,H,30000,56,S2,8PSK +21=4140,V,30000,56,S2,8PSK +22=4160,H,26681,34,DVB-S,QPSK +23=11760,H,30000,56,S2,8PSK +24=11840,H,30000,56,S2,8PSK +25=11880,H,30000,56,S2,8PSK +26=11940,V,20000,34,DVB-S,QPSK +27=11985,H,4600,34,S2,8PSK +28=12009,H,4600,34,S2,8PSK +29=12015,H,4600,56,DVB-S,QPSK +30=12025,H,4600,34,S2,8PSK +31=12065,H,4232,56,DVB-S,QPSK +32=12071,H,4600,34,S2,8PSK +33=12076,V,4250,56,S2,8PSK +34=12077,H,4600,34,S2,8PSK +35=12083,H,4600,34,S2,8PSK +36=12089,H,4600,34,S2,8PSK +37=12095,H,4600,34,S2,8PSK +38=12145,V,20000,34,DVB-S,QPSK +39=12157,H,4600,34,S2,8PSK +40=12175,H,4600,34,S2,8PSK +41=12182,V,25000,34,DVB-S,QPSK +42=18327,H,30000,23,S2,QPSK +43=18327,V,30000,23,S2,QPSK +44=18367,H,30000,23,S2,QPSK +45=18367,V,30000,23,S2,QPSK +46=18407,H,30000,23,S2,QPSK +47=18407,V,30000,23,S2,QPSK +48=18447,H,30000,23,S2,QPSK +49=18447,V,30000,23,S2,QPSK +50=18487,H,30000,23,S2,QPSK +51=18487,V,30000,23,S2,QPSK +52=18527,H,30000,23,S2,QPSK +53=18527,V,30000,23,S2,QPSK +54=18567,H,30000,23,S2,QPSK +55=18567,V,30000,23,S2,QPSK +56=18607,H,30000,23,S2,QPSK +57=18607,V,30000,23,S2,QPSK +58=18648,V,30000,23,S2,QPSK +59=19741,H,30000,34,S2,QPSK +60=19741,V,30000,34,S2,QPSK +61=19804,H,30000,34,S2,QPSK +62=19804,V,30000,34,S2,QPSK +63=19866,H,30000,34,S2,QPSK +64=19866,V,30000,34,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2590.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2590.ini new file mode 100644 index 000000000..322d683c1 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2590.ini @@ -0,0 +1,55 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2590 +2=DirecTV 4S/8/SES 1 (101.0W) + +[DVB] +0=46 +1=3710,V,4340,34,DVB-S,QPSK +2=3716,V,4775,35,S2,8PSK +3=3722,V,5600,34,S2,8PSK +4=3773,V,4442,34,DVB-S,QPSK +5=3920,V,30000,56,S2,8PSK +6=3953,V,2734,56,DVB-S,QPSK +7=3957,V,2734,56,DVB-S,QPSK +8=3961,V,2734,56,DVB-S,QPSK +9=3974,V,5924,56,DVB-S,QPSK +10=4020,H,28000,34,S2,8PSK +11=11705,V,3650,34,S2,QPSK +12=11795,H,4342,56,DVB-S,QPSK +13=11820,H,20000,34,DVB-S,QPSK +14=12172,H,15000,Auto,DVB-S,QPSK +15=12224,V,20000,Auto,DVB-S,QPSK +16=12239,H,20000,Auto,DVB-S,QPSK +17=12253,V,20000,Auto,DVB-S,QPSK +18=12268,H,20000,23,DVB-S,QPSK +19=12282,V,20000,Auto,DVB-S,QPSK +20=12297,H,20000,Auto,DVB-S,QPSK +21=12311,V,20000,Auto,DVB-S,QPSK +22=12326,H,20000,Auto,DVB-S,QPSK +23=12341,V,20000,Auto,DVB-S,QPSK +24=12355,H,20000,Auto,DVB-S,QPSK +25=12370,V,20000,Auto,DVB-S,QPSK +26=12384,H,20000,Auto,DVB-S,QPSK +27=12399,V,20000,Auto,DVB-S,QPSK +28=12414,H,20000,Auto,DVB-S,QPSK +29=12428,V,20000,Auto,DVB-S,QPSK +30=12443,H,20000,Auto,DVB-S,QPSK +31=12457,V,20000,Auto,DVB-S,QPSK +32=12472,H,20000,Auto,DVB-S,QPSK +33=12486,V,20000,Auto,DVB-S,QPSK +34=12501,H,20000,Auto,DVB-S,QPSK +35=12516,V,20000,Auto,DVB-S,QPSK +36=12530,H,20000,Auto,DVB-S,QPSK +37=12545,V,20000,Auto,DVB-S,QPSK +38=12559,H,20000,Auto,DVB-S,QPSK +39=12574,V,20000,Auto,DVB-S,QPSK +40=12588,H,20000,23,DVB-S,QPSK +41=12603,V,20000,Auto,DVB-S,QPSK +42=12618,H,20000,Auto,DVB-S,QPSK +43=12632,V,20000,Auto,DVB-S,QPSK +44=12647,H,20000,Auto,DVB-S,QPSK +45=12661,V,20000,Auto,DVB-S,QPSK +46=12676,H,20000,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2608.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2608.ini new file mode 100644 index 000000000..e3200b7cd --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2608.ini @@ -0,0 +1,81 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2608 +2=DirecTV 14/Galaxy 16/Spaceway 2 & DirecTV 11 (99.2W) + +[DVB] +0=72 +1=3720,H,8700,34,S2,8PSK +2=3735,H,3775,34,DVB-S,QPSK +3=3740,V,30000,56,S2,QPSK +4=3770,H,1220,34,S2,QPSK +5=3785,H,4850,34,S2,8PSK +6=3789,H,1666,56,DVB-S,QPSK +7=3791,H,1665,56,DVB-S,QPSK +8=3793,V,7030,12,S2,QPSK +9=3795,H,3255,34,DVB-S,QPSK +10=3811,H,8030,34,DVB-S,QPSK +11=3820,V,26000,34,DVB-S,QPSK +12=3900,V,28000,34,DVB-S,QPSK +13=3904,H,3125,78,DVB-S,QPSK +14=3912,H,10833,89,S2,8PSK +15=3924,H,3125,78,DVB-S,QPSK +16=3925,V,3979,23,DVB-S,QPSK +17=3928,H,3125,78,DVB-S,QPSK +18=3930,V,3680,23,DVB-S,QPSK +19=3931,H,1562,56,DVB-S,QPSK +20=3938,H,1561,78,DVB-S,QPSK +21=3940,V,27600,56,S2,QPSK +22=3953,H,3125,78,DVB-S,QPSK +23=3977,H,2555,Auto,DVB-S,QPSK +24=3980,V,26470,56,DVB-S,QPSK +25=4000,H,26400,34,DVB-S,QPSK +26=4006,V,5833,34,S2,QPSK +27=4060,V,27780,56,DVB-S,QPSK +28=4080,H,27780,56,DVB-S,QPSK +29=4120,H,30000,910,S2,8PSK +30=4140,V,30000,910,S2,8PSK +31=4145,H,3308,34,DVB-S,QPSK +32=4193,V,6620,23,DVB-S,QPSK +33=11765,V,4000,34,DVB-S,QPSK +34=11782,V,3979,34,DVB-S,QPSK +35=11787,V,3979,34,DVB-S,QPSK +36=11792,V,3979,34,DVB-S,QPSK +37=11800,H,30000,34,S2,QPSK +38=11804,V,3979,34,DVB-S,QPSK +39=11809,V,3979,34,DVB-S,QPSK +40=11815,V,3979,34,DVB-S,QPSK +41=11820,V,3979,34,DVB-S,QPSK +42=11825,V,3979,34,DVB-S,QPSK +43=11825,H,3979,34,DVB-S,QPSK +44=11830,V,3979,34,DVB-S,QPSK +45=11830,H,3979,34,DVB-S,QPSK +46=11836,V,3979,34,DVB-S,QPSK +47=11836,H,3979,34,DVB-S,QPSK +48=11842,H,3979,34,DVB-S,QPSK +49=11848,H,3979,34,DVB-S,QPSK +50=11854,H,3979,34,DVB-S,QPSK +51=11865,H,3979,34,DVB-S,QPSK +52=11871,H,3979,34,DVB-S,QPSK +53=11876,H,3979,34,DVB-S,QPSK +54=11882,H,3979,34,DVB-S,QPSK +55=11884,V,3979,34,DVB-S,QPSK +56=11888,H,3979,34,DVB-S,QPSK +57=11889,V,3979,34,DVB-S,QPSK +58=11894,H,3979,34,DVB-S,QPSK +59=11895,V,3979,34,DVB-S,QPSK +60=11900,V,3979,34,DVB-S,QPSK +61=11905,V,3979,34,DVB-S,QPSK +62=11905,H,3979,34,DVB-S,QPSK +63=11910,V,3979,34,DVB-S,QPSK +64=11911,H,3979,34,DVB-S,QPSK +65=11916,V,3979,34,DVB-S,QPSK +66=11917,H,3979,34,DVB-S,QPSK +67=11960,H,30000,78,DVB-S,QPSK +68=11980,V,30000,56,DVB-S,QPSK +69=12020,V,20000,910,S2,8PSK +70=12040,H,26665,23,DVB-S,QPSK +71=12093,H,6620,34,DVB-S,QPSK +72=12100,V,30000,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2630.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2630.ini new file mode 100644 index 000000000..1a888553a --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2630.ini @@ -0,0 +1,57 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2630 +2=Galaxy 19 (97.0W) + +[DVB] +0=48 +1=3706,V,6111,34,DVB-S,QPSK +2=3760,V,31456,35,S2,8PSK +3=3780,H,29270,34,DVB-S,QPSK +4=3800,V,29860,910,S2,8PSK +5=3831,V,11800,56,DVB-S,QPSK +6=3839,V,2940,78,DVB-S,QPSK +7=3847,V,2200,34,DVB-S,QPSK +8=3851,V,3532,34,DVB-S,QPSK +9=3857,V,2940,Auto,DVB-S,QPSK +10=3880,V,30000,56,S2,8PSK +11=3896,H,20000,34,DVB-S,QPSK +12=3914,H,7000,34,S2,8PSK +13=3922,V,3703,34,DVB-S,QPSK +14=3940,H,30000,56,S2,8PSK +15=3960,V,29300,34,DVB-S,QPSK +16=3985,V,3600,Auto,S2,8PSK +17=4001,V,1481,89,S2,8PSK +18=4009,V,4407,56,S2,8PSK +19=4027,V,7200,23,S2,8PSK +20=4034,H,6111,34,DVB-S,QPSK +21=4060,H,32362,34,DVB-S,QPSK +22=4080,V,29856,910,S2,8PSK +23=4100,H,29856,910,S2,8PSK +24=4120,V,30000,56,S2,8PSK +25=4140,H,29856,910,S2,8PSK +26=4160,V,29856,910,S2,8PSK +27=4167,H,6922,56,S2,8PSK +28=11836,V,20770,34,DVB-S,QPSK +29=11842,H,22000,34,DVB-S,QPSK +30=11867,V,22000,34,DVB-S,QPSK +31=11898,V,22000,34,DVB-S,QPSK +32=11904,H,22000,34,DVB-S,QPSK +33=11929,V,22000,34,DVB-S,QPSK +34=11936,H,20000,34,DVB-S,QPSK +35=11960,V,22000,34,DVB-S,QPSK +36=11966,H,22000,34,DVB-S,QPSK +37=12022,V,22000,34,DVB-S,QPSK +38=12028,H,21991,34,DVB-S,QPSK +39=12053,V,22000,34,DVB-S,QPSK +40=12060,H,22000,34,DVB-S,QPSK +41=12084,V,22000,34,DVB-S,QPSK +42=12090,H,20000,34,DVB-S,QPSK +43=12115,V,22425,34,DVB-S,QPSK +44=12122,H,20000,34,DVB-S,QPSK +45=12146,V,22000,34,DVB-S,QPSK +46=12152,H,20000,34,DVB-S,QPSK +47=12177,V,23000,34,DVB-S,QPSK +48=12184,H,21991,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2650.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2650.ini new file mode 100644 index 000000000..f3c4e0de6 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2650.ini @@ -0,0 +1,83 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2650 +2=Galaxy 3C/Intelsat 30/Spaceway 3 (95.0W) + +[DVB] +0=74 +1=3785,V,6922,56,S2,8PSK +2=3800,H,29270,Auto,DVB-S,QPSK +3=3827,H,6922,56,S2,8PSK +4=3829,V,13000,56,S2,8PSK +5=3884,V,1035,34,S2,QPSK +6=3889,V,3074,34,DVB-S,QPSK +7=3893,V,3074,34,DVB-S,QPSK +8=3896,V,2000,34,S2,8PSK +9=3901,V,1836,34,S2,8PSK +10=3911,V,3074,34,DVB-S,QPSK +11=3911,H,15000,56,S2,8PSK +12=3924,V,3074,34,DVB-S,QPSK +13=3929,V,3074,34,DVB-S,QPSK +14=3935,V,2000,34,S2,8PSK +15=3940,V,2000,34,S2,8PSK +16=3943,V,3074,34,DVB-S,QPSK +17=3950,V,2000,34,S2,8PSK +18=3956,V,3302,34,S2,8PSK +19=3965,V,1035,34,S2,8PSK +20=3970,V,1035,34,S2,QPSK +21=3974,V,3074,34,DVB-S,QPSK +22=3980,V,1035,34,S2,QPSK +23=3984,V,1035,34,S2,QPSK +24=3988,V,3074,34,DVB-S,QPSK +25=3992,V,3074,34,DVB-S,QPSK +26=3996,V,3074,34,DVB-S,QPSK +27=4000,H,30000,910,S2,8PSK +28=4031,H,14035,34,S2,8PSK +29=4060,V,31250,34,S2,8PSK +30=4080,H,31250,34,S2,8PSK +31=4120,H,29270,Auto,DVB-S,QPSK +32=4173,V,2221,Auto,DVB-S,QPSK +33=11480,V,22500,Auto,DVB-S,QPSK +34=11480,H,20000,23,DVB-S,QPSK +35=11510,V,20000,23,DVB-S,QPSK +36=11510,H,22500,Auto,DVB-S,QPSK +37=11539,V,22500,Auto,DVB-S,QPSK +38=11539,H,22500,Auto,DVB-S,QPSK +39=11568,V,20000,23,DVB-S,QPSK +40=11568,H,22500,Auto,DVB-S,QPSK +41=11597,V,21500,56,S2,QPSK +42=11597,H,22500,Auto,DVB-S,QPSK +43=11626,V,22500,Auto,DVB-S,QPSK +44=11626,H,22500,Auto,DVB-S,QPSK +45=11655,V,22500,Auto,DVB-S,QPSK +46=11655,H,22500,Auto,DVB-S,QPSK +47=11685,V,22500,Auto,DVB-S,QPSK +48=11685,H,22500,Auto,DVB-S,QPSK +49=11720,H,20000,23,DVB-S,QPSK +50=11750,H,30000,23,S2,QPSK +51=11780,H,20760,34,DVB-S,QPSK +52=11810,H,30000,23,S2,QPSK +53=11840,H,20000,23,DVB-S,QPSK +54=11900,H,20000,23,DVB-S,QPSK +55=11930,H,30000,23,S2,QPSK +56=11930,H,20000,23,DVB-S,QPSK +57=11960,H,20000,23,DVB-S,QPSK +58=11960,V,20000,23,DVB-S,QPSK +59=11975,H,20000,23,DVB-S,QPSK +60=11990,H,20000,23,DVB-S,QPSK +61=11990,V,20000,23,DVB-S,QPSK +62=12020,V,21000,56,S2,QPSK +63=12035,H,21000,56,S2,QPSK +64=12050,H,20000,34,DVB-S,QPSK +65=12050,V,21000,56,S2,QPSK +66=12080,H,20000,23,DVB-S,QPSK +67=12080,V,20000,23,DVB-S,QPSK +68=12095,H,20000,23,DVB-S,QPSK +69=12110,H,2220,Auto,DVB-S,QPSK +70=12110,V,20000,23,DVB-S,QPSK +71=12140,H,20000,23,DVB-S,QPSK +72=12140,V,20000,23,DVB-S,QPSK +73=12155,H,20000,23,DVB-S,QPSK +74=12170,V,20000,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2669.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2669.ini new file mode 100644 index 000000000..ccb7e8531 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2669.ini @@ -0,0 +1,16 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2669 +2=Galaxy 25 (93.1W) + +[DVB] +0=7 +1=4036,V,19852,56,DVB-S,QPSK +2=4053,V,6617,56,DVB-S,QPSK +3=4180,H,26470,56,DVB-S,QPSK +4=11986,V,5075,Auto,DVB-S,QPSK +5=12010,V,11574,Auto,DVB-S,QPSK +6=12124,V,6615,Auto,DVB-S,QPSK +7=12126,V,2220,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2690.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2690.ini new file mode 100644 index 000000000..e3c73e65c --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2690.ini @@ -0,0 +1,97 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2690 +2=Galaxy 17/Nimiq 6 (91.0W) + +[DVB] +0=88 +1=3720,H,28800,35,S2,8PSK +2=3740,V,31250,34,S2,8PSK +3=3751,H,14410,56,S2,8PSK +4=3764,H,7500,56,S2,8PSK +5=3780,V,29270,34,DVB-S,QPSK +6=3800,H,31250,34,S2,8PSK +7=3820,V,30000,56,DVB-S,QPSK +8=3840,H,29270,78,DVB-S,QPSK +9=3860,V,31250,34,S2,8PSK +10=3866,H,6620,12,DVB-S,QPSK +11=3920,H,30000,34,S2,8PSK +12=3925,V,4249,23,S2,8PSK +13=3934,V,2480,78,DVB-S,QPSK +14=3952,V,10833,56,S2,8PSK +15=3960,H,29270,78,DVB-S,QPSK +16=3984,V,22500,56,S2,8PSK +17=4000,H,30000,56,S2,8PSK +18=4020,V,31250,34,S2,8PSK +19=4040,H,31250,34,S2,8PSK +20=4066,V,6051,56,S2,8PSK +21=4076,V,3000,34,DVB-S,QPSK +22=4080,H,30000,34,S2,8PSK +23=4100,V,30000,56,S2,8PSK +24=4115,H,19510,34,DVB-S,QPSK +25=4134,H,6960,56,S2,8PSK +26=4140,V,31250,34,S2,8PSK +27=4160,H,31250,34,S2,8PSK +28=4180,V,30000,56,S2,8PSK +29=11740,V,30000,78,DVB-S,QPSK +30=11925,V,3979,34,DVB-S,QPSK +31=11930,V,3979,34,DVB-S,QPSK +32=11935,V,3979,34,DVB-S,QPSK +33=11940,V,3979,34,DVB-S,QPSK +34=11945,V,3979,34,DVB-S,QPSK +35=11950,V,3979,34,DVB-S,QPSK +36=11952,H,5859,Auto,DVB-S,QPSK +37=11955,V,3979,34,DVB-S,QPSK +38=11965,V,3979,Auto,DVB-S,QPSK +39=11970,V,3979,Auto,DVB-S,QPSK +40=11973,H,6111,34,DVB-S,QPSK +41=11975,V,3979,Auto,DVB-S,QPSK +42=11980,V,3979,Auto,DVB-S,QPSK +43=11985,V,3979,Auto,DVB-S,QPSK +44=11987,H,6111,Auto,DVB-S,QPSK +45=11990,V,3979,Auto,DVB-S,QPSK +46=11995,V,3979,Auto,DVB-S,QPSK +47=11995,H,6111,34,DVB-S,QPSK +48=12010,V,11574,34,DVB-S,QPSK +49=12020,V,3979,34,DVB-S,QPSK +50=12025,V,3979,34,DVB-S,QPSK +51=12030,V,3979,34,DVB-S,QPSK +52=12035,V,3979,34,DVB-S,QPSK +53=12076,H,13000,Auto,DVB-S,QPSK +54=12115,H,13235,Auto,DVB-S,QPSK +55=12130,H,13000,34,DVB-S,QPSK +56=12180,V,5632,34,DVB-S,QPSK +57=12224,V,20000,78,DVB-S,QPSK +58=12239,H,20000,56,DVB-S,QPSK +59=12253,V,20000,78,DVB-S,QPSK +60=12268,H,20000,78,DVB-S,QPSK +61=12282,V,20000,Auto,DVB-S,QPSK +62=12297,H,20000,56,DVB-S,QPSK +63=12311,V,20000,78,DVB-S,QPSK +64=12326,H,20000,78,DVB-S,QPSK +65=12341,V,20000,Auto,DVB-S,QPSK +66=12355,H,20000,78,DVB-S,QPSK +67=12370,V,20000,Auto,DVB-S,QPSK +68=12384,H,20000,78,DVB-S,QPSK +69=12399,V,20000,78,DVB-S,QPSK +70=12414,H,20000,56,DVB-S,QPSK +71=12428,V,20000,56,DVB-S,QPSK +72=12443,H,20000,56,DVB-S,QPSK +73=12457,V,20000,Auto,DVB-S,QPSK +74=12472,H,20000,78,DVB-S,QPSK +75=12486,V,20000,56,DVB-S,QPSK +76=12501,H,20000,56,DVB-S,QPSK +77=12516,V,20000,78,DVB-S,QPSK +78=12530,H,20000,78,DVB-S,QPSK +79=12545,V,20000,78,DVB-S,QPSK +80=12559,H,20000,78,DVB-S,QPSK +81=12574,V,20000,78,DVB-S,QPSK +82=12588,H,20000,78,DVB-S,QPSK +83=12603,V,20000,56,DVB-S,QPSK +84=12618,H,20000,56,DVB-S,QPSK +85=12632,V,20000,56,DVB-S,QPSK +86=12647,H,20000,56,DVB-S,QPSK +87=12661,V,20000,56,DVB-S,QPSK +88=12676,H,20000,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2710.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2710.ini new file mode 100644 index 000000000..8e5aa2688 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2710.ini @@ -0,0 +1,69 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2710 +2=Galaxy 28 (89.0W) + +[DVB] +0=60 +1=3840,V,29860,910,S2,8PSK +2=3860,H,26000,Auto,S2,8PSK +3=3880,V,29860,910,S2,QPSK +4=3900,H,32360,34,DVB-S,QPSK +5=3920,V,29860,910,S2,8PSK +6=3980,H,32360,34,DVB-S,QPSK +7=4005,V,6111,34,DVB-S,QPSK +8=4014,V,6111,34,DVB-S,QPSK +9=4060,H,32362,34,S2,QPSK +10=4110,H,2835,Auto,S2,8PSK +11=4154,V,4434,Auto,DVB-S,QPSK +12=4166,H,7440,Auto,DVB-S,QPSK +13=4175,H,7440,Auto,DVB-S,QPSK +14=4185,H,7440,Auto,DVB-S,QPSK +15=11711,H,6620,Auto,DVB-S,QPSK +16=11724,H,6500,Auto,DVB-S,QPSK +17=11732,H,4440,Auto,DVB-S,QPSK +18=11745,H,7030,Auto,DVB-S,QPSK +19=11747,H,6620,Auto,DVB-S,QPSK +20=11756,H,6620,Auto,DVB-S,QPSK +21=11800,H,30000,23,S2,8PSK +22=11845,H,6510,Auto,DVB-S,QPSK +23=11884,H,2788,45,S2,QPSK +24=11920,V,30000,78,DVB-S,QPSK +25=11920,H,30000,23,S2,8PSK +26=11925,H,3979,34,DVB-S,QPSK +27=11930,H,3979,34,DVB-S,QPSK +28=11935,H,3979,34,DVB-S,QPSK +29=11940,H,3979,34,DVB-S,QPSK +30=11945,H,3979,34,DVB-S,QPSK +31=11950,H,3979,34,DVB-S,QPSK +32=11955,H,3979,34,DVB-S,QPSK +33=11960,H,28800,34,DVB-S,QPSK +34=11965,H,3979,34,DVB-S,QPSK +35=11970,V,3979,34,DVB-S,QPSK +36=11970,H,3979,34,DVB-S,QPSK +37=11975,H,3979,34,DVB-S,QPSK +38=11980,H,3979,34,DVB-S,QPSK +39=11985,H,3979,34,DVB-S,QPSK +40=11989,V,6111,34,DVB-S,QPSK +41=11990,H,3979,34,DVB-S,QPSK +42=11995,H,3979,34,DVB-S,QPSK +43=12000,H,28800,34,DVB-S,QPSK +44=12009,V,6111,34,DVB-S,QPSK +45=12035,V,6111,34,DVB-S,QPSK +46=12047,V,6111,Auto,DVB-S,QPSK +47=12100,H,30000,78,DVB-S,QPSK +48=12121,H,2676,34,DVB-S,QPSK +49=12140,H,30000,78,DVB-S,QPSK +50=12160,V,30000,78,DVB-S,QPSK +51=12164,H,2785,34,DVB-S,QPSK +52=12167,H,2785,34,DVB-S,QPSK +53=12171,H,2785,34,DVB-S,QPSK +54=12174,H,2785,34,DVB-S,QPSK +55=12178,H,2785,34,DVB-S,QPSK +56=12181,H,2785,34,DVB-S,QPSK +57=12185,H,2785,34,DVB-S,QPSK +58=12188,H,2785,34,DVB-S,QPSK +59=12192,H,2785,34,DVB-S,QPSK +60=12195,H,2785,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2728.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2728.ini new file mode 100644 index 000000000..9b148a046 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2728.ini @@ -0,0 +1,11 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2728 +2=TKSat 1 (87.2W) + +[DVB] +0=2 +1=11479,V,15000,Auto,S2,QPSK +2=12486,V,21702,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2730.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2730.ini new file mode 100644 index 000000000..fdb17c5c0 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2730.ini @@ -0,0 +1,41 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2730 +2=SES 2 (87.0W) + +[DVB] +0=32 +1=3743,V,5000,56,S2,8PSK +2=3753,V,8680,34,DVB-S,QPSK +3=3760,H,26680,Auto,DVB-S,QPSK +4=3780,V,28800,56,DVB-S,QPSK +5=3842,H,6150,78,DVB-S,QPSK +6=3887,H,18400,23,S2,8PSK +7=3949,V,4164,34,S2,8PSK +8=3954,V,2500,34,DVB-S,QPSK +9=4000,H,29125,56,S2,8PSK +10=4026,H,2300,34,S2,8PSK +11=4044,H,3910,34,DVB-S,QPSK +12=4146,H,6789,34,DVB-S,QPSK +13=4149,H,5063,34,DVB-S,QPSK +14=4188,V,3027,Auto,DVB-S,QPSK +15=11725,H,3675,23,DVB-S,QPSK +16=11737,V,8333,23,DVB-S,QPSK +17=11745,H,3979,34,DVB-S,QPSK +18=11750,V,7320,78,DVB-S,QPSK +19=11800,H,2686,34,DVB-S,QPSK +20=11804,H,1250,35,S2,8PSK +21=11811,H,11150,35,S2,8PSK +22=11820,V,30000,56,DVB-S,QPSK +23=11900,V,30000,23,DVB-S,QPSK +24=11960,H,29270,34,DVB-S,QPSK +25=12008,V,5000,12,DVB-S,QPSK +26=12009,H,2170,34,DVB-S,QPSK +27=12044,V,3200,23,S2,8PSK +28=12064,V,6510,56,DVB-S,QPSK +29=12152,H,15000,Auto,S2,8PSK +30=12165,H,6110,34,DVB-S,QPSK +31=12175,H,4342,Auto,DVB-S,QPSK +32=12184,V,3500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2750.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2750.ini new file mode 100644 index 000000000..8f2358d56 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2750.ini @@ -0,0 +1,19 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2750 +2=AMC 16 (85.0W) + +[DVB] +0=10 +1=11966,H,5632,Auto,DVB-S,QPSK +2=11980,H,29270,Auto,DVB-S,QPSK +3=12000,V,29270,Auto,DVB-S,QPSK +4=12106,V,6113,Auto,DVB-S,QPSK +5=12116,V,6113,Auto,DVB-S,QPSK +6=12130,H,13021,Auto,DVB-S,QPSK +7=12144,H,3979,Auto,DVB-S,QPSK +8=12146,V,6111,Auto,DVB-S,QPSK +9=12164,V,6111,Auto,DVB-S,QPSK +10=12194,H,3978,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2760.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2760.ini new file mode 100644 index 000000000..253d2cced --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2760.ini @@ -0,0 +1,20 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2760 +2=Brasilsat B4 (84.0W) + +[DVB] +0=11 +1=3643,H,3565,34,DVB-S,QPSK +2=3650,V,3460,12,DVB-S,QPSK +3=3684,V,3200,34,DVB-S,QPSK +4=3690,V,3330,34,DVB-S,QPSK +5=3720,H,2222,34,DVB-S,QPSK +6=3725,H,2222,34,DVB-S,QPSK +7=3785,H,4500,56,DVB-S,QPSK +8=3806,H,1666,34,S2,8PSK +9=3852,V,3333,34,S2,8PSK +10=4135,H,2500,34,DVB-S,QPSK +11=4152,V,3255,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2770.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2770.ini new file mode 100644 index 000000000..12cbcc729 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2770.ini @@ -0,0 +1,38 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2770 +2=AMC 9 (83.0W) + +[DVB] +0=29 +1=3804,V,4167,34,DVB-S,QPSK +2=3810,V,2400,34,DVB-S,QPSK +3=3813,V,2222,34,DVB-S,QPSK +4=3817,V,2879,34,DVB-S,QPSK +5=3825,V,4035,56,S2,8PSK +6=3831,V,2960,56,DVB-S,QPSK +7=3912,H,2615,Auto,DVB-S,QPSK +8=11745,H,4232,56,DVB-S,QPSK +9=11751,H,4232,56,DVB-S,QPSK +10=11757,H,4232,56,DVB-S,QPSK +11=11763,H,4232,56,DVB-S,QPSK +12=11769,H,4232,56,DVB-S,QPSK +13=11775,H,4232,56,DVB-S,QPSK +14=11790,H,4232,Auto,DVB-S,QPSK +15=11803,H,4232,Auto,DVB-S,QPSK +16=11809,H,4232,Auto,DVB-S,QPSK +17=11815,H,4232,Auto,DVB-S,QPSK +18=11864,H,3979,Auto,DVB-S,QPSK +19=11871,H,13000,Auto,DVB-S,QPSK +20=11874,V,6111,34,DVB-S,QPSK +21=11889,H,13025,Auto,DVB-S,QPSK +22=11926,V,6511,34,DVB-S,QPSK +23=11953,V,3979,Auto,DVB-S,QPSK +24=11960,H,5000,34,DVB-S,QPSK +25=12002,H,3979,Auto,DVB-S,QPSK +26=12011,H,3979,Auto,DVB-S,QPSK +27=12051,V,13022,Auto,DVB-S,QPSK +28=12160,H,29269,Auto,DVB-S,QPSK +29=12180,V,29271,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2780.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2780.ini new file mode 100644 index 000000000..7080fc519 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2780.ini @@ -0,0 +1,40 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2780 +2=Nimiq 4 (82.0W) + +[DVB] +0=31 +1=12224,V,21500,23,DVB-S,8PSK +2=12239,H,21500,23,DVB-S,8PSK +3=12253,V,21500,23,DVB-S,8PSK +4=12268,H,21500,23,DVB-S,8PSK +5=12282,V,21500,23,DVB-S,8PSK +6=12297,H,21500,23,DVB-S,8PSK +7=12311,V,21500,23,DVB-S,8PSK +8=12326,H,21500,23,DVB-S,8PSK +9=12341,V,21500,23,DVB-S,8PSK +10=12355,H,21500,23,DVB-S,8PSK +11=12370,V,21500,23,DVB-S,8PSK +12=12384,H,21500,23,DVB-S,8PSK +13=12399,V,21500,23,DVB-S,8PSK +14=12414,H,21500,23,DVB-S,8PSK +15=12443,H,20000,78,DVB-S,QPSK +16=12457,V,21500,23,DVB-S,8PSK +17=12472,H,21500,23,DVB-S,8PSK +18=12486,V,21500,23,DVB-S,8PSK +19=12501,H,21500,23,DVB-S,8PSK +20=12516,V,21500,23,DVB-S,8PSK +21=12530,H,21500,23,DVB-S,8PSK +22=12545,V,21500,23,DVB-S,8PSK +23=12559,H,21500,23,DVB-S,8PSK +24=12574,V,21500,23,DVB-S,8PSK +25=12588,H,21500,23,DVB-S,8PSK +26=12603,V,21500,23,DVB-S,8PSK +27=12618,H,21500,23,DVB-S,8PSK +28=12632,V,21500,23,DVB-S,8PSK +29=12647,H,21500,23,DVB-S,8PSK +30=12661,V,21500,23,DVB-S,8PSK +31=12676,H,20000,Auto,DVB-S,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2812.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2812.ini new file mode 100644 index 000000000..61b29bb93 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2812.ini @@ -0,0 +1,29 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2812 +2=Sky Mexico 1 (78.8W) + +[DVB] +0=20 +1=11720,H,30000,Auto,DVB-S,QPSK +2=11740,V,30000,Auto,DVB-S,QPSK +3=11800,H,30000,Auto,DVB-S,QPSK +4=11820,V,30000,Auto,DVB-S,QPSK +5=11880,H,30000,Auto,DVB-S,QPSK +6=11900,V,30000,Auto,DVB-S,QPSK +7=11920,H,30000,Auto,DVB-S,QPSK +8=11940,V,30000,Auto,DVB-S,QPSK +9=11960,H,30000,Auto,DVB-S,QPSK +10=11980,V,30000,Auto,DVB-S,QPSK +11=12000,H,30000,Auto,DVB-S,QPSK +12=12020,V,30000,Auto,DVB-S,QPSK +13=12040,H,30000,Auto,DVB-S,QPSK +14=12060,V,30000,Auto,DVB-S,QPSK +15=12080,H,30000,Auto,DVB-S,QPSK +16=12100,V,30000,Auto,DVB-S,QPSK +17=12120,H,30000,Auto,DVB-S,QPSK +18=12140,V,30000,Auto,DVB-S,QPSK +19=12160,H,30000,Auto,DVB-S,QPSK +20=12180,V,30000,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2820.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2820.ini new file mode 100644 index 000000000..0aa5cc903 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2820.ini @@ -0,0 +1,23 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2820 +2=Simón Bolívar (78.0W) + +[DVB] +0=14 +1=3838,V,6670,34,DVB-S,QPSK +2=3885,V,23000,34,DVB-S,QPSK +3=3912,V,3100,Auto,DVB-S,QPSK +4=3916,V,3002,Auto,DVB-S,QPSK +5=3922,V,3002,Auto,DVB-S,QPSK +6=11323,H,3100,Auto,DVB-S,QPSK +7=11380,H,42355,34,S2,QPSK +8=11410,V,29500,34,S2,QPSK +9=11509,V,2900,34,DVB-S,QPSK +10=11512,V,3100,34,DVB-S,QPSK +11=11520,V,4444,34,DVB-S,QPSK +12=11535,H,4340,34,DVB-S,QPSK +13=11624,V,3000,34,DVB-S,QPSK +14=11731,H,28126,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2830.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2830.ini new file mode 100644 index 000000000..c6536b22b --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2830.ini @@ -0,0 +1,41 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2830 +2=EchoStar 8/QuetzSat 1 (77.0W) + +[DVB] +0=32 +1=12224,V,22500,56,DVB-S,QPSK +2=12239,H,22500,56,DVB-S,QPSK +3=12253,V,20000,56,DVB-S,QPSK +4=12268,H,22500,56,DVB-S,QPSK +5=12282,V,22500,56,DVB-S,QPSK +6=12297,H,20000,56,DVB-S,QPSK +7=12311,V,22500,56,DVB-S,QPSK +8=12326,H,22500,56,DVB-S,QPSK +9=12341,V,22500,56,DVB-S,QPSK +10=12355,H,20000,56,DVB-S,QPSK +11=12370,V,22500,56,DVB-S,QPSK +12=12384,H,22500,56,DVB-S,QPSK +13=12399,V,20000,56,DVB-S,QPSK +14=12414,H,22500,56,DVB-S,QPSK +15=12428,V,20000,56,DVB-S,QPSK +16=12443,H,22500,56,DVB-S,QPSK +17=12457,V,22500,56,DVB-S,QPSK +18=12472,H,20000,56,DVB-S,QPSK +19=12486,V,20000,56,DVB-S,QPSK +20=12501,H,22500,56,DVB-S,QPSK +21=12516,V,22500,56,DVB-S,QPSK +22=12530,H,22500,56,DVB-S,QPSK +23=12545,V,22500,56,DVB-S,QPSK +24=12559,H,22500,56,DVB-S,QPSK +25=12574,V,22500,56,DVB-S,QPSK +26=12588,H,20000,56,DVB-S,QPSK +27=12603,V,22500,56,DVB-S,QPSK +28=12618,H,22500,56,DVB-S,QPSK +29=12632,V,22500,56,DVB-S,QPSK +30=12647,H,22500,56,DVB-S,QPSK +31=12661,V,20000,56,DVB-S,QPSK +32=12676,H,22500,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2850.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2850.ini new file mode 100644 index 000000000..cc6088079 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2850.ini @@ -0,0 +1,98 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2850 +2=Star One C3 (75.0W) + +[DVB] +0=89 +1=3627,H,3255,34,DVB-S,QPSK +2=3632,H,3333,34,DVB-S,QPSK +3=3636,H,3333,34,DVB-S,QPSK +4=3649,H,3002,34,DVB-S,QPSK +5=3660,V,30000,23,S2,QPSK +6=3665,H,5000,34,S2,QPSK +7=3680,H,2400,34,S2,8PSK +8=3684,H,2500,34,S2,QPSK +9=3684,V,2963,34,DVB-S,QPSK +10=3689,V,2666,34,DVB-S,QPSK +11=3690,H,5000,34,S2,QPSK +12=3697,V,6990,34,S2,QPSK +13=3703,V,2400,23,DVB-S,QPSK +14=3705,H,4280,34,S2,QPSK +15=3706,V,3600,34,DVB-S,QPSK +16=3709,H,3333,34,S2,QPSK +17=3711,V,3255,34,DVB-S,QPSK +18=3714,H,3333,34,DVB-S,QPSK +19=3715,V,2535,34,DVB-S,QPSK +20=3722,H,3565,34,DVB-S,QPSK +21=3727,H,5000,34,S2,QPSK +22=3727,V,5833,34,S2,QPSK +23=3733,V,4444,34,DVB-S,QPSK +24=3735,H,5833,23,S2,QPSK +25=3736,V,2033,89,S2,QPSK +26=3740,V,2072,56,S2,QPSK +27=3745,V,5833,34,S2,QPSK +28=3747,H,6250,34,S2,QPSK +29=3754,H,6250,34,S2,QPSK +30=3765,V,4170,34,S2,QPSK +31=3770,H,17500,34,S2,QPSK +32=3771,V,4170,34,S2,QPSK +33=3776,V,5000,34,S2,8PSK +34=3780,V,2222,78,DVB-S,QPSK +35=3784,V,2500,34,S2,QPSK +36=3788,V,1111,34,DVB-S,QPSK +37=3828,V,4340,34,DVB-S,QPSK +38=3833,V,3255,34,DVB-S,QPSK +39=3837,V,2532,34,DVB-S,QPSK +40=3846,V,4340,56,DVB-S,QPSK +41=3852,V,6247,34,S2,QPSK +42=3863,V,3209,34,DVB-S,QPSK +43=3868,V,4283,34,DVB-S,QPSK +44=3874,V,6250,34,S2,QPSK +45=3883,H,3928,34,DVB-S,QPSK +46=3885,V,5000,23,S2,QPSK +47=3890,H,2170,34,DVB-S,QPSK +48=3890,V,3704,34,DVB-S,QPSK +49=3895,H,5833,34,S2,QPSK +50=3901,V,5000,34,S2,8PSK +51=3907,V,2232,34,DVB-S,QPSK +52=3910,H,12500,23,S2,QPSK +53=3911,V,2222,34,DVB-S,QPSK +54=3917,V,3750,34,S2,QPSK +55=3925,V,5000,34,S2,QPSK +56=3927,H,14100,23,S2,8PSK +57=3935,V,8000,34,DVB-S,QPSK +58=3936,H,3195,35,S2,QPSK +59=3943,V,3260,34,DVB-S,QPSK +60=3954,V,6666,34,S2,QPSK +61=3979,V,3255,34,DVB-S,QPSK +62=3986,V,5590,34,DVB-S,QPSK +63=3994,V,6250,34,S2,QPSK +64=4048,V,3330,56,DVB-S,QPSK +65=4052,V,2500,34,S2,QPSK +66=4055,V,2500,34,DVB-S,QPSK +67=4066,H,5833,23,S2,QPSK +68=4073,H,5833,34,S2,8PSK +69=4080,H,5833,23,S2,QPSK +70=4086,H,4170,34,S2,QPSK +71=4091,H,4170,34,S2,QPSK +72=4096,H,4170,34,S2,QPSK +73=4100,V,30000,56,S2,8PSK +74=4105,H,3633,34,S2,QPSK +75=4120,H,20840,34,S2,QPSK +76=4136,H,4170,34,S2,QPSK +77=4144,H,5000,34,S2,QPSK +78=4151,H,5000,34,S2,QPSK +79=4157,H,5000,34,S2,QPSK +80=4164,H,5000,34,S2,QPSK +81=4165,V,5000,34,S2,QPSK +82=4170,H,5000,34,S2,8PSK +83=4171,V,5000,34,S2,QPSK +84=4175,H,5000,34,S2,QPSK +85=4177,V,5000,34,S2,QPSK +86=4183,H,5000,34,S2,QPSK +87=4193,V,4762,34,S2,QPSK +88=4197,V,2073,56,S2,QPSK +89=11764,V,3480,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2873.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2873.ini new file mode 100644 index 000000000..6c39037ae --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2873.ini @@ -0,0 +1,40 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2873 +2=Nimiq 5 (72.7W) + +[DVB] +0=31 +1=12224,V,21500,23,DVB-S,8PSK +2=12239,H,21500,23,DVB-S,8PSK +3=12253,V,21500,23,DVB-S,8PSK +4=12268,H,21500,23,DVB-S,8PSK +5=12282,V,21500,23,DVB-S,8PSK +6=12297,H,21500,23,DVB-S,8PSK +7=12311,V,21500,23,DVB-S,8PSK +8=12326,H,21500,23,DVB-S,8PSK +9=12341,V,21500,23,DVB-S,8PSK +10=12355,H,21500,23,DVB-S,8PSK +11=12370,V,21500,23,DVB-S,8PSK +12=12384,H,21500,23,DVB-S,8PSK +13=12399,V,21500,23,DVB-S,8PSK +14=12428,V,21500,23,DVB-S,8PSK +15=12443,H,21500,23,DVB-S,8PSK +16=12457,V,21500,23,DVB-S,8PSK +17=12472,H,21500,23,DVB-S,8PSK +18=12486,V,21500,23,DVB-S,8PSK +19=12501,H,21500,23,DVB-S,8PSK +20=12516,V,21500,23,DVB-S,8PSK +21=12530,H,21500,23,DVB-S,8PSK +22=12545,V,21500,23,DVB-S,8PSK +23=12559,H,21500,23,DVB-S,8PSK +24=12574,V,21500,23,DVB-S,8PSK +25=12588,H,21500,23,DVB-S,8PSK +26=12603,V,21500,23,DVB-S,8PSK +27=12618,H,21500,23,DVB-S,8PSK +28=12632,V,21500,23,DVB-S,8PSK +29=12647,H,21500,23,DVB-S,8PSK +30=12661,V,21500,23,DVB-S,8PSK +31=12676,H,21500,23,DVB-S,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2880.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2880.ini new file mode 100644 index 000000000..2abb9f716 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2880.ini @@ -0,0 +1,38 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2880 +2=AMC 6 (72.0W) + +[DVB] +0=29 +1=11703,V,3979,Auto,DVB-S,QPSK +2=11709,V,4600,34,S2,8PSK +3=11715,V,4600,34,S2,8PSK +4=11720,V,4600,34,S2,8PSK +5=11725,V,3979,Auto,DVB-S,QPSK +6=11729,V,3979,Auto,DVB-S,QPSK +7=11734,V,3979,Auto,DVB-S,QPSK +8=11745,H,3979,Auto,DVB-S,QPSK +9=11746,V,3979,Auto,DVB-S,QPSK +10=11752,V,3979,Auto,DVB-S,QPSK +11=11760,V,4600,34,S2,8PSK +12=11766,V,4600,34,S2,8PSK +13=11778,V,4600,34,S2,8PSK +14=11817,H,5000,34,DVB-S,QPSK +15=11921,V,3979,Auto,DVB-S,QPSK +16=11927,V,3979,Auto,DVB-S,QPSK +17=11986,V,3979,34,DVB-S,QPSK +18=11995,V,3979,34,DVB-S,QPSK +19=12004,V,6889,Auto,DVB-S,QPSK +20=12020,H,3979,Auto,DVB-S,QPSK +21=12028,V,4600,34,S2,8PSK +22=12036,H,6111,Auto,DVB-S,QPSK +23=12040,V,3979,Auto,DVB-S,QPSK +24=12045,V,1580,Auto,DVB-S,QPSK +25=12046,H,6111,Auto,DVB-S,QPSK +26=12055,V,6890,56,DVB-S,QPSK +27=12114,V,13000,Auto,DVB-S,QPSK +28=12130,V,6111,Auto,DVB-S,QPSK +29=12188,H,6511,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2881.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2881.ini new file mode 100644 index 000000000..5a3d34b2c --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2881.ini @@ -0,0 +1,112 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2881 +2=AMC 6/Arsat 1 (71.9W) + +[DVB] +0=103 +1=11175,V,4200,34,DVB-S,QPSK +2=11179,V,3100,34,DVB-S,QPSK +3=11466,V,3500,34,DVB-S,QPSK +4=11540,H,3330,34,DVB-S,QPSK +5=11544,H,6660,Auto,DVB-S,QPSK +6=11546,V,12000,23,DVB-S,QPSK +7=11552,H,2591,34,DVB-S,QPSK +8=11555,H,1904,Auto,DVB-S,QPSK +9=11564,H,3200,34,DVB-S,QPSK +10=11568,H,3350,34,DVB-S,QPSK +11=11573,H,3333,34,DVB-S,QPSK +12=11577,H,3333,34,DVB-S,QPSK +13=11577,V,2400,56,DVB-S,QPSK +14=11581,H,1325,34,DVB-S,QPSK +15=11582,V,2850,34,S2,8PSK +16=11584,H,2655,78,DVB-S,QPSK +17=11595,H,1904,78,DVB-S,QPSK +18=11598,H,2500,34,DVB-S,QPSK +19=11640,V,8500,Auto,DVB-S,QPSK +20=11651,V,1904,78,DVB-S,QPSK +21=11657,H,1904,78,DVB-S,QPSK +22=11660,H,2500,Auto,S2,8PSK +23=11660,V,2943,Auto,DVB-S,QPSK +24=11667,H,6665,34,S2,QPSK +25=11670,V,30000,56,S2,QPSK +26=11675,H,1904,34,DVB-S,QPSK +27=11678,H,1904,34,DVB-S,QPSK +28=11686,V,2222,34,DVB-S,QPSK +29=11703,V,3979,Auto,DVB-S,QPSK +30=11708,H,6660,34,S2,8PSK +31=11709,V,4600,34,S2,8PSK +32=11715,V,4600,34,S2,8PSK +33=11718,H,6660,12,S2,8PSK +34=11718,V,6660,34,S2,8PSK +35=11720,V,4600,34,S2,8PSK +36=11725,V,3979,Auto,DVB-S,QPSK +37=11728,V,3300,34,DVB-S,QPSK +38=11729,V,3979,Auto,DVB-S,QPSK +39=11731,H,3124,34,DVB-S,QPSK +40=11734,H,2655,34,DVB-S,QPSK +41=11734,V,3979,Auto,DVB-S,QPSK +42=11745,V,2373,34,DVB-S,QPSK +43=11745,H,3979,Auto,DVB-S,QPSK +44=11746,V,3979,Auto,DVB-S,QPSK +45=11752,H,2373,34,DVB-S,QPSK +46=11752,V,3979,Auto,DVB-S,QPSK +47=11755,H,2963,Auto,S2,QPSK +48=11756,V,3200,34,DVB-S,QPSK +49=11760,V,4600,34,S2,8PSK +50=11766,V,4600,34,S2,8PSK +51=11778,V,4600,34,S2,8PSK +52=11779,V,3600,Auto,DVB-S,QPSK +53=11794,V,3600,Auto,DVB-S,QPSK +54=11805,V,3300,Auto,DVB-S,QPSK +55=11809,V,3350,Auto,DVB-S,QPSK +56=11817,H,5000,34,DVB-S,QPSK +57=11817,V,3333,34,DVB-S,QPSK +58=11829,V,3330,34,DVB-S,QPSK +59=11848,V,3333,34,DVB-S,QPSK +60=11851,V,3350,34,S2,QPSK +61=11853,V,2343,34,DVB-S,QPSK +62=11861,V,3330,34,DVB-S,QPSK +63=11866,V,3300,34,DVB-S,QPSK +64=11870,H,14089,23,S2,QPSK +65=11876,H,6666,Auto,DVB-S,QPSK +66=11877,V,2355,34,DVB-S,QPSK +67=11882,H,3333,34,S2,QPSK +68=11888,V,3330,34,DVB-S,QPSK +69=11892,H,3333,Auto,DVB-S,QPSK +70=11896,H,3330,34,DVB-S,QPSK +71=11897,V,3200,34,DVB-S,QPSK +72=11907,V,2373,34,DVB-S,QPSK +73=11910,V,2600,34,S2,8PSK +74=11915,V,2600,34,DVB-S,QPSK +75=11921,V,3979,Auto,DVB-S,QPSK +76=11927,V,3979,Auto,DVB-S,QPSK +77=11986,V,3979,34,DVB-S,QPSK +78=11995,V,3979,34,DVB-S,QPSK +79=12004,V,6889,Auto,DVB-S,QPSK +80=12020,H,3979,Auto,DVB-S,QPSK +81=12028,V,4600,34,S2,8PSK +82=12036,H,6111,Auto,DVB-S,QPSK +83=12040,V,3979,Auto,DVB-S,QPSK +84=12045,V,1580,Auto,DVB-S,QPSK +85=12046,H,6111,Auto,DVB-S,QPSK +86=12051,V,2200,56,DVB-S,QPSK +87=12054,H,6620,34,S2,8PSK +88=12055,V,2150,Auto,S2,8PSK +89=12058,V,2223,56,DVB-S,QPSK +90=12058,H,7400,23,DVB-S,QPSK +91=12063,V,4170,23,DVB-S,QPSK +92=12066,H,2500,34,DVB-S,QPSK +93=12067,V,3333,34,DVB-S,QPSK +94=12070,H,2000,56,DVB-S,QPSK +95=12074,V,2400,56,DVB-S,QPSK +96=12075,H,1660,56,S2,8PSK +97=12080,H,7200,34,S2,QPSK +98=12083,V,2850,78,DVB-S,QPSK +99=12086,V,4170,23,DVB-S,QPSK +100=12092,H,4000,23,DVB-S,QPSK +101=12114,V,13000,Auto,DVB-S,QPSK +102=12130,V,6111,Auto,DVB-S,QPSK +103=12188,H,6511,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2882.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2882.ini new file mode 100644 index 000000000..591ba2fe4 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2882.ini @@ -0,0 +1,84 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2882 +2=Arsat 1 (71.8W) + +[DVB] +0=75 +1=11175,V,4200,34,DVB-S,QPSK +2=11179,V,3100,34,DVB-S,QPSK +3=11466,V,3500,34,DVB-S,QPSK +4=11540,H,3330,34,DVB-S,QPSK +5=11544,H,6660,Auto,DVB-S,QPSK +6=11546,V,12000,23,DVB-S,QPSK +7=11552,H,2591,34,DVB-S,QPSK +8=11555,H,1904,Auto,DVB-S,QPSK +9=11564,H,3200,34,DVB-S,QPSK +10=11568,H,3350,34,DVB-S,QPSK +11=11573,H,3333,34,DVB-S,QPSK +12=11577,H,3333,34,DVB-S,QPSK +13=11577,V,2400,56,DVB-S,QPSK +14=11581,H,1325,34,DVB-S,QPSK +15=11582,V,2850,34,S2,8PSK +16=11584,H,2655,78,DVB-S,QPSK +17=11595,H,1904,78,DVB-S,QPSK +18=11598,H,2500,34,DVB-S,QPSK +19=11640,V,8500,Auto,DVB-S,QPSK +20=11651,V,1904,78,DVB-S,QPSK +21=11657,H,1904,78,DVB-S,QPSK +22=11660,H,2500,Auto,S2,8PSK +23=11660,V,2943,Auto,DVB-S,QPSK +24=11667,H,6665,34,S2,QPSK +25=11670,V,30000,56,S2,QPSK +26=11675,H,1904,34,DVB-S,QPSK +27=11678,H,1904,34,DVB-S,QPSK +28=11686,V,2222,34,DVB-S,QPSK +29=11708,H,6660,34,S2,8PSK +30=11718,H,6660,12,S2,8PSK +31=11718,V,6660,34,S2,8PSK +32=11728,V,3300,34,DVB-S,QPSK +33=11731,H,3124,34,DVB-S,QPSK +34=11734,H,2655,34,DVB-S,QPSK +35=11745,V,2373,34,DVB-S,QPSK +36=11752,H,2373,34,DVB-S,QPSK +37=11755,H,2963,Auto,S2,QPSK +38=11756,V,3200,34,DVB-S,QPSK +39=11779,V,3600,Auto,DVB-S,QPSK +40=11794,V,3600,Auto,DVB-S,QPSK +41=11805,V,3300,Auto,DVB-S,QPSK +42=11809,V,3350,Auto,DVB-S,QPSK +43=11817,V,3333,34,DVB-S,QPSK +44=11829,V,3330,34,DVB-S,QPSK +45=11848,V,3333,34,DVB-S,QPSK +46=11851,V,3350,34,S2,QPSK +47=11853,V,2343,34,DVB-S,QPSK +48=11861,V,3330,34,DVB-S,QPSK +49=11866,V,3300,34,DVB-S,QPSK +50=11870,H,14089,23,S2,QPSK +51=11876,H,6666,Auto,DVB-S,QPSK +52=11877,V,2355,34,DVB-S,QPSK +53=11882,H,3333,34,S2,QPSK +54=11888,V,3330,34,DVB-S,QPSK +55=11892,H,3333,Auto,DVB-S,QPSK +56=11896,H,3330,34,DVB-S,QPSK +57=11897,V,3200,34,DVB-S,QPSK +58=11907,V,2373,34,DVB-S,QPSK +59=11910,V,2600,34,S2,8PSK +60=11915,V,2600,34,DVB-S,QPSK +61=12051,V,2200,56,DVB-S,QPSK +62=12054,H,6620,34,S2,8PSK +63=12055,V,2150,Auto,S2,8PSK +64=12058,H,7400,23,DVB-S,QPSK +65=12058,V,2223,56,DVB-S,QPSK +66=12063,V,4170,23,DVB-S,QPSK +67=12066,H,2500,34,DVB-S,QPSK +68=12067,V,3333,34,DVB-S,QPSK +69=12070,H,2000,56,DVB-S,QPSK +70=12074,V,2400,56,DVB-S,QPSK +71=12075,H,1660,56,S2,8PSK +72=12080,H,7200,34,S2,QPSK +73=12083,V,2850,78,DVB-S,QPSK +74=12086,V,4170,23,DVB-S,QPSK +75=12092,H,4000,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2900.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2900.ini new file mode 100644 index 000000000..3a4144bf6 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2900.ini @@ -0,0 +1,72 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2900 +2=Star One C2/C4 (70.0W) + +[DVB] +0=63 +1=3628,H,3000,34,DVB-S,QPSK +2=3632,H,4688,34,DVB-S,QPSK +3=3642,H,4583,34,S2,8PSK +4=3644,V,3214,34,DVB-S,QPSK +5=3648,V,2170,34,DVB-S,QPSK +6=3650,H,5000,23,S2,8PSK +7=3652,V,2777,23,DVB-S,QPSK +8=3656,H,3393,34,DVB-S,QPSK +9=3657,V,7500,23,DVB-S,QPSK +10=3665,V,2400,34,DVB-S,QPSK +11=3665,H,3818,34,DVB-S,QPSK +12=3667,V,2500,56,DVB-S,QPSK +13=3672,H,7500,23,S2,8PSK +14=3674,V,6666,34,DVB-S,QPSK +15=3680,H,7500,23,S2,8PSK +16=3685,V,5000,34,S2,8PSK +17=3689,H,7500,23,S2,8PSK +18=3690,V,2220,34,DVB-S,QPSK +19=3695,H,3599,34,DVB-S,QPSK +20=3702,V,15000,34,S2,8PSK +21=3704,H,3750,23,S2,8PSK +22=3711,V,2170,34,DVB-S,QPSK +23=3715,V,5000,34,S2,8PSK +24=3753,V,6220,34,DVB-S,QPSK +25=3808,V,7500,23,S2,QPSK +26=3816,V,6666,23,S2,8PSK +27=3825,V,6666,23,S2,8PSK +28=3833,V,4073,56,S2,8PSK +29=3874,V,7500,23,S2,8PSK +30=3887,V,7500,Auto,S2,8PSK +31=3895,V,7500,23,S2,8PSK +32=3906,V,7500,23,S2,8PSK +33=3916,V,7500,23,S2,8PSK +34=3940,V,30000,23,S2,8PSK +35=3947,H,7200,23,DVB-S,QPSK +36=3955,H,4400,34,DVB-S,QPSK +37=3959,H,1875,34,DVB-S,QPSK +38=3965,V,4069,23,DVB-S,QPSK +39=3967,H,7500,23,S2,8PSK +40=3970,V,1852,56,DVB-S,QPSK +41=3973,V,4000,23,DVB-S,QPSK +42=3973,H,7500,23,S2,8PSK +43=3978,V,3617,56,DVB-S,QPSK +44=3982,V,4573,34,S2,8PSK +45=3985,H,2170,34,DVB-S,QPSK +46=3990,V,7400,34,S2,8PSK +47=3993,H,12416,Auto,DVB-S,QPSK +48=3996,V,2300,34,DVB-S,QPSK +49=4047,V,7143,34,DVB-S,QPSK +50=10974,H,29890,34,DVB-S,QPSK +51=11014,H,29890,35,S2,QPSK +52=11130,V,29890,34,DVB-S,QPSK +53=11170,V,29890,34,DVB-S,QPSK +54=11740,H,29890,34,S2,8PSK +55=11780,H,29890,34,DVB-S,QPSK +56=11820,H,29890,34,DVB-S,QPSK +57=11880,H,41500,34,DVB-S,QPSK +58=11940,H,29890,34,DVB-S,QPSK +59=11960,V,29900,35,S2,QPSK +60=12020,V,41500,34,DVB-S,QPSK +61=12080,V,29890,34,S2,8PSK +62=12120,V,29890,34,DVB-S,QPSK +63=12160,V,28890,35,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2930.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2930.ini new file mode 100644 index 000000000..b144562e4 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2930.ini @@ -0,0 +1,16 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2930 +2=AMC 4 (67.0W) + +[DVB] +0=7 +1=11720,V,28888,34,DVB-S,QPSK +2=11760,V,28888,34,DVB-S,QPSK +3=11800,V,28888,34,DVB-S,QPSK +4=11840,V,28888,34,DVB-S,QPSK +5=11880,V,28888,34,DVB-S,QPSK +6=11920,V,28888,34,DVB-S,QPSK +7=12162,V,9600,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2950.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2950.ini new file mode 100644 index 000000000..3b6a477fc --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2950.ini @@ -0,0 +1,51 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2950 +2=Star One C1 (65.0W) + +[DVB] +0=42 +1=3650,V,4440,Auto,DVB-S,QPSK +2=3669,V,4686,34,S2,8PSK +3=3670,H,9043,34,S2,QPSK +4=3687,H,3214,Auto,DVB-S,QPSK +5=3691,H,4000,23,S2,8PSK +6=3697,H,4400,23,S2,8PSK +7=3720,H,2963,34,DVB-S,QPSK +8=3732,V,2222,Auto,DVB-S,QPSK +9=3734,V,2852,34,DVB-S,QPSK +10=3736,H,1808,34,DVB-S,QPSK +11=3736,V,2853,34,DVB-S,QPSK +12=3744,H,2110,Auto,DVB-S,QPSK +13=3762,H,2222,78,DVB-S,QPSK +14=3766,H,3336,34,DVB-S,QPSK +15=3771,V,1480,34,DVB-S,QPSK +16=3774,V,2222,34,DVB-S,QPSK +17=3792,V,3393,34,DVB-S,QPSK +18=3800,H,30000,56,S2,8PSK +19=3832,H,4800,56,DVB-S,QPSK +20=3850,H,6666,Auto,DVB-S,QPSK +21=3853,H,2170,78,DVB-S,QPSK +22=3864,H,3333,34,DVB-S,QPSK +23=3876,V,2740,34,DVB-S,QPSK +24=3894,H,6666,Auto,DVB-S,QPSK +25=3920,H,27500,78,DVB-S,QPSK +26=3926,V,7072,34,S2,8PSK +27=3935,V,7072,23,S2,8PSK +28=3943,V,8500,34,S2,8PSK +29=3950,V,3200,23,S2,8PSK +30=3968,V,7500,Auto,S2,8PSK +31=3975,V,4167,34,S2,QPSK +32=4014,H,3750,Auto,S2,8PSK +33=4017,H,2083,34,S2,8PSK +34=4046,V,4000,56,DVB-S,QPSK +35=4051,V,5416,23,S2,8PSK +36=4100,V,30000,56,S2,8PSK +37=4121,H,4800,34,DVB-S,QPSK +38=4130,H,1850,23,DVB-S,QPSK +39=4140,V,30000,56,S2,8PSK +40=11885,H,2000,12,S2,QPSK +41=11893,H,2034,Auto,DVB-S,QPSK +42=11930,H,14400,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2970.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2970.ini new file mode 100644 index 000000000..60e1423fd --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2970.ini @@ -0,0 +1,27 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2970 +2=Telstar 14R (63.0W) + +[DVB] +0=18 +1=11600,V,13744,Auto,DVB-S,QPSK +2=11640,V,18100,78,DVB-S,QPSK +3=11706,V,2278,34,S2,QPSK +4=11710,V,3200,23,DVB-S,QPSK +5=11722,V,2963,34,DVB-S,QPSK +6=11726,V,3333,34,DVB-S,QPSK +7=11732,V,2222,Auto,DVB-S,QPSK +8=11736,V,2963,34,DVB-S,QPSK +9=11795,V,4444,Auto,DVB-S,QPSK +10=11805,V,6666,Auto,DVB-S,QPSK +11=11827,V,3200,Auto,DVB-S,QPSK +12=11844,V,5348,Auto,DVB-S,QPSK +13=11850,V,2280,34,DVB-S,QPSK +14=11871,V,2000,34,DVB-S,QPSK +15=11888,V,3330,34,DVB-S,QPSK +16=11905,V,2362,34,DVB-S,QPSK +17=11958,H,3255,Auto,DVB-S,QPSK +18=12162,H,13021,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2985.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2985.ini new file mode 100644 index 000000000..1dc03e67f --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2985.ini @@ -0,0 +1,41 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2985 +2=EchoStar 12/16 (61.5W) + +[DVB] +0=32 +1=12224,V,20000,78,DVB-S,QPSK +2=12239,H,21500,23,DVB-S,8PSK +3=12253,V,21500,23,DVB-S,8PSK +4=12268,H,21500,23,DVB-S,8PSK +5=12282,V,21500,23,DVB-S,8PSK +6=12297,H,21500,23,DVB-S,8PSK +7=12311,V,21500,23,DVB-S,8PSK +8=12326,H,21500,23,DVB-S,8PSK +9=12341,V,21500,23,DVB-S,8PSK +10=12355,H,21500,23,DVB-S,8PSK +11=12370,V,21500,23,DVB-S,8PSK +12=12384,H,21500,23,DVB-S,8PSK +13=12399,V,21500,23,DVB-S,8PSK +14=12414,H,20000,78,DVB-S,QPSK +15=12428,V,21500,23,DVB-S,8PSK +16=12443,H,21500,23,DVB-S,8PSK +17=12457,V,21500,23,DVB-S,8PSK +18=12472,H,21500,34,DVB-S,8PSK +19=12486,V,21500,34,DVB-S,8PSK +20=12501,H,21500,34,DVB-S,8PSK +21=12516,V,21500,34,DVB-S,8PSK +22=12530,H,21500,34,DVB-S,8PSK +23=12545,V,21500,34,DVB-S,8PSK +24=12559,H,21500,34,DVB-S,8PSK +25=12574,V,21500,34,DVB-S,8PSK +26=12588,H,21500,34,DVB-S,8PSK +27=12603,V,21500,34,DVB-S,8PSK +28=12618,H,21500,34,DVB-S,8PSK +29=12632,V,21500,34,DVB-S,8PSK +30=12647,H,21500,34,DVB-S,8PSK +31=12661,V,21500,34,DVB-S,8PSK +32=12676,H,21500,34,DVB-S,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2990.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2990.ini new file mode 100644 index 000000000..ce35c62f5 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/2990.ini @@ -0,0 +1,67 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=2990 +2=Amazonas 2/3/4A (61.0W) + +[DVB] +0=58 +1=3630,H,2785,34,DVB-S,QPSK +2=3659,H,6666,Auto,DVB-S,QPSK +3=3668,H,6666,Auto,DVB-S,QPSK +4=3767,H,1600,34,S2,QPSK +5=3925,V,3333,34,DVB-S,QPSK +6=3927,V,2222,34,DVB-S,QPSK +7=3941,V,3480,34,DVB-S,QPSK +8=3948,H,4440,Auto,DVB-S,QPSK +9=3958,H,4440,Auto,DVB-S,QPSK +10=3967,H,6670,Auto,DVB-S,QPSK +11=3990,H,2142,34,DVB-S,QPSK +12=3996,H,7501,23,S2,8PSK +13=4139,H,4543,34,S2,QPSK +14=4142,V,2651,34,DVB-S,QPSK +15=4148,H,5384,35,S2,8PSK +16=4156,H,2813,Auto,DVB-S,QPSK +17=4160,V,2500,34,S2,QPSK +18=4164,H,3846,34,DVB-S,QPSK +19=4168,H,3461,34,DVB-S,QPSK +20=10728,H,28888,34,DVB-S,QPSK +21=10728,V,30000,34,S2,8PSK +22=10768,H,28888,34,DVB-S,QPSK +23=10768,V,30000,23,S2,8PSK +24=10808,H,30000,23,S2,8PSK +25=10848,H,30000,23,S2,8PSK +26=10888,V,28888,34,DVB-S,QPSK +27=10928,H,28888,34,DVB-S,QPSK +28=11015,H,28880,34,DVB-S,QPSK +29=11026,V,10805,23,S2,8PSK +30=11055,H,28880,34,DVB-S,QPSK +31=11095,H,28880,34,DVB-S,QPSK +32=11095,V,30000,23,S2,8PSK +33=11135,H,28880,34,DVB-S,QPSK +34=11135,V,28880,Auto,DVB-S,QPSK +35=11175,H,28888,34,DVB-S,QPSK +36=11222,H,28888,34,DVB-S,QPSK +37=11222,V,30000,23,S2,8PSK +38=11262,H,30000,23,S2,8PSK +39=11262,V,30000,23,S2,8PSK +40=11302,H,28888,34,DVB-S,QPSK +41=11342,H,28888,34,DVB-S,QPSK +42=11342,V,30000,23,S2,8PSK +43=11382,H,28888,34,DVB-S,QPSK +44=11422,H,28888,34,DVB-S,QPSK +45=11738,V,40000,23,DVB-S,QPSK +46=11851,H,28880,Auto,DVB-S,QPSK +47=11885,H,15000,23,S2,8PSK +48=11932,H,28888,23,DVB-S,QPSK +49=11972,V,30000,34,DVB-S,QPSK +50=11972,H,28888,34,DVB-S,QPSK +51=12012,H,28888,34,DVB-S,QPSK +52=12052,H,28888,34,DVB-S,QPSK +53=12060,V,18000,Auto,DVB-S,QPSK +54=12092,V,30000,23,DVB-S,QPSK +55=12092,H,28880,34,DVB-S,QPSK +56=12132,H,30000,23,S2,8PSK +57=12172,V,30000,23,DVB-S,QPSK +58=12172,H,30000,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3020.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3020.ini new file mode 100644 index 000000000..3b6673b47 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3020.ini @@ -0,0 +1,67 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3020 +2=Intelsat 21 (58.0W) + +[DVB] +0=58 +1=3720,V,30000,89,S2,8PSK +2=3720,H,27000,34,S2,8PSK +3=3760,V,27690,78,DVB-S,QPSK +4=3760,H,30000,56,S2,8PSK +5=3785,H,5200,910,S2,QPSK +6=3791,H,3330,34,DVB-S,QPSK +7=3797,H,2218,34,DVB-S,QPSK +8=3805,H,3147,34,DVB-S,QPSK +9=3840,V,27690,78,DVB-S,QPSK +10=3840,H,27690,78,DVB-S,QPSK +11=3880,V,30000,34,S2,8PSK +12=3880,H,27690,78,DVB-S,QPSK +13=3910,V,15000,23,S2,8PSK +14=3920,H,27690,78,S2,QPSK +15=3924,V,6620,34,DVB-S,QPSK +16=3933,V,7000,34,DVB-S,QPSK +17=3952,H,15145,23,S2,8PSK +18=3960,V,30000,34,S2,8PSK +19=3972,H,9850,56,S2,QPSK +20=4000,H,28120,56,S2,8PSK +21=4040,V,30000,56,S2,8PSK +22=4040,H,26590,12,DVB-S,QPSK +23=4080,V,27690,56,DVB-S,QPSK +24=4080,H,30000,56,S2,8PSK +25=4107,H,9850,34,DVB-S,QPSK +26=4120,V,27500,34,DVB-S,QPSK +27=4122,H,2222,34,DVB-S,QPSK +28=4126,H,3700,34,DVB-S,QPSK +29=4137,H,2020,56,DVB-S,QPSK +30=4144,V,2205,34,DVB-S,QPSK +31=4147,H,6111,34,S2,QPSK +32=4151,V,3000,78,DVB-S,QPSK +33=4155,H,5632,34,DVB-S,QPSK +34=4156,V,4300,56,DVB-S,QPSK +35=4160,V,2941,34,DVB-S,QPSK +36=4166,H,5632,34,DVB-S,QPSK +37=4169,V,3000,34,DVB-S,QPSK +38=4174,V,2941,34,DVB-S,QPSK +39=4175,H,6620,34,DVB-S,QPSK +40=11648,V,2520,Auto,DVB-S,QPSK +41=11693,V,2970,Auto,DVB-S,QPSK +42=11720,H,30000,35,S2,8PSK +43=11740,V,30000,35,S2,8PSK +44=11840,H,30000,56,DVB-S,QPSK +45=11860,V,30000,35,S2,8PSK +46=11960,H,30000,Auto,DVB-S,QPSK +47=11980,V,30000,Auto,DVB-S,QPSK +48=12000,H,30000,Auto,DVB-S,QPSK +49=12020,V,30000,Auto,DVB-S,QPSK +50=12040,H,30000,Auto,DVB-S,QPSK +51=12060,V,30000,Auto,DVB-S,QPSK +52=12067,V,2522,23,DVB-S,QPSK +53=12080,H,30000,Auto,DVB-S,QPSK +54=12100,V,30000,Auto,DVB-S,QPSK +55=12120,H,30000,Auto,DVB-S,QPSK +56=12140,V,30000,Auto,DVB-S,QPSK +57=12160,H,30000,Auto,DVB-S,QPSK +58=12180,V,30000,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3045.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3045.ini new file mode 100644 index 000000000..1d462c1a8 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3045.ini @@ -0,0 +1,107 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3045 +2=Amazonas 1/Galaxy 11/Intelsat 805 (55.5W) + +[DVB] +0=98 +1=3478,V,5632,34,DVB-S,QPSK +2=3670,H,1374,34,DVB-S,QPSK +3=3675,V,7120,34,S2,8PSK +4=3678,H,2960,34,DVB-S,QPSK +5=3682,V,3333,34,DVB-S,QPSK +6=3687,V,3333,34,DVB-S,QPSK +7=3688,H,3320,34,DVB-S,QPSK +8=3693,H,3320,34,DVB-S,QPSK +9=3715,H,8890,34,DVB-S,QPSK +10=3719,V,1950,Auto,S2,8PSK +11=3727,V,3333,34,DVB-S,QPSK +12=3735,V,8681,34,DVB-S,QPSK +13=3740,H,1205,23,DVB-S,QPSK +14=3743,H,2500,34,S2,8PSK +15=3747,H,1600,35,S2,QPSK +16=3750,V,3750,Auto,S2,8PSK +17=3754,H,4232,34,DVB-S,QPSK +18=3759,V,18400,23,S2,8PSK +19=3759,H,2963,34,DVB-S,QPSK +20=3763,H,3000,34,S2,QPSK +21=3768,H,4427,23,DVB-S,QPSK +22=3776,H,7996,35,S2,8PSK +23=3791,V,3255,Auto,DVB-S,QPSK +24=3794,H,1600,23,S2,QPSK +25=3808,V,26666,78,DVB-S,QPSK +26=3816,H,26666,34,DVB-S,QPSK +27=3823,V,4430,34,DVB-S,QPSK +28=3836,H,2500,34,S2,QPSK +29=3839,H,2600,89,S2,QPSK +30=3842,H,2580,34,DVB-S,QPSK +31=3845,V,26700,34,DVB-S,QPSK +32=3849,H,1600,23,S2,8PSK +33=3855,H,2220,Auto,S2,8PSK +34=3859,H,3330,56,S2,8PSK +35=3872,H,9333,35,S2,8PSK +36=3890,H,3333,56,DVB-S,QPSK +37=3894,H,3617,34,DVB-S,QPSK +38=3910,H,5832,56,S2,QPSK +39=3915,H,3300,34,DVB-S,QPSK +40=3924,H,7200,34,S2,8PSK +41=3930,H,3255,23,DVB-S,QPSK +42=3936,H,3255,23,DVB-S,QPSK +43=3963,V,3330,34,DVB-S,QPSK +44=3965,H,7120,34,S2,8PSK +45=3966,V,2963,34,DVB-S,QPSK +46=3970,V,3702,23,DVB-S,QPSK +47=3972,H,6920,34,S2,8PSK +48=3978,H,3200,34,DVB-S,QPSK +49=3982,H,4440,34,DVB-S,QPSK +50=3987,V,3330,34,S2,8PSK +51=3990,V,3590,23,S2,8PSK +52=3991,H,6666,34,DVB-S,QPSK +53=4003,V,8681,34,DVB-S,QPSK +54=4011,V,3330,23,S2,8PSK +55=4015,H,30000,23,S2,8PSK +56=4023,V,4289,Auto,DVB-S,QPSK +57=4028,V,4410,34,DVB-S,QPSK +58=4042,H,7120,34,DVB-S,QPSK +59=4052,V,3125,34,DVB-S,QPSK +60=4056,H,3320,34,DVB-S,QPSK +61=4067,V,4440,34,DVB-S,QPSK +62=4070,H,7120,34,S2,8PSK +63=4080,V,4400,56,DVB-S,QPSK +64=4084,H,10560,35,S2,8PSK +65=4086,V,4074,56,S2,QPSK +66=4093,V,3617,34,DVB-S,QPSK +67=4093,H,3040,35,S2,8PSK +68=4096,H,1300,35,S2,8PSK +69=4097,V,3700,78,DVB-S,QPSK +70=4098,H,2272,56,S2,QPSK +71=4100,H,1840,35,S2,8PSK +72=4101,V,2320,89,S2,QPSK +73=4106,H,5360,35,S2,8PSK +74=4107,V,2960,34,DVB-S,QPSK +75=4111,V,1850,23,S2,8PSK +76=4111,H,4000,35,S2,8PSK +77=4127,H,2961,34,DVB-S,QPSK +78=4134,H,4444,34,DVB-S,QPSK +79=4136,V,30000,56,S2,8PSK +80=4137,H,2000,34,DVB-S,8PSK +81=4142,H,5000,34,S2,8PSK +82=4147,H,3444,34,DVB-S,QPSK +83=4151,H,2500,34,DVB-S,QPSK +84=4160,H,5600,23,S2,8PSK +85=4170,H,6111,Auto,DVB-S,QPSK +86=4177,V,30000,56,S2,8PSK +87=4193,H,4444,34,S2,QPSK +88=10976,H,22000,34,S2,8PSK +89=11006,H,23300,34,S2,8PSK +90=11024,V,23300,34,S2,8PSK +91=11036,H,23300,34,S2,8PSK +92=11054,V,23300,34,S2,8PSK +93=11066,H,23300,34,S2,8PSK +94=11096,H,23300,34,S2,8PSK +95=11126,H,23300,34,S2,8PSK +96=11156,H,23300,34,S2,8PSK +97=11186,H,23300,34,S2,8PSK +98=11921,V,39200,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3070.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3070.ini new file mode 100644 index 000000000..16baee6ce --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3070.ini @@ -0,0 +1,24 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3070 +2=Intelsat 23 (53.0W) + +[DVB] +0=15 +1=3715,V,2500,34,S2,QPSK +2=3720,V,3906,12,DVB-S,QPSK +3=3820,V,3255,Auto,DVB-S,QPSK +4=3882,V,18808,34,DVB-S,QPSK +5=3932,V,4340,Auto,DVB-S,QPSK +6=3998,H,4445,12,DVB-S,QPSK +7=4004,H,4445,12,DVB-S,QPSK +8=4009,H,2963,34,DVB-S,QPSK +9=4012,H,2963,34,DVB-S,QPSK +10=4016,H,2963,34,DVB-S,QPSK +11=4028,H,2963,34,DVB-S,QPSK +12=4119,V,6666,34,DVB-S,QPSK +13=4135,H,4300,78,DVB-S,QPSK +14=11911,V,2821,34,DVB-S,QPSK +15=12138,H,3111,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3100.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3100.ini new file mode 100644 index 000000000..2155127dc --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3100.ini @@ -0,0 +1,43 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3100 +2=Intelsat 1R (50.0W) + +[DVB] +0=34 +1=3743,V,7200,Auto,S2,QPSK +2=3760,V,2410,Auto,DVB-S,QPSK +3=3765,V,2410,12,DVB-S,QPSK +4=3778,V,5184,Auto,DVB-S,QPSK +5=3784,V,2240,Auto,DVB-S,QPSK +6=3792,V,2222,Auto,DVB-S,QPSK +7=4094,H,2963,34,DVB-S,QPSK +8=4098,H,2963,34,DVB-S,QPSK +9=4102,H,2963,34,DVB-S,QPSK +10=4106,H,2963,34,DVB-S,QPSK +11=4111,H,2963,34,DVB-S,QPSK +12=4125,V,10713,34,DVB-S,QPSK +13=4135,V,3382,34,DVB-S,QPSK +14=4141,V,5384,35,DVB-S,QPSK +15=4149,V,6153,Auto,DVB-S,QPSK +16=4182,V,7600,12,S2,8PSK +17=11050,V,27902,34,S2,QPSK +18=11090,V,27902,34,S2,QPSK +19=11130,V,27902,34,S2,QPSK +20=11170,V,27902,34,S2,QPSK +21=11455,V,4440,Auto,DVB-S,QPSK +22=11464,V,3320,Auto,DVB-S,QPSK +23=11469,V,3320,Auto,DVB-S,QPSK +24=11473,V,3320,Auto,DVB-S,QPSK +25=11478,V,3320,Auto,DVB-S,QPSK +26=11483,V,3320,Auto,DVB-S,QPSK +27=11787,H,3330,Auto,DVB-S,QPSK +28=11789,V,10000,Auto,DVB-S,QPSK +29=11797,H,6500,Auto,DVB-S,QPSK +30=11804,H,6500,Auto,DVB-S,QPSK +31=11804,V,4440,Auto,DVB-S,QPSK +32=11813,H,6500,Auto,DVB-S,QPSK +33=11816,V,2960,Auto,DVB-S,QPSK +34=11825,H,4500,Auto,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3125.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3125.ini new file mode 100644 index 000000000..07c07c7ff --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3125.ini @@ -0,0 +1,17 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3125 +2=NSS 806 (47.5W) + +[DVB] +0=8 +1=3725,H,30000,34,S2,8PSK +2=3803,V,28000,34,S2,8PSK +3=4002,V,7200,34,S2,QPSK +4=4015,H,30000,23,S2,8PSK +5=4055,V,30000,56,S2,8PSK +6=4135,V,28000,34,S2,8PSK +7=4163,V,9247,56,S2,QPSK +8=4178,H,30000,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3150.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3150.ini new file mode 100644 index 000000000..e322e36f8 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3150.ini @@ -0,0 +1,33 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3150 +2=Intelsat 14 (45.0W) + +[DVB] +0=24 +1=3759,V,4412,34,DVB-S,QPSK +2=3766,V,3255,34,DVB-S,QPSK +3=3769,V,2400,34,DVB-S,QPSK +4=3777,V,2400,56,DVB-S,QPSK +5=3780,V,2941,34,DVB-S,QPSK +6=3789,V,1667,Auto,S2,QPSK +7=3844,V,2222,Auto,DVB-S,QPSK +8=3853,V,11029,78,DVB-S,QPSK +9=3866,V,10073,78,DVB-S,QPSK +10=3913,H,2482,23,S2,QPSK +11=3968,V,3600,Auto,DVB-S,QPSK +12=3986,V,4411,56,DVB-S,QPSK +13=4072,V,2068,56,DVB-S,QPSK +14=4110,H,4444,34,DVB-S,QPSK +15=4165,V,4412,56,DVB-S,QPSK +16=4171,V,3309,34,DVB-S,QPSK +17=4176,V,3888,Auto,DVB-S,QPSK +18=4186,H,4960,35,S2,QPSK +19=4192,H,2075,34,DVB-S,QPSK +20=4192,V,1600,35,S2,8PSK +21=11600,V,1000,34,DVB-S,QPSK +22=11608,H,1852,56,DVB-S,QPSK +23=11638,H,5632,34,DVB-S,QPSK +24=11647,H,6620,23,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3169.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3169.ini new file mode 100644 index 000000000..8ed74f2ef --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3169.ini @@ -0,0 +1,76 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3169 +2=Intelsat 11 (43.1W) + +[DVB] +0=67 +1=3717,H,22000,56,S2,8PSK +2=3718,V,21600,56,S2,8PSK +3=3736,H,29270,78,DVB-S,QPSK +4=3745,V,21610,34,S2,8PSK +5=3780,H,27690,78,DVB-S,QPSK +6=3783,V,30000,56,S2,8PSK +7=3808,V,15000,56,S2,8PSK +8=3808,H,14950,56,S2,8PSK +9=3825,H,7500,34,S2,QPSK +10=3828,V,3300,34,DVB-S,QPSK +11=3834,H,3200,35,S2,8PSK +12=3836,V,7780,23,S2,8PSK +13=3838,H,3600,34,DVB-S,QPSK +14=3844,H,3600,34,DVB-S,QPSK +15=3845,V,7700,34,S2,QPSK +16=3850,H,7500,23,S2,8PSK +17=3854,V,5945,34,DVB-S,QPSK +18=3864,V,7120,34,S2,8PSK +19=3868,H,13600,34,S2,8PSK +20=3871,V,2500,34,S2,8PSK +21=3874,V,2421,34,S2,8PSK +22=3875,H,3750,35,S2,8PSK +23=3877,V,1546,23,DVB-S,QPSK +24=3888,H,7200,34,S2,8PSK +25=3895,V,17405,34,DVB-S,QPSK +26=3927,V,30000,56,DVB-S,QPSK +27=3928,H,14060,34,S2,8PSK +28=3945,H,6250,34,S2,8PSK +29=3963,V,13400,56,DVB-S,QPSK +30=3966,H,21090,34,DVB-S,QPSK +31=3975,V,3590,56,S2,8PSK +32=3984,V,9760,34,DVB-S,QPSK +33=3992,V,7320,23,DVB-S,QPSK +34=3994,H,21090,34,DVB-S,QPSK +35=4012,V,6650,Auto,DVB-S,QPSK +36=4026,V,16900,78,DVB-S,QPSK +37=4040,H,30800,78,DVB-S,QPSK +38=4048,V,20832,34,S2,8PSK +39=4074,V,2500,56,S2,8PSK +40=4079,V,4400,34,DVB-S,QPSK +41=4113,H,19510,Auto,DVB-S,QPSK +42=4115,V,19580,34,S2,8PSK +43=4135,V,2222,34,DVB-S,QPSK +44=4140,H,9600,34,S2,8PSK +45=4149,V,20083,23,S2,8PSK +46=4150,H,7500,23,S2,8PSK +47=4168,H,4800,Auto,S2,8PSK +48=4185,H,7120,34,S2,8PSK +49=4193,H,6620,34,S2,QPSK +50=10722,V,30000,34,DVB-S,QPSK +51=10722,H,30000,34,DVB-S,QPSK +52=10802,V,30000,34,DVB-S,QPSK +53=10802,H,28000,Auto,DVB-S,QPSK +54=10882,V,30000,34,DVB-S,QPSK +55=10882,H,30000,34,DVB-S,QPSK +56=10970,V,28000,Auto,DVB-S,QPSK +57=10970,H,29000,34,DVB-S,QPSK +58=11050,V,29000,Auto,DVB-S,QPSK +59=11050,H,29000,Auto,DVB-S,QPSK +60=11130,V,29000,34,DVB-S,QPSK +61=11130,H,28000,Auto,DVB-S,QPSK +62=11222,V,30000,23,S2,8PSK +63=11222,H,30000,23,S2,8PSK +64=11302,V,30000,23,S2,8PSK +65=11302,H,30000,23,S2,8PSK +66=11382,V,30000,34,DVB-S,QPSK +67=11382,H,30000,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3195.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3195.ini new file mode 100644 index 000000000..b331b7d64 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3195.ini @@ -0,0 +1,151 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3195 +2=SES 6 (40.5W) + +[DVB] +0=142 +1=3626,H,2800,34,S2,8PSK +2=3628,V,2170,34,DVB-S,QPSK +3=3630,H,2222,34,DVB-S,QPSK +4=3633,H,1480,56,S2,8PSK +5=3634,V,2712,34,DVB-S,QPSK +6=3637,H,1855,34,DVB-S,QPSK +7=3641,V,2666,34,DVB-S,QPSK +8=3641,H,2788,Auto,S2,8PSK +9=3644,H,2532,34,DVB-S,QPSK +10=3646,V,6666,34,DVB-S,QPSK +11=3648,H,2068,23,S2,8PSK +12=3652,H,4000,56,DVB-S,QPSK +13=3658,H,1666,56,S2,8PSK +14=3658,V,4800,89,S2,QPSK +15=3666,V,2222,56,DVB-S,QPSK +16=3668,H,2170,34,DVB-S,QPSK +17=3673,V,4700,56,S2,8PSK +18=3673,H,4350,34,DVB-S,QPSK +19=3677,H,2000,23,S2,8PSK +20=3682,H,3333,34,DVB-S,QPSK +21=3684,V,3750,34,S2,8PSK +22=3688,V,3650,34,DVB-S,QPSK +23=3691,H,2740,23,DVB-S,QPSK +24=3694,V,5180,34,DVB-S,QPSK +25=3695,H,2963,34,DVB-S,QPSK +26=3699,V,2200,34,DVB-S,QPSK +27=3710,H,7400,78,DVB-S,QPSK +28=3725,H,10000,56,S2,8PSK +29=3732,V,8156,56,DVB-S,QPSK +30=3735,H,7400,78,DVB-S,QPSK +31=3758,H,18500,78,DVB-S,QPSK +32=3763,V,30000,56,S2,8PSK +33=3803,V,26860,78,DVB-S,QPSK +34=3803,H,27500,78,DVB-S,QPSK +35=3830,V,6142,78,DVB-S,QPSK +36=3835,V,2082,34,S2,8PSK +37=3843,H,30000,89,S2,8PSK +38=3848,V,2800,34,DVB-S,QPSK +39=3856,V,8370,34,S2,8PSK +40=3866,H,2222,78,DVB-S,QPSK +41=3870,H,3750,56,S2,8PSK +42=3875,H,3867,34,S2,QPSK +43=3883,V,26660,56,DVB-S,QPSK +44=3883,H,1837,34,S2,8PSK +45=3886,H,2617,34,S2,8PSK +46=3888,H,1050,56,S2,8PSK +47=3893,H,2217,78,DVB-S,QPSK +48=3897,H,2000,34,S2,8PSK +49=3899,H,1900,34,DVB-S,QPSK +50=3907,H,2548,34,S2,8PSK +51=3909,H,2455,34,S2,8PSK +52=3915,H,5830,23,S2,8PSK +53=3920,V,20000,35,S2,QPSK +54=3935,H,8880,34,DVB-S,QPSK +55=3937,V,2170,34,DVB-S,QPSK +56=3960,V,1259,78,DVB-S,QPSK +57=3964,V,2000,56,S2,8PSK +58=3966,V,1920,23,S2,8PSK +59=3980,V,17800,34,DVB-S,QPSK +60=3980,H,21600,34,S2,8PSK +61=3990,V,4195,34,DVB-S,QPSK +62=3998,H,1630,34,S2,8PSK +63=4000,H,1600,34,S2,8PSK +64=4002,H,1570,34,S2,8PSK +65=4004,H,1530,34,S2,8PSK +66=4006,H,1500,34,S2,8PSK +67=4008,H,1470,34,S2,8PSK +68=4013,H,6600,34,S2,8PSK +69=4021,V,3200,34,S2,8PSK +70=4025,H,12832,34,S2,8PSK +71=4028,V,8000,34,S2,8PSK +72=4047,H,3330,78,DVB-S,QPSK +73=4054,H,6666,34,DVB-S,QPSK +74=4056,V,3000,23,DVB-S,QPSK +75=4063,H,7000,56,S2,8PSK +76=4065,V,12500,34,DVB-S,QPSK +77=4070,H,4440,78,DVB-S,QPSK +78=4080,H,4937,Auto,DVB-S,QPSK +79=4081,V,6511,56,DVB-S,QPSK +80=4086,V,1476,78,DVB-S,QPSK +81=4092,H,1600,56,S2,QPSK +82=4092,V,1150,34,DVB-S,QPSK +83=4100,V,6111,34,DVB-S,QPSK +84=4111,V,2000,56,DVB-S,QPSK +85=4119,V,2960,34,DVB-S,QPSK +86=4121,H,2400,34,S2,8PSK +87=4124,V,4196,34,DVB-S,QPSK +88=4125,H,3625,56,S2,8PSK +89=4130,V,3844,78,DVB-S,QPSK +90=4132,H,2480,34,DVB-S,QPSK +91=4136,V,3000,56,S2,8PSK +92=4137,H,4400,34,DVB-S,QPSK +93=4140,V,2220,78,DVB-S,QPSK +94=4142,V,1030,78,DVB-S,QPSK +95=4142,H,2222,78,DVB-S,QPSK +96=4144,V,2800,34,S2,8PSK +97=4146,H,2571,78,DVB-S,QPSK +98=4151,V,3280,56,DVB-S,QPSK +99=4161,H,6510,34,DVB-S,QPSK +100=4168,H,2400,23,DVB-S,QPSK +101=4168,V,18392,23,S2,8PSK +102=4170,H,2222,34,DVB-S,QPSK +103=4175,H,3350,23,S2,8PSK +104=4179,H,3332,23,S2,8PSK +105=4187,V,11500,34,DVB-S,QPSK +106=4196,V,2960,56,DVB-S,QPSK +107=11480,V,30000,12,S2,8PSK +108=11480,H,30000,34,S2,8PSK +109=11520,V,30000,34,S2,8PSK +110=11520,H,30000,34,S2,8PSK +111=11560,V,30000,23,S2,8PSK +112=11560,H,30000,34,S2,8PSK +113=11600,H,30000,34,S2,8PSK +114=11600,V,30000,34,S2,8PSK +115=11640,H,30000,34,S2,8PSK +116=11640,V,30000,34,S2,8PSK +117=11680,H,30000,34,S2,8PSK +118=11680,V,30000,34,S2,8PSK +119=11736,V,22500,34,S2,8PSK +120=11764,V,22500,34,S2,8PSK +121=11796,V,22500,34,S2,8PSK +122=11824,V,22500,34,S2,8PSK +123=11856,V,22500,34,S2,8PSK +124=11884,V,22500,34,S2,8PSK +125=11916,V,22500,34,S2,8PSK +126=11944,V,22500,34,S2,8PSK +127=11976,V,22500,34,S2,8PSK +128=11976,H,22500,34,S2,8PSK +129=12004,V,22500,34,S2,8PSK +130=12004,H,22500,34,S2,8PSK +131=12036,H,22500,34,S2,8PSK +132=12036,V,22500,34,S2,8PSK +133=12064,H,22500,34,S2,8PSK +134=12064,V,22500,34,S2,8PSK +135=12096,H,22500,34,S2,8PSK +136=12096,V,22500,34,S2,8PSK +137=12124,H,22500,34,S2,8PSK +138=12124,V,22500,34,S2,8PSK +139=12156,H,22500,34,S2,8PSK +140=12156,V,22500,34,S2,8PSK +141=12184,H,22500,34,S2,8PSK +142=12184,V,22500,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3225.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3225.ini new file mode 100644 index 000000000..800e74334 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3225.ini @@ -0,0 +1,62 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3225 +2=NSS 10/Telstar 11N (37.5W) + +[DVB] +0=53 +1=3746,V,1229,56,S2,QPSK +2=3746,H,1229,56,S2,QPSK +3=3749,V,1674,78,DVB-S,QPSK +4=3749,H,1674,78,DVB-S,QPSK +5=3756,V,1777,34,S2,8PSK +6=3756,H,1777,34,S2,8PSK +7=3833,H,2893,34,DVB-S,QPSK +8=3868,V,6666,34,DVB-S,QPSK +9=3888,H,3250,34,DVB-S,QPSK +10=3929,H,8882,34,DVB-S,QPSK +11=4044,V,3250,34,DVB-S,QPSK +12=4055,V,2700,56,DVB-S,QPSK +13=4059,V,3214,56,DVB-S,QPSK +14=4066,V,2893,34,DVB-S,QPSK +15=4068,V,2540,78,DVB-S,QPSK +16=4072,V,3150,34,DVB-S,QPSK +17=4083,H,10000,23,S2,8PSK +18=4172,H,8888,Auto,DVB-S,QPSK +19=4177,V,23500,12,S2,QPSK +20=10965,V,3300,56,DVB-S,QPSK +21=10970,V,1847,56,S2,QPSK +22=10975,H,3250,Auto,S2,QPSK +23=10975,V,2894,34,S2,8PSK +24=10978,H,3124,34,DVB-S,QPSK +25=10979,V,2894,34,S2,8PSK +26=10982,V,1000,Auto,S2,QPSK +27=10989,V,5632,34,DVB-S,QPSK +28=10991,H,6111,34,DVB-S,QPSK +29=10994,V,4800,34,S2,8PSK +30=11001,V,4280,34,DVB-S,QPSK +31=11032,V,6111,34,DVB-S,QPSK +32=11043,V,6666,78,DVB-S,QPSK +33=11482,H,11970,56,DVB-S,QPSK +34=11637,V,3885,34,S2,8PSK +35=11679,V,4090,34,S2,8PSK +36=11839,V,3125,Auto,DVB-S,QPSK +37=11875,V,5632,Auto,DVB-S,QPSK +38=12504,V,3400,78,DVB-S,QPSK +39=12515,H,3460,78,DVB-S,QPSK +40=12517,V,10800,Auto,S2,QPSK +41=12524,V,3600,Auto,DVB-S,QPSK +42=12533,V,6111,34,DVB-S,QPSK +43=12542,V,6111,34,DVB-S,QPSK +44=12543,V,3500,34,DVB-S,QPSK +45=12551,V,6111,34,DVB-S,QPSK +46=12584,V,6111,34,DVB-S,QPSK +47=12595,V,6650,34,DVB-S,QPSK +48=12606,V,9600,34,S2,8PSK +49=12615,V,3124,34,DVB-S,QPSK +50=12674,V,7500,56,S2,8PSK +51=12690,V,7500,56,S2,8PSK +52=12708,V,7200,23,S2,8PSK +53=12717,V,6620,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3255.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3255.ini new file mode 100644 index 000000000..eb56de14b --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3255.ini @@ -0,0 +1,42 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3255 +2=Intelsat 903 (34.5W) + +[DVB] +0=33 +1=3658,V,3300,34,DVB-S,QPSK +2=3676,V,3220,34,DVB-S,QPSK +3=4045,H,13500,23,S2,QPSK +4=4095,V,30000,34,S2,QPSK +5=4126,H,3680,23,DVB-S,QPSK +6=10960,V,5632,34,DVB-S,QPSK +7=10968,V,5632,34,DVB-S,QPSK +8=10977,V,5632,34,DVB-S,QPSK +9=10986,V,5632,34,DVB-S,QPSK +10=10993,V,7200,34,S2,QPSK +11=10995,H,44950,56,S2,QPSK +12=11028,V,5000,23,S2,8PSK +13=11049,V,13333,78,DVB-S,QPSK +14=11075,H,45000,34,S2,QPSK +15=11088,V,20640,56,S2,8PSK +16=11106,V,7750,23,S2,8PSK +17=11190,H,3333,Auto,DVB-S,QPSK +18=11495,H,45000,34,S2,QPSK +19=11555,H,30000,89,S2,QPSK +20=11568,V,6111,34,DVB-S,QPSK +21=11580,V,6220,56,DVB-S,QPSK +22=11589,V,6220,56,DVB-S,QPSK +23=11596,H,30000,89,S2,QPSK +24=11598,V,6220,56,DVB-S,QPSK +25=11604,V,4280,34,DVB-S,QPSK +26=11610,V,6111,34,DVB-S,QPSK +27=11620,V,4224,78,DVB-S,QPSK +28=11625,V,4224,78,DVB-S,QPSK +29=11631,V,4224,78,DVB-S,QPSK +30=11635,H,30000,89,S2,QPSK +31=11644,V,12000,34,DVB-S,QPSK +32=11675,V,26040,56,DVB-S,QPSK +33=11675,H,30000,89,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3285.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3285.ini new file mode 100644 index 000000000..c5632384c --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3285.ini @@ -0,0 +1,13 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3285 +2=Intelsat 25 (31.5W) + +[DVB] +0=4 +1=4114,V,5300,Auto,DVB-S,QPSK +2=12284,V,2200,23,S2,QPSK +3=12341,V,2120,78,DVB-S,QPSK +4=12344,V,2120,78,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3300.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3300.ini new file mode 100644 index 000000000..7b1595a53 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3300.ini @@ -0,0 +1,117 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3300 +2=Hispasat 1D/1E (30.0W) + +[DVB] +0=108 +1=10730,H,27500,34,S2,8PSK +2=10730,V,30000,34,S2,8PSK +3=10890,V,27500,34,DVB-S,QPSK +4=10946,H,4000,910,S2,QPSK +5=11472,H,5632,34,DVB-S,QPSK +6=11495,H,6900,34,S2,8PSK +7=11503,H,4444,34,DVB-S,QPSK +8=11510,V,10000,34,DVB-S,QPSK +9=11510,H,4444,34,DVB-S,QPSK +10=11519,V,2222,56,DVB-S,QPSK +11=11522,V,2400,34,DVB-S,QPSK +12=11522,H,4400,34,S2,8PSK +13=11528,H,4400,34,S2,8PSK +14=11529,V,10000,910,S2,QPSK +15=11537,H,4500,34,DVB-S,QPSK +16=11538,V,4800,34,S2,8PSK +17=11544,V,4444,34,DVB-S,QPSK +18=11546,H,4444,34,DVB-S,QPSK +19=11550,V,5000,34,S2,8PSK +20=11551,H,5632,34,DVB-S,QPSK +21=11562,V,5000,34,S2,8PSK +22=11564,H,4444,34,DVB-S,QPSK +23=11568,V,5000,34,S2,8PSK +24=11570,H,4875,34,S2,8PSK +25=11573,V,7200,34,S2,8PSK +26=11579,V,2300,34,S2,8PSK +27=11581,H,3400,23,S2,8PSK +28=11586,H,3400,23,DVB-S,QPSK +29=11588,V,3400,23,S2,8PSK +30=11590,H,3400,23,S2,8PSK +31=11593,V,3400,23,S2,8PSK +32=11594,H,3400,23,S2,8PSK +33=11602,H,6650,34,DVB-S,QPSK +34=11603,V,6111,34,DVB-S,QPSK +35=11612,H,4500,34,DVB-S,QPSK +36=11613,V,4800,34,S2,8PSK +37=11619,V,4800,34,S2,8PSK +38=11626,V,4444,34,DVB-S,QPSK +39=11632,V,4800,34,S2,8PSK +40=11654,V,5632,34,DVB-S,QPSK +41=11661,V,4500,34,DVB-S,QPSK +42=11667,V,4500,34,DVB-S,QPSK +43=11672,V,2300,56,DVB-S,QPSK +44=11678,V,2000,56,DVB-S,QPSK +45=11683,V,3400,34,DVB-S,QPSK +46=11731,V,27500,34,DVB-S,QPSK +47=11771,V,27500,34,DVB-S,QPSK +48=11811,V,27500,34,DVB-S,QPSK +49=11851,V,27500,34,DVB-S,QPSK +50=11884,V,27500,23,DVB-S,QPSK +51=11891,V,30000,56,DVB-S,QPSK +52=11911,V,12000,34,S2,8PSK +53=11931,V,27500,34,DVB-S,QPSK +54=11958,V,2500,78,DVB-S,QPSK +55=11960,H,6666,34,S2,8PSK +56=11960,V,1110,Auto,DVB-S,QPSK +57=11969,H,7200,34,S2,8PSK +58=11977,V,3255,Auto,DVB-S,QPSK +59=11983,H,13333,34,DVB-S,QPSK +60=11987,V,3702,34,DVB-S,QPSK +61=12052,V,27500,34,DVB-S,QPSK +62=12052,H,27500,34,DVB-S,QPSK +63=12076,V,4000,89,S2,QPSK +64=12092,V,27500,34,DVB-S,QPSK +65=12092,H,27500,34,DVB-S,QPSK +66=12108,V,4190,23,DVB-S,QPSK +67=12130,H,27500,34,S2,8PSK +68=12132,H,27500,34,DVB-S,QPSK +69=12169,H,27500,34,S2,8PSK +70=12207,H,27500,34,S2,8PSK +71=12226,V,27500,34,DVB-S,QPSK +72=12246,H,27500,34,S2,8PSK +73=12303,V,27500,34,DVB-S,QPSK +74=12322,H,27500,34,DVB-S,QPSK +75=12360,H,27500,56,DVB-S,QPSK +76=12380,V,27500,34,DVB-S,QPSK +77=12399,H,27500,34,S2,8PSK +78=12425,V,4440,Auto,DVB-S,QPSK +79=12437,H,27500,34,S2,8PSK +80=12456,V,30000,56,DVB-S,QPSK +81=12476,H,27500,34,S2,8PSK +82=12528,H,4444,34,DVB-S,QPSK +83=12550,H,3400,34,DVB-S,QPSK +84=12564,V,4500,34,DVB-S,QPSK +85=12580,H,9600,34,S2,8PSK +86=12588,H,4444,34,DVB-S,QPSK +87=12593,H,3600,34,S2,8PSK +88=12600,H,3200,34,S2,8PSK +89=12604,H,3200,34,S2,8PSK +90=12608,H,3200,34,S2,8PSK +91=12618,H,6120,34,DVB-S,QPSK +92=12629,H,4444,34,DVB-S,QPSK +93=12634,H,4500,34,DVB-S,QPSK +94=12640,H,4500,34,DVB-S,QPSK +95=12645,H,4500,34,DVB-S,QPSK +96=12657,H,7200,34,S2,QPSK +97=12663,H,5000,34,S2,8PSK +98=12669,H,3600,34,S2,8PSK +99=12673,H,3400,34,DVB-S,QPSK +100=12678,H,3400,23,DVB-S,QPSK +101=12682,H,3600,34,S2,8PSK +102=12687,H,4444,34,DVB-S,8PSK +103=12700,V,1483,34,DVB-S,QPSK +104=12706,V,4444,34,DVB-S,QPSK +105=12706,H,20000,12,S2,QPSK +106=12712,V,7200,34,S2,8PSK +107=12724,V,4444,34,DVB-S,QPSK +108=12732,V,4500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3325.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3325.ini new file mode 100644 index 000000000..380ed4072 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3325.ini @@ -0,0 +1,34 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3325 +2=Intelsat 907 (27.5W) + +[DVB] +0=25 +1=3648,V,30000,Auto,S2,QPSK +2=3718,V,12000,12,DVB-S,QPSK +3=3723,V,21092,Auto,S2,QPSK +4=3759,V,26665,Auto,S2,QPSK +5=3764,V,24450,34,DVB-S,QPSK +6=3784,H,6510,23,DVB-S,QPSK +7=3791,H,6510,23,DVB-S,QPSK +8=3795,V,7000,23,S2,8PSK +9=3800,V,2400,Auto,DVB-S,QPSK +10=3802,V,2000,23,DVB-S,QPSK +11=3831,V,5787,34,DVB-S,QPSK +12=3838,V,7235,34,DVB-S,QPSK +13=3855,H,4134,34,S2,8PSK +14=3859,H,5250,23,S2,8PSK +15=3873,H,3200,Auto,DVB-S,QPSK +16=3902,V,1807,34,DVB-S,QPSK +17=3936,V,4550,12,DVB-S,QPSK +18=3940,H,2400,Auto,S2,QPSK +19=4003,H,5632,34,DVB-S,QPSK +20=4054,V,4000,Auto,S2,QPSK +21=4110,H,1384,34,DVB-S,QPSK +22=4119,H,2893,34,DVB-S,QPSK +23=4151,H,1517,34,DVB-S,QPSK +24=11050,H,17100,78,DVB-S,QPSK +25=11495,V,44100,910,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3355.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3355.ini new file mode 100644 index 000000000..542d9bd46 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3355.ini @@ -0,0 +1,106 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3355 +2=Intelsat 905 (24.5W) + +[DVB] +0=97 +1=3653,V,3906,34,DVB-S,QPSK +2=3688,V,21050,34,DVB-S,QPSK +3=3829,V,6110,Auto,DVB-S,QPSK +4=4061,V,2848,23,DVB-S,QPSK +5=4068,H,2915,78,DVB-S,QPSK +6=4069,V,3800,12,DVB-S,QPSK +7=4122,V,5303,12,DVB-S,QPSK +8=4162,V,6111,34,DVB-S,QPSK +9=4168,V,3100,23,DVB-S,QPSK +10=4181,V,6111,34,DVB-S,QPSK +11=4192,H,2100,23,DVB-S,QPSK +12=10957,V,6660,34,S2,8PSK +13=10963,V,4800,34,S2,8PSK +14=10976,V,7200,34,S2,8PSK +15=10987,V,5000,35,S2,QPSK +16=10992,V,4800,34,S2,8PSK +17=10997,H,6666,56,DVB-S,QPSK +18=10998,V,4800,34,S2,8PSK +19=11004,H,3300,78,DVB-S,QPSK +20=11004,V,4800,34,S2,8PSK +21=11007,H,1600,56,S2,8PSK +22=11010,V,4800,34,S2,8PSK +23=11011,H,3100,78,DVB-S,QPSK +24=11015,H,1600,56,S2,8PSK +25=11017,H,1600,56,S2,8PSK +26=11020,V,3550,34,S2,8PSK +27=11022,H,4280,34,DVB-S,QPSK +28=11028,H,4280,34,DVB-S,QPSK +29=11041,V,3750,34,S2,8PSK +30=11042,H,1600,56,S2,8PSK +31=11045,V,3750,34,S2,8PSK +32=11046,H,3400,23,S2,8PSK +33=11049,V,6620,34,DVB-S,QPSK +34=11050,H,3200,56,S2,8PSK +35=11054,H,3700,34,S2,8PSK +36=11060,H,3400,23,S2,8PSK +37=11060,V,7200,34,S2,8PSK +38=11068,H,3111,34,DVB-S,QPSK +39=11072,V,4444,34,DVB-S,QPSK +40=11078,H,3400,23,S2,8PSK +41=11079,V,6111,34,DVB-S,QPSK +42=11082,H,3400,23,S2,8PSK +43=11084,V,4444,34,DVB-S,QPSK +44=11086,H,1600,56,S2,8PSK +45=11090,V,4444,34,DVB-S,QPSK +46=11090,H,4444,34,DVB-S,QPSK +47=11095,H,4800,34,S2,8PSK +48=11096,V,4444,34,DVB-S,QPSK +49=11103,V,3400,34,S2,8PSK +50=11108,V,3400,23,S2,8PSK +51=11108,H,4445,34,DVB-S,QPSK +52=11121,H,3400,23,S2,8PSK +53=11122,V,7200,34,S2,8PSK +54=11126,H,3400,23,S2,8PSK +55=11130,H,3400,23,S2,8PSK +56=11132,V,14115,12,DVB-S,QPSK +57=11134,H,3400,23,S2,8PSK +58=11139,H,3400,23,S2,8PSK +59=11144,H,3400,23,S2,8PSK +60=11148,H,3400,23,S2,8PSK +61=11148,V,3200,34,DVB-S,QPSK +62=11152,H,3400,23,S2,8PSK +63=11157,V,3400,23,S2,8PSK +64=11157,H,3400,23,S2,8PSK +65=11161,V,3400,23,S2,8PSK +66=11162,H,3400,23,S2,8PSK +67=11165,V,4834,56,S2,QPSK +68=11166,H,3400,23,S2,8PSK +69=11171,H,3516,34,S2,8PSK +70=11177,V,6666,78,DVB-S,QPSK +71=11177,H,7200,34,S2,8PSK +72=11182,H,3400,23,S2,8PSK +73=11187,H,1600,56,S2,8PSK +74=11188,V,3400,23,S2,8PSK +75=11193,V,4666,34,S2,QPSK +76=11455,V,3450,34,DVB-S,QPSK +77=11463,V,3583,89,S2,QPSK +78=11471,V,3400,23,S2,8PSK +79=11476,V,3400,23,S2,8PSK +80=11477,H,27500,34,DVB-S,QPSK +81=11488,V,11640,56,S2,8PSK +82=11509,V,3750,34,DVB-S,QPSK +83=11513,H,27500,34,DVB-S,QPSK +84=11518,V,7100,12,S2,8PSK +85=11527,V,2600,45,S2,QPSK +86=11530,V,2000,34,DVB-S,QPSK +87=11580,H,7120,34,S2,8PSK +88=11589,H,7120,34,S2,8PSK +89=11598,H,7120,34,S2,8PSK +90=11608,H,7120,34,S2,8PSK +91=11620,V,3600,34,S2,8PSK +92=11626,H,13500,78,DVB-S,QPSK +93=11636,H,3500,23,S2,8PSK +94=11638,V,21000,56,S2,8PSK +95=11642,H,3400,23,S2,8PSK +96=11646,H,1600,56,S2,8PSK +97=11650,H,3200,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3380.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3380.ini new file mode 100644 index 000000000..39d26fdbb --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3380.ini @@ -0,0 +1,64 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3380 +2=SES 4 (22.0W) + +[DVB] +0=55 +1=3631,V,7200,34,S2,8PSK +2=3631,H,7200,Auto,S2,QPSK +3=3713,V,3254,23,DVB-S,QPSK +4=3724,H,30000,23,S2,8PSK +5=3726,H,1000,34,S2,8PSK +6=3761,V,22650,23,DVB-S,QPSK +7=3825,H,8950,56,DVB-S,QPSK +8=3966,H,2221,23,DVB-S,QPSK +9=3970,H,3332,34,DVB-S,QPSK +10=3976,H,1844,34,DVB-S,QPSK +11=4016,H,3662,23,DVB-S,QPSK +12=4033,V,3689,34,DVB-S,QPSK +13=4039,V,3906,34,DVB-S,QPSK +14=4043,V,3560,23,S2,8PSK +15=4048,V,3333,23,DVB-S,QPSK +16=4053,V,3333,23,DVB-S,QPSK +17=4056,V,2441,23,DVB-S,QPSK +18=4061,V,3333,Auto,S2,8PSK +19=4065,H,3590,34,S2,QPSK +20=4071,V,3502,34,DVB-S,QPSK +21=4097,V,23500,34,S2,QPSK +22=4115,H,3680,23,DVB-S,QPSK +23=4141,H,1925,45,S2,QPSK +24=10986,V,30000,34,DVB-S,QPSK +25=11108,H,15000,56,S2,8PSK +26=11128,H,14300,35,S2,8PSK +27=11540,H,12238,45,S2,QPSK +28=11551,V,40000,Auto,S2,8PSK +29=11552,H,3255,12,DVB-S,QPSK +30=11563,H,6111,34,DVB-S,QPSK +31=11574,H,7500,56,S2,8PSK +32=11667,H,7500,910,S2,8PSK +33=11671,V,30000,34,DVB-S,QPSK +34=11674,H,3500,34,DVB-S,QPSK +35=11684,H,8570,910,S2,8PSK +36=11693,H,7500,910,S2,8PSK +37=11777,H,4000,34,DVB-S,QPSK +38=11861,H,35000,34,DVB-S,QPSK +39=11921,H,35000,34,DVB-S,QPSK +40=12037,H,4610,34,S2,8PSK +41=12076,H,4610,34,S2,8PSK +42=12082,H,4610,34,S2,8PSK +43=12089,H,4610,34,S2,8PSK +44=12530,V,30000,34,DVB-S,QPSK +45=12570,V,30000,34,DVB-S,QPSK +46=12610,V,30000,34,DVB-S,QPSK +47=12635,H,4610,34,S2,8PSK +48=12644,H,5136,34,DVB-S,QPSK +49=12650,V,30000,34,DVB-S,QPSK +50=12653,H,3055,34,DVB-S,QPSK +51=12658,H,3055,34,DVB-S,QPSK +52=12673,H,20250,34,DVB-S,QPSK +53=12690,V,30000,34,DVB-S,QPSK +54=12717,H,1500,34,S2,8PSK +55=12730,V,30000,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3400.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3400.ini new file mode 100644 index 000000000..c23fe0b19 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3400.ini @@ -0,0 +1,18 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3400 +2=NSS 7 (20.0W) + +[DVB] +0=9 +1=3969,V,3410,Auto,DVB-S,QPSK +2=3973,V,3410,Auto,DVB-S,QPSK +3=3977,V,3410,Auto,DVB-S,QPSK +4=4129,V,15405,12,S2,QPSK +5=11166,H,7500,34,S2,8PSK +6=11175,H,7500,34,S2,8PSK +7=11184,H,7500,34,S2,8PSK +8=11192,H,7500,34,S2,8PSK +9=11585,H,2200,12,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3420.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3420.ini new file mode 100644 index 000000000..2470d71f9 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3420.ini @@ -0,0 +1,16 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3420 +2=Intelsat 901 (18.0W) + +[DVB] +0=7 +1=3631,V,1600,56,S2,8PSK +2=3887,H,26500,Auto,DVB-S,QPSK +3=3961,H,2960,78,DVB-S,QPSK +4=4010,V,6730,34,S2,QPSK +5=4018,V,4444,23,DVB-S,QPSK +6=4027,V,9037,56,S2,8PSK +7=11033,V,2530,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3450.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3450.ini new file mode 100644 index 000000000..cae2fe8b9 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3450.ini @@ -0,0 +1,92 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3450 +2=Telstar 12 (15.0W) + +[DVB] +0=83 +1=10997,V,2894,34,DVB-S,QPSK +2=11005,H,8880,34,DVB-S,QPSK +3=11012,V,3400,34,DVB-S,QPSK +4=11016,V,3333,34,DVB-S,QPSK +5=11033,V,2130,34,DVB-S,QPSK +6=11063,V,7200,34,S2,8PSK +7=11079,H,4610,34,S2,8PSK +8=11088,H,7500,34,S2,8PSK +9=11123,H,21600,34,DVB-S,QPSK +10=11123,V,21540,34,S2,8PSK +11=11150,H,21600,34,DVB-S,QPSK +12=11150,V,19279,34,DVB-S,QPSK +13=11457,V,3255,34,DVB-S,QPSK +14=11472,H,3310,34,DVB-S,QPSK +15=11477,H,4500,34,DVB-S,QPSK +16=11487,H,7200,34,S2,QPSK +17=11497,H,7200,34,S2,8PSK +18=11498,V,6111,34,DVB-S,QPSK +19=11524,H,14400,34,S2,8PSK +20=11534,H,3200,78,DVB-S,QPSK +21=11539,H,4610,34,DVB-S,QPSK +22=11545,V,4088,34,DVB-S,QPSK +23=11546,H,4610,34,S2,8PSK +24=11564,H,7500,34,S2,8PSK +25=11591,V,2893,34,DVB-S,QPSK +26=11597,V,3200,78,DVB-S,QPSK +27=11604,V,1810,78,DVB-S,QPSK +28=11604,H,5886,23,DVB-S,QPSK +29=11611,H,4054,34,S2,8PSK +30=11618,H,7000,56,S2,8PSK +31=11625,V,3979,34,DVB-S,QPSK +32=11627,H,7000,34,S2,8PSK +33=11642,H,4610,34,S2,8PSK +34=11644,V,5632,34,DVB-S,QPSK +35=11651,V,5632,34,DVB-S,QPSK +36=11651,H,4610,34,S2,8PSK +37=11662,V,6111,78,DVB-S,QPSK +38=11667,H,3255,78,DVB-S,QPSK +39=11671,V,6666,78,DVB-S,QPSK +40=11690,V,2200,34,DVB-S,QPSK +41=11691,H,6111,34,DVB-S,QPSK +42=11709,V,3198,78,DVB-S,QPSK +43=11710,H,6750,Auto,DVB-S,QPSK +44=11720,H,6600,Auto,DVB-S,QPSK +45=11726,V,3200,Auto,DVB-S,QPSK +46=11737,H,6600,Auto,DVB-S,QPSK +47=11755,V,5500,Auto,DVB-S,QPSK +48=11771,V,4800,23,S2,8PSK +49=11860,H,45000,Auto,S2,8PSK +50=11920,H,45000,Auto,S2,8PSK +51=11964,H,14714,23,DVB-S,QPSK +52=11993,H,6666,78,DVB-S,QPSK +53=12004,H,6111,Auto,DVB-S,QPSK +54=12044,H,45000,Auto,S2,8PSK +55=12087,V,3200,34,DVB-S,QPSK +56=12094,V,2000,34,DVB-S,QPSK +57=12100,V,3200,78,DVB-S,QPSK +58=12107,V,3330,Auto,DVB-S,QPSK +59=12123,V,3480,78,DVB-S,QPSK +60=12126,V,2000,56,DVB-S,QPSK +61=12170,H,45000,56,S2,QPSK +62=12509,H,3198,78,DVB-S,QPSK +63=12511,V,7552,34,DVB-S,QPSK +64=12513,H,3400,34,S2,8PSK +65=12518,H,3198,78,DVB-S,QPSK +66=12521,H,3198,78,DVB-S,QPSK +67=12570,V,2900,34,S2,8PSK +68=12570,H,2900,34,S2,8PSK +69=12573,V,2900,34,S2,8PSK +70=12584,H,3976,34,DVB-S,QPSK +71=12589,H,1925,78,DVB-S,QPSK +72=12608,H,19279,23,DVB-S,QPSK +73=12620,V,3012,23,DVB-S,QPSK +74=12645,H,3255,34,DVB-S,QPSK +75=12658,H,3255,78,DVB-S,QPSK +76=12662,V,8000,34,DVB-S,QPSK +77=12666,H,3255,78,DVB-S,QPSK +78=12674,H,5632,34,DVB-S,QPSK +79=12676,V,14170,34,S2,8PSK +80=12696,H,5632,34,DVB-S,QPSK +81=12705,H,5632,34,DVB-S,QPSK +82=12710,V,6666,78,DVB-S,QPSK +83=12740,V,5632,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3460.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3460.ini new file mode 100644 index 000000000..46a7c1b62 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3460.ini @@ -0,0 +1,11 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3460 +2=Express A4 (14.0W) + +[DVB] +0=2 +1=3975,V,30000,34,S2,QPSK +2=4025,V,30000,34,S2,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3475.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3475.ini new file mode 100644 index 000000000..e7a7afc1d --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3475.ini @@ -0,0 +1,116 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3475 +2=Eutelsat 12 West A (12.5W) + +[DVB] +0=107 +1=10958,H,4940,34,S2,8PSK +2=10965,H,4444,78,DVB-S,QPSK +3=10971,H,4444,78,DVB-S,QPSK +4=10977,H,4444,78,DVB-S,QPSK +5=10983,H,4444,78,DVB-S,QPSK +6=10989,H,4444,78,DVB-S,QPSK +7=10995,H,4940,34,S2,8PSK +8=11001,H,4444,78,DVB-S,QPSK +9=11007,H,4444,78,DVB-S,QPSK +10=11013,H,4900,34,S2,8PSK +11=11019,H,4444,78,DVB-S,QPSK +12=11022,V,6666,78,DVB-S,QPSK +13=11025,H,4444,78,DVB-S,QPSK +14=11040,H,3270,56,DVB-S,QPSK +15=11044,H,3270,56,DVB-S,QPSK +16=11048,H,3270,56,DVB-S,8PSK +17=11052,H,3270,56,DVB-S,QPSK +18=11058,H,3270,56,DVB-S,QPSK +19=11062,H,3270,56,DVB-S,QPSK +20=11064,V,7500,910,S2,8PSK +21=11068,H,3333,34,DVB-S,QPSK +22=11070,V,3680,56,DVB-S,QPSK +23=11072,H,4500,34,DVB-S,QPSK +24=11075,V,3630,56,S2,8PSK +25=11079,V,3270,56,DVB-S,QPSK +26=11081,H,6511,34,DVB-S,QPSK +27=11083,V,3270,56,DVB-S,QPSK +28=11087,H,3400,34,S2,8PSK +29=11088,V,3400,56,DVB-S,QPSK +30=11091,H,3333,34,DVB-S,QPSK +31=11093,V,3270,56,DVB-S,QPSK +32=11097,V,3630,23,S2,8PSK +33=11103,V,3630,23,S2,8PSK +34=11108,V,3250,56,DVB-S,QPSK +35=11125,V,7100,34,DVB-S,QPSK +36=11126,H,4800,34,S2,8PSK +37=11135,V,7100,34,DVB-S,QPSK +38=11142,H,4208,56,S2,8PSK +39=11149,H,4208,56,S2,8PSK +40=11153,H,3204,34,DVB-S,QPSK +41=11160,H,3270,56,DVB-S,QPSK +42=11164,H,3270,56,DVB-S,QPSK +43=11171,H,7200,34,S2,8PSK +44=11181,H,7390,34,S2,8PSK +45=11188,H,3600,35,S2,8PSK +46=11192,H,3600,35,S2,8PSK +47=11329,H,3214,56,DVB-S,8PSK +48=11334,H,3214,56,DVB-S,QPSK +49=11340,H,2136,34,DVB-S,QPSK +50=11350,H,6700,34,S2,8PSK +51=11359,H,6700,34,S2,8PSK +52=11371,H,3400,34,DVB-S,QPSK +53=11375,H,3400,34,DVB-S,QPSK +54=11380,H,3215,34,DVB-S,QPSK +55=11393,H,12750,78,DVB-S,QPSK +56=11403,H,6111,34,DVB-S,QPSK +57=11408,V,27500,34,DVB-S,QPSK +58=11414,H,7120,34,S2,8PSK +59=11424,H,7120,34,S2,8PSK +60=11431,H,6700,34,S2,8PSK +61=11442,H,7120,34,S2,8PSK +62=11597,H,3884,Auto,DVB-S,QPSK +63=11622,H,3255,Auto,DVB-S,QPSK +64=11643,H,2398,Auto,DVB-S,QPSK +65=11645,V,4790,Auto,DVB-S,QPSK +66=11647,H,3992,Auto,DVB-S,QPSK +67=11651,V,3688,Auto,DVB-S,QPSK +68=11655,H,6666,56,DVB-S,QPSK +69=11664,H,6111,34,DVB-S,QPSK +70=11690,H,5700,34,DVB-S,QPSK +71=12507,V,3125,34,DVB-S,QPSK +72=12514,H,3600,34,S2,8PSK +73=12520,H,3400,34,DVB-S,QPSK +74=12521,V,2400,34,DVB-S,QPSK +75=12532,V,7360,56,S2,8PSK +76=12540,V,3111,78,DVB-S,QPSK +77=12546,V,6111,34,DVB-S,QPSK +78=12555,V,4104,23,S2,QPSK +79=12574,V,3400,34,DVB-S,QPSK +80=12577,H,2222,56,S2,QPSK +81=12583,H,2894,34,DVB-S,QPSK +82=12590,H,3600,23,DVB-S,QPSK +83=12595,H,1875,56,S2,8PSK +84=12606,H,2500,56,S2,8PSK +85=12606,V,3600,34,S2,8PSK +86=12614,H,8570,34,S2,8PSK +87=12614,V,8570,34,S2,8PSK +88=12634,V,7200,34,S2,8PSK +89=12638,H,14400,34,S2,8PSK +90=12648,V,9874,34,S2,8PSK +91=12650,H,3600,34,S2,8PSK +92=12661,V,4444,34,DVB-S,QPSK +93=12668,H,3213,34,DVB-S,QPSK +94=12668,V,3270,56,DVB-S,QPSK +95=12672,H,2141,34,DVB-S,QPSK +96=12672,V,3270,56,DVB-S,QPSK +97=12676,H,3178,34,DVB-S,QPSK +98=12679,V,7500,34,S2,8PSK +99=12681,H,3178,34,DVB-S,QPSK +100=12694,V,1580,56,S2,8PSK +101=12696,V,1580,56,S2,8PSK +102=12699,V,1580,56,S2,8PSK +103=12717,V,3333,78,DVB-S,QPSK +104=12718,H,36510,56,S2,8PSK +105=12723,V,6111,34,DVB-S,QPSK +106=12730,V,3254,34,DVB-S,QPSK +107=12739,V,7500,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3490.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3490.ini new file mode 100644 index 000000000..7d5737979 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3490.ini @@ -0,0 +1,39 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3490 +2=Express AM44 (11.0W) + +[DVB] +0=30 +1=3662,V,10808,12,DVB-S,QPSK +2=4092,V,2224,35,S2,8PSK +3=10957,V,2300,56,S2,8PSK +4=10983,V,12110,Auto,DVB-S,QPSK +5=11059,H,3124,34,DVB-S,QPSK +6=11095,H,3000,34,DVB-S,QPSK +7=11144,H,3214,34,S2,8PSK +8=11154,H,7200,34,S2,8PSK +9=11174,H,9874,34,S2,8PSK +10=11191,H,7200,34,S2,8PSK +11=11479,H,7500,34,S2,8PSK +12=11483,V,3470,78,DVB-S,QPSK +13=11492,H,6428,34,DVB-S,QPSK +14=11499,H,3214,34,DVB-S,QPSK +15=11505,H,2222,34,S2,8PSK +16=11522,H,1185,23,DVB-S,QPSK +17=11523,H,1280,56,S2,8PSK +18=11533,H,3333,34,DVB-S,QPSK +19=11542,H,3600,34,S2,QPSK +20=11542,V,2170,56,DVB-S,QPSK +21=11566,H,8000,34,S2,8PSK +22=11581,H,2050,34,DVB-S,QPSK +23=11599,H,3600,56,DVB-S,QPSK +24=11603,H,3333,34,DVB-S,QPSK +25=11608,H,5000,34,DVB-S,QPSK +26=11612,H,3333,34,DVB-S,QPSK +27=11618,H,3333,34,DVB-S,QPSK +28=11628,H,6422,56,DVB-S,QPSK +29=11642,H,3333,34,DVB-S,QPSK +30=11669,H,5000,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3520.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3520.ini new file mode 100644 index 000000000..6274b967e --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3520.ini @@ -0,0 +1,80 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3520 +2=Eutelsat 8 West A (8.0W) + +[DVB] +0=71 +1=11471,V,27500,56,DVB-S,QPSK +2=11512,V,27500,56,DVB-S,QPSK +3=11554,V,27500,34,DVB-S,QPSK +4=11595,V,27500,34,DVB-S,QPSK +5=11637,V,27500,34,DVB-S,QPSK +6=11678,H,30000,Auto,S2,QPSK +7=11678,V,27500,34,DVB-S,QPSK +8=12509,V,4150,34,S2,QPSK +9=12509,H,5000,34,S2,8PSK +10=12513,V,4150,34,S2,QPSK +11=12515,H,2500,Auto,S2,8PSK +12=12518,V,4150,34,S2,QPSK +13=12523,V,4150,34,S2,QPSK +14=12524,H,9600,34,S2,8PSK +15=12527,V,4150,34,S2,QPSK +16=12531,V,3488,56,S2,8PSK +17=12536,V,4150,34,S2,QPSK +18=12549,H,4800,34,S2,8PSK +19=12550,V,2267,56,S2,8PSK +20=12554,H,3600,34,S2,8PSK +21=12554,V,2267,56,S2,8PSK +22=12558,V,2267,56,S2,8PSK +23=12558,H,3600,34,S2,8PSK +24=12561,V,2267,56,S2,8PSK +25=12564,V,2267,56,S2,8PSK +26=12567,V,2267,56,S2,8PSK +27=12570,V,2267,56,S2,8PSK +28=12572,H,7200,34,S2,8PSK +29=12573,V,2267,56,S2,8PSK +30=12578,V,2267,56,S2,8PSK +31=12580,H,3200,56,S2,8PSK +32=12582,V,2744,56,S2,8PSK +33=12585,H,3124,34,DVB-S,QPSK +34=12589,H,9874,34,S2,8PSK +35=12592,V,4800,34,S2,QPSK +36=12599,V,3333,78,DVB-S,QPSK +37=12601,H,6975,56,S2,8PSK +38=12606,V,1300,910,S2,8PSK +39=12609,V,2400,56,S2,8PSK +40=12613,H,3056,34,S2,QPSK +41=12614,V,2400,56,S2,8PSK +42=12619,V,2400,56,S2,8PSK +43=12624,H,7200,34,S2,8PSK +44=12627,V,2222,12,DVB-S,QPSK +45=12632,V,2500,56,S2,8PSK +46=12633,H,7200,34,S2,8PSK +47=12638,H,3055,34,DVB-S,QPSK +48=12640,V,5000,34,S2,8PSK +49=12646,V,5000,34,S2,8PSK +50=12652,V,5000,34,S2,8PSK +51=12656,H,7200,34,S2,8PSK +52=12658,V,5000,56,S2,8PSK +53=12666,H,5632,34,DVB-S,QPSK +54=12673,H,2778,34,DVB-S,QPSK +55=12676,H,2778,34,DVB-S,QPSK +56=12676,V,5632,34,DVB-S,QPSK +57=12684,H,5632,34,DVB-S,QPSK +58=12686,V,6111,34,DVB-S,QPSK +59=12695,V,6111,34,DVB-S,QPSK +60=12703,V,5632,34,DVB-S,QPSK +61=12705,H,4800,34,S2,8PSK +62=12715,H,9600,34,S2,8PSK +63=12718,V,7200,34,S2,8PSK +64=12725,V,2267,56,S2,8PSK +65=12727,H,9600,34,S2,8PSK +66=12735,V,3600,34,S2,8PSK +67=12739,H,9600,34,S2,8PSK +68=12741,V,3600,34,S2,8PSK +69=12744,V,3270,56,S2,8PSK +70=12747,H,4800,34,S2,8PSK +71=12747,V,3600,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3527.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3527.ini new file mode 100644 index 000000000..b5aa21780 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3527.ini @@ -0,0 +1,94 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3527 +2=Eutelsat 7 West A/Eutelsat 8 West C/Nilesat 102/201 (7.3W) + +[DVB] +0=85 +1=10719,V,22000,34,S2,QPSK +2=10727,H,27500,56,DVB-S,QPSK +3=10758,V,27500,56,DVB-S,QPSK +4=10777,H,27500,56,DVB-S,QPSK +5=10796,V,27500,56,DVB-S,QPSK +6=10815,H,27500,56,DVB-S,QPSK +7=10834,V,27500,23,S2,8PSK +8=10853,H,27500,23,S2,8PSK +9=10873,V,27500,56,DVB-S,QPSK +10=10892,H,27500,34,DVB-S,QPSK +11=10922,V,27500,56,DVB-S,QPSK +12=10930,H,27500,56,DVB-S,QPSK +13=10971,H,27500,34,DVB-S,QPSK +14=10992,V,27500,34,DVB-S,QPSK +15=11006,H,17000,23,S2,8PSK +16=11034,V,27500,34,DVB-S,QPSK +17=11054,H,27500,34,DVB-S,QPSK +18=11075,V,27500,34,DVB-S,QPSK +19=11096,H,27500,34,DVB-S,QPSK +20=11117,V,27500,34,DVB-S,QPSK +21=11137,H,27500,34,DVB-S,QPSK +22=11158,V,27500,56,DVB-S,QPSK +23=11179,H,27500,34,DVB-S,QPSK +24=11219,H,27500,56,DVB-S,QPSK +25=11227,V,27500,56,DVB-S,QPSK +26=11258,H,27500,56,DVB-S,QPSK +27=11277,V,27500,23,S2,8PSK +28=11296,H,27500,34,DVB-S,QPSK +29=11315,V,27500,56,DVB-S,QPSK +30=11334,H,27500,56,DVB-S,QPSK +31=11354,V,27500,56,DVB-S,QPSK +32=11373,H,27500,23,S2,8PSK +33=11392,V,27500,56,DVB-S,QPSK +34=11411,H,27500,23,S2,8PSK +35=11430,V,27500,56,DVB-S,QPSK +36=11449,H,27500,56,DVB-S,QPSK +37=11476,V,27500,34,DVB-S,8PSK +38=11488,H,27500,56,DVB-S,QPSK +39=11526,H,27500,56,DVB-S,QPSK +40=11559,V,27500,56,S2,8PSK +41=11564,H,27500,56,DVB-S,QPSK +42=11595,V,27500,34,DVB-S,QPSK +43=11603,H,27500,56,DVB-S,QPSK +44=11641,H,27500,56,DVB-S,QPSK +45=11661,V,27500,23,DVB-S,QPSK +46=11680,H,27500,56,DVB-S,QPSK +47=11727,H,27500,56,S2,8PSK +48=11747,V,27500,34,DVB-S,QPSK +49=11766,H,27500,56,DVB-S,QPSK +50=11785,V,27500,34,DVB-S,QPSK +51=11804,H,27500,56,S2,QPSK +52=11823,V,27500,56,DVB-S,QPSK +53=11843,H,27500,56,DVB-S,QPSK +54=11862,V,27500,34,S2,8PSK +55=11881,H,27500,56,S2,QPSK +56=11900,V,27500,56,DVB-S,QPSK +57=11919,H,27500,34,S2,8PSK +58=11938,V,27500,34,DVB-S,QPSK +59=11958,H,27500,56,DVB-S,QPSK +60=11977,V,27500,56,DVB-S,QPSK +61=11996,H,27500,23,S2,8PSK +62=12015,V,27500,56,DVB-S,QPSK +63=12034,H,27500,56,DVB-S,QPSK +64=12054,V,27500,56,DVB-S,QPSK +65=12073,H,27500,23,S2,8PSK +66=12092,V,27500,56,S2,QPSK +67=12111,H,27500,34,DVB-S,QPSK +68=12130,V,27500,56,DVB-S,QPSK +69=12169,V,27500,56,DVB-S,QPSK +70=12188,H,27500,56,S2,QPSK +71=12207,V,27500,34,DVB-S,QPSK +72=12226,H,27500,34,DVB-S,QPSK +73=12245,V,27500,23,S2,8PSK +74=12265,H,27500,23,S2,8PSK +75=12284,V,27500,34,DVB-S,QPSK +76=12303,H,27500,56,DVB-S,QPSK +77=12322,V,27500,23,S2,8PSK +78=12341,H,27500,56,DVB-S,QPSK +79=12360,V,27500,34,DVB-S,QPSK +80=12380,H,27500,56,DVB-S,QPSK +81=12399,V,27500,56,DVB-S,QPSK +82=12418,H,27500,34,DVB-S,QPSK +83=12437,V,27500,56,DVB-S,QPSK +84=12467,H,27500,23,S2,8PSK +85=12476,V,27500,23,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3550.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3550.ini new file mode 100644 index 000000000..5ae30b778 --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3550.ini @@ -0,0 +1,69 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3550 +2=Eutelsat 5 West A (5.0W) + +[DVB] +0=60 +1=3630,V,3255,23,DVB-S,QPSK +2=3633,V,2018,78,DVB-S,QPSK +3=3646,V,2170,34,DVB-S,QPSK +4=3656,V,2917,35,S2,8PSK +5=3712,H,2480,78,DVB-S,QPSK +6=3717,H,2222,56,S2,8PSK +7=3719,H,1286,23,S2,8PSK +8=3721,H,1837,34,S2,8PSK +9=3727,V,29950,78,DVB-S,QPSK +10=3743,H,2785,56,DVB-S,QPSK +11=4015,V,3591,34,S2,8PSK +12=4021,V,1245,34,S2,8PSK +13=4022,V,1200,34,S2,8PSK +14=4030,V,4593,35,S2,8PSK +15=4077,H,3100,56,S2,QPSK +16=4110,H,2141,56,S2,QPSK +17=4114,H,2143,56,DVB-S,QPSK +18=4123,V,8319,34,DVB-S,QPSK +19=4137,H,2510,78,DVB-S,QPSK +20=4138,V,4434,78,DVB-S,QPSK +21=4154,H,2289,78,DVB-S,QPSK +22=4154,V,28485,56,S2,8PSK +23=4156,H,1793,78,DVB-S,QPSK +24=4159,H,1944,78,DVB-S,QPSK +25=4162,H,1500,34,DVB-S,QPSK +26=10972,V,29950,78,DVB-S,QPSK +27=11054,V,29950,78,DVB-S,QPSK +28=11059,H,23700,34,DVB-S,QPSK +29=11096,V,29950,34,S2,8PSK +30=11108,H,3125,34,DVB-S,QPSK +31=11168,H,6111,34,DVB-S,QPSK +32=11177,H,6111,34,DVB-S,QPSK +33=11184,H,5632,34,DVB-S,QPSK +34=11195,H,3333,34,DVB-S,QPSK +35=11456,H,2400,34,S2,QPSK +36=11460,H,1704,34,S2,8PSK +37=11469,H,3100,78,DVB-S,QPSK +38=11471,V,29950,34,S2,8PSK +39=11472,H,2000,34,S2,8PSK +40=11480,H,3215,34,S2,8PSK +41=11496,H,6111,34,DVB-S,QPSK +42=11505,H,5632,34,DVB-S,QPSK +43=11512,V,29950,78,DVB-S,QPSK +44=11513,H,5632,34,DVB-S,QPSK +45=11522,H,6111,34,DVB-S,QPSK +46=11538,H,8681,78,DVB-S,QPSK +47=11554,V,29950,78,DVB-S,QPSK +48=11591,V,20000,23,DVB-S,QPSK +49=11592,H,25000,12,S2,QPSK +50=11604,H,3333,34,DVB-S,QPSK +51=11608,H,3333,34,DVB-S,QPSK +52=11609,V,5968,12,DVB-S,QPSK +53=11634,H,29950,34,S2,8PSK +54=11679,V,29950,78,DVB-S,QPSK +55=12522,V,29950,23,S2,8PSK +56=12543,H,27500,34,DVB-S,QPSK +57=12564,V,29950,78,DVB-S,QPSK +58=12648,V,29500,89,S2,8PSK +59=12654,H,5500,23,S2,8PSK +60=12690,V,30000,35,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3560.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3560.ini new file mode 100644 index 000000000..bf3006b2e --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3560.ini @@ -0,0 +1,73 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3560 +2=Amos 2/3 (4.0W) + +[DVB] +0=64 +1=10722,V,30000,23,S2,8PSK +2=10722,H,27500,34,DVB-S,QPSK +3=10758,V,30000,34,S2,8PSK +4=10759,H,30000,34,DVB-S,QPSK +5=10806,V,30000,34,S2,8PSK +6=10806,H,30000,34,DVB-S,QPSK +7=10842,V,30000,34,S2,8PSK +8=10876,H,7500,23,S2,8PSK +9=10888,H,11570,34,DVB-S,QPSK +10=10889,V,30000,34,S2,8PSK +11=10890,V,27500,56,DVB-S,QPSK +12=10921,H,7500,23,S2,8PSK +13=10925,V,27500,56,DVB-S,QPSK +14=10926,V,30000,34,S2,8PSK +15=10935,H,13750,56,DVB-S,QPSK +16=10959,H,3700,34,DVB-S,QPSK +17=10972,V,30000,23,S2,8PSK +18=11006,H,3700,34,DVB-S,QPSK +19=11008,V,30000,23,S2,8PSK +20=11015,H,2295,34,DVB-S,QPSK +21=11130,H,10000,23,S2,8PSK +22=11140,H,3200,Auto,DVB-S,QPSK +23=11166,H,3333,34,DVB-S,QPSK +24=11180,H,5650,34,DVB-S,QPSK +25=11190,H,3400,34,DVB-S,QPSK +26=11222,V,27500,56,DVB-S,QPSK +27=11222,H,30000,56,S2,QPSK +28=11258,V,27500,56,DVB-S,QPSK +29=11291,H,2800,34,DVB-S,QPSK +30=11304,H,13330,34,DVB-S,QPSK +31=11315,H,5000,34,S2,8PSK +32=11332,H,12500,78,DVB-S,QPSK +33=11389,H,27500,34,DVB-S,QPSK +34=11411,H,3330,34,DVB-S,QPSK +35=11432,H,2500,34,DVB-S,QPSK +36=11435,H,2600,34,DVB-S,QPSK +37=11474,V,27500,34,DVB-S,QPSK +38=11510,V,30000,23,S2,8PSK +39=11541,V,2963,34,DVB-S,QPSK +40=11542,H,3700,34,DVB-S,QPSK +41=11544,V,1480,56,DVB-S,QPSK +42=11546,V,2600,56,S2,8PSK +43=11547,H,3333,34,DVB-S,QPSK +44=11549,V,1240,34,DVB-S,QPSK +45=11551,H,3333,56,DVB-S,QPSK +46=11552,V,1222,78,DVB-S,QPSK +47=11555,V,1240,78,DVB-S,QPSK +48=11565,V,3000,34,DVB-S,QPSK +49=11578,V,1222,78,DVB-S,QPSK +50=11580,V,1110,78,DVB-S,QPSK +51=11601,H,8888,34,DVB-S,QPSK +52=11610,H,3600,34,DVB-S,QPSK +53=11624,H,2604,56,DVB-S,QPSK +54=11625,V,3000,34,DVB-S,QPSK +55=11627,V,6295,34,S2,QPSK +56=11635,H,6333,34,DVB-S,QPSK +57=11635,V,4410,56,DVB-S,QPSK +58=11639,V,2000,56,DVB-S,QPSK +59=11647,V,8518,34,DVB-S,QPSK +60=11658,H,3333,34,DVB-S,QPSK +61=11658,V,8520,23,DVB-S,QPSK +62=11671,V,1480,34,DVB-S,QPSK +63=11684,H,3350,78,DVB-S,QPSK +64=11687,V,5185,34,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3592.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3592.ini new file mode 100644 index 000000000..b1118d4fb --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3592.ini @@ -0,0 +1,110 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3592 +2=Thor 5/6/7/Intelsat 10-02 (0.8W) + +[DVB] +0=101 +1=3722,V,18000,34,S2,8PSK +2=3977,H,17777,34,DVB-S,QPSK +3=3985,V,9764,23,DVB-S,QPSK +4=4025,V,7324,23,DVB-S,QPSK +5=4032,H,1000,56,S2,8PSK +6=4175,V,28000,34,DVB-S,QPSK +7=10716,H,24500,78,DVB-S,QPSK +8=10747,V,25000,34,S2,8PSK +9=10747,H,25000,34,S2,8PSK +10=10778,V,25000,34,S2,8PSK +11=10778,H,24500,78,DVB-S,QPSK +12=10809,V,24500,78,DVB-S,QPSK +13=10809,H,24500,78,DVB-S,QPSK +14=10841,H,25000,34,S2,8PSK +15=10872,V,25000,34,S2,8PSK +16=10872,H,25000,34,S2,8PSK +17=10903,V,25000,34,S2,8PSK +18=10903,H,25000,34,S2,8PSK +19=10934,V,24500,78,DVB-S,QPSK +20=10934,H,25000,34,S2,8PSK +21=10962,H,1550,78,DVB-S,QPSK +22=11038,H,2200,56,S2,8PSK +23=11048,H,3100,34,DVB-S,QPSK +24=11063,H,1500,56,S2,8PSK +25=11080,H,1100,34,DVB-S,QPSK +26=11104,H,3360,23,S2,8PSK +27=11216,V,24500,78,DVB-S,QPSK +28=11229,H,24500,78,DVB-S,QPSK +29=11247,V,24500,78,DVB-S,QPSK +30=11261,H,25000,34,S2,8PSK +31=11278,V,24500,78,DVB-S,QPSK +32=11293,H,25000,34,S2,8PSK +33=11309,V,24500,78,DVB-S,QPSK +34=11325,H,24500,78,DVB-S,QPSK +35=11341,V,25000,34,S2,8PSK +36=11357,H,24500,78,DVB-S,QPSK +37=11372,V,24500,78,DVB-S,QPSK +38=11389,H,24500,78,DVB-S,QPSK +39=11403,V,24500,78,DVB-S,QPSK +40=11421,H,24500,78,DVB-S,QPSK +41=11461,V,4937,34,S2,8PSK +42=11467,V,2500,34,S2,8PSK +43=11471,V,3300,34,S2,8PSK +44=11479,V,4936,34,S2,8PSK +45=11489,V,6680,23,S2,8PSK +46=11502,V,2220,34,S2,QPSK +47=11512,V,2222,78,DVB-S,QPSK +48=11517,V,7500,56,S2,8PSK +49=11529,V,2222,78,DVB-S,QPSK +50=11533,V,3600,Auto,S2,QPSK +51=11542,V,3472,34,S2,8PSK +52=11547,V,3472,34,S2,8PSK +53=11554,V,6111,34,DVB-S,QPSK +54=11559,V,3600,34,S2,8PSK +55=11565,V,2200,34,S2,8PSK +56=11608,H,5655,78,DVB-S,QPSK +57=11643,H,3333,34,DVB-S,QPSK +58=11727,V,28000,78,DVB-S,QPSK +59=11747,H,28000,56,DVB-S,QPSK +60=11766,V,28000,78,DVB-S,QPSK +61=11785,H,30000,34,S2,8PSK +62=11804,V,28000,78,DVB-S,QPSK +63=11823,H,30000,56,S2,8PSK +64=11843,V,30000,34,S2,8PSK +65=11900,H,28000,56,DVB-S,QPSK +66=11919,V,28000,78,DVB-S,QPSK +67=11938,H,28000,78,DVB-S,QPSK +68=11977,H,30000,34,S2,8PSK +69=11996,V,28000,78,DVB-S,QPSK +70=12015,H,30000,34,S2,8PSK +71=12034,V,30000,34,S2,8PSK +72=12054,H,30000,34,S2,8PSK +73=12073,V,28000,78,DVB-S,QPSK +74=12092,H,28000,78,DVB-S,QPSK +75=12111,V,28000,78,DVB-S,QPSK +76=12188,V,28000,78,DVB-S,QPSK +77=12207,H,30000,34,S2,8PSK +78=12226,V,27500,56,DVB-S,QPSK +79=12265,V,28000,78,DVB-S,QPSK +80=12303,V,27500,56,S2,8PSK +81=12380,V,28000,56,DVB-S,QPSK +82=12418,V,28000,78,DVB-S,QPSK +83=12456,V,28000,78,DVB-S,QPSK +84=12511,V,3300,56,S2,8PSK +85=12515,V,3300,56,S2,8PSK +86=12520,V,3700,56,S2,8PSK +87=12524,V,3750,56,S2,8PSK +88=12527,H,27500,34,DVB-S,QPSK +89=12529,V,4750,56,S2,8PSK +90=12535,V,5000,89,S2,8PSK +91=12541,V,6660,56,S2,8PSK +92=12563,H,27500,34,DVB-S,QPSK +93=12563,V,27500,34,DVB-S,QPSK +94=12607,H,27500,34,DVB-S,QPSK +95=12607,V,26667,23,S2,8PSK +96=12643,H,27500,34,DVB-S,QPSK +97=12643,V,27500,34,DVB-S,QPSK +98=12687,H,27500,34,DVB-S,QPSK +99=12687,V,27500,34,DVB-S,QPSK +100=12723,H,27500,34,DVB-S,QPSK +101=12735,V,8800,56,DVB-S,QPSK diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3594.ini b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3594.ini new file mode 100644 index 000000000..f762d2f6f --- /dev/null +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/SatIp/ini/satellite/3594.ini @@ -0,0 +1,10 @@ +; file generated on saturday, 22nd of august 2015, 19:35:09 [GMT] +; by online transponder .ini generator @ http://satellites-xml.eu +; please let us know if you find any inconsistencies in this file +[SATTYPE] +1=3594 +2=Thor 7 (0.6W) + +[DVB] +0=1 +1=12207,H,30000,34,S2,8PSK diff --git a/MediaBrowser.Server.Implementations/Localization/Core/cs.json b/MediaBrowser.Server.Implementations/Localization/Core/cs.json index 9c62daf73..e3055f5ba 100644 --- a/MediaBrowser.Server.Implementations/Localization/Core/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/Core/cs.json @@ -1,5 +1,5 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "DbUpgradeMessage": "Po\u010dkejte pros\u00edm, datab\u00e1ze Emby Serveru je aktualizov\u00e1na na novou verzi. Hotovo {0}%.", "AppDeviceValues": "Aplikace: {0}, Za\u0159\u00edzen\u00ed: {1}", "UserDownloadingItemWithValues": "{0} pr\u00e1v\u011b stahuje {1}", "FolderTypeMixed": "Sm\u00ed\u0161en\u00fd obsah", diff --git a/MediaBrowser.Server.Implementations/Localization/Core/fr-CA.json b/MediaBrowser.Server.Implementations/Localization/Core/fr-CA.json new file mode 100644 index 000000000..789817c84 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/Core/fr-CA.json @@ -0,0 +1,178 @@ +{ + "DbUpgradeMessage": "Veuillez patienter pendant que la base de donn\u00e9e de votre Serveur Emby se met \u00e0 jour. Termin\u00e9e \u00e0 {0}%.", + "AppDeviceValues": "App: {0}, Device: {1}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "HeaderCastCrew": "Cast & Crew", + "HeaderPeople": "People", + "ValueSpecialEpisodeName": "Special - {0}", + "LabelChapterName": "Chapter {0}", + "NameSeasonNumber": "Season {0}", + "LabelExit": "Quitter", + "LabelVisitCommunity": "Visiter la Communaut\u00e9", + "LabelGithub": "Github", + "LabelApiDocumentation": "Documentation de l'API", + "LabelDeveloperResources": "Ressources pour d\u00e9veloppeurs", + "LabelBrowseLibrary": "Parcourir la biblioth\u00e8que", + "LabelConfigureServer": "Configurer Emby", + "LabelRestartServer": "Red\u00e9marrer le Serveur", + "CategorySync": "Sync", + "CategoryUser": "User", + "CategorySystem": "System", + "CategoryApplication": "Application", + "CategoryPlugin": "Plugin", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "ViewTypePlaylists": "Playlists", + "ViewTypeMovies": "Movies", + "ViewTypeTvShows": "TV", + "ViewTypeGames": "Games", + "ViewTypeMusic": "Music", + "ViewTypeMusicGenres": "Genres", + "ViewTypeMusicArtists": "Artists", + "ViewTypeBoxSets": "Collections", + "ViewTypeChannels": "Channels", + "ViewTypeLiveTV": "Live TV", + "ViewTypeLiveTvNowPlaying": "Now Airing", + "ViewTypeLatestGames": "Latest Games", + "ViewTypeRecentlyPlayedGames": "Recently Played", + "ViewTypeGameFavorites": "Favorites", + "ViewTypeGameSystems": "Game Systems", + "ViewTypeGameGenres": "Genres", + "ViewTypeTvResume": "Resume", + "ViewTypeTvNextUp": "Next Up", + "ViewTypeTvLatest": "Latest", + "ViewTypeTvShowSeries": "Series", + "ViewTypeTvGenres": "Genres", + "ViewTypeTvFavoriteSeries": "Favorite Series", + "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", + "ViewTypeMovieResume": "Resume", + "ViewTypeMovieLatest": "Latest", + "ViewTypeMovieMovies": "Movies", + "ViewTypeMovieCollections": "Collections", + "ViewTypeMovieFavorites": "Favorites", + "ViewTypeMovieGenres": "Genres", + "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", + "ViewTypeMusicAlbums": "Albums", + "ViewTypeMusicAlbumArtists": "Album Artists", + "HeaderOtherDisplaySettings": "Display Settings", + "ViewTypeMusicSongs": "Songs", + "ViewTypeMusicFavorites": "Favorites", + "ViewTypeMusicFavoriteAlbums": "Favorite Albums", + "ViewTypeMusicFavoriteArtists": "Favorite Artists", + "ViewTypeMusicFavoriteSongs": "Favorite Songs", + "ViewTypeFolders": "Folders", + "ViewTypeLiveTvRecordingGroups": "Recordings", + "ViewTypeLiveTvChannels": "Channels", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "DeviceOfflineWithName": "{0} has disconnected", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "HeaderUnidentified": "Unidentified", + "HeaderImagePrimary": "Primary", + "HeaderImageBackdrop": "Backdrop", + "HeaderImageLogo": "Logo", + "HeaderUserPrimaryImage": "User Image", + "HeaderOverview": "Overview", + "HeaderShortOverview": "Short Overview", + "HeaderType": "Type", + "HeaderSeverity": "Severity", + "HeaderUser": "User", + "HeaderName": "Name", + "HeaderDate": "Date", + "HeaderPremiereDate": "Premiere Date", + "HeaderDateAdded": "Date Added", + "HeaderReleaseDate": "Release date", + "HeaderRuntime": "Runtime", + "HeaderPlayCount": "Play Count", + "HeaderSeason": "Season", + "HeaderSeasonNumber": "Season number", + "HeaderSeries": "Series:", + "HeaderNetwork": "Network", + "HeaderYear": "Year:", + "HeaderYears": "Years:", + "HeaderParentalRating": "Parental Rating", + "HeaderCommunityRating": "Community rating", + "HeaderTrailers": "Trailers", + "HeaderSpecials": "Specials", + "HeaderGameSystems": "Game Systems", + "HeaderPlayers": "Players:", + "HeaderAlbumArtists": "Album Artists", + "HeaderAlbums": "Albums", + "HeaderDisc": "Disc", + "HeaderTrack": "Track", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderEmbeddedImage": "Embedded image", + "HeaderResolution": "Resolution", + "HeaderSubtitles": "Subtitles", + "HeaderGenres": "Genres", + "HeaderCountries": "Countries", + "HeaderStatus": "Status", + "HeaderTracks": "Tracks", + "HeaderMusicArtist": "Music artist", + "HeaderLocked": "Locked", + "HeaderStudios": "Studios", + "HeaderActor": "Actors", + "HeaderComposer": "Composers", + "HeaderDirector": "Directors", + "HeaderGuestStar": "Guest star", + "HeaderProducer": "Producers", + "HeaderWriter": "Writers", + "HeaderParentalRatings": "Parental Ratings", + "HeaderCommunityRatings": "Community ratings", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Core/hu.json b/MediaBrowser.Server.Implementations/Localization/Core/hu.json index 0c9d16d38..b175ae6c1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Core/hu.json +++ b/MediaBrowser.Server.Implementations/Localization/Core/hu.json @@ -1,23 +1,23 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "DbUpgradeMessage": "K\u00e9rlek v\u00e1rj, m\u00edg az Emby Szerver adatb\u00e1zis friss\u00fcl. {0}% k\u00e9sz.", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", + "FolderTypeMixed": "Vegyes tartalom", + "FolderTypeMovies": "Filmek", + "FolderTypeMusic": "Zen\u00e9k", + "FolderTypeAdultVideos": "Feln\u0151tt vide\u00f3k", + "FolderTypePhotos": "F\u00e9nyk\u00e9pek", + "FolderTypeMusicVideos": "Zenei vide\u00f3k", + "FolderTypeHomeVideos": "H\u00e1zi vide\u00f3k", + "FolderTypeGames": "J\u00e1t\u00e9kok", + "FolderTypeBooks": "K\u00f6nyvek", "FolderTypeTvShows": "TV", "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", + "HeaderCastCrew": "Szerepl\u0151k & R\u00e9sztvev\u0151k", + "HeaderPeople": "Emberek", + "ValueSpecialEpisodeName": "K\u00fcl\u00f6nleges - {0}", "LabelChapterName": "Fejezet {0}", - "NameSeasonNumber": "Season {0}", + "NameSeasonNumber": "\u00c9vad {0}", "LabelExit": "Kil\u00e9p\u00e9s", "LabelVisitCommunity": "K\u00f6z\u00f6ss\u00e9g", "LabelGithub": "Github", @@ -27,28 +27,28 @@ "LabelConfigureServer": "Emby konfigur\u00e1l\u00e1sa", "LabelRestartServer": "Szerver \u00fajraindit\u00e1sa", "CategorySync": "Sync", - "CategoryUser": "User", + "CategoryUser": "Felhaszn\u00e1l\u00f3", "CategorySystem": "Rendszer", "CategoryApplication": "Alkalmaz\u00e1s", - "CategoryPlugin": "Be\u00e9p\u00fcl\u0151", - "NotificationOptionPluginError": "Be\u00e9p\u00fcl\u0151 hiba", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "CategoryPlugin": "B\u0151v\u00edtm\u00e9ny", + "NotificationOptionPluginError": "B\u0151v\u00edtm\u00e9ny hiba", + "NotificationOptionApplicationUpdateAvailable": "Friss\u00edt\u00e9s el\u00e9rhet\u0151", + "NotificationOptionApplicationUpdateInstalled": "Friss\u00edt\u00e9s telep\u00edtve", + "NotificationOptionPluginUpdateInstalled": "B\u0151v\u00edtm\u00e9ny friss\u00edtve", + "NotificationOptionPluginInstalled": "B\u0151v\u00edtm\u00e9ny telep\u00edtve", + "NotificationOptionPluginUninstalled": "B\u0151v\u00edtm\u00e9ny t\u00f6r\u00f6lve", + "NotificationOptionVideoPlayback": "Vide\u00f3 elind\u00edtva", + "NotificationOptionAudioPlayback": "Zene elind\u00edtva", + "NotificationOptionGamePlayback": "J\u00e1t\u00e9k elind\u00edtva", + "NotificationOptionVideoPlaybackStopped": "Vide\u00f3 meg\u00e1ll\u00edtva", + "NotificationOptionAudioPlaybackStopped": "Zene meg\u00e1ll\u00edtva", + "NotificationOptionGamePlaybackStopped": "J\u00e1t\u00e9k meg\u00e1ll\u00edtva", "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionInstallationFailed": "Telep\u00edt\u00e9si hiba", + "NotificationOptionNewLibraryContent": "\u00daj tartalom hozz\u00e1adva", + "NotificationOptionNewLibraryContentMultiple": "\u00daj tartalom hozz\u00e1adva (t\u00f6bbsz\u00f6r\u00f6s)", + "NotificationOptionCameraImageUploaded": "Kamera k\u00e9p felt\u00f6ltve", + "NotificationOptionUserLockedOut": "Felhaszn\u00e1l\u00f3 tiltva", "NotificationOptionServerRestartRequired": "\u00dajraind\u00edt\u00e1s sz\u00fcks\u00e9ges", "ViewTypePlaylists": "Lej\u00e1tsz\u00e1si list\u00e1k", "ViewTypeMovies": "Filmek", @@ -64,7 +64,7 @@ "ViewTypeLatestGames": "Leg\u00fajabb J\u00e1t\u00e9kok", "ViewTypeRecentlyPlayedGames": "Legut\u00f3bb J\u00e1tszott", "ViewTypeGameFavorites": "Kedvencek", - "ViewTypeGameSystems": "Game Systems", + "ViewTypeGameSystems": "J\u00e1t\u00e9k Rendszer", "ViewTypeGameGenres": "M\u0171fajok", "ViewTypeTvResume": "Folytat\u00e1s", "ViewTypeTvNextUp": "K\u00f6vetkez\u0151", @@ -80,7 +80,7 @@ "ViewTypeMovieFavorites": "Kedvencek", "ViewTypeMovieGenres": "M\u0171fajok", "ViewTypeMusicLatest": "Leg\u00fajabb", - "ViewTypeMusicPlaylists": "Playlists", + "ViewTypeMusicPlaylists": "Lej\u00e1tsz\u00e1si list\u00e1k", "ViewTypeMusicAlbums": "Albumok", "ViewTypeMusicAlbumArtists": "Album El\u0151ad\u00f3k", "HeaderOtherDisplaySettings": "Megjelen\u00edt\u00e9si Be\u00e1ll\u00edt\u00e1sok", @@ -89,90 +89,90 @@ "ViewTypeMusicFavoriteAlbums": "Kedvenc Albumok", "ViewTypeMusicFavoriteArtists": "Kedvenc M\u0171v\u00e9szek", "ViewTypeMusicFavoriteSongs": "Kedvenc Dalok", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", + "ViewTypeFolders": "K\u00f6nyvt\u00e1rak", + "ViewTypeLiveTvRecordingGroups": "Felv\u00e9telek", + "ViewTypeLiveTvChannels": "Csatorn\u00e1k", + "ScheduledTaskFailedWithName": "{0} hiba", + "LabelRunningTimeValue": "Fut\u00e1si id\u0151: {0}", "ScheduledTaskStartedWithName": "{0} elkezdve", "VersionNumber": "Verzi\u00f3 {0}", "PluginInstalledWithName": "{0} telep\u00edtve", "PluginUpdatedWithName": "{0} friss\u00edtve", - "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUninstalledWithName": "{0} elt\u00e1vol\u00edtva", "ItemAddedWithName": "{0} k\u00f6nyvt\u00e1rhoz adva", "ItemRemovedWithName": "{0} t\u00f6r\u00f6lve a k\u00f6nyvt\u00e1rb\u00f3l", - "LabelIpAddressValue": "Ip address: {0}", + "LabelIpAddressValue": "Ip c\u00edm: {0}", "DeviceOnlineWithName": "{0} kapcsol\u00f3dva", - "UserOnlineFromDevice": "{0} is online from {1}", + "UserOnlineFromDevice": "{0} akt\u00edv err\u0151l {1}", "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", + "SubtitlesDownloadedForItem": "Felirat let\u00f6lt\u00e9se ehhez {0}", + "UserConfigurationUpdatedWithName": "A k\u00f6vetkez\u0151 felhaszn\u00e1l\u00f3 be\u00e1ll\u00edt\u00e1sai friss\u00edtve {0}", + "UserCreatedWithName": "Felhaszn\u00e1l\u00f3 {0} l\u00e9trehozva", + "UserPasswordChangedWithName": "Jelsz\u00f3 m\u00f3dos\u00edtva ennek a felhaszn\u00e1l\u00f3nak {0}", + "UserDeletedWithName": "Felhaszn\u00e1l\u00f3 {0} t\u00f6r\u00f6lve", + "MessageServerConfigurationUpdated": "Szerver be\u00e1ll\u00edt\u00e1sok friss\u00edtve", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", + "MessageApplicationUpdated": "Emby Server friss\u00edtve", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "AuthenticationSucceededWithUserName": "{0} successfully authenticated", "DeviceOfflineWithName": "{0} sz\u00e9tkapcsolt", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", + "UserLockedOutWithName": "A k\u00f6vetkez\u0151 felhaszn\u00e1l\u00f3 tiltva {0}", + "UserOfflineFromDevice": "{0} kil\u00e9pett innen {1}", + "UserStartedPlayingItemWithValues": "{0} megkezdte j\u00e1tszani a(z) {1}", + "UserStoppedPlayingItemWithValues": "{0} befejezte a(z) {1}", + "SubtitleDownloadFailureForItem": "Nem siker\u00fcl a felirat let\u00f6lt\u00e9s ehhez {0}", + "HeaderUnidentified": "Azonos\u00edtatlan", + "HeaderImagePrimary": "Els\u0151dleges", + "HeaderImageBackdrop": "H\u00e1tt\u00e9r", "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", + "HeaderUserPrimaryImage": "Felhaszn\u00e1l\u00f3 K\u00e9p", + "HeaderOverview": "\u00c1ttekint\u00e9s", + "HeaderShortOverview": "R\u00f6vid \u00c1ttekint\u00e9s", + "HeaderType": "T\u00edpus", "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", + "HeaderUser": "Felhaszn\u00e1l\u00f3", + "HeaderName": "N\u00e9v", "HeaderDate": "D\u00e1tum", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", + "HeaderPremiereDate": "Megjelen\u00e9s D\u00e1tuma", + "HeaderDateAdded": "Hozz\u00e1adva", + "HeaderReleaseDate": "Megjelen\u00e9s d\u00e1tuma", + "HeaderRuntime": "J\u00e1t\u00e9kid\u0151", "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", + "HeaderSeason": "\u00c9vad", + "HeaderSeasonNumber": "\u00c9vad sz\u00e1ma", + "HeaderSeries": "Sorozatok:", + "HeaderNetwork": "H\u00e1l\u00f3zat", + "HeaderYear": "\u00c9v:", + "HeaderYears": "\u00c9v:", + "HeaderParentalRating": "Korhat\u00e1r besorol\u00e1s", + "HeaderCommunityRating": "K\u00f6z\u00f6ss\u00e9gi \u00e9rt\u00e9kel\u00e9s", + "HeaderTrailers": "El\u0151zetesek", + "HeaderSpecials": "Speci\u00e1lis", + "HeaderGameSystems": "J\u00e1t\u00e9k Rendszer", "HeaderPlayers": "Players:", "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", + "HeaderAlbums": "Albumok", + "HeaderDisc": "Lemez", + "HeaderTrack": "S\u00e1v", + "HeaderAudio": "Audi\u00f3", + "HeaderVideo": "Vide\u00f3", + "HeaderEmbeddedImage": "Be\u00e1gyazott k\u00e9p", + "HeaderResolution": "Felbont\u00e1s", + "HeaderSubtitles": "Feliratok", + "HeaderGenres": "M\u0171fajok", + "HeaderCountries": "Orsz\u00e1gok", "HeaderStatus": "\u00c1llapot", - "HeaderTracks": "Tracks", + "HeaderTracks": "S\u00e1vok", "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", + "HeaderLocked": "Z\u00e1rt", + "HeaderStudios": "St\u00fadi\u00f3k", + "HeaderActor": "Sz\u00edn\u00e9szek", + "HeaderComposer": "Zeneszerz\u0151k", + "HeaderDirector": "Rendez\u0151k", "HeaderGuestStar": "Guest star", "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", + "HeaderWriter": "\u00cdr\u00f3k", + "HeaderParentalRatings": "Korhat\u00e1r besorol\u00e1s", + "HeaderCommunityRatings": "K\u00f6z\u00f6ss\u00e9gi \u00e9rt\u00e9kel\u00e9sek", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Core/pl.json b/MediaBrowser.Server.Implementations/Localization/Core/pl.json index db22dc6e4..cdaa87c4d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Core/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/Core/pl.json @@ -1,5 +1,5 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "DbUpgradeMessage": "Prosz\u0119 czeka\u0107 na koniec aktualizacji biblioteki. Post\u0119p: {0}%", "AppDeviceValues": "Aplikacja: {0}, Urz\u0105dzenie: {1}", "UserDownloadingItemWithValues": "{0} pobiera {1}", "FolderTypeMixed": "Zawarto\u015b\u0107 mieszana", diff --git a/MediaBrowser.Server.Implementations/Localization/Core/pt-BR.json b/MediaBrowser.Server.Implementations/Localization/Core/pt-BR.json index b714fd44c..67f204b2e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Core/pt-BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Core/pt-BR.json @@ -1,5 +1,5 @@ { - "DbUpgradeMessage": "Por favor, aguarde enquanto a base de dados do Servidor Emby \u00e9 atualizada. {0}% completado.", + "DbUpgradeMessage": "Por favor, aguarde enquanto a base de dados do Servidor Emby \u00e9 atualizada. {0}% completo.", "AppDeviceValues": "App: {0}, Dispositivo: {1}", "UserDownloadingItemWithValues": "{0} est\u00e1 fazendo download de {1}", "FolderTypeMixed": "Conte\u00fado misto", diff --git a/MediaBrowser.Server.Implementations/Localization/Core/ru.json b/MediaBrowser.Server.Implementations/Localization/Core/ru.json index 0aacc5362..fa68aadb9 100644 --- a/MediaBrowser.Server.Implementations/Localization/Core/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Core/ru.json @@ -23,7 +23,7 @@ "LabelGithub": "GitHub", "LabelApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", - "LabelBrowseLibrary": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "LabelBrowseLibrary": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", "LabelConfigureServer": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Emby", "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430", "CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", diff --git a/MediaBrowser.Server.Implementations/Localization/Core/sl-SI.json b/MediaBrowser.Server.Implementations/Localization/Core/sl-SI.json index 0d5b5c4aa..0631e3fa8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Core/sl-SI.json +++ b/MediaBrowser.Server.Implementations/Localization/Core/sl-SI.json @@ -1,5 +1,5 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "DbUpgradeMessage": "Prosimo pocakajte podatkovna baza Emby Streznika se posodablja. {0}% koncano.", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", "FolderTypeMixed": "Mixed content", @@ -18,84 +18,84 @@ "ValueSpecialEpisodeName": "Special - {0}", "LabelChapterName": "Chapter {0}", "NameSeasonNumber": "Season {0}", - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", + "LabelExit": "Izhod", + "LabelVisitCommunity": "Obiscite Skupnost", "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "Restart Server", + "LabelApiDocumentation": "Api Dokumentacija", + "LabelDeveloperResources": "Vsebine za razvijalce", + "LabelBrowseLibrary": "Brskanje po knjiznici", + "LabelConfigureServer": "Emby Nastavitve", + "LabelRestartServer": "Ponovni Zagon Streznika", "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "CategoryUser": "Uporabnik", + "CategorySystem": "Sistem", + "CategoryApplication": "Aplikacija", + "CategoryPlugin": "Vticnik", + "NotificationOptionPluginError": "Napaka v vticniku", + "NotificationOptionApplicationUpdateAvailable": "Na voljo je posodobitev", + "NotificationOptionApplicationUpdateInstalled": "Posodobitev je bila namescena", "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginInstalled": "Vticnik namescen", + "NotificationOptionPluginUninstalled": "Vticnik odstranjen", "NotificationOptionVideoPlayback": "Video playback started", "NotificationOptionAudioPlayback": "Audio playback started", "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionVideoPlaybackStopped": "Predvajanje videa koncano", + "NotificationOptionAudioPlaybackStopped": "Predvajanje audia koncano", "NotificationOptionGamePlaybackStopped": "Game playback stopped", "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", + "NotificationOptionInstallationFailed": "Napaka v namestitvi", + "NotificationOptionNewLibraryContent": "Dodana nova vsebina", + "NotificationOptionNewLibraryContentMultiple": "Dodane nove vsebine", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", + "NotificationOptionServerRestartRequired": "Zahtevan je ponovni zagon", + "ViewTypePlaylists": "Playliste", + "ViewTypeMovies": "Filmi", "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", + "ViewTypeGames": "Igre", + "ViewTypeMusic": "Glasba", + "ViewTypeMusicGenres": "Zvrsti", + "ViewTypeMusicArtists": "Izvajalci", + "ViewTypeBoxSets": "Zbirke", + "ViewTypeChannels": "Kanali", + "ViewTypeLiveTV": "TV v Zivo", "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", + "ViewTypeLatestGames": "Zadnje Igre", "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", + "ViewTypeGameFavorites": "Priljubljeno", "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", + "ViewTypeGameGenres": "Zvrsti", + "ViewTypeTvResume": "Nadaljuj", "ViewTypeTvNextUp": "Next Up", "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", + "ViewTypeTvShowSeries": "Serije", + "ViewTypeTvGenres": "Zvrsti", + "ViewTypeTvFavoriteSeries": "Priljubljene Serije", + "ViewTypeTvFavoriteEpisodes": "Priljubljene Epizode", + "ViewTypeMovieResume": "Nadaljuj", "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", + "ViewTypeMovieMovies": "Filmi", + "ViewTypeMovieCollections": "Zbirke", + "ViewTypeMovieFavorites": "Priljubljeno", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", + "ViewTypeMusicAlbums": "Albumi", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", "ViewTypeMusicSongs": "Songs", "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", + "ViewTypeMusicFavoriteAlbums": "Priljubljeni Albumi", + "ViewTypeMusicFavoriteArtists": "Priljubljeni Izvajalci", + "ViewTypeMusicFavoriteSongs": "Priljubljene skladbe", "ViewTypeFolders": "Folders", "ViewTypeLiveTvRecordingGroups": "Recordings", "ViewTypeLiveTvChannels": "Channels", "ScheduledTaskFailedWithName": "{0} failed", "LabelRunningTimeValue": "Running time: {0}", "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", + "VersionNumber": "Verzija {0}", "PluginInstalledWithName": "{0} was installed", "PluginUpdatedWithName": "{0} was updated", "PluginUninstalledWithName": "{0} was uninstalled", @@ -130,9 +130,9 @@ "HeaderShortOverview": "Short Overview", "HeaderType": "Type", "HeaderSeverity": "Severity", - "HeaderUser": "User", + "HeaderUser": "Uporabnik", "HeaderName": "Name", - "HeaderDate": "Date", + "HeaderDate": "Datum", "HeaderPremiereDate": "Premiere Date", "HeaderDateAdded": "Date Added", "HeaderReleaseDate": "Release date", diff --git a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs index 2fb8eb002..40c1ac003 100644 --- a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs +++ b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs @@ -374,6 +374,7 @@ namespace MediaBrowser.Server.Implementations.Localization new LocalizatonOption{ Name="English (United States)", Value="en-us"}, new LocalizatonOption{ Name="Finnish", Value="fi"}, new LocalizatonOption{ Name="French", Value="fr"}, + new LocalizatonOption{ Name="French (Canada)", Value="fr-CA"}, new LocalizatonOption{ Name="German", Value="de"}, new LocalizatonOption{ Name="Greek", Value="el"}, new LocalizatonOption{ Name="Hebrew", Value="he"}, diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index f1fbafc76..97f090ab2 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -43,18 +43,21 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="Emby.XmlTv, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\packages\Emby.XmlTv.1.0.0.48\lib\net45\Emby.XmlTv.dll</HintPath> </Reference> + <Reference Include="INIFileParser"> + <HintPath>..\packages\ini-parser.2.2.4\lib\net20\INIFileParser.dll</HintPath> + </Reference> <Reference Include="Interfaces.IO"> <HintPath>..\packages\Interfaces.IO.1.0.0.5\lib\portable-net45+sl4+wp71+win8+wpa81\Interfaces.IO.dll</HintPath> </Reference> - <Reference Include="MediaBrowser.Naming, Version=1.0.5891.29179, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="MediaBrowser.Naming, Version=1.0.5917.1514, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\MediaBrowser.Naming.1.0.0.48\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll</HintPath> + <HintPath>..\packages\MediaBrowser.Naming.1.0.0.49\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll</HintPath> </Reference> <Reference Include="MoreLinq"> <HintPath>..\packages\morelinq.1.4.0\lib\net35\MoreLinq.dll</HintPath> @@ -65,9 +68,9 @@ <Reference Include="ServiceStack.Api.Swagger"> <HintPath>..\ThirdParty\ServiceStack\ServiceStack.Api.Swagger.dll</HintPath> </Reference> - <Reference Include="SocketHttpListener, Version=1.0.5906.23695, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="SocketHttpListener, Version=1.0.5908.28560, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\SocketHttpListener.1.0.0.28\lib\net45\SocketHttpListener.dll</HintPath> + <HintPath>..\packages\SocketHttpListener.1.0.0.29\lib\net45\SocketHttpListener.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> @@ -419,6 +422,176 @@ <EmbeddedResource Include="Localization\Core\zh-HK.json" /> <EmbeddedResource Include="Localization\Core\hu.json" /> <EmbeddedResource Include="Localization\Core\id.json" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0030.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0049.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0070.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0090.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0100.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0130.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0160.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0170.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0192.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0200.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0215.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0235.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0255.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0260.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0282.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0305.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0308.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0310.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0315.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0330.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0360.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0380.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0390.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0400.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0420.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0435.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0450.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0460.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0475.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0480.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0490.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0505.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0510.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0520.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0525.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0530.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0549.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0560.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0570.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0600.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0620.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0642.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0650.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0660.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0685.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0705.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0721.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0740.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0750.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0765.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0785.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0830.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0851.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0865.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0875.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0880.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0900.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0915.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0922.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0935.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0950.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\0965.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1005.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1030.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1055.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1082.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1100.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1105.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1130.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1155.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1160.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1180.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1195.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1222.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1240.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1250.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1280.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1320.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1340.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1380.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1400.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1440.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1500.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1520.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1540.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1560.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1590.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1600 OPTUS D1 FTA %28160.0E%29.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1600.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1620.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1640.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1660.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1690.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1720.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1800.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\1830.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2210.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2230.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2250.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2270.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2290.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2310.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2330.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2350.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2370.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2390.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2410.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2432.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2451.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2470.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2489.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2500.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2527.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2550.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2570.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2590.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2608.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2630.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2650.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2669.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2690.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2710.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2728.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2730.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2750.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2760.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2770.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2780.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2812.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2820.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2830.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2850.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2873.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2880.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2881.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2882.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2900.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2930.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2950.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2970.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2985.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\2990.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3020.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3045.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3070.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3100.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3125.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3150.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3169.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3195.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3225.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3255.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3285.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3300.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3325.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3355.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3380.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3400.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3420.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3450.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3460.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3475.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3490.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3520.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3527.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3550.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3560.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3592.ini" /> + <EmbeddedResource Include="LiveTv\TunerHosts\SatIp\ini\satellite\3594.ini" /> + <EmbeddedResource Include="Localization\Core\fr-CA.json" /> <None Include="packages.config" /> </ItemGroup> <ItemGroup> diff --git a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs index 5f1bf0216..bec105b0a 100644 --- a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs @@ -208,7 +208,7 @@ namespace MediaBrowser.Server.Implementations.Persistence await item.Delete(new DeleteOptions { DeleteFileLocation = false - + }).ConfigureAwait(false); } @@ -225,7 +225,7 @@ namespace MediaBrowser.Server.Implementations.Persistence { var result = _itemRepo.GetItemIdsWithPath(new InternalItemsQuery { - LocationType = LocationType.FileSystem, + LocationTypes = new[] { LocationType.FileSystem }, //Limit = limit, // These have their own cleanup routines @@ -239,11 +239,7 @@ namespace MediaBrowser.Server.Implementations.Persistence typeof(Year).Name, typeof(Channel).Name, typeof(AggregateFolder).Name, - typeof(CollectionFolder).Name, - - // LiveTVManager handles recordings - typeof(LiveTvAudioRecording).Name, - typeof(LiveTvVideoRecording).Name + typeof(CollectionFolder).Name } }); @@ -270,6 +266,19 @@ namespace MediaBrowser.Server.Implementations.Persistence continue; } + var hasDualAccess = libraryItem as IHasDualAccess; + if (hasDualAccess != null && hasDualAccess.IsAccessedByName) + { + continue; + } + + var libraryItemPath = libraryItem.Path; + if (!string.Equals(libraryItemPath, path, StringComparison.OrdinalIgnoreCase)) + { + _logger.Error("CleanDeletedItems aborting delete for item {0}-{1} because paths don't match. {2}---{3}", libraryItem.Id, libraryItem.Name, libraryItem.Path ?? string.Empty, path ?? string.Empty); + continue; + } + if (Folder.IsPathOffline(path)) { libraryItem.IsOffline = true; @@ -277,13 +286,9 @@ namespace MediaBrowser.Server.Implementations.Persistence continue; } - _logger.Info("Deleting item from database {0} because path no longer exists. type: {1} path: {2}", libraryItem.Name, libraryItem.GetType().Name, libraryItem.Path ?? string.Empty); + _logger.Info("Deleting item from database {0} because path no longer exists. type: {1} path: {2}", libraryItem.Name, libraryItem.GetType().Name, libraryItemPath ?? string.Empty); - await libraryItem.Delete(new DeleteOptions - { - DeleteFileLocation = false - - }).ConfigureAwait(false); + await libraryItem.OnFileDeleted().ConfigureAwait(false); } catch (OperationCanceledException) { diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs index 011cbce1c..4fb1e07dd 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs @@ -141,8 +141,8 @@ namespace MediaBrowser.Server.Implementations.Persistence var connectionstr = new SQLiteConnectionStringBuilder { PageSize = 4096, - CacheSize = 4096, - SyncMode = SynchronizationModes.Normal, + CacheSize = 2000, + SyncMode = SynchronizationModes.Full, DataSource = dbPath, JournalMode = SQLiteJournalModeEnum.Wal }; diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 18a41d82a..af275faee 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -19,6 +19,7 @@ using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Playlists; using MediaBrowser.Model.LiveTv; namespace MediaBrowser.Server.Implementations.Persistence @@ -62,8 +63,6 @@ namespace MediaBrowser.Server.Implementations.Persistence private readonly string _criticReviewsPath; - private IDbCommand _deleteChildrenCommand; - private IDbCommand _saveChildrenCommand; private IDbCommand _deleteItemCommand; private IDbCommand _deletePeopleCommand; @@ -79,8 +78,8 @@ namespace MediaBrowser.Server.Implementations.Persistence private IDbCommand _saveAncestorCommand; private IDbCommand _updateInheritedRatingCommand; - - private const int LatestSchemaVersion = 48; + + private const int LatestSchemaVersion = 53; /// <summary> /// Initializes a new instance of the <see cref="SqliteItemRepository"/> class. @@ -137,9 +136,6 @@ namespace MediaBrowser.Server.Implementations.Persistence "create index if not exists idx_AncestorIds1 on AncestorIds(AncestorId)", "create index if not exists idx_AncestorIds2 on AncestorIds(AncestorIdText)", - "create table if not exists ChildrenIds (ParentId GUID, ItemId GUID, PRIMARY KEY (ParentId, ItemId))", - "create index if not exists idx_ChildrenIds on ChildrenIds(ParentId,ItemId)", - "create table if not exists People (ItemId GUID, Name TEXT NOT NULL, Role TEXT, PersonType TEXT, SortOrder int, ListOrder int)", "create index if not exists idxPeopleItemId on People(ItemId)", "create index if not exists idxPeopleName on People(Name)", @@ -159,7 +155,7 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection.RunQueries(queries, Logger); _connection.AddColumn(Logger, "AncestorIds", "AncestorIdText", "Text"); - + _connection.AddColumn(Logger, "TypedBaseItems", "Path", "Text"); _connection.AddColumn(Logger, "TypedBaseItems", "StartDate", "DATETIME"); _connection.AddColumn(Logger, "TypedBaseItems", "EndDate", "DATETIME"); @@ -223,6 +219,10 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection.AddColumn(Logger, "TypedBaseItems", "UnratedType", "Text"); _connection.AddColumn(Logger, "TypedBaseItems", "TopParentId", "Text"); _connection.AddColumn(Logger, "TypedBaseItems", "IsItemByName", "BIT"); + _connection.AddColumn(Logger, "TypedBaseItems", "SourceType", "Text"); + _connection.AddColumn(Logger, "TypedBaseItems", "TrailerTypes", "Text"); + _connection.AddColumn(Logger, "TypedBaseItems", "CriticRating", "Float"); + _connection.AddColumn(Logger, "TypedBaseItems", "CriticRatingSummary", "Text"); PrepareStatements(); @@ -348,7 +348,14 @@ namespace MediaBrowser.Server.Implementations.Persistence "Genres", "ParentId", "Audio", - "ExternalServiceId" + "ExternalServiceId", + "IsInMixedFolder", + "DateLastSaved", + "LockedFields", + "Studios", + "Tags", + "SourceType", + "TrailerTypes" }; private readonly string[] _mediaStreamSaveColumns = @@ -448,7 +455,11 @@ namespace MediaBrowser.Server.Implementations.Persistence "IsFolder", "UnratedType", "TopParentId", - "IsItemByName" + "IsItemByName", + "SourceType", + "TrailerTypes", + "CriticRating", + "CriticRatingSummary" }; _saveItemCommand = _connection.CreateCommand(); _saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values ("; @@ -465,19 +476,10 @@ namespace MediaBrowser.Server.Implementations.Persistence } _saveItemCommand.CommandText += ")"; - _deleteChildrenCommand = _connection.CreateCommand(); - _deleteChildrenCommand.CommandText = "delete from ChildrenIds where ParentId=@ParentId"; - _deleteChildrenCommand.Parameters.Add(_deleteChildrenCommand, "@ParentId"); - _deleteItemCommand = _connection.CreateCommand(); _deleteItemCommand.CommandText = "delete from TypedBaseItems where guid=@Id"; _deleteItemCommand.Parameters.Add(_deleteItemCommand, "@Id"); - _saveChildrenCommand = _connection.CreateCommand(); - _saveChildrenCommand.CommandText = "replace into ChildrenIds (ParentId, ItemId) values (@ParentId, @ItemId)"; - _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ParentId"); - _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ItemId"); - // People _deletePeopleCommand = _connection.CreateCommand(); _deletePeopleCommand.CommandText = "delete from People where ItemId=@Id"; @@ -708,15 +710,7 @@ namespace MediaBrowser.Server.Implementations.Persistence _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 = item.IsFolder; @@ -726,10 +720,12 @@ namespace MediaBrowser.Server.Implementations.Persistence var topParent = item.GetTopParent(); if (topParent != null) { + //Logger.Debug("Item {0} has top parent {1}", item.Id, topParent.Id); _saveItemCommand.GetParameter(index++).Value = topParent.Id.ToString("N"); } else { + //Logger.Debug("Item {0} has null top parent", item.Id); _saveItemCommand.GetParameter(index++).Value = null; } @@ -742,6 +738,21 @@ namespace MediaBrowser.Server.Implementations.Persistence } _saveItemCommand.GetParameter(index++).Value = isByName; + _saveItemCommand.GetParameter(index++).Value = item.SourceType.ToString(); + + var trailer = item as Trailer; + if (trailer != null) + { + _saveItemCommand.GetParameter(index++).Value = string.Join("|", trailer.TrailerTypes.Select(i => i.ToString()).ToArray()); + } + else + { + _saveItemCommand.GetParameter(index++).Value = null; + } + + _saveItemCommand.GetParameter(index++).Value = item.CriticRating; + _saveItemCommand.GetParameter(index++).Value = item.CriticRatingSummary; + _saveItemCommand.Transaction = transaction; _saveItemCommand.ExecuteNonQuery(); @@ -1072,10 +1083,45 @@ namespace MediaBrowser.Server.Implementations.Persistence if (!reader.IsDBNull(43)) { - var tvItem = item as ILiveTvItem; - if (tvItem != null) + item.ServiceName = reader.GetString(43); + } + + if (!reader.IsDBNull(44)) + { + item.IsInMixedFolder = reader.GetBoolean(44); + } + + if (!reader.IsDBNull(45)) + { + item.DateLastSaved = reader.GetDateTime(45).ToUniversalTime(); + } + + if (!reader.IsDBNull(46)) + { + item.LockedFields = reader.GetString(46).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => (MetadataFields)Enum.Parse(typeof(MetadataFields), i, true)).ToList(); + } + + if (!reader.IsDBNull(47)) + { + item.Studios = reader.GetString(47).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + } + + if (!reader.IsDBNull(48)) + { + item.Tags = reader.GetString(48).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + } + + if (!reader.IsDBNull(49)) + { + item.SourceType = (SourceType)Enum.Parse(typeof(SourceType), reader.GetString(49), true); + } + + var trailer = item as Trailer; + if (trailer != null) + { + if (!reader.IsDBNull(50)) { - tvItem.ServiceName = reader.GetString(43); + trailer.TrailerTypes = reader.GetString(50).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => (TrailerType)Enum.Parse(typeof(TrailerType), i, true)).ToList(); } } @@ -1322,63 +1368,6 @@ namespace MediaBrowser.Server.Implementations.Persistence } } - public IEnumerable<Guid> GetChildren(Guid parentId) - { - if (parentId == Guid.Empty) - { - throw new ArgumentNullException("parentId"); - } - - CheckDisposed(); - - using (var cmd = _connection.CreateCommand()) - { - cmd.CommandText = "select ItemId from ChildrenIds where ParentId = @ParentId"; - - cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = parentId; - - using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) - { - while (reader.Read()) - { - yield return reader.GetGuid(0); - } - } - } - } - - public IEnumerable<BaseItem> GetChildrenItems(Guid parentId) - { - if (parentId == Guid.Empty) - { - throw new ArgumentNullException("parentId"); - } - - CheckDisposed(); - - using (var cmd = _connection.CreateCommand()) - { - cmd.CommandText = "select " + string.Join(",", _retriveItemColumns) + " from TypedBaseItems where guid in (select ItemId from ChildrenIds where ParentId = @ParentId)"; - - cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = parentId; - - //Logger.Debug(cmd.CommandText); - - using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) - { - while (reader.Read()) - { - var item = GetItem(reader); - - if (item != null) - { - yield return item; - } - } - } - } - } - public IEnumerable<BaseItem> GetItemsOfType(Type type) { if (type == null) @@ -1489,7 +1478,7 @@ namespace MediaBrowser.Server.Implementations.Persistence cmd.CommandText += "; select count (guid) from TypedBaseItems" + whereTextWithoutPaging; - Logger.Debug(cmd.CommandText); + //Logger.Debug(cmd.CommandText); var list = new List<BaseItem>(); var count = 0; @@ -1533,11 +1522,19 @@ namespace MediaBrowser.Server.Implementations.Persistence private string MapOrderByField(string name) { - if (string.Equals(name, "airtime", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(name, ItemSortBy.AirTime, StringComparison.OrdinalIgnoreCase)) { // TODO return "SortName"; } + if (string.Equals(name, ItemSortBy.Runtime, StringComparison.OrdinalIgnoreCase)) + { + return "RuntimeTicks"; + } + if (string.Equals(name, ItemSortBy.Random, StringComparison.OrdinalIgnoreCase)) + { + return "RANDOM()"; + } return name; } @@ -1572,7 +1569,7 @@ namespace MediaBrowser.Server.Implementations.Persistence var list = new List<Guid>(); - Logger.Debug(cmd.CommandText); + //Logger.Debug(cmd.CommandText); using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) { @@ -1694,7 +1691,7 @@ namespace MediaBrowser.Server.Implementations.Persistence var list = new List<Guid>(); var count = 0; - Logger.Debug(cmd.CommandText); + //Logger.Debug(cmd.CommandText); using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) { @@ -1733,16 +1730,21 @@ namespace MediaBrowser.Server.Implementations.Persistence } cmd.Parameters.Add(cmd, "@SchemaVersion", DbType.Int32).Value = LatestSchemaVersion; } + if (query.IsHD.HasValue) + { + whereClauses.Add("IsHD=@IsHD"); + cmd.Parameters.Add(cmd, "@IsHD", DbType.Boolean).Value = query.IsHD; + } + if (query.IsLocked.HasValue) + { + whereClauses.Add("IsLocked=@IsLocked"); + cmd.Parameters.Add(cmd, "@IsLocked", DbType.Boolean).Value = query.IsLocked; + } if (query.IsOffline.HasValue) { whereClauses.Add("IsOffline=@IsOffline"); cmd.Parameters.Add(cmd, "@IsOffline", DbType.Boolean).Value = query.IsOffline; } - if (query.LocationType.HasValue) - { - whereClauses.Add("LocationType=@LocationType"); - cmd.Parameters.Add(cmd, "@LocationType", DbType.String).Value = query.LocationType.Value; - } if (query.IsMovie.HasValue) { whereClauses.Add("IsMovie=@IsMovie"); @@ -1811,6 +1813,35 @@ namespace MediaBrowser.Server.Implementations.Persistence cmd.Parameters.Add(cmd, "@Path", DbType.String).Value = query.Path; } + if (query.MinCommunityRating.HasValue) + { + whereClauses.Add("CommunityRating>=@MinCommunityRating"); + cmd.Parameters.Add(cmd, "@MinCommunityRating", DbType.Double).Value = query.MinCommunityRating.Value; + } + + if (query.MinIndexNumber.HasValue) + { + whereClauses.Add("IndexNumber>=@MinIndexNumber"); + cmd.Parameters.Add(cmd, "@MinIndexNumber", DbType.Int32).Value = query.MinIndexNumber.Value; + } + + //if (query.MinPlayers.HasValue) + //{ + // whereClauses.Add("Players>=@MinPlayers"); + // cmd.Parameters.Add(cmd, "@MinPlayers", DbType.Int32).Value = query.MinPlayers.Value; + //} + + //if (query.MaxPlayers.HasValue) + //{ + // whereClauses.Add("Players<=@MaxPlayers"); + // cmd.Parameters.Add(cmd, "@MaxPlayers", DbType.Int32).Value = query.MaxPlayers.Value; + //} + + if (query.ParentIndexNumber.HasValue) + { + whereClauses.Add("ParentIndexNumber=@MinEndDate"); + cmd.Parameters.Add(cmd, "@ParentIndexNumber", DbType.Int32).Value = query.ParentIndexNumber.Value; + } if (query.MinEndDate.HasValue) { whereClauses.Add("EndDate>=@MinEndDate"); @@ -1829,16 +1860,71 @@ namespace MediaBrowser.Server.Implementations.Persistence cmd.Parameters.Add(cmd, "@MinStartDate", DbType.Date).Value = query.MinStartDate.Value; } + if (query.MaxStartDate.HasValue) + { + whereClauses.Add("StartDate<=@MaxStartDate"); + cmd.Parameters.Add(cmd, "@MaxStartDate", DbType.Date).Value = query.MaxStartDate.Value; + } + if (query.MinPremiereDate.HasValue) { whereClauses.Add("PremiereDate>=@MinPremiereDate"); cmd.Parameters.Add(cmd, "@MinPremiereDate", DbType.Date).Value = query.MinPremiereDate.Value; } + if (query.MaxPremiereDate.HasValue) + { + whereClauses.Add("PremiereDate<=@MaxPremiereDate"); + cmd.Parameters.Add(cmd, "@MaxPremiereDate", DbType.Date).Value = query.MaxPremiereDate.Value; + } - if (query.MaxStartDate.HasValue) + if (query.SourceTypes.Length == 1) { - whereClauses.Add("StartDate<=@MaxStartDate"); - cmd.Parameters.Add(cmd, "@MaxStartDate", DbType.Date).Value = query.MaxStartDate.Value; + whereClauses.Add("SourceType=@SourceType"); + cmd.Parameters.Add(cmd, "@SourceType", DbType.String).Value = query.SourceTypes[0]; + } + else if (query.SourceTypes.Length > 1) + { + var inClause = string.Join(",", query.SourceTypes.Select(i => "'" + i + "'").ToArray()); + whereClauses.Add(string.Format("SourceType in ({0})", inClause)); + } + + if (query.ExcludeSourceTypes.Length == 1) + { + whereClauses.Add("SourceType<>@SourceType"); + cmd.Parameters.Add(cmd, "@SourceType", DbType.String).Value = query.SourceTypes[0]; + } + else if (query.ExcludeSourceTypes.Length > 1) + { + var inClause = string.Join(",", query.ExcludeSourceTypes.Select(i => "'" + i + "'").ToArray()); + whereClauses.Add(string.Format("SourceType not in ({0})", inClause)); + } + + if (query.TrailerTypes.Length > 0) + { + var clauses = new List<string>(); + var index = 0; + foreach (var type in query.TrailerTypes) + { + clauses.Add("TrailerTypes like @TrailerTypes" + index); + cmd.Parameters.Add(cmd, "@TrailerTypes" + index, DbType.String).Value = "%" + type + "%"; + index++; + } + var clause = "(" + string.Join(" OR ", clauses.ToArray()) + ")"; + whereClauses.Add(clause); + } + + if (query.ExcludeTrailerTypes.Length > 0) + { + var clauses = new List<string>(); + var index = 0; + foreach (var type in query.ExcludeTrailerTypes) + { + clauses.Add("TrailerTypes not like @TrailerTypes" + index); + cmd.Parameters.Add(cmd, "@TrailerTypes" + index, DbType.String).Value = "%" + type + "%"; + index++; + } + var clause = "(" + string.Join(" AND ", clauses.ToArray()) + ")"; + whereClauses.Add(clause); } if (query.IsAiring.HasValue) @@ -1872,16 +1958,50 @@ namespace MediaBrowser.Server.Implementations.Persistence if (query.Genres.Length > 0) { - var genres = new List<string>(); + var clauses = new List<string>(); + var index = 0; + foreach (var item in query.Genres) + { + clauses.Add("Genres like @Genres" + index); + cmd.Parameters.Add(cmd, "@Genres" + index, DbType.String).Value = "%" + item + "%"; + index++; + } + var clause = "(" + string.Join(" OR ", clauses.ToArray()) + ")"; + whereClauses.Add(clause); + } + + if (query.Tags.Length > 0) + { + var clauses = new List<string>(); var index = 0; - foreach (var genre in query.Genres) + foreach (var item in query.Tags) { - genres.Add("Genres like @Genres" + index); - cmd.Parameters.Add(cmd, "@Genres" + index, DbType.String).Value = "%" + genre + "%"; + clauses.Add("Tags like @Tags" + index); + cmd.Parameters.Add(cmd, "@Tags" + index, DbType.String).Value = "%" + item + "%"; index++; } - var genreCaluse = "(" + string.Join(" OR ", genres.ToArray()) + ")"; - whereClauses.Add(genreCaluse); + var clause = "(" + string.Join(" OR ", clauses.ToArray()) + ")"; + whereClauses.Add(clause); + } + + if (query.Studios.Length > 0) + { + var clauses = new List<string>(); + var index = 0; + foreach (var item in query.Studios) + { + clauses.Add("Studios like @Studios" + index); + cmd.Parameters.Add(cmd, "@Studios" + index, DbType.String).Value = "%" + item + "%"; + index++; + } + var clause = "(" + string.Join(" OR ", clauses.ToArray()) + ")"; + whereClauses.Add(clause); + } + + if (query.MinParentalRating.HasValue) + { + whereClauses.Add("InheritedParentalRatingValue<=@MinParentalRating"); + cmd.Parameters.Add(cmd, "@MinParentalRating", DbType.Int32).Value = query.MinParentalRating.Value; } if (query.MaxParentalRating.HasValue) @@ -1902,6 +2022,18 @@ namespace MediaBrowser.Server.Implementations.Persistence } } + if (query.HasOverview.HasValue) + { + if (query.HasOverview.Value) + { + whereClauses.Add("(Overview not null AND Overview<>'')"); + } + else + { + whereClauses.Add("(Overview is null OR Overview='')"); + } + } + if (query.HasDeadParentId.HasValue) { if (query.HasDeadParentId.Value) @@ -1909,17 +2041,52 @@ namespace MediaBrowser.Server.Implementations.Persistence whereClauses.Add("ParentId NOT NULL AND ParentId NOT IN (select guid from TypedBaseItems)"); } } + + if (query.Years.Length == 1) + { + whereClauses.Add("ProductionYear=@Years"); + cmd.Parameters.Add(cmd, "@Years", DbType.Int32).Value = query.Years[0].ToString(); + } + else if (query.Years.Length > 1) + { + var val = string.Join(",", query.Years.ToArray()); + + whereClauses.Add("ProductionYear in (" + val + ")"); + } + + if (query.LocationTypes.Length == 1) + { + whereClauses.Add("LocationType=@LocationType"); + cmd.Parameters.Add(cmd, "@LocationType", DbType.String).Value = query.LocationTypes[0].ToString(); + } + else if (query.LocationTypes.Length > 1) + { + var val = string.Join(",", query.LocationTypes.Select(i => "'" + i + "'").ToArray()); + + whereClauses.Add("LocationType in (" + val + ")"); + } if (query.ExcludeLocationTypes.Length == 1) { - whereClauses.Add("LocationType<>@LocationType"); - cmd.Parameters.Add(cmd, "@LocationType", DbType.String).Value = query.ExcludeLocationTypes[0].ToString(); + whereClauses.Add("LocationType<>@ExcludeLocationTypes"); + cmd.Parameters.Add(cmd, "@ExcludeLocationTypes", DbType.String).Value = query.ExcludeLocationTypes[0].ToString(); } - if (query.ExcludeLocationTypes.Length > 1) + else if (query.ExcludeLocationTypes.Length > 1) { var val = string.Join(",", query.ExcludeLocationTypes.Select(i => "'" + i + "'").ToArray()); whereClauses.Add("LocationType not in (" + val + ")"); } + if (query.MediaTypes.Length == 1) + { + whereClauses.Add("MediaType=@MediaTypes"); + cmd.Parameters.Add(cmd, "@MediaTypes", DbType.String).Value = query.MediaTypes[0].ToString(); + } + if (query.MediaTypes.Length > 1) + { + var val = string.Join(",", query.MediaTypes.Select(i => "'" + i + "'").ToArray()); + + whereClauses.Add("MediaType in (" + val + ")"); + } var enableItemsByName = query.IncludeItemsByName ?? query.IncludeItemTypes.Length > 0; @@ -1939,7 +2106,7 @@ namespace MediaBrowser.Server.Implementations.Persistence if (query.TopParentIds.Length > 1) { var val = string.Join(",", query.TopParentIds.Select(i => "'" + i + "'").ToArray()); - + if (enableItemsByName) { whereClauses.Add("(IsItemByName=@IsItemByName or TopParentId in (" + val + "))"); @@ -1980,7 +2147,7 @@ namespace MediaBrowser.Server.Implementations.Persistence cmd.Parameters.Add(cmd, "@excludeTag" + excludeTagIndex, DbType.String).Value = "%" + excludeTag + "%"; excludeTagIndex++; } - + if (addPaging) { if (query.StartIndex.HasValue && query.StartIndex.Value > 0) @@ -2013,9 +2180,11 @@ namespace MediaBrowser.Server.Implementations.Persistence typeof(MusicGenre), typeof(MusicVideo), typeof(Movie), + typeof(Playlist), + typeof(AudioPodcast), + typeof(Trailer), typeof(BoxSet), typeof(Episode), - typeof(ChannelVideoItem), typeof(Season), typeof(Series), typeof(Book), @@ -2061,7 +2230,7 @@ namespace MediaBrowser.Server.Implementations.Persistence { return; } - + await WriteLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; @@ -2121,8 +2290,6 @@ namespace MediaBrowser.Server.Implementations.Persistence dict[t.Name] = new[] { t.FullName }; } - dict["ChannelItem"] = new[] { typeof(ChannelVideoItem).FullName, typeof(ChannelAudioItem).FullName, typeof(ChannelFolderItem).FullName }; - dict["LiveTvItem"] = new[] { typeof(LiveTvAudioRecording).FullName, typeof(LiveTvVideoRecording).FullName, typeof(LiveTvChannel).FullName, typeof(LiveTvProgram).FullName }; dict["Recording"] = new[] { typeof(LiveTvAudioRecording).FullName, typeof(LiveTvVideoRecording).FullName }; dict["Program"] = new[] { typeof(LiveTvProgram).FullName }; dict["TvChannel"] = new[] { typeof(LiveTvChannel).FullName }; @@ -2161,11 +2328,6 @@ namespace MediaBrowser.Server.Implementations.Persistence { transaction = _connection.BeginTransaction(); - // First delete children - _deleteChildrenCommand.GetParameter(0).Value = id; - _deleteChildrenCommand.Transaction = transaction; - _deleteChildrenCommand.ExecuteNonQuery(); - // Delete people _deletePeopleCommand.GetParameter(0).Value = id; _deletePeopleCommand.Transaction = transaction; @@ -2224,79 +2386,6 @@ namespace MediaBrowser.Server.Implementations.Persistence } } - public async Task SaveChildren(Guid parentId, IEnumerable<Guid> children, CancellationToken cancellationToken) - { - if (parentId == Guid.Empty) - { - throw new ArgumentNullException("parentId"); - } - - if (children == null) - { - throw new ArgumentNullException("children"); - } - - CheckDisposed(); - - await WriteLock.WaitAsync(cancellationToken).ConfigureAwait(false); - - IDbTransaction transaction = null; - - try - { - transaction = _connection.BeginTransaction(); - - // First delete - _deleteChildrenCommand.GetParameter(0).Value = parentId; - _deleteChildrenCommand.Transaction = transaction; - - _deleteChildrenCommand.ExecuteNonQuery(); - - foreach (var id in children) - { - cancellationToken.ThrowIfCancellationRequested(); - - _saveChildrenCommand.GetParameter(0).Value = parentId; - _saveChildrenCommand.GetParameter(1).Value = id; - - _saveChildrenCommand.Transaction = transaction; - - _saveChildrenCommand.ExecuteNonQuery(); - } - - transaction.Commit(); - } - catch (OperationCanceledException) - { - if (transaction != null) - { - transaction.Rollback(); - } - - throw; - } - catch (Exception e) - { - Logger.ErrorException("Failed to save children:", e); - - if (transaction != null) - { - transaction.Rollback(); - } - - throw; - } - finally - { - if (transaction != null) - { - transaction.Dispose(); - } - - WriteLock.Release(); - } - } - public List<string> GetPeopleNames(InternalPeopleQuery query) { if (query == null) diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs index 355603fae..e5249d4f2 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs @@ -119,33 +119,40 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks var extract = !previouslyFailedImages.Contains(key, StringComparer.OrdinalIgnoreCase); - var chapters = _itemRepo.GetChapters(video.Id).ToList(); - - var success = await _encodingManager.RefreshChapterImages(new ChapterImageRefreshOptions + try { - SaveChapters = true, - ExtractImages = extract, - Video = video, - Chapters = chapters + var chapters = _itemRepo.GetChapters(video.Id).ToList(); - }, CancellationToken.None); + var success = await _encodingManager.RefreshChapterImages(new ChapterImageRefreshOptions + { + SaveChapters = true, + ExtractImages = extract, + Video = video, + Chapters = chapters - if (!success) - { - previouslyFailedImages.Add(key); + }, CancellationToken.None); - var parentPath = Path.GetDirectoryName(failHistoryPath); + if (!success) + { + previouslyFailedImages.Add(key); - _fileSystem.CreateDirectory(parentPath); + var parentPath = Path.GetDirectoryName(failHistoryPath); - _fileSystem.WriteAllText(failHistoryPath, string.Join("|", previouslyFailedImages.ToArray())); - } + _fileSystem.CreateDirectory(parentPath); - numComplete++; - double percent = numComplete; - percent /= videos.Count; + _fileSystem.WriteAllText(failHistoryPath, string.Join("|", previouslyFailedImages.ToArray())); + } + + numComplete++; + double percent = numComplete; + percent /= videos.Count; - progress.Report(100 * percent); + progress.Report(100 * percent); + } + catch (ObjectDisposedException) + { + break; + } } } diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 08953b0be..98127d39a 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -705,7 +705,9 @@ namespace MediaBrowser.Server.Implementations.Session MediaInfo = info.Item, DeviceName = session.DeviceName, ClientName = session.Client, - DeviceId = session.DeviceId + DeviceId = session.DeviceId, + IsPaused = info.IsPaused, + PlaySessionId = info.PlaySessionId }, _logger); @@ -813,7 +815,7 @@ namespace MediaBrowser.Server.Implementations.Session foreach (var user in users) { - playedToCompletion = await OnPlaybackStopped(user.Id, key, libraryItem, info.PositionTicks).ConfigureAwait(false); + playedToCompletion = await OnPlaybackStopped(user.Id, key, libraryItem, info.PositionTicks, info.Failed).ConfigureAwait(false); } } @@ -846,25 +848,29 @@ namespace MediaBrowser.Server.Implementations.Session await SendPlaybackStoppedNotification(session, CancellationToken.None).ConfigureAwait(false); } - private async Task<bool> OnPlaybackStopped(Guid userId, string userDataKey, BaseItem item, long? positionTicks) + private async Task<bool> OnPlaybackStopped(Guid userId, string userDataKey, BaseItem item, long? positionTicks, bool playbackFailed) { - var data = _userDataRepository.GetUserData(userId, userDataKey); - bool playedToCompletion; + bool playedToCompletion = false; - if (positionTicks.HasValue) + if (!playbackFailed) { - playedToCompletion = _userDataRepository.UpdatePlayState(item, data, positionTicks.Value); - } - else - { - // If the client isn't able to report this, then we'll just have to make an assumption - data.PlayCount++; - data.Played = true; - data.PlaybackPositionTicks = 0; - playedToCompletion = true; - } + var data = _userDataRepository.GetUserData(userId, userDataKey); + + if (positionTicks.HasValue) + { + playedToCompletion = _userDataRepository.UpdatePlayState(item, data, positionTicks.Value); + } + else + { + // If the client isn't able to report this, then we'll just have to make an assumption + data.PlayCount++; + data.Played = true; + data.PlaybackPositionTicks = 0; + playedToCompletion = true; + } - await _userDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackFinished, CancellationToken.None).ConfigureAwait(false); + await _userDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackFinished, CancellationToken.None).ConfigureAwait(false); + } return playedToCompletion; } diff --git a/MediaBrowser.Server.Implementations/Sorting/AlphanumComparator.cs b/MediaBrowser.Server.Implementations/Sorting/AlphanumComparator.cs index b76bf0a9c..232bdb3b5 100644 --- a/MediaBrowser.Server.Implementations/Sorting/AlphanumComparator.cs +++ b/MediaBrowser.Server.Implementations/Sorting/AlphanumComparator.cs @@ -1,30 +1,11 @@ using System.Collections.Generic; using System.Text; +using MediaBrowser.Controller.Sorting; namespace MediaBrowser.Server.Implementations.Sorting { public class AlphanumComparator : IComparer<string> { - private enum ChunkType { Alphanumeric, Numeric }; - - private static bool InChunk(char ch, char otherCh) - { - var type = ChunkType.Alphanumeric; - - if (char.IsDigit(otherCh)) - { - type = ChunkType.Numeric; - } - - if ((type == ChunkType.Alphanumeric && char.IsDigit(ch)) - || (type == ChunkType.Numeric && !char.IsDigit(ch))) - { - return false; - } - - return true; - } - public static int CompareValues(string s1, string s2) { if (s1 == null || s2 == null) @@ -51,7 +32,7 @@ namespace MediaBrowser.Server.Implementations.Sorting StringBuilder thisChunk = new StringBuilder(); StringBuilder thatChunk = new StringBuilder(); - while ((thisMarker < s1.Length) && (thisChunk.Length == 0 || InChunk(thisCh, thisChunk[0]))) + while ((thisMarker < s1.Length) && (thisChunk.Length == 0 || SortHelper.InChunk(thisCh, thisChunk[0]))) { thisChunk.Append(thisCh); thisMarker++; @@ -62,7 +43,7 @@ namespace MediaBrowser.Server.Implementations.Sorting } } - while ((thatMarker < s2.Length) && (thatChunk.Length == 0 || InChunk(thatCh, thatChunk[0]))) + while ((thatMarker < s2.Length) && (thatChunk.Length == 0 || SortHelper.InChunk(thatCh, thatChunk[0]))) { thatChunk.Append(thatCh); thatMarker++; diff --git a/MediaBrowser.Server.Implementations/Sorting/NameComparer.cs b/MediaBrowser.Server.Implementations/Sorting/NameComparer.cs index 18fddb903..49f86c485 100644 --- a/MediaBrowser.Server.Implementations/Sorting/NameComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/NameComparer.cs @@ -18,12 +18,7 @@ namespace MediaBrowser.Server.Implementations.Sorting /// <returns>System.Int32.</returns> public int Compare(BaseItem x, BaseItem y) { - if (!x.EnableAlphaNumericSorting || !y.EnableAlphaNumericSorting) - { - return string.Compare(x.SortName, y.SortName, StringComparison.CurrentCultureIgnoreCase); - } - - return AlphanumComparator.CompareValues(x.Name, y.Name); + return string.Compare(x.Name, y.Name, StringComparison.CurrentCultureIgnoreCase); } /// <summary> diff --git a/MediaBrowser.Server.Implementations/Sorting/SeriesSortNameComparer.cs b/MediaBrowser.Server.Implementations/Sorting/SeriesSortNameComparer.cs index 09612a49c..4efc3218b 100644 --- a/MediaBrowser.Server.Implementations/Sorting/SeriesSortNameComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/SeriesSortNameComparer.cs @@ -16,7 +16,7 @@ namespace MediaBrowser.Server.Implementations.Sorting /// <returns>System.Int32.</returns> public int Compare(BaseItem x, BaseItem y) { - return AlphanumComparator.CompareValues(GetValue(x), GetValue(y)); + return string.Compare(GetValue(x), GetValue(y), StringComparison.CurrentCultureIgnoreCase); } private string GetValue(BaseItem item) diff --git a/MediaBrowser.Server.Implementations/Sorting/SortNameComparer.cs b/MediaBrowser.Server.Implementations/Sorting/SortNameComparer.cs index 389b21ba7..873753a2b 100644 --- a/MediaBrowser.Server.Implementations/Sorting/SortNameComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/SortNameComparer.cs @@ -18,12 +18,7 @@ namespace MediaBrowser.Server.Implementations.Sorting /// <returns>System.Int32.</returns> public int Compare(BaseItem x, BaseItem y) { - if (!x.EnableAlphaNumericSorting || !y.EnableAlphaNumericSorting) - { - return string.Compare(x.SortName, y.SortName, StringComparison.CurrentCultureIgnoreCase); - } - - return AlphanumComparator.CompareValues(x.SortName, y.SortName); + return string.Compare(x.SortName, y.SortName, StringComparison.CurrentCultureIgnoreCase); } /// <summary> diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs index 7086735c0..f553c8ea8 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs @@ -641,6 +641,8 @@ namespace MediaBrowser.Server.Implementations.Sync ReadInputAtNativeFramerate = !syncOptions.EnableFullSpeedTranscoding }, innerProgress, cancellationToken); + + _syncManager.OnConversionComplete(jobItem, job); } catch (OperationCanceledException) { @@ -825,6 +827,8 @@ namespace MediaBrowser.Server.Implementations.Sync CpuCoreLimit = syncOptions.TranscodingCpuCoreLimit }, innerProgress, cancellationToken); + + _syncManager.OnConversionComplete(jobItem, job); } catch (OperationCanceledException) { diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 8ebc8d91e..fbbc6082a 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -536,7 +536,7 @@ namespace MediaBrowser.Server.Implementations.Sync } } - if (item is LiveTvChannel || item is IChannelItem) + if (item.SourceType != SourceType.Library) { return false; } @@ -1325,5 +1325,16 @@ namespace MediaBrowser.Server.Implementations.Sync return list; } + + protected internal void OnConversionComplete(SyncJobItem item, SyncJob job) + { + var syncProvider = GetSyncProvider(item, job); + if (syncProvider is AppSyncProvider) + { + return; + } + + _taskManager.QueueIfNotRunning<ServerSyncScheduledTask>(); + } } } diff --git a/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs b/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs index 69d1c89fe..3e43ebe9b 100644 --- a/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs +++ b/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs @@ -36,7 +36,7 @@ namespace MediaBrowser.Server.Implementations.TV ? new string[] { } : new[] { request.ParentId }; - var items = _libraryManager.GetItems(new InternalItemsQuery(user) + var items = _libraryManager.GetItemList(new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(Series).Name }, SortOrder = SortOrder.Ascending @@ -58,7 +58,7 @@ namespace MediaBrowser.Server.Implementations.TV throw new ArgumentException("User not found"); } - var items = _libraryManager.GetItems(new InternalItemsQuery(user) + var items = _libraryManager.GetItemList(new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(Series).Name }, SortOrder = SortOrder.Ascending diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index bbabeda6d..66aede029 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="utf-8"?>
<packages>
- <package id="CommonIO" version="1.0.0.8" targetFramework="net45" />
+ <package id="CommonIO" version="1.0.0.9" targetFramework="net45" />
<package id="Emby.XmlTv" version="1.0.0.48" targetFramework="net45" />
+ <package id="ini-parser" version="2.2.4" targetFramework="net45" />
<package id="Interfaces.IO" version="1.0.0.5" targetFramework="net45" />
- <package id="MediaBrowser.Naming" version="1.0.0.48" targetFramework="net45" />
+ <package id="MediaBrowser.Naming" version="1.0.0.49" targetFramework="net45" />
<package id="Mono.Nat" version="1.2.24.0" targetFramework="net45" />
<package id="morelinq" version="1.4.0" targetFramework="net45" />
<package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" />
- <package id="SocketHttpListener" version="1.0.0.28" targetFramework="net45" />
+ <package id="SocketHttpListener" version="1.0.0.29" targetFramework="net45" />
</packages>
\ No newline at end of file diff --git a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj index ec98816a5..39f39aecd 100644 --- a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj +++ b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj @@ -356,6 +356,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\gamesystems.html">
<Link>Resources\dashboard-ui\gamesystems.html</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\home.html">
+ <Link>Resources\dashboard-ui\home.html</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\index.html">
<Link>Resources\dashboard-ui\index.html</Link>
</BundleResource>
@@ -407,6 +410,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\livetvtunerprovider-m3u.html">
<Link>Resources\dashboard-ui\livetvtunerprovider-m3u.html</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\livetvtunerprovider-satip.html">
+ <Link>Resources\dashboard-ui\livetvtunerprovider-satip.html</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\log.html">
<Link>Resources\dashboard-ui\log.html</Link>
</BundleResource>
@@ -1304,6 +1310,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\focusmanager.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\focusmanager.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\globalize.js">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\globalize.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\layoutmanager.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\layoutmanager.js</Link>
</BundleResource>
@@ -1316,12 +1325,18 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\requirehtml.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\requirehtml.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\router.js">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\router.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\scrollhelper.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\scrollhelper.js</Link>
</BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\usersettings.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\usersettings.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\viewmanager.js">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\viewmanager.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\visibleinviewport.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\visibleinviewport.js</Link>
</BundleResource>
@@ -1337,12 +1352,198 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\alert\nativealert.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\alert\nativealert.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\backdrop\backdrop.js">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\backdrop\backdrop.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\backdrop\style.css">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\backdrop\style.css</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\confirm\confirm.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\confirm\confirm.js</Link>
</BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\confirm\nativeconfirm.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\confirm\nativeconfirm.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\IQHow_FEYlDC4Gzy_m8fcgFhaRv2pGgT5Kf0An0s4MM.woff">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\IQHow_FEYlDC4Gzy_m8fcgFhaRv2pGgT5Kf0An0s4MM.woff</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\IQHow_FEYlDC4Gzy_m8fcoWiMMZ7xLd792ULpGE4W_Y.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\IQHow_FEYlDC4Gzy_m8fcoWiMMZ7xLd792ULpGE4W_Y.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\style.css">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\style.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\zhcz-_WihjSQC0oHJ9TCYBsxEYwM7FgeyaSgU71cLG0.woff">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\zhcz-_WihjSQC0oHJ9TCYBsxEYwM7FgeyaSgU71cLG0.woff</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\zhcz-_WihjSQC0oHJ9TCYPk_vArhqVIZ0nv9q090hN8.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\montserrat\zhcz-_WihjSQC0oHJ9TCYPk_vArhqVIZ0nv9q090hN8.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\59ZRklaO5bWGqF5A9baEERJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\59ZRklaO5bWGqF5A9baEERJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTRWV49_lSm1NYrwo-zkhivY.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTRWV49_lSm1NYrwo-zkhivY.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTT0LW-43aMEzIO6XUTLjad8.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTT0LW-43aMEzIO6XUTLjad8.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTZX5f-9o1vgP2EXwfjgl7AY.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTZX5f-9o1vgP2EXwfjgl7AY.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTaaRobkAwv3vxw3jMhVENGA.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTaaRobkAwv3vxw3jMhVENGA.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTegdm0LZdjqr5-oayXSOefg.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTegdm0LZdjqr5-oayXSOefg.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTf8zf_FOSsgRmwsS7Aa9k2w.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\DXI1ORHCpsQm3Vp6mXoaTf8zf_FOSsgRmwsS7Aa9k2w.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\K88pR3goAWT7BTt32Z01mxJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\K88pR3goAWT7BTt32Z01mxJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\LWCjsQkB6EMdfHrEVqA1KRJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\LWCjsQkB6EMdfHrEVqA1KRJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNShWV49_lSm1NYrwo-zkhivY.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNShWV49_lSm1NYrwo-zkhivY.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSj0LW-43aMEzIO6XUTLjad8.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSj0LW-43aMEzIO6XUTLjad8.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSpX5f-9o1vgP2EXwfjgl7AY.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSpX5f-9o1vgP2EXwfjgl7AY.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSq-j2U0lmluP9RWlSytm3ho.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSq-j2U0lmluP9RWlSytm3ho.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSqaRobkAwv3vxw3jMhVENGA.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSqaRobkAwv3vxw3jMhVENGA.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSugdm0LZdjqr5-oayXSOefg.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSugdm0LZdjqr5-oayXSOefg.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSv8zf_FOSsgRmwsS7Aa9k2w.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\MTP_ySUJH_bn48VBG8sNSv8zf_FOSsgRmwsS7Aa9k2w.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\RjgO7rYTmqiVp7vzi-Q5URJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\RjgO7rYTmqiVp7vzi-Q5URJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\cJZKeOuBrn4kERxqtaUH3VtXRa8TVwTICgirnJhmVJw.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\cJZKeOuBrn4kERxqtaUH3VtXRa8TVwTICgirnJhmVJw.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzBWV49_lSm1NYrwo-zkhivY.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzBWV49_lSm1NYrwo-zkhivY.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzD0LW-43aMEzIO6XUTLjad8.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzD0LW-43aMEzIO6XUTLjad8.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzJX5f-9o1vgP2EXwfjgl7AY.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzJX5f-9o1vgP2EXwfjgl7AY.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzK-j2U0lmluP9RWlSytm3ho.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzK-j2U0lmluP9RWlSytm3ho.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzKaRobkAwv3vxw3jMhVENGA.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzKaRobkAwv3vxw3jMhVENGA.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzOgdm0LZdjqr5-oayXSOefg.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzOgdm0LZdjqr5-oayXSOefg.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzP8zf_FOSsgRmwsS7Aa9k2w.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\k3k702ZOKiLJc3WVjuplzP8zf_FOSsgRmwsS7Aa9k2w.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\style.css">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\style.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\u-WUoqrET9fUeobQW7jkRRJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\u-WUoqrET9fUeobQW7jkRRJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\xozscpT2726on7jbcb_pAhJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\opensans\xozscpT2726on7jbcb_pAhJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\-L14Jk06m6pUHB-5mXQQnRJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\-L14Jk06m6pUHB-5mXQQnRJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\0eC6fl06luXEYWpBSJvXCBJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\0eC6fl06luXEYWpBSJvXCBJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\2tsd397wLxj96qwHyNIkxPesZW2xOQ-xsNqO47m55DA.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\2tsd397wLxj96qwHyNIkxPesZW2xOQ-xsNqO47m55DA.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\CWB0XYA8bzo0kSThX0UTuA.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\CWB0XYA8bzo0kSThX0UTuA.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\Fl4y0QdOxyyTHEGMXX8kcRJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\Fl4y0QdOxyyTHEGMXX8kcRJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\Hgo13k-tfSpn0qi1SFdUfVtXRa8TVwTICgirnJhmVJw.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\Hgo13k-tfSpn0qi1SFdUfVtXRa8TVwTICgirnJhmVJw.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\I3S1wsgSg9YCurV6PUkTORJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\I3S1wsgSg9YCurV6PUkTORJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\NYDWBdD4gIq26G5XYbHsFBJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\NYDWBdD4gIq26G5XYbHsFBJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\Pru33qjShpZSmG3z6VYwnRJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\Pru33qjShpZSmG3z6VYwnRJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoBold.woff">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoBold.woff</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoLight.woff">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoLight.woff</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoMedium.woff">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoMedium.woff</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoRegular.woff">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoRegular.woff</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoThin.woff">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RobotoThin.woff</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\VvXUGKZXbHtX_S_VCTLpGhTbgVql8nDJpwnrE27mub0.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\VvXUGKZXbHtX_S_VCTLpGhTbgVql8nDJpwnrE27mub0.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\aZMswpodYeVhtRvuABJWvBTbgVql8nDJpwnrE27mub0.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\aZMswpodYeVhtRvuABJWvBTbgVql8nDJpwnrE27mub0.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\e7MeVAyvogMqFwwl61PKhBTbgVql8nDJpwnrE27mub0.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\e7MeVAyvogMqFwwl61PKhBTbgVql8nDJpwnrE27mub0.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\frNV30OaYdlFRtH2VnZZdhTbgVql8nDJpwnrE27mub0.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\frNV30OaYdlFRtH2VnZZdhTbgVql8nDJpwnrE27mub0.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\gwVJDERN2Amz39wrSoZ7FxTbgVql8nDJpwnrE27mub0.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\gwVJDERN2Amz39wrSoZ7FxTbgVql8nDJpwnrE27mub0.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\oOeFwZNlrTefzLYmlVV1UBJtnKITppOI_IvcXXDNrsc.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\oOeFwZNlrTefzLYmlVV1UBJtnKITppOI_IvcXXDNrsc.woff2</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\style.css">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\style.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\ty9dfvLAziwdqQ2dHoyjphTbgVql8nDJpwnrE27mub0.woff2">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\roboto\ty9dfvLAziwdqQ2dHoyjphTbgVql8nDJpwnrE27mub0.woff2</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\images\basicimagefetcher.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\images\basicimagefetcher.js</Link>
</BundleResource>
@@ -1352,12 +1553,21 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\images\persistentimagefetcher.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\images\persistentimagefetcher.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\loading\loading-lite.js">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\loading\loading-lite.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\loading\loading-smarttv.js">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\loading\loading-smarttv.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\loading\loading.css">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\loading\loading.css</Link>
</BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\loading\loading.js">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\loading\loading.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\page.js\page.js">
+ <Link>Resources\dashboard-ui\bower_components\emby-webcomponents\page.js\page.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\paperdialoghelper\paperdialoghelper.css">
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\paperdialoghelper\paperdialoghelper.css</Link>
</BundleResource>
@@ -2126,6 +2336,12 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\iron-icon\.gitignore">
<Link>Resources\dashboard-ui\bower_components\iron-icon\.gitignore</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\iron-icon\.travis.yml">
+ <Link>Resources\dashboard-ui\bower_components\iron-icon\.travis.yml</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\iron-icon\CONTRIBUTING.md">
+ <Link>Resources\dashboard-ui\bower_components\iron-icon\CONTRIBUTING.md</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\iron-icon\README.md">
<Link>Resources\dashboard-ui\bower_components\iron-icon\README.md</Link>
</BundleResource>
@@ -2618,6 +2834,12 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\iron-selector\test\activate-event.html">
<Link>Resources\dashboard-ui\bower_components\iron-selector\test\activate-event.html</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\iron-selector\test\attr-for-selected-elements.html">
+ <Link>Resources\dashboard-ui\bower_components\iron-selector\test\attr-for-selected-elements.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\iron-selector\test\attr-for-selected.html">
+ <Link>Resources\dashboard-ui\bower_components\iron-selector\test\attr-for-selected.html</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\iron-selector\test\basic.html">
<Link>Resources\dashboard-ui\bower_components\iron-selector\test\basic.html</Link>
</BundleResource>
@@ -2735,6 +2957,18 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\jquery\dist\jquery.slim.min.map">
<Link>Resources\dashboard-ui\bower_components\jquery\dist\jquery.slim.min.map</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\jquery\sizzle\LICENSE.txt">
+ <Link>Resources\dashboard-ui\bower_components\jquery\sizzle\LICENSE.txt</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\jquery\sizzle\dist\sizzle.js">
+ <Link>Resources\dashboard-ui\bower_components\jquery\sizzle\dist\sizzle.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\jquery\sizzle\dist\sizzle.min.js">
+ <Link>Resources\dashboard-ui\bower_components\jquery\sizzle\dist\sizzle.min.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\jquery\sizzle\dist\sizzle.min.map">
+ <Link>Resources\dashboard-ui\bower_components\jquery\sizzle\dist\sizzle.min.map</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\jquery\src\.jshintrc">
<Link>Resources\dashboard-ui\bower_components\jquery\src\.jshintrc</Link>
</BundleResource>
@@ -3170,6 +3404,660 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\marked-element\test\marked-element.html">
<Link>Resources\dashboard-ui\bower_components\marked-element\test\marked-element.html</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\.bower.json">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\.bower.json</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\LICENSE">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\LICENSE</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\bower.json">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\bower.json</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\gulpfile.babel.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\gulpfile.babel.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\material.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\material.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\material.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\material.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\material.min.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\material.min.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\material.min.css.map">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\material.min.css.map</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\material.min.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\material.min.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\material.min.js.map">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\material.min.js.map</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\package.json">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\package.json</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\INTRODUCTION.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\INTRODUCTION.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\_color-definitions.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\_color-definitions.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\_functions.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\_functions.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\_mixins.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\_mixins.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\_variables.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\_variables.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\demos.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\demos.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\index.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\index.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\material-design-lite-grid.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\material-design-lite-grid.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\material-design-lite.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\material-design-lite.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\mdlComponentHandler.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\mdlComponentHandler.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\styleguide.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\styleguide.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\template.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\template.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\animation\_animation.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\animation\_animation.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\animation\demo.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\animation\demo.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\animation\demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\animation\demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\animation\demo.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\animation\demo.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\_badge.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\_badge.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-icon-icon-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-icon-icon-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-icon-icon.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-icon-icon.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-icon-text-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-icon-text-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-icon-text.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-icon-text.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-text-icon-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-text-icon-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-text-icon.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-text-icon.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-text-text-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-text-text-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-text-text.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\badge\snippets\badge-on-text-text.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\_button.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\_button.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\button.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\button.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-colored-ripple.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-colored-ripple.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-colored.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-colored.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-disabled.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-disabled.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-mini-colored.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-mini-colored.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-mini.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-mini.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-ripple.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab-ripple.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\fab.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat-accent.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat-accent.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat-disabled.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat-disabled.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat-primary.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat-primary.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat-ripple.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat-ripple.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\flat.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\icon-colored.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\icon-colored.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\icon.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\icon.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-accent.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-accent.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-colored.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-colored.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-disabled.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-disabled.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-ripple-accent.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-ripple-accent.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-ripple.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised-ripple.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\button\snippets\raised.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\card\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\card\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\card\_card.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\card\_card.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\card\snippets\event.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\card\snippets\event.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\card\snippets\image.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\card\snippets\image.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\card\snippets\square.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\card\snippets\square.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\card\snippets\wide.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\card\snippets\wide.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\checkbox\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\checkbox\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\checkbox\_checkbox.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\checkbox\_checkbox.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\checkbox\checkbox.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\checkbox\checkbox.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\checkbox\snippets\check-off.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\checkbox\snippets\check-off.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\checkbox\snippets\check-on.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\checkbox\snippets\check-on.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\data-table\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\data-table\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\data-table\_data-table.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\data-table\_data-table.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\data-table\data-table.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\data-table\data-table.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\data-table\snippets\data-table.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\data-table\snippets\data-table.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\dialog\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\dialog\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\dialog\_dialog.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\dialog\_dialog.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\footer\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\footer\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\footer\_mega_footer.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\footer\_mega_footer.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\footer\_mini_footer.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\footer\_mini_footer.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\footer\snippets\mega-footer.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\footer\snippets\mega-footer.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\footer\snippets\mini-footer.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\footer\snippets\mini-footer.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\grid\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\grid\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\grid\_grid.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\grid\_grid.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\grid\snippets\codepen-grid.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\grid\snippets\codepen-grid.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\grid\snippets\grid-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\grid\snippets\grid-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\grid\snippets\grid.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\grid\snippets\grid.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\_icon-toggle.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\_icon-toggle.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\icon-toggle.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\icon-toggle.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\snippets\icon-off.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\snippets\icon-off.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\snippets\icon-on.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\icon-toggle\snippets\icon-on.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\images\buffer.svg">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\images\buffer.svg</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\images\tick-mask.svg">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\images\tick-mask.svg</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\images\tick.svg">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\images\tick.svg</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\_layout.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\_layout.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\layout.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\layout.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-drawer-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-drawer-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-drawer.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-drawer.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-header-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-header-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-header-drawer-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-header-drawer-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-header-drawer.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-header-drawer.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-header.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-header.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-tabs-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-tabs-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-tabs.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\fixed-tabs.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\scrollable-tabs-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\scrollable-tabs-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\scrollable-tabs.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\scrollable-tabs.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\scrolling-header-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\scrolling-header-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\scrolling-header.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\scrolling-header.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\transparent-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\transparent-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\transparent.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\transparent.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\waterfall-header-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\waterfall-header-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\waterfall-header.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\layout\snippets\waterfall-header.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\list\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\list\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\list\_list.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\list\_list.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\list\snippets\action.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\list\snippets\action.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\list\snippets\icon.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\list\snippets\icon.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\list\snippets\list-control.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\list\snippets\list-control.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\list\snippets\list-item.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\list\snippets\list-item.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\list\snippets\three-line.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\list\snippets\three-line.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\list\snippets\two-line.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\list\snippets\two-line.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\_menu.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\_menu.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\menu.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\menu.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\codepen-lower-buttons.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\codepen-lower-buttons.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\codepen-top-buttons.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\codepen-top-buttons.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\lower-left-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\lower-left-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\lower-left.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\lower-left.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\lower-right-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\lower-right-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\lower-right.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\lower-right.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\top-left-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\top-left-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\top-left.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\top-left.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\top-right-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\top-right-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\top-right.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\menu\snippets\top-right.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\palette\_palette.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\palette\_palette.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\palette\demo.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\palette\demo.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\palette\demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\palette\demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\_progress.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\_progress.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\progress.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\progress.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-buffering-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-buffering-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-buffering.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-buffering.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-default-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-default-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-default.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-default.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-indeterminate-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-indeterminate-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-indeterminate.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\progress\snippets\progress-indeterminate.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\radio\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\radio\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\radio\_radio.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\radio\_radio.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\radio\radio.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\radio\radio.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\radio\snippets\radio-off.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\radio\snippets\radio-off.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\radio\snippets\radio-on.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\radio\snippets\radio-on.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\resets\_h5bp.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\resets\_h5bp.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\resets\_mobile.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\resets\_mobile.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\resets\_resets.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\resets\_resets.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\ripple\_ripple.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\ripple\_ripple.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\ripple\ripple.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\ripple\ripple.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\shadow\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\shadow\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\shadow\_shadow.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\shadow\_shadow.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\shadow\demo.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\shadow\demo.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\shadow\demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\shadow\demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\slider\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\slider\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\slider\_slider.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\slider\_slider.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\slider\slider.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\slider\slider.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\slider-default-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\slider-default-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\slider-default.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\slider-default.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\slider-starting-value-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\slider-starting-value-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\slider-starting-value.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\slider\snippets\slider-starting-value.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\snackbar\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\snackbar\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\snackbar\_snackbar.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\snackbar\_snackbar.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\snackbar\snackbar.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\snackbar\snackbar.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\snackbar\snippets\snackbar.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\snackbar\snippets\snackbar.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\snackbar\snippets\toast.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\snackbar\snippets\toast.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\spinner\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\spinner\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\spinner\_spinner.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\spinner\_spinner.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\spinner\spinner.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\spinner\spinner.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\spinner\snippets\spinner-default.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\spinner\snippets\spinner-default.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\spinner\snippets\spinner-single-color.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\spinner\snippets\spinner-single-color.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\switch\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\switch\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\switch\_switch.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\switch\_switch.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\switch\switch.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\switch\switch.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\switch\snippets\switch-off.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\switch\snippets\switch-off.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\switch\snippets\switch-on.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\switch\snippets\switch-on.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tabs\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tabs\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tabs\_tabs.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tabs\_tabs.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tabs\tabs.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tabs\tabs.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tabs\snippets\tabs.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tabs\snippets\tabs.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\_textfield.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\_textfield.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\textfield.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\textfield.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-expanding-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-expanding-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-expanding.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-expanding.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-floating-numeric-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-floating-numeric-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-floating-numeric.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-floating-numeric.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-floating-text-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-floating-text-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-floating-text.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-floating-text.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-multi-line-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-multi-line-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-multi-line.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-multi-line.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-numeric-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-numeric-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-numeric.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-numeric.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-text-demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-text-demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-text.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\textfield\snippets\textfield-text.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\third_party\rAF.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\third_party\rAF.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tooltip\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tooltip\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tooltip\_tooltip.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tooltip\_tooltip.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tooltip\tooltip.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tooltip\tooltip.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tooltip\snippets\tooltip-large.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tooltip\snippets\tooltip-large.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tooltip\snippets\tooltip-multiline.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tooltip\snippets\tooltip-multiline.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tooltip\snippets\tooltip-rich.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tooltip\snippets\tooltip-rich.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\tooltip\snippets\tooltip-simple.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\tooltip\snippets\tooltip-simple.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\typography\README.md">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\typography\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\typography\_typography.scss">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\typography\_typography.scss</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\typography\demo.css">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\typography\demo.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\src\typography\demo.html">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\src\typography\demo.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\utils\uniffe.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\utils\uniffe.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\material-design-lite\utils\jscs-rules\closure-camel-case.js">
+ <Link>Resources\dashboard-ui\bower_components\material-design-lite\utils\jscs-rules\closure-camel-case.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\native-promise-only\.bower.json">
<Link>Resources\dashboard-ui\bower_components\native-promise-only\.bower.json</Link>
</BundleResource>
@@ -3677,6 +4565,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\paper-drawer-panel\demo\index.html">
<Link>Resources\dashboard-ui\bower_components\paper-drawer-panel\demo\index.html</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\paper-drawer-panel\test\focus.html">
+ <Link>Resources\dashboard-ui\bower_components\paper-drawer-panel\test\focus.html</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\paper-drawer-panel\test\index.html">
<Link>Resources\dashboard-ui\bower_components\paper-drawer-panel\test\index.html</Link>
</BundleResource>
@@ -7766,9 +8657,54 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\prism-element\prism-import.html">
<Link>Resources\dashboard-ui\bower_components\prism-element\prism-import.html</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\.bower.json">
+ <Link>Resources\dashboard-ui\bower_components\query-string\.bower.json</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\.editorconfig">
+ <Link>Resources\dashboard-ui\bower_components\query-string\.editorconfig</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\.gitattributes">
+ <Link>Resources\dashboard-ui\bower_components\query-string\.gitattributes</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\.gitignore">
+ <Link>Resources\dashboard-ui\bower_components\query-string\.gitignore</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\.jshintrc">
+ <Link>Resources\dashboard-ui\bower_components\query-string\.jshintrc</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\.travis.yml">
+ <Link>Resources\dashboard-ui\bower_components\query-string\.travis.yml</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\index.js">
+ <Link>Resources\dashboard-ui\bower_components\query-string\index.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\license">
+ <Link>Resources\dashboard-ui\bower_components\query-string\license</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\package.json">
+ <Link>Resources\dashboard-ui\bower_components\query-string\package.json</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\readme.md">
+ <Link>Resources\dashboard-ui\bower_components\query-string\readme.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\test.js">
+ <Link>Resources\dashboard-ui\bower_components\query-string\test.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\test\extract.js">
+ <Link>Resources\dashboard-ui\bower_components\query-string\test\extract.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\test\parse.js">
+ <Link>Resources\dashboard-ui\bower_components\query-string\test\parse.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\query-string\test\stringify.js">
+ <Link>Resources\dashboard-ui\bower_components\query-string\test\stringify.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\requirejs\.bower.json">
<Link>Resources\dashboard-ui\bower_components\requirejs\.bower.json</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\requirejs\LICENSE">
+ <Link>Resources\dashboard-ui\bower_components\requirejs\LICENSE</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\requirejs\README.md">
<Link>Resources\dashboard-ui\bower_components\requirejs\README.md</Link>
</BundleResource>
@@ -7922,6 +8858,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\components\sharingwidget.js">
<Link>Resources\dashboard-ui\components\sharingwidget.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\components\viewcontainer-lite.js">
+ <Link>Resources\dashboard-ui\components\viewcontainer-lite.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\components\collectioneditor\collectioneditor.js">
<Link>Resources\dashboard-ui\components\collectioneditor\collectioneditor.js</Link>
</BundleResource>
@@ -8069,81 +9008,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\Montserrat.woff">
<Link>Resources\dashboard-ui\css\fonts\Montserrat.woff</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\-L14Jk06m6pUHB-5mXQQnRJtnKITppOI_IvcXXDNrsc.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\-L14Jk06m6pUHB-5mXQQnRJtnKITppOI_IvcXXDNrsc.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\0eC6fl06luXEYWpBSJvXCBJtnKITppOI_IvcXXDNrsc.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\0eC6fl06luXEYWpBSJvXCBJtnKITppOI_IvcXXDNrsc.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\2tsd397wLxj96qwHyNIkxPesZW2xOQ-xsNqO47m55DA.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\2tsd397wLxj96qwHyNIkxPesZW2xOQ-xsNqO47m55DA.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\CWB0XYA8bzo0kSThX0UTuA.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\CWB0XYA8bzo0kSThX0UTuA.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\Fl4y0QdOxyyTHEGMXX8kcRJtnKITppOI_IvcXXDNrsc.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\Fl4y0QdOxyyTHEGMXX8kcRJtnKITppOI_IvcXXDNrsc.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\Hgo13k-tfSpn0qi1SFdUfVtXRa8TVwTICgirnJhmVJw.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\Hgo13k-tfSpn0qi1SFdUfVtXRa8TVwTICgirnJhmVJw.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\I3S1wsgSg9YCurV6PUkTORJtnKITppOI_IvcXXDNrsc.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\I3S1wsgSg9YCurV6PUkTORJtnKITppOI_IvcXXDNrsc.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\NYDWBdD4gIq26G5XYbHsFBJtnKITppOI_IvcXXDNrsc.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\NYDWBdD4gIq26G5XYbHsFBJtnKITppOI_IvcXXDNrsc.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\Pru33qjShpZSmG3z6VYwnRJtnKITppOI_IvcXXDNrsc.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\Pru33qjShpZSmG3z6VYwnRJtnKITppOI_IvcXXDNrsc.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\RobotoBold.woff">
- <Link>Resources\dashboard-ui\css\fonts\roboto\RobotoBold.woff</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\RobotoLight.woff">
- <Link>Resources\dashboard-ui\css\fonts\roboto\RobotoLight.woff</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\RobotoMedium.woff">
- <Link>Resources\dashboard-ui\css\fonts\roboto\RobotoMedium.woff</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\RobotoRegular.woff">
- <Link>Resources\dashboard-ui\css\fonts\roboto\RobotoRegular.woff</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\RobotoThin.woff">
- <Link>Resources\dashboard-ui\css\fonts\roboto\RobotoThin.woff</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\VvXUGKZXbHtX_S_VCTLpGhTbgVql8nDJpwnrE27mub0.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\VvXUGKZXbHtX_S_VCTLpGhTbgVql8nDJpwnrE27mub0.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\aZMswpodYeVhtRvuABJWvBTbgVql8nDJpwnrE27mub0.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\aZMswpodYeVhtRvuABJWvBTbgVql8nDJpwnrE27mub0.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\e7MeVAyvogMqFwwl61PKhBTbgVql8nDJpwnrE27mub0.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\e7MeVAyvogMqFwwl61PKhBTbgVql8nDJpwnrE27mub0.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\frNV30OaYdlFRtH2VnZZdhTbgVql8nDJpwnrE27mub0.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\frNV30OaYdlFRtH2VnZZdhTbgVql8nDJpwnrE27mub0.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\gwVJDERN2Amz39wrSoZ7FxTbgVql8nDJpwnrE27mub0.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\gwVJDERN2Amz39wrSoZ7FxTbgVql8nDJpwnrE27mub0.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\oOeFwZNlrTefzLYmlVV1UBJtnKITppOI_IvcXXDNrsc.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\oOeFwZNlrTefzLYmlVV1UBJtnKITppOI_IvcXXDNrsc.woff2</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\fonts\roboto\ty9dfvLAziwdqQ2dHoyjphTbgVql8nDJpwnrE27mub0.woff2">
- <Link>Resources\dashboard-ui\css\fonts\roboto\ty9dfvLAziwdqQ2dHoyjphTbgVql8nDJpwnrE27mub0.woff2</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\ani_equalizer_black.gif">
<Link>Resources\dashboard-ui\css\images\ani_equalizer_black.gif</Link>
</BundleResource>
@@ -8438,6 +9302,12 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\legacy\dashboard.js">
<Link>Resources\dashboard-ui\legacy\dashboard.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\legacy\fnchecked.js">
+ <Link>Resources\dashboard-ui\legacy\fnchecked.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\legacy\objectassign.js">
+ <Link>Resources\dashboard-ui\legacy\objectassign.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\aboutpage.js">
<Link>Resources\dashboard-ui\scripts\aboutpage.js</Link>
</BundleResource>
@@ -8453,6 +9323,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\appservices.js">
<Link>Resources\dashboard-ui\scripts\appservices.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\autobackdrops.js">
+ <Link>Resources\dashboard-ui\scripts\autobackdrops.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\autoorganizelog.js">
<Link>Resources\dashboard-ui\scripts\autoorganizelog.js</Link>
</BundleResource>
@@ -8462,9 +9335,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\autoorganizetv.js">
<Link>Resources\dashboard-ui\scripts\autoorganizetv.js</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\backdrops.js">
- <Link>Resources\dashboard-ui\scripts\backdrops.js</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\channelitems.js">
<Link>Resources\dashboard-ui\scripts\channelitems.js</Link>
</BundleResource>
@@ -8558,9 +9428,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\gamesystemspage.js">
<Link>Resources\dashboard-ui\scripts\gamesystemspage.js</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\globalize.js">
- <Link>Resources\dashboard-ui\scripts\globalize.js</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\homenextup.js">
<Link>Resources\dashboard-ui\scripts\homenextup.js</Link>
</BundleResource>
@@ -8651,6 +9518,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\livetvtunerprovider-m3u.js">
<Link>Resources\dashboard-ui\scripts\livetvtunerprovider-m3u.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\livetvtunerprovider-satip.js">
+ <Link>Resources\dashboard-ui\scripts\livetvtunerprovider-satip.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\localsync.js">
<Link>Resources\dashboard-ui\scripts\localsync.js</Link>
</BundleResource>
@@ -8831,9 +9701,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\site.js">
<Link>Resources\dashboard-ui\scripts\site.js</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\slideshow.js">
- <Link>Resources\dashboard-ui\scripts\slideshow.js</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\songs.js">
<Link>Resources\dashboard-ui\scripts\songs.js</Link>
</BundleResource>
@@ -8960,6 +9827,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\strings\fi.json">
<Link>Resources\dashboard-ui\strings\fi.json</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\strings\fr-CA.json">
+ <Link>Resources\dashboard-ui\strings\fr-CA.json</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\strings\fr.json">
<Link>Resources\dashboard-ui\strings\fr.json</Link>
</BundleResource>
diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index e3c4541f0..48d2df7ce 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -54,7 +54,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> diff --git a/MediaBrowser.Server.Mono/packages.config b/MediaBrowser.Server.Mono/packages.config index 99bcc7f4b..238025a78 100644 --- a/MediaBrowser.Server.Mono/packages.config +++ b/MediaBrowser.Server.Mono/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="Mono.Posix" version="4.0.0.0" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index a54380850..269c30669 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -97,6 +97,7 @@ using System.Globalization; using System.IO; using System.Linq; using System.Net; +using System.Net.Sockets; using System.Reflection; using System.Threading; using System.Threading.Tasks; @@ -322,7 +323,7 @@ namespace MediaBrowser.Server.Startup.Common { TaskManager.SuspendTriggers = true; } - + await base.RunStartupTasks().ConfigureAwait(false); Logger.Info("ServerId: {0}", SystemId); @@ -374,6 +375,7 @@ namespace MediaBrowser.Server.Startup.Common var migrations = new List<IVersionMigration> { new OmdbEpisodeProviderMigration(ServerConfigurationManager), + new MovieDbEpisodeProviderMigration(ServerConfigurationManager), new DbMigration(ServerConfigurationManager, TaskManager) }; @@ -1133,7 +1135,7 @@ namespace MediaBrowser.Server.Startup.Common if (address != null) { - return GetLocalApiUrl(address.ToString()); + return GetLocalApiUrl(address); } return null; @@ -1147,6 +1149,16 @@ namespace MediaBrowser.Server.Startup.Common } } + public string GetLocalApiUrl(IPAddress ipAddress) + { + if (ipAddress.AddressFamily == AddressFamily.InterNetworkV6) + { + return GetLocalApiUrl("[" + ipAddress + "]"); + } + + return GetLocalApiUrl(ipAddress.ToString()); + } + public string GetLocalApiUrl(string host) { return string.Format("http://{0}:{1}", @@ -1179,7 +1191,7 @@ namespace MediaBrowser.Server.Startup.Common return true; } - var apiUrl = GetLocalApiUrl(address.ToString()); + var apiUrl = GetLocalApiUrl(address); apiUrl += "/system/ping"; if ((DateTime.UtcNow - _lastAddressCacheClear).TotalMinutes >= 5) diff --git a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj index dbbd054a8..80ce88fa3 100644 --- a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj +++ b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj @@ -33,7 +33,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> @@ -73,6 +73,7 @@ <Compile Include="MbLinkShortcutHandler.cs" /> <Compile Include="Migrations\IVersionMigration.cs" /> <Compile Include="Migrations\DbMigration.cs" /> + <Compile Include="Migrations\MovieDbEpisodeProviderMigration.cs" /> <Compile Include="Migrations\OmdbEpisodeProviderMigration.cs" /> <Compile Include="Migrations\RenameXmlOptions.cs" /> <Compile Include="NativeEnvironment.cs" /> diff --git a/MediaBrowser.Server.Startup.Common/Migrations/MovieDbEpisodeProviderMigration.cs b/MediaBrowser.Server.Startup.Common/Migrations/MovieDbEpisodeProviderMigration.cs new file mode 100644 index 000000000..c2ed0c981 --- /dev/null +++ b/MediaBrowser.Server.Startup.Common/Migrations/MovieDbEpisodeProviderMigration.cs @@ -0,0 +1,47 @@ +using MediaBrowser.Controller.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Server.Startup.Common.Migrations +{ + class MovieDbEpisodeProviderMigration : IVersionMigration + { + private readonly IServerConfigurationManager _config; + private const string _providerName = "TheMovieDb"; + + public MovieDbEpisodeProviderMigration(IServerConfigurationManager config) + { + _config = config; + } + + public void Run() + { + var migrationKey = this.GetType().FullName; + var migrationKeyList = _config.Configuration.Migrations.ToList(); + + if (!migrationKeyList.Contains(migrationKey)) + { + foreach (var metaDataOption in _config.Configuration.MetadataOptions) + { + if (metaDataOption.ItemType == "Episode") + { + var disabledFetchers = metaDataOption.DisabledMetadataFetchers.ToList(); + if (!disabledFetchers.Contains(_providerName)) + { + disabledFetchers.Add(_providerName); + metaDataOption.DisabledMetadataFetchers = disabledFetchers.ToArray(); + } + } + } + + migrationKeyList.Add(migrationKey); + _config.Configuration.Migrations = migrationKeyList.ToArray(); + _config.SaveConfiguration(); + } + + } + } +} diff --git a/MediaBrowser.Server.Startup.Common/packages.config b/MediaBrowser.Server.Startup.Common/packages.config index 99bcc7f4b..238025a78 100644 --- a/MediaBrowser.Server.Startup.Common/packages.config +++ b/MediaBrowser.Server.Startup.Common/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="Mono.Posix" version="4.0.0.0" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index d8eed80bd..6ba91c06f 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -63,7 +63,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="ImageMagickSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index fd2f2c806..5187a1db3 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="ImageMagickSharp" version="1.0.0.18" targetFramework="net45" /> <package id="MediaBrowser.IsoMounting" version="3.0.69" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index 788825a7b..ab8b2a673 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -25,7 +25,6 @@ namespace MediaBrowser.WebDashboard.Api /// <summary> /// Class GetDashboardConfigurationPages /// </summary> - [Route("/dashboard/ConfigurationPages", "GET")] [Route("/web/ConfigurationPages", "GET")] public class GetDashboardConfigurationPages : IReturn<List<ConfigurationPageInfo>> { @@ -39,7 +38,6 @@ namespace MediaBrowser.WebDashboard.Api /// <summary> /// Class GetDashboardConfigurationPage /// </summary> - [Route("/dashboard/ConfigurationPage", "GET")] [Route("/web/ConfigurationPage", "GET")] public class GetDashboardConfigurationPage { @@ -51,7 +49,6 @@ namespace MediaBrowser.WebDashboard.Api } [Route("/web/Package", "GET")] - [Route("/dashboard/Package", "GET")] public class GetDashboardPackage { public string Mode { get; set; } @@ -66,7 +63,6 @@ namespace MediaBrowser.WebDashboard.Api /// Class GetDashboardResource /// </summary> [Route("/web/{ResourceName*}", "GET")] - [Route("/dashboard/{ResourceName*}", "GET")] public class GetDashboardResource { /// <summary> @@ -142,7 +138,7 @@ namespace MediaBrowser.WebDashboard.Api { var page = ServerEntryPoint.Instance.PluginConfigurationPages.First(p => p.Name.Equals(request.Name, StringComparison.OrdinalIgnoreCase)); - return ResultFactory.GetStaticResult(Request, page.Plugin.Version.ToString().GetMD5(), null, null, MimeTypes.GetMimeType("page.html"), () => GetPackageCreator().ModifyHtml(page.GetHtmlStream(), null, _appHost.ApplicationVersion.ToString(), null, false)); + return ResultFactory.GetStaticResult(Request, page.Plugin.Version.ToString().GetMD5(), null, null, MimeTypes.GetMimeType("page.html"), () => GetPackageCreator().ModifyHtml("dummy.html", page.GetHtmlStream(), null, _appHost.ApplicationVersion.ToString(), null, false)); } /// <summary> @@ -312,9 +308,9 @@ namespace MediaBrowser.WebDashboard.Api 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"); @@ -345,6 +341,11 @@ namespace MediaBrowser.WebDashboard.Api DeleteFoldersByName(bowerPath, "grunt"); DeleteFoldersByName(bowerPath, "rollups"); + if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) + { + DeleteFoldersByName(Path.Combine(bowerPath, "emby-webcomponents"), "fonts"); + } + _fileSystem.DeleteDirectory(Path.Combine(bowerPath, "jquery", "src"), true); DeleteCryptoFiles(Path.Combine(bowerPath, "cryptojslib", "components")); @@ -354,6 +355,9 @@ namespace MediaBrowser.WebDashboard.Api DeleteFoldersByName(Path.Combine(bowerPath, "Sortable"), "meteor"); DeleteFoldersByName(Path.Combine(bowerPath, "Sortable"), "st"); DeleteFoldersByName(Path.Combine(bowerPath, "Swiper"), "src"); + DeleteFoldersByName(Path.Combine(bowerPath, "material-design-lite"), "src"); + DeleteFoldersByName(Path.Combine(bowerPath, "material-design-lite"), "utils"); + _fileSystem.DeleteFile(Path.Combine(bowerPath, "material-design-lite", "gulpfile.babel.js")); _fileSystem.DeleteDirectory(Path.Combine(bowerPath, "marked"), true); _fileSystem.DeleteDirectory(Path.Combine(bowerPath, "marked-element"), true); diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index c3db09457..55c3afd9d 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -60,7 +60,7 @@ namespace MediaBrowser.WebDashboard.Api { if (IsCoreHtml(path)) { - resourceStream = await ModifyHtml(resourceStream, mode, appVersion, localizationCulture, enableMinification).ConfigureAwait(false); + resourceStream = await ModifyHtml(path, resourceStream, mode, appVersion, localizationCulture, enableMinification).ConfigureAwait(false); } } else if (IsFormat(path, "js")) @@ -238,13 +238,14 @@ namespace MediaBrowser.WebDashboard.Api /// <summary> /// Modifies the HTML by adding common meta tags, css and js. /// </summary> + /// <param name="path">The path.</param> /// <param name="sourceStream">The source stream.</param> /// <param name="mode">The mode.</param> /// <param name="appVersion">The application version.</param> /// <param name="localizationCulture">The localization culture.</param> /// <param name="enableMinification">if set to <c>true</c> [enable minification].</param> /// <returns>Task{Stream}.</returns> - public async Task<Stream> ModifyHtml(Stream sourceStream, string mode, string appVersion, string localizationCulture, bool enableMinification) + public async Task<Stream> ModifyHtml(string path, Stream sourceStream, string mode, string appVersion, string localizationCulture, bool enableMinification) { using (sourceStream) { @@ -260,12 +261,28 @@ namespace MediaBrowser.WebDashboard.Api { html = ModifyForCordova(html); } + else if (!string.IsNullOrWhiteSpace(path) && !string.Equals(path, "index.html", StringComparison.OrdinalIgnoreCase)) + { + var index = html.IndexOf("<body", StringComparison.OrdinalIgnoreCase); + if (index != -1) + { + html = html.Substring(index); + index = html.IndexOf("</body>", StringComparison.OrdinalIgnoreCase); + if (index != -1) + { + html = html.Substring(0, index+7); + } + } + var mainFile = File.ReadAllText(GetDashboardResourcePath("index.html")); + + html = ReplaceFirst(mainFile, "<div class=\"mainAnimatedPage hide\"></div>", "<div class=\"mainAnimatedPage hide\">" + html + "</div>"); + } if (!string.IsNullOrWhiteSpace(localizationCulture)) { var lang = localizationCulture.Split('-').FirstOrDefault(); - html = html.Replace("<html>", "<html data-culture=\"" + localizationCulture + "\" lang=\"" + lang + "\">"); + html = html.Replace("<html", "<html data-culture=\"" + localizationCulture + "\" lang=\"" + lang + "\""); } if (enableMinification) @@ -294,13 +311,17 @@ namespace MediaBrowser.WebDashboard.Api _logger.ErrorException("Error minifying html", ex); } } - - html = html.Replace("<body>", "<body><paper-drawer-panel class=\"mainDrawerPanel mainDrawerPanelPreInit\" forceNarrow><div class=\"mainDrawer\" drawer></div><div class=\"mainDrawerPanelContent\" main><!--<div class=\"pageContainer\">") - .Replace("</body>", "</div>--></div></paper-drawer-panel></body>"); } html = html.Replace("<head>", "<head>" + GetMetaTags(mode) + GetCommonCss(mode, appVersion)); + // Disable embedded scripts from plugins. We'll run them later once resources have loaded + if (html.IndexOf("<script", StringComparison.OrdinalIgnoreCase) != -1) + { + html = html.Replace("<script", "<!--<script"); + html = html.Replace("</script>", "</script>-->"); + } + html = html.Replace("</body>", GetCommonJavascript(mode, appVersion) + "</body>"); var bytes = Encoding.UTF8.GetBytes(html); @@ -309,6 +330,16 @@ namespace MediaBrowser.WebDashboard.Api } } + public string ReplaceFirst(string text, string search, string replace) + { + int pos = text.IndexOf(search, StringComparison.OrdinalIgnoreCase); + if (pos < 0) + { + return text; + } + return text.Substring(0, pos) + replace + text.Substring(pos + search.Length); + } + private string ModifyForCordova(string html) { // Replace CORDOVA_REPLACE_SUPPORTER_SUBMIT_START @@ -436,14 +467,7 @@ namespace MediaBrowser.WebDashboard.Api var files = new List<string>(); - if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) - { - files.Add("bower_components/requirejs/require.js"); - } - else - { - files.Add("bower_components" + version + "/requirejs/require.js"); - } + files.Add("bower_components/requirejs/require.js"); files.Add("scripts/site.js" + versionString); diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index b8bb397fc..ea91d0b2d 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -49,7 +49,7 @@ <ItemGroup>
<Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath>
+ <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath>
</Reference>
<Reference Include="Patterns.Logging">
<HintPath>..\packages\Patterns.Logging.1.0.0.2\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.Logging.dll</HintPath>
@@ -140,9 +140,18 @@ <Content Include="dashboard-ui\components\remotecontrolautoplay.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\components\viewcontainer-lite.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\devices\windowsphone\wp.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\home.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\legacy\fnchecked.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\legacy\buttonenabled.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -260,6 +269,12 @@ <Content Include="dashboard-ui\legacy\dashboard.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\legacy\objectassign.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\legacy\selectmenu.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\livetvguideprovider.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -269,6 +284,9 @@ <Content Include="dashboard-ui\livetvtunerprovider-m3u.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\livetvtunerprovider-satip.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\mypreferenceshome.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -281,7 +299,7 @@ <Content Include="dashboard-ui\robots.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\globalize.js">
+ <Content Include="dashboard-ui\scripts\autobackdrops.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\scripts\homenextup.js">
@@ -299,6 +317,9 @@ <Content Include="dashboard-ui\scripts\livetvtunerprovider-m3u.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\scripts\livetvtunerprovider-satip.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\scripts\localsync.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -338,9 +359,6 @@ <Content Include="dashboard-ui\components\sharingwidget.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\slideshow.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\scripts\supporterkeypage.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -859,9 +877,6 @@ <Content Include="dashboard-ui\nowplaying.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\backdrops.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\scripts\channelitems.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -1609,84 +1624,9 @@ </Content>
</ItemGroup>
<ItemGroup>
- <None Include="dashboard-ui\css\fonts\roboto\RobotoBold.woff">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\RobotoLight.woff">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\RobotoMedium.woff">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\RobotoRegular.woff">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\RobotoThin.woff">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\-L14Jk06m6pUHB-5mXQQnRJtnKITppOI_IvcXXDNrsc.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\0eC6fl06luXEYWpBSJvXCBJtnKITppOI_IvcXXDNrsc.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\2tsd397wLxj96qwHyNIkxPesZW2xOQ-xsNqO47m55DA.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\aZMswpodYeVhtRvuABJWvBTbgVql8nDJpwnrE27mub0.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\CWB0XYA8bzo0kSThX0UTuA.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\e7MeVAyvogMqFwwl61PKhBTbgVql8nDJpwnrE27mub0.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\Fl4y0QdOxyyTHEGMXX8kcRJtnKITppOI_IvcXXDNrsc.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\frNV30OaYdlFRtH2VnZZdhTbgVql8nDJpwnrE27mub0.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\gwVJDERN2Amz39wrSoZ7FxTbgVql8nDJpwnrE27mub0.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
<None Include="dashboard-ui\css\fonts\Montserrat.woff">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Include="dashboard-ui\css\fonts\roboto\Hgo13k-tfSpn0qi1SFdUfVtXRa8TVwTICgirnJhmVJw.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\I3S1wsgSg9YCurV6PUkTORJtnKITppOI_IvcXXDNrsc.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\NYDWBdD4gIq26G5XYbHsFBJtnKITppOI_IvcXXDNrsc.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\oOeFwZNlrTefzLYmlVV1UBJtnKITppOI_IvcXXDNrsc.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\Pru33qjShpZSmG3z6VYwnRJtnKITppOI_IvcXXDNrsc.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\ty9dfvLAziwdqQ2dHoyjphTbgVql8nDJpwnrE27mub0.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="dashboard-ui\css\fonts\roboto\VvXUGKZXbHtX_S_VCTLpGhTbgVql8nDJpwnrE27mub0.woff2">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
<Content Include="dashboard-ui\strings\ar.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -1798,6 +1738,9 @@ <None Include="dashboard-ui\manifest.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
+ <None Include="dashboard-ui\strings\fr-CA.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
<None Include="dashboard-ui\strings\hu.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
diff --git a/MediaBrowser.WebDashboard/packages.config b/MediaBrowser.WebDashboard/packages.config index f1f929f90..eecb6bec2 100644 --- a/MediaBrowser.WebDashboard/packages.config +++ b/MediaBrowser.WebDashboard/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="MediaBrowser.ApiClient.Javascript" version="3.0.249" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> <package id="WebMarkupMin.Core" version="1.0.1" targetFramework="net45" /> diff --git a/MediaBrowser.XbmcMetadata/EntryPoint.cs b/MediaBrowser.XbmcMetadata/EntryPoint.cs index 1c68a5046..0844f1f74 100644 --- a/MediaBrowser.XbmcMetadata/EntryPoint.cs +++ b/MediaBrowser.XbmcMetadata/EntryPoint.cs @@ -8,6 +8,7 @@ using MediaBrowser.Model.Logging; using MediaBrowser.XbmcMetadata.Configuration; using MediaBrowser.XbmcMetadata.Savers; using System; +using System.Linq; namespace MediaBrowser.XbmcMetadata { @@ -49,11 +50,11 @@ namespace MediaBrowser.XbmcMetadata return; } - var items = _libraryManager.GetItems(new InternalItemsQuery + var items = _libraryManager.GetItemList(new InternalItemsQuery { Person = person.Name - }).Items; + }).ToList(); foreach (var item in items) { diff --git a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj index 73f4266fb..d95d8f12d 100644 --- a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj +++ b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj @@ -33,7 +33,7 @@ <ItemGroup> <Reference Include="CommonIO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\CommonIO.1.0.0.8\lib\net45\CommonIO.dll</HintPath> + <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="Patterns.Logging"> <HintPath>..\packages\Patterns.Logging.1.0.0.2\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.Logging.dll</HintPath> diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 30243ff57..cb74d4dd7 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -180,7 +180,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers } catch (XmlException) { - + } } } @@ -195,8 +195,20 @@ namespace MediaBrowser.XbmcMetadata.Parsers item.SetProviderId(MetadataProviders.Imdb, m.Value); } - // TODO: Support Tmdb + // Support Tmdb // http://www.themoviedb.org/movie/36557 + var srch = "themoviedb.org/movie/"; + var index = xml.IndexOf(srch, StringComparison.OrdinalIgnoreCase); + + if (index != -1) + { + var tmdbId = xml.Substring(index + srch.Length).TrimEnd('/'); + int value; + if (!string.IsNullOrWhiteSpace(tmdbId) && int.TryParse(tmdbId, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) + { + item.SetProviderId(MetadataProviders.Tmdb, tmdbId); + } + } } protected virtual void FetchDataFromXmlNode(XmlReader reader, MetadataResult<T> itemResult) @@ -649,7 +661,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { val = val.Replace("plugin://plugin.video.youtube/?action=play_video&videoid=", "http://www.youtube.com/watch?v=", StringComparison.OrdinalIgnoreCase); - + hasTrailer.AddTrailerUrl(val, false); } } @@ -848,6 +860,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers break; case "collectionnumber": + case "tmdbcolid": var tmdbCollection = reader.ReadElementContentAsString(); if (!string.IsNullOrWhiteSpace(tmdbCollection)) { diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs index 8d5c2bf20..f27f0a191 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs @@ -11,7 +11,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers { class MovieNfoParser : BaseNfoParser<Video> { - public MovieNfoParser(ILogger logger, IConfigurationManager config) : base(logger, config) + public MovieNfoParser(ILogger logger, IConfigurationManager config) + : base(logger, config) { } @@ -35,21 +36,38 @@ namespace MediaBrowser.XbmcMetadata.Parsers switch (reader.Name) { case "id": - var id = reader.ReadElementContentAsString(); - if (!string.IsNullOrWhiteSpace(id)) { - item.SetProviderId(MetadataProviders.Imdb, id); - } - break; + string imdbId = reader.GetAttribute("IMDB"); + string tmdbId = reader.GetAttribute("TMDB"); + if (string.IsNullOrWhiteSpace(imdbId)) + { + imdbId = reader.ReadElementContentAsString(); + } + if (!string.IsNullOrWhiteSpace(imdbId)) + { + item.SetProviderId(MetadataProviders.Imdb, imdbId); + } + if (!string.IsNullOrWhiteSpace(tmdbId)) + { + item.SetProviderId(MetadataProviders.Tmdb, tmdbId); + } + break; + } case "set": { - var val = reader.ReadElementContentAsString(); var movie = item as Movie; + var tmdbcolid = reader.GetAttribute("tmdbcolid"); + if (!string.IsNullOrWhiteSpace(tmdbcolid) && movie != null) + { + movie.SetProviderId(MetadataProviders.TmdbCollection, tmdbcolid); + } + + var val = reader.ReadElementContentAsString(); if (!string.IsNullOrWhiteSpace(val) && movie != null) { - movie.TmdbCollectionName = val; + movie.CollectionName = val; } break; diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 03dba56e0..d5b5428c0 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -27,13 +27,29 @@ namespace MediaBrowser.XbmcMetadata.Parsers switch (reader.Name) { case "id": - string id = reader.ReadElementContentAsString(); - if (!string.IsNullOrWhiteSpace(id)) { - item.SetProviderId(MetadataProviders.Tvdb, id); - } - break; + string imdbId = reader.GetAttribute("IMDB"); + string tmdbId = reader.GetAttribute("TMDB"); + string tvdbId = reader.GetAttribute("TVDB"); + if (string.IsNullOrWhiteSpace(tvdbId)) + { + tvdbId = reader.ReadElementContentAsString(); + } + if (!string.IsNullOrWhiteSpace(imdbId)) + { + item.SetProviderId(MetadataProviders.Imdb, imdbId); + } + if (!string.IsNullOrWhiteSpace(tmdbId)) + { + item.SetProviderId(MetadataProviders.Tmdb, tmdbId); + } + if (!string.IsNullOrWhiteSpace(tvdbId)) + { + item.SetProviderId(MetadataProviders.Tvcom, tvdbId); + } + break; + } case "airs_dayofweek": { item.AirDays = TVUtils.GetAirDays(reader.ReadElementContentAsString()); diff --git a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs index 3734f3f36..0b8ce9712 100644 --- a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs @@ -101,9 +101,9 @@ namespace MediaBrowser.XbmcMetadata.Savers if (movie != null) { - if (!string.IsNullOrEmpty(movie.TmdbCollectionName)) + if (!string.IsNullOrEmpty(movie.CollectionName)) { - writer.WriteElementString("set", movie.TmdbCollectionName); + writer.WriteElementString("set", movie.CollectionName); } } } diff --git a/MediaBrowser.XbmcMetadata/packages.config b/MediaBrowser.XbmcMetadata/packages.config index 0639208dd..ccef6d686 100644 --- a/MediaBrowser.XbmcMetadata/packages.config +++ b/MediaBrowser.XbmcMetadata/packages.config @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="CommonIO" version="1.0.0.8" targetFramework="net45" /> + <package id="CommonIO" version="1.0.0.9" targetFramework="net45" /> <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 0bb8c830f..10a898785 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common.Internal</id> - <version>3.0.642</version> + <version>3.0.644</version> <title>MediaBrowser.Common.Internal</title> <authors>Luke</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains common components shared by Emby Theater and Emby Server. Not intended for plugin developer consumption.</description> <copyright>Copyright © Emby 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.642" /> + <dependency id="MediaBrowser.Common" version="3.0.644" /> <dependency id="NLog" version="4.2.3" /> <dependency id="SimpleInjector" version="3.1.2" /> </dependencies> diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index a290a424a..616f0ca2a 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common</id> - <version>3.0.642</version> + <version>3.0.644</version> <title>MediaBrowser.Common</title> <authors>Emby Team</authors> <owners>ebr,Luke,scottisafool</owners> diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 2017cc1ae..d17ff16b6 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Model.Signed</id> - <version>3.0.642</version> + <version>3.0.644</version> <title>MediaBrowser.Model - Signed Edition</title> <authors>Emby Team</authors> <owners>ebr,Luke,scottisafool</owners> diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index 36c9ff415..2098bbcfe 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> <id>MediaBrowser.Server.Core</id> - <version>3.0.642</version> + <version>3.0.644</version> <title>Media Browser.Server.Core</title> <authors>Emby Team</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains core components required to build plugins for Emby Server.</description> <copyright>Copyright © Emby 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.642" /> + <dependency id="MediaBrowser.Common" version="3.0.644" /> <dependency id="Interfaces.IO" version="1.0.0.5" /> </dependencies> </metadata> |
