move classes to portable

This commit is contained in:
Luke Pulverenti 2016-11-03 19:35:19 -04:00
parent d0babf322d
commit d5ea8ca3ad
35 changed files with 350 additions and 349 deletions

View File

@ -110,8 +110,34 @@
<Compile Include="Library\Validators\StudiosValidator.cs" />
<Compile Include="Library\Validators\YearsPostScanTask.cs" />
<Compile Include="LiveTv\ChannelImageProvider.cs" />
<Compile Include="LiveTv\EmbyTV\DirectRecorder.cs" />
<Compile Include="LiveTv\EmbyTV\EmbyTV.cs" />
<Compile Include="LiveTv\EmbyTV\EmbyTVRegistration.cs" />
<Compile Include="LiveTv\EmbyTV\EncodedRecorder.cs" />
<Compile Include="LiveTv\EmbyTV\EntryPoint.cs" />
<Compile Include="LiveTv\EmbyTV\IRecorder.cs" />
<Compile Include="LiveTv\EmbyTV\ItemDataProvider.cs" />
<Compile Include="LiveTv\EmbyTV\RecordingHelper.cs" />
<Compile Include="LiveTv\EmbyTV\SeriesTimerManager.cs" />
<Compile Include="LiveTv\EmbyTV\TimerManager.cs" />
<Compile Include="LiveTv\Listings\SchedulesDirect.cs" />
<Compile Include="LiveTv\Listings\XmlTvListingsProvider.cs" />
<Compile Include="LiveTv\LiveStreamHelper.cs" />
<Compile Include="LiveTv\LiveTvConfigurationFactory.cs" />
<Compile Include="LiveTv\LiveTvDtoService.cs" />
<Compile Include="LiveTv\LiveTvManager.cs" />
<Compile Include="LiveTv\LiveTvMediaSourceProvider.cs" />
<Compile Include="LiveTv\ProgramImageProvider.cs" />
<Compile Include="LiveTv\RecordingImageProvider.cs" />
<Compile Include="LiveTv\RefreshChannelsScheduledTask.cs" />
<Compile Include="LiveTv\TunerHosts\BaseTunerHost.cs" />
<Compile Include="LiveTv\TunerHosts\HdHomerun\HdHomerunDiscovery.cs" />
<Compile Include="LiveTv\TunerHosts\HdHomerun\HdHomerunHost.cs" />
<Compile Include="LiveTv\TunerHosts\HdHomerun\HdHomerunLiveStream.cs" />
<Compile Include="LiveTv\TunerHosts\M3uParser.cs" />
<Compile Include="LiveTv\TunerHosts\M3UTunerHost.cs" />
<Compile Include="LiveTv\TunerHosts\MulticastStream.cs" />
<Compile Include="LiveTv\TunerHosts\QueueStream.cs" />
<Compile Include="Logging\PatternsLogger.cs" />
<Compile Include="MediaEncoder\EncodingManager.cs" />
<Compile Include="News\NewsEntryPoint.cs" />
@ -136,6 +162,10 @@
<Compile Include="ScheduledTasks\SystemUpdateTask.cs" />
<Compile Include="ServerManager\ServerManager.cs" />
<Compile Include="ServerManager\WebSocketConnection.cs" />
<Compile Include="Session\HttpSessionController.cs" />
<Compile Include="Session\SessionManager.cs" />
<Compile Include="Session\SessionWebSocketListener.cs" />
<Compile Include="Session\WebSocketController.cs" />
<Compile Include="Sorting\AiredEpisodeOrderComparer.cs" />
<Compile Include="Sorting\AirTimeComparer.cs" />
<Compile Include="Sorting\AlbumArtistComparer.cs" />

View File

@ -9,7 +9,7 @@ using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Logging;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public class DirectRecorder : IRecorder
{

View File

@ -34,10 +34,12 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.FileOrganization;
using Microsoft.Win32;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Threading;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public class EmbyTV : ILiveTvService, ISupportsDirectStreamProvider, ISupportsNewTimerIds, IDisposable
{
@ -58,6 +60,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
private readonly IProviderManager _providerManager;
private readonly IFileOrganizationService _organizationService;
private readonly IMediaEncoder _mediaEncoder;
private readonly IProcessFactory _processFactory;
private readonly ISystemEvents _systemEvents;
public static EmbyTV Current;
@ -67,7 +71,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
private readonly ConcurrentDictionary<string, ActiveRecordingInfo> _activeRecordings =
new ConcurrentDictionary<string, ActiveRecordingInfo>(StringComparer.OrdinalIgnoreCase);
public EmbyTV(IServerApplicationHost appHost, ILogger logger, IJsonSerializer jsonSerializer, IHttpClient httpClient, IServerConfigurationManager config, ILiveTvManager liveTvManager, IFileSystem fileSystem, ILibraryManager libraryManager, ILibraryMonitor libraryMonitor, IProviderManager providerManager, IFileOrganizationService organizationService, IMediaEncoder mediaEncoder)
public EmbyTV(IServerApplicationHost appHost, ILogger logger, IJsonSerializer jsonSerializer, IHttpClient httpClient, IServerConfigurationManager config, ILiveTvManager liveTvManager, IFileSystem fileSystem, ILibraryManager libraryManager, ILibraryMonitor libraryMonitor, IProviderManager providerManager, IFileOrganizationService organizationService, IMediaEncoder mediaEncoder, ITimerFactory timerFactory, IProcessFactory processFactory, ISystemEvents systemEvents)
{
Current = this;
@ -81,11 +85,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
_providerManager = providerManager;
_organizationService = organizationService;
_mediaEncoder = mediaEncoder;
_processFactory = processFactory;
_systemEvents = systemEvents;
_liveTvManager = (LiveTvManager)liveTvManager;
_jsonSerializer = jsonSerializer;
_seriesTimerProvider = new SeriesTimerManager(fileSystem, jsonSerializer, _logger, Path.Combine(DataPath, "seriestimers"));
_timerProvider = new TimerManager(fileSystem, jsonSerializer, _logger, Path.Combine(DataPath, "timers"), _logger);
_timerProvider = new TimerManager(fileSystem, jsonSerializer, _logger, Path.Combine(DataPath, "timers"), _logger, timerFactory);
_timerProvider.TimerFired += _timerProvider_TimerFired;
_config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated;
@ -103,10 +109,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{
_timerProvider.RestartTimers();
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
_systemEvents.Resume += _systemEvents_Resume;
CreateRecordingFolders();
}
private void _systemEvents_Resume(object sender, EventArgs e)
{
_timerProvider.RestartTimers();
}
private void OnRecordingFoldersChanged()
{
CreateRecordingFolders();
@ -230,16 +241,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
}
}
void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
_logger.Info("Power mode changed to {0}", e.Mode);
if (e.Mode == PowerModes.Resume)
{
_timerProvider.RestartTimers();
}
}
public string Name
{
get { return "Emby"; }
@ -987,7 +988,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
_liveStreamsSemaphore.Release();
}
throw new ApplicationException("Tuner not found.");
throw new Exception("Tuner not found.");
}
public async Task<List<MediaSourceInfo>> GetChannelStreamMediaSources(string channelId, CancellationToken cancellationToken)
@ -1030,7 +1031,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
IsInfiniteStream = true,
RequiresOpening = false,
RequiresClosing = false,
Protocol = Model.MediaInfo.MediaProtocol.Http,
Protocol = MediaBrowser.Model.MediaInfo.MediaProtocol.Http,
BufferMs = 0
};
@ -1352,7 +1353,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
timer.StartDate = DateTime.UtcNow.AddSeconds(retryIntervalSeconds);
_timerProvider.AddOrUpdate(timer);
}
else if (File.Exists(recordPath))
else if (_fileSystem.FileExists(recordPath))
{
timer.RecordingPath = recordPath;
timer.Status = RecordingStatus.Completed;
@ -1408,7 +1409,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
.Where(i => i.Status == RecordingStatus.Completed && !string.IsNullOrWhiteSpace(i.RecordingPath))
.Where(i => string.Equals(i.SeriesTimerId, seriesTimerId, StringComparison.OrdinalIgnoreCase))
.OrderByDescending(i => i.EndDate)
.Where(i => File.Exists(i.RecordingPath))
.Where(i => _fileSystem.FileExists(i.RecordingPath))
.Skip(seriesTimer.KeepUpTo - 1)
.ToList();
@ -1456,13 +1457,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{
try
{
File.Delete(timer.RecordingPath);
_fileSystem.DeleteFile(timer.RecordingPath);
}
catch (DirectoryNotFoundException)
{
}
catch (FileNotFoundException)
catch (IOException)
{
}
@ -1518,7 +1515,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
if (regInfo.IsValid)
{
return new EncodedRecorder(_logger, _fileSystem, _mediaEncoder, _config.ApplicationPaths, _jsonSerializer, config, _httpClient);
return new EncodedRecorder(_logger, _fileSystem, _mediaEncoder, _config.ApplicationPaths, _jsonSerializer, config, _httpClient, _processFactory);
}
}
@ -1574,7 +1571,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{
var nfoPath = Path.Combine(seriesPath, "tvshow.nfo");
if (File.Exists(nfoPath))
if (_fileSystem.FileExists(nfoPath))
{
return;
}
@ -1609,7 +1606,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{
var nfoPath = Path.ChangeExtension(recordingPath, ".nfo");
if (File.Exists(nfoPath))
if (_fileSystem.FileExists(nfoPath))
{
return;
}
@ -1930,7 +1927,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
var defaultFolder = RecordingPath;
var defaultName = "Recordings";
if (Directory.Exists(defaultFolder))
if (_fileSystem.DirectoryExists(defaultFolder))
{
list.Add(new VirtualFolderInfo
{
@ -1940,7 +1937,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
}
var customPath = GetConfiguration().MovieRecordingPath;
if ((!string.IsNullOrWhiteSpace(customPath) && !string.Equals(customPath, defaultFolder, StringComparison.OrdinalIgnoreCase)) && Directory.Exists(customPath))
if ((!string.IsNullOrWhiteSpace(customPath) && !string.Equals(customPath, defaultFolder, StringComparison.OrdinalIgnoreCase)) && _fileSystem.DirectoryExists(customPath))
{
list.Add(new VirtualFolderInfo
{
@ -1951,7 +1948,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
}
customPath = GetConfiguration().SeriesRecordingPath;
if ((!string.IsNullOrWhiteSpace(customPath) && !string.Equals(customPath, defaultFolder, StringComparison.OrdinalIgnoreCase)) && Directory.Exists(customPath))
if ((!string.IsNullOrWhiteSpace(customPath) && !string.Equals(customPath, defaultFolder, StringComparison.OrdinalIgnoreCase)) && _fileSystem.DirectoryExists(customPath))
{
list.Add(new VirtualFolderInfo
{

View File

@ -1,7 +1,7 @@
using System.Threading.Tasks;
using MediaBrowser.Common.Security;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public class EmbyTVRegistration : IRequiresRegistration
{

View File

@ -13,13 +13,14 @@ using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public class EncodedRecorder : IRecorder
{
@ -32,11 +33,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
private bool _hasExited;
private Stream _logFileStream;
private string _targetPath;
private Process _process;
private IProcess _process;
private readonly IProcessFactory _processFactory;
private readonly IJsonSerializer _json;
private readonly TaskCompletionSource<bool> _taskCompletionSource = new TaskCompletionSource<bool>();
public EncodedRecorder(ILogger logger, IFileSystem fileSystem, IMediaEncoder mediaEncoder, IServerApplicationPaths appPaths, IJsonSerializer json, LiveTvOptions liveTvOptions, IHttpClient httpClient)
public EncodedRecorder(ILogger logger, IFileSystem fileSystem, IMediaEncoder mediaEncoder, IServerApplicationPaths appPaths, IJsonSerializer json, LiveTvOptions liveTvOptions, IHttpClient httpClient, IProcessFactory processFactory)
{
_logger = logger;
_fileSystem = fileSystem;
@ -45,6 +47,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
_json = json;
_liveTvOptions = liveTvOptions;
_httpClient = httpClient;
_processFactory = processFactory;
}
private string OutputFormat
@ -82,27 +85,23 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
_targetPath = targetFile;
_fileSystem.CreateDirectory(Path.GetDirectoryName(targetFile));
var process = new Process
var process = _processFactory.Create(new ProcessOptions
{
StartInfo = new ProcessStartInfo
{
CreateNoWindow = true,
UseShellExecute = false,
CreateNoWindow = true,
UseShellExecute = false,
// Must consume both stdout and stderr or deadlocks may occur
//RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
// Must consume both stdout and stderr or deadlocks may occur
//RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
FileName = _mediaEncoder.EncoderPath,
Arguments = GetCommandLineArgs(mediaSource, inputFile, targetFile, duration),
WindowStyle = ProcessWindowStyle.Hidden,
ErrorDialog = false
},
FileName = _mediaEncoder.EncoderPath,
Arguments = GetCommandLineArgs(mediaSource, inputFile, targetFile, duration),
IsHidden = true,
ErrorDialog = false,
EnableRaisingEvents = true
};
});
_process = process;
@ -251,7 +250,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
/// <summary>
/// Processes the exited.
/// </summary>
private void OnFfMpegProcessExited(Process process, string inputFile)
private void OnFfMpegProcessExited(IProcess process, string inputFile)
{
_hasExited = true;

View File

@ -1,6 +1,6 @@
using MediaBrowser.Controller.Plugins;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public class EntryPoint : IServerEntryPoint
{

View File

@ -3,7 +3,7 @@ using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Dto;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public interface IRecorder
{

View File

@ -8,7 +8,7 @@ using MediaBrowser.Common.IO;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public class ItemDataProvider<T>
where T : class
@ -54,9 +54,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
catch (FileNotFoundException)
{
}
catch (DirectoryNotFoundException)
{
}
catch (IOException ex)
{
Logger.ErrorException("Error deserializing {0}", ex, jsonFile);

View File

@ -4,7 +4,7 @@ using System;
using System.Globalization;
using MediaBrowser.Model.LiveTv;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
internal class RecordingHelper
{

View File

@ -6,7 +6,7 @@ using MediaBrowser.Common.IO;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public class SeriesTimerManager : ItemDataProvider<SeriesTimerInfo>
{

View File

@ -12,20 +12,23 @@ using MediaBrowser.Common.IO;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.Threading;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
public class TimerManager : ItemDataProvider<TimerInfo>
{
private readonly ConcurrentDictionary<string, Timer> _timers = new ConcurrentDictionary<string, Timer>(StringComparer.OrdinalIgnoreCase);
private readonly ConcurrentDictionary<string, ITimer> _timers = new ConcurrentDictionary<string, ITimer>(StringComparer.OrdinalIgnoreCase);
private readonly ILogger _logger;
public event EventHandler<GenericEventArgs<TimerInfo>> TimerFired;
private readonly ITimerFactory _timerFactory;
public TimerManager(IFileSystem fileSystem, IJsonSerializer jsonSerializer, ILogger logger, string dataPath, ILogger logger1)
public TimerManager(IFileSystem fileSystem, IJsonSerializer jsonSerializer, ILogger logger, string dataPath, ILogger logger1, ITimerFactory timerFactory)
: base(fileSystem, jsonSerializer, logger, dataPath, (r1, r2) => string.Equals(r1.Id, r2.Id, StringComparison.OrdinalIgnoreCase))
{
_logger = logger1;
_timerFactory = timerFactory;
}
public void RestartTimers()
@ -126,7 +129,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
private void StartTimer(TimerInfo item, TimeSpan dueTime)
{
var timer = new Timer(TimerCallback, item.Id, dueTime, TimeSpan.Zero);
var timer = _timerFactory.Create(TimerCallback, item.Id, dueTime, TimeSpan.Zero);
if (_timers.TryAdd(item.Id, timer))
{
@ -141,7 +144,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
private void StopTimer(TimerInfo item)
{
Timer timer;
ITimer timer;
if (_timers.TryRemove(item.Id, out timer))
{
timer.Dispose();

View File

@ -16,7 +16,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.LiveTv.Listings
namespace Emby.Server.Implementations.LiveTv.Listings
{
public class SchedulesDirect : IListingsProvider
{
@ -589,13 +589,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
{
var imageIdString = "[";
programIds.ForEach(i =>
foreach (var i in programIds)
{
if (!imageIdString.Contains(i.Substring(0, 10)))
{
imageIdString += "\"" + i.Substring(0, 10) + "\",";
}
});
}
imageIdString = imageIdString.TrimEnd(',') + "]";
var httpOptions = new HttpRequestOptions()
@ -822,7 +823,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
return root.token;
}
throw new ApplicationException("Could not authenticate with Schedules Direct Error: " + root.message);
throw new Exception("Could not authenticate with Schedules Direct Error: " + root.message);
}
}

View File

@ -15,21 +15,24 @@ using Emby.XmlTv.Entities;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
namespace MediaBrowser.Server.Implementations.LiveTv.Listings
namespace Emby.Server.Implementations.LiveTv.Listings
{
public class XmlTvListingsProvider : IListingsProvider
{
private readonly IServerConfigurationManager _config;
private readonly IHttpClient _httpClient;
private readonly ILogger _logger;
private readonly IFileSystem _fileSystem;
public XmlTvListingsProvider(IServerConfigurationManager config, IHttpClient httpClient, ILogger logger)
public XmlTvListingsProvider(IServerConfigurationManager config, IHttpClient httpClient, ILogger logger, IFileSystem fileSystem)
{
_config = config;
_httpClient = httpClient;
_logger = logger;
_fileSystem = fileSystem;
}
public string Name
@ -58,7 +61,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
var cacheFilename = DateTime.UtcNow.DayOfYear.ToString(CultureInfo.InvariantCulture) + "-" + DateTime.UtcNow.Hour.ToString(CultureInfo.InvariantCulture) + ".xml";
var cacheFile = Path.Combine(_config.ApplicationPaths.CachePath, "xmltv", cacheFilename);
if (File.Exists(cacheFile))
if (_fileSystem.FileExists(cacheFile))
{
return cacheFile;
}
@ -78,13 +81,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
}).ConfigureAwait(false);
Directory.CreateDirectory(Path.GetDirectoryName(cacheFile));
_fileSystem.CreateDirectory(Path.GetDirectoryName(cacheFile));
using (var stream = File.OpenRead(tempFile))
using (var stream = _fileSystem.OpenRead(tempFile))
{
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
using (var fileStream = File.OpenWrite(cacheFile))
using (var fileStream = _fileSystem.GetFileStream(cacheFile, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read))
{
using (var writer = new StreamWriter(fileStream))
{
@ -138,10 +141,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
IsSeries = p.Episode != null,
IsRepeat = p.IsRepeat,
IsPremiere = p.Premiere != null,
IsKids = p.Categories.Any(c => info.KidsCategories.Contains(c, StringComparer.InvariantCultureIgnoreCase)),
IsMovie = p.Categories.Any(c => info.MovieCategories.Contains(c, StringComparer.InvariantCultureIgnoreCase)),
IsNews = p.Categories.Any(c => info.NewsCategories.Contains(c, StringComparer.InvariantCultureIgnoreCase)),
IsSports = p.Categories.Any(c => info.SportsCategories.Contains(c, StringComparer.InvariantCultureIgnoreCase)),
IsKids = p.Categories.Any(c => info.KidsCategories.Contains(c, StringComparer.OrdinalIgnoreCase)),
IsMovie = p.Categories.Any(c => info.MovieCategories.Contains(c, StringComparer.OrdinalIgnoreCase)),
IsNews = p.Categories.Any(c => info.NewsCategories.Contains(c, StringComparer.OrdinalIgnoreCase)),
IsSports = p.Categories.Any(c => info.SportsCategories.Contains(c, StringComparer.OrdinalIgnoreCase)),
ImageUrl = p.Icon != null && !String.IsNullOrEmpty(p.Icon.Source) ? p.Icon.Source : null,
HasImage = p.Icon != null && !String.IsNullOrEmpty(p.Icon.Source),
OfficialRating = p.Rating != null && !String.IsNullOrEmpty(p.Rating.Value) ? p.Rating.Value : null,
@ -177,7 +180,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
if (channels != null)
{
channels.ForEach(c =>
foreach (var c in channels)
{
var channelNumber = info.GetMappedChannel(c.Number);
var match = results.FirstOrDefault(r => string.Equals(r.Id, channelNumber, StringComparison.OrdinalIgnoreCase));
@ -186,14 +189,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
{
c.ImageUrl = match.Icon.Source;
}
});
}
}
}
public Task Validate(ListingsProviderInfo info, bool validateLogin, bool validateListings)
{
// Assume all urls are valid. check files for existence
if (!info.Path.StartsWith("http", StringComparison.OrdinalIgnoreCase) && !File.Exists(info.Path))
if (!info.Path.StartsWith("http", StringComparison.OrdinalIgnoreCase) && !_fileSystem.FileExists(info.Path))
{
throw new FileNotFoundException("Could not find the XmlTv file specified:", info.Path);
}

View File

@ -8,7 +8,7 @@ using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Logging;
namespace MediaBrowser.Server.Implementations.LiveTv
namespace Emby.Server.Implementations.LiveTv
{
public class LiveStreamHelper
{
@ -57,7 +57,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
mediaSource.RunTimeTicks = null;
}
var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Audio);
var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaBrowser.Model.Entities.MediaStreamType.Audio);
if (audioStream == null || audioStream.Index == -1)
{
@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
mediaSource.DefaultAudioStreamIndex = audioStream.Index;
}
var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Video);
var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaBrowser.Model.Entities.MediaStreamType.Video);
if (videoStream != null)
{
if (!videoStream.BitRate.HasValue)

View File

@ -2,7 +2,7 @@
using MediaBrowser.Model.LiveTv;
using System.Collections.Generic;
namespace MediaBrowser.Server.Implementations.LiveTv
namespace Emby.Server.Implementations.LiveTv
{
public class LiveTvConfigurationFactory : IConfigurationFactory
{

View File

@ -14,7 +14,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.LiveTv
namespace Emby.Server.Implementations.LiveTv
{
public class LiveTvDtoService
{

View File

@ -25,8 +25,6 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.IO;
using IniParser;
using IniParser.Model;
using MediaBrowser.Common.Events;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Security;
@ -37,9 +35,9 @@ using MediaBrowser.Model.Events;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Tasks;
using MediaBrowser.Server.Implementations.LiveTv.Listings;
using Emby.Server.Implementations.LiveTv.Listings;
namespace MediaBrowser.Server.Implementations.LiveTv
namespace Emby.Server.Implementations.LiveTv
{
/// <summary>
/// Class LiveTvManager
@ -2967,43 +2965,46 @@ namespace MediaBrowser.Server.Implementations.LiveTv
public List<NameValuePair> GetSatIniMappings()
{
var names = GetType().Assembly.GetManifestResourceNames().Where(i => i.IndexOf("SatIp.ini", StringComparison.OrdinalIgnoreCase) != -1).ToList();
return new List<NameValuePair>();
//var names = GetType().Assembly.GetManifestResourceNames().Where(i => i.IndexOf("SatIp.ini", StringComparison.OrdinalIgnoreCase) != -1).ToList();
return names.Select(GetSatIniMappings).Where(i => i != null).DistinctBy(i => i.Value.Split('|')[0]).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);
return new NameValuePair();
//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"];
// var satType1 = data["SATTYPE"]["1"];
// var satType2 = data["SATTYPE"]["2"];
if (string.IsNullOrWhiteSpace(satType2))
{
return null;
}
// if (string.IsNullOrWhiteSpace(satType2))
// {
// return null;
// }
var srch = "SatIp.ini.";
var filename = Path.GetFileName(resource);
// var srch = "SatIp.ini.";
// var filename = Path.GetFileName(resource);
return new NameValuePair
{
Name = satType1 + " " + satType2,
Value = satType2 + "|" + filename.Substring(filename.IndexOf(srch) + srch.Length)
};
}
}
// return new NameValuePair
// {
// Name = satType1 + " " + satType2,
// Value = satType2 + "|" + filename.Substring(filename.IndexOf(srch) + srch.Length)
// };
// }
//}
}
public Task<List<ChannelInfo>> GetSatChannelScanResult(TunerHostInfo info, CancellationToken cancellationToken)
{
return new TunerHosts.SatIp.ChannelScan(_logger).Scan(info, cancellationToken);
return Task.FromResult(new List<ChannelInfo>());
//return new TunerHosts.SatIp.ChannelScan(_logger).Scan(info, cancellationToken);
}
public Task<List<ChannelInfo>> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken)

View File

@ -15,7 +15,7 @@ using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Dlna;
namespace MediaBrowser.Server.Implementations.LiveTv
namespace Emby.Server.Implementations.LiveTv
{
public class LiveTvMediaSourceProvider : IMediaSourceProvider
{
@ -164,7 +164,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
// Null this out so that it will be treated like a live stream
mediaSource.RunTimeTicks = null;
var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Audio);
var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaBrowser.Model.Entities.MediaStreamType.Audio);
if (audioStream == null || audioStream.Index == -1)
{
@ -175,7 +175,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
mediaSource.DefaultAudioStreamIndex = audioStream.Index;
}
var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Video);
var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaBrowser.Model.Entities.MediaStreamType.Video);
if (videoStream != null)
{
if (!videoStream.BitRate.HasValue)

View File

@ -7,7 +7,7 @@ using System.Linq;
using System.Threading.Tasks;
using MediaBrowser.Model.Tasks;
namespace MediaBrowser.Server.Implementations.LiveTv
namespace Emby.Server.Implementations.LiveTv
{
public class RefreshChannelsScheduledTask : IScheduledTask, IConfigurableScheduledTask
{

View File

@ -15,7 +15,7 @@ using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Serialization;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
public abstract class BaseTunerHost
{

View File

@ -14,7 +14,7 @@ using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Serialization;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
public class HdHomerunDiscovery : IServerEntryPoint
{

View File

@ -24,7 +24,7 @@ using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Net;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
public class HdHomerunHost : BaseTunerHost, ITunerHost, IConfigurableTunerHost
{
@ -59,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
private string GetChannelId(TunerHostInfo info, Channels i)
{
var id = ChannelIdPrefix + i.GuideNumber.ToString(CultureInfo.InvariantCulture);
var id = ChannelIdPrefix + i.GuideNumber;
if (info.DataVersion >= 1)
{
@ -97,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
return lineup.Select(i => new ChannelInfo
{
Name = i.GuideName,
Number = i.GuideNumber.ToString(CultureInfo.InvariantCulture),
Number = i.GuideNumber,
Id = GetChannelId(info, i),
IsFavorite = i.Favorite,
TunerHostId = info.Id,

View File

@ -10,14 +10,8 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Server.Implementations.LiveTv.EmbyTV;
using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.IO;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
public class HdHomerunLiveStream : LiveStream, IDirectStreamProvider
{

View File

@ -19,9 +19,8 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Server.Implementations.LiveTv.EmbyTV;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
public class M3UTunerHost : BaseTunerHost, ITunerHost, IConfigurableTunerHost
{

View File

@ -14,7 +14,7 @@ using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.Logging;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
public class M3uParser
{

View File

@ -7,7 +7,7 @@ using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Logging;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
public class MulticastStream
{

View File

@ -8,7 +8,7 @@ using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Logging;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
public class QueueStream
{

View File

@ -12,7 +12,7 @@ using System.Net;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.Session
namespace Emby.Server.Implementations.Session
{
public class HttpSessionController : ISessionController, IDisposable
{

View File

@ -30,8 +30,9 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Threading;
namespace MediaBrowser.Server.Implementations.Session
namespace Emby.Server.Implementations.Session
{
/// <summary>
/// Class SessionManager
@ -61,6 +62,7 @@ namespace MediaBrowser.Server.Implementations.Session
private readonly IAuthenticationRepository _authRepo;
private readonly IDeviceManager _deviceManager;
private readonly ITimerFactory _timerFactory;
/// <summary>
/// The _active connections
@ -94,7 +96,7 @@ namespace MediaBrowser.Server.Implementations.Session
private readonly SemaphoreSlim _sessionLock = new SemaphoreSlim(1, 1);
public SessionManager(IUserDataManager userDataManager, ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IMusicManager musicManager, IDtoService dtoService, IImageProcessor imageProcessor, IJsonSerializer jsonSerializer, IServerApplicationHost appHost, IHttpClient httpClient, IAuthenticationRepository authRepo, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager)
public SessionManager(IUserDataManager userDataManager, ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IMusicManager musicManager, IDtoService dtoService, IImageProcessor imageProcessor, IJsonSerializer jsonSerializer, IServerApplicationHost appHost, IHttpClient httpClient, IAuthenticationRepository authRepo, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager, ITimerFactory timerFactory)
{
_userDataManager = userDataManager;
_logger = logger;
@ -109,6 +111,7 @@ namespace MediaBrowser.Server.Implementations.Session
_authRepo = authRepo;
_deviceManager = deviceManager;
_mediaSourceManager = mediaSourceManager;
_timerFactory = timerFactory;
_deviceManager.DeviceOptionsUpdated += _deviceManager_DeviceOptionsUpdated;
}
@ -503,13 +506,13 @@ namespace MediaBrowser.Server.Implementations.Session
return users;
}
private Timer _idleTimer;
private ITimer _idleTimer;
private void StartIdleCheckTimer()
{
if (_idleTimer == null)
{
_idleTimer = new Timer(CheckForIdlePlayback, null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5));
_idleTimer = _timerFactory.Create(CheckForIdlePlayback, null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5));
}
}
private void StopIdleCheckTimer()

View File

@ -11,7 +11,7 @@ using System.Linq;
using System.Threading.Tasks;
using MediaBrowser.Model.Services;
namespace MediaBrowser.Server.Implementations.Session
namespace Emby.Server.Implementations.Session
{
/// <summary>
/// Class SessionWebSocketListener

View File

@ -11,7 +11,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.Session
namespace Emby.Server.Implementations.Session
{
public class WebSocketController : ISessionController, IDisposable
{

View File

@ -1,6 +1,7 @@
{
"supports": {},
"dependencies": {
"Emby.XmlTv": "1.0.0.63",
"MediaBrowser.Naming": "1.0.0.59",
"UniversalDetector": "1.0.1"
},

View File

@ -4,6 +4,7 @@ using System.Globalization;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Emby.Server.Implementations.LiveTv.TunerHosts;
using MediaBrowser.Model.IO;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
@ -20,7 +21,6 @@ using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Server.Implementations.LiveTv.EmbyTV;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.SatIp
{

View File

@ -144,32 +144,6 @@
<Compile Include="IO\FileRefresher.cs" />
<Compile Include="IO\LibraryMonitor.cs" />
<Compile Include="IO\MemoryStreamProvider.cs" />
<Compile Include="LiveTv\EmbyTV\DirectRecorder.cs" />
<Compile Include="LiveTv\EmbyTV\EmbyTV.cs" />
<Compile Include="LiveTv\EmbyTV\EmbyTVRegistration.cs" />
<Compile Include="LiveTv\EmbyTV\EncodedRecorder.cs" />
<Compile Include="LiveTv\EmbyTV\EntryPoint.cs" />
<Compile Include="LiveTv\EmbyTV\IRecorder.cs" />
<Compile Include="LiveTv\EmbyTV\ItemDataProvider.cs" />
<Compile Include="LiveTv\EmbyTV\RecordingHelper.cs" />
<Compile Include="LiveTv\EmbyTV\SeriesTimerManager.cs" />
<Compile Include="LiveTv\EmbyTV\TimerManager.cs" />
<Compile Include="LiveTv\Listings\SchedulesDirect.cs" />
<Compile Include="LiveTv\Listings\XmlTvListingsProvider.cs" />
<Compile Include="LiveTv\LiveStreamHelper.cs" />
<Compile Include="LiveTv\LiveTvConfigurationFactory.cs" />
<Compile Include="LiveTv\LiveTvDtoService.cs" />
<Compile Include="LiveTv\LiveTvManager.cs" />
<Compile Include="LiveTv\LiveTvMediaSourceProvider.cs" />
<Compile Include="LiveTv\TunerHosts\BaseTunerHost.cs" />
<Compile Include="LiveTv\TunerHosts\HdHomerun\HdHomerunHost.cs" />
<Compile Include="LiveTv\TunerHosts\HdHomerun\HdHomerunDiscovery.cs" />
<Compile Include="LiveTv\TunerHosts\HdHomerun\HdHomerunLiveStream.cs" />
<Compile Include="LiveTv\TunerHosts\M3uParser.cs" />
<Compile Include="LiveTv\TunerHosts\M3UTunerHost.cs" />
<Compile Include="LiveTv\RefreshChannelsScheduledTask.cs" />
<Compile Include="LiveTv\TunerHosts\MulticastStream.cs" />
<Compile Include="LiveTv\TunerHosts\QueueStream.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\ChannelScan.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\Rtcp\ReportBlock.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\Rtcp\RtcpAppPacket.cs" />
@ -188,8 +162,8 @@
<Compile Include="LiveTv\TunerHosts\SatIp\Rtsp\RtspResponse.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\Rtsp\RtspSession.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\Rtsp\RtspStatusCode.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\SatIpHost.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\SatIpDiscovery.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\SatIpHost.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\TransmissionMode.cs" />
<Compile Include="LiveTv\TunerHosts\SatIp\Utils.cs" />
<Compile Include="Localization\LocalizationManager.cs" />
@ -212,12 +186,6 @@
<Compile Include="Security\AuthenticationRepository.cs" />
<Compile Include="Security\EncryptionManager.cs" />
<Compile Include="ServerApplicationPaths.cs" />
<Compile Include="Session\HttpSessionController.cs" />
<Compile Include="Session\SessionManager.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Session\SessionWebSocketListener.cs" />
<Compile Include="Session\WebSocketController.cs" />
<Compile Include="Persistence\SqliteDisplayPreferencesRepository.cs" />
<Compile Include="Persistence\SqliteItemRepository.cs" />
<Compile Include="Persistence\SqliteUserDataRepository.cs" />
@ -227,6 +195,10 @@
<Compile Include="Udp\UdpServer.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj">
<Project>{e383961b-9356-4d5d-8233-9a1079d03055}</Project>
<Name>Emby.Server.Implementations</Name>
</ProjectReference>
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
<Project>{9142EEFA-7570-41E1-BFCC-468BB571AF2F}</Project>
<Name>MediaBrowser.Common</Name>
@ -360,175 +332,6 @@
<EmbeddedResource Include="Localization\Ratings\au.txt" />
<EmbeddedResource Include="Localization\iso6392.txt" />
<None Include="app.config" />
<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\ar.json" />
<EmbeddedResource Include="Localization\Core\bg-BG.json" />
<EmbeddedResource Include="Localization\Core\ca.json" />
@ -570,6 +373,175 @@
<EmbeddedResource Include="Localization\Core\zh-HK.json" />
<EmbeddedResource Include="Localization\Core\zh-TW.json" />
<EmbeddedResource Include="Localization\countries.json" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0030.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0049.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0070.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0090.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0100.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0130.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0160.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0170.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0192.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0200.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0215.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0235.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0255.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0260.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0282.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0305.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0308.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0310.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0315.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0330.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0360.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0380.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0390.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0400.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0420.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0435.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0450.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0460.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0475.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0480.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0490.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0505.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0510.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0520.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0525.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0530.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0549.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0560.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0570.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0600.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0620.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0642.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0650.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0660.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0685.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0705.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0721.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0740.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0750.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0765.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0785.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0830.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0851.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0865.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0875.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0880.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0900.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0915.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0922.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0935.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0950.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\0965.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1005.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1030.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1055.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1082.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1100.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1105.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1130.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1155.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1160.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1180.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1195.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1222.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1240.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1250.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1280.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1320.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1340.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1380.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1400.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1440.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1500.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1520.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1540.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1560.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1590.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1600 OPTUS D1 FTA %28160.0E%29.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1600.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1620.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1640.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1660.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1690.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1720.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1800.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\1830.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2210.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2230.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2250.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2270.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2290.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2310.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2330.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2350.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2370.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2390.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2410.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2432.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2451.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2470.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2489.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2500.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2527.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2550.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2570.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2590.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2608.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2630.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2650.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2669.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2690.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2710.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2728.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2730.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2750.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2760.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2770.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2780.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2812.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2820.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2830.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2850.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2873.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2880.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2881.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2882.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2900.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2930.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2950.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2970.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2985.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\2990.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3020.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3045.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3070.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3100.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3125.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3150.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3169.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3195.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3225.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3255.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3285.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3300.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3325.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3355.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3380.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3400.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3420.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3450.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3460.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3475.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3490.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3520.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3527.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3550.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3560.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3592.ini" />
<None Include="LiveTv\TunerHosts\SatIp\ini\satellite\3594.ini" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>

View File

@ -62,7 +62,6 @@ using MediaBrowser.Server.Implementations.Localization;
using MediaBrowser.Server.Implementations.Notifications;
using MediaBrowser.Server.Implementations.Persistence;
using MediaBrowser.Server.Implementations.Security;
using MediaBrowser.Server.Implementations.Session;
using MediaBrowser.Server.Implementations.Social;
using MediaBrowser.Server.Implementations.Sync;
using MediaBrowser.Server.Startup.Common.FFMpeg;
@ -108,11 +107,13 @@ using Emby.Server.Implementations.Devices;
using Emby.Server.Implementations.Dto;
using Emby.Server.Implementations.FileOrganization;
using Emby.Server.Implementations.Library;
using Emby.Server.Implementations.LiveTv;
using Emby.Server.Implementations.MediaEncoder;
using Emby.Server.Implementations.Notifications;
using Emby.Server.Implementations.Persistence;
using Emby.Server.Implementations.Playlists;
using Emby.Server.Implementations.ServerManager;
using Emby.Server.Implementations.Session;
using Emby.Server.Implementations.Sync;
using Emby.Server.Implementations.TV;
using Emby.Server.Implementations.Updates;
@ -644,7 +645,7 @@ namespace MediaBrowser.Server.Startup.Common
MediaSourceManager = new MediaSourceManager(ItemRepository, UserManager, LibraryManager, LogManager.GetLogger("MediaSourceManager"), JsonSerializer, FileSystemManager, UserDataManager, TimerFactory);
RegisterSingleInstance(MediaSourceManager);
SessionManager = new SessionManager(UserDataManager, LogManager.GetLogger("SessionManager"), LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, JsonSerializer, this, HttpClient, AuthenticationRepository, DeviceManager, MediaSourceManager);
SessionManager = new SessionManager(UserDataManager, LogManager.GetLogger("SessionManager"), LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, JsonSerializer, this, HttpClient, AuthenticationRepository, DeviceManager, MediaSourceManager, TimerFactory);
RegisterSingleInstance(SessionManager);
var dlnaManager = new DlnaManager(XmlSerializer, FileSystemManager, ApplicationPaths, LogManager.GetLogger("Dlna"), JsonSerializer, this);