Пример #1
0
        private async Task Init()
        {
            var disc   = new DiscoveryRaw();
            var server = await disc.GetMediaServer();

            var discoveredXBMCs = new List <XbmcServer>();

            foreach (var device in server)
            {
                if (device.FriendlyName.StartsWith("XBMC ("))
                {
                    var discoveredXBMC = new XbmcServer(device.FriendlyName, device.ContentDirectoryControlUri);
                    discoveredXBMCs.Add(discoveredXBMC);
                    discoveredXBMC.CheckWebIf();

                    if (await IsXbmcHost(device.ContentDirectoryControlUri))
                    {
                        discoveredXBMC.IsCurrent = true;
                        _xbmcMediaServer         = device;
                    }
                }
            }
            DiscoveredXBMCs = discoveredXBMCs;

            IsAvailable = _xbmcMediaServer != null;

            if (IsAvailable)
            {
                var renderDevices = await disc.GetMediaRenderer();

                var availableRenderDevices = new List <MediaRendererDevice>();
                foreach (var renderer in renderDevices)
                {
//#if !DEBUG
                    if (!(renderer.FriendlyName.StartsWith("XBMC (") &&
                          await IsXbmcHost(renderer.AVTransportControlUrl)))
//#endif
                    {
                        availableRenderDevices.Add(renderer);
                    }
                }
                AvailableRenderDevices = availableRenderDevices.ToArray();

                //MediaRendererDevice rendererUpnp = null;
                //foreach (var device in AvailableRenderDevices)
                //{
                //    if (device.AVTransportControlUrl == null) continue;
                //    if (device.FriendlyName.StartsWith("WDTV"))
                //    {
                //        rendererUpnp = device;
                //        break;
                //    }
                //}
            }
        }
Пример #2
0
        /// <summary>
        /// Stops the UPnP server.
        /// </summary>
        public static void Stop()
        {
            Log.Info("Stopping UPnP/DLNA server...");

            IsRunning = false;

            _ms.Stop();
            _ms.Dispose();
            _ms = null;
            _dw = null;
        }
Пример #3
0
        /// <summary>
        /// Starts the UPnP server.
        /// </summary>
        public static void Start()
        {
            if (IsRunning)
            {
                Log.Info("An UPnP/DLNA server start was requested, but it is already running.");
                Stop();
            }

            if (!Signature.IsActivated)
            {
                Log.Error("An UPnP/DLNA server start was requested, but the software is not activated.");
                return;
            }

            Log.Info("Starting UPnP/DLNA server...");

            _ms = new MediaServerDevice(_di, null, true, "http-get:*:*:*", "");
            _dw = new UPnPDeviceWatcher(_ms._Device);

            var dv = _ms.GetUPnPDevice();

            if (_favicon == null)
            {
                _favicon = new Icon(Application.GetResourceStream(new Uri("pack://application:,,,/RSTVShowTracker;component/tv.ico")).Stream);
                _icon    = new Bitmap(Application.GetResourceStream(new Uri("pack://application:,,,/RSTVShowTracker;component/Images/tv48.png")).Stream);
                _icon2   = new Bitmap(Application.GetResourceStream(new Uri("pack://application:,,,/RSTVShowTracker;component/Images/tv64.png")).Stream);
            }

            dv.favicon = _favicon;
            dv.Icon    = _icon;
            dv.Icon2   = _icon2;

            _ms.Start();

            IsRunning = true;

            _mimes = new HashSet <string>();

            RebuildList();
        }