From 78dba9c668c9b2a40409dd48feeff3b97063a5cc Mon Sep 17 00:00:00 2001 From: nothingmn Date: Thu, 7 Oct 2010 21:34:32 -0700 Subject: [PATCH] Added Media Disco Providers - these will be used to auto detect media providers on the LAN --- NzbDrone.Core/NzbDrone.Core.csproj | 2 + .../Providers/IMediaDiscoveryProvider.cs | 14 ++++++ NzbDrone.Core/Providers/IMediaProvider.cs | 4 +- .../Providers/MediaDiscoveryProvider.cs | 46 +++++++++++++++++++ NzbDrone.Web/Views/Series/index.aspx | 2 + 5 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 NzbDrone.Core/Providers/IMediaDiscoveryProvider.cs create mode 100644 NzbDrone.Core/Providers/MediaDiscoveryProvider.cs diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 7ebdd1cec..13b146c27 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -149,7 +149,9 @@ + + diff --git a/NzbDrone.Core/Providers/IMediaDiscoveryProvider.cs b/NzbDrone.Core/Providers/IMediaDiscoveryProvider.cs new file mode 100644 index 000000000..42dd9315c --- /dev/null +++ b/NzbDrone.Core/Providers/IMediaDiscoveryProvider.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NzbDrone.Core.Providers +{ + interface IMediaDiscoveryProvider + { + void Discover(); + bool DiscoveredMedia { get; } + List Providers { get; } + } +} diff --git a/NzbDrone.Core/Providers/IMediaProvider.cs b/NzbDrone.Core/Providers/IMediaProvider.cs index 00cda8db1..d3789b63b 100644 --- a/NzbDrone.Core/Providers/IMediaProvider.cs +++ b/NzbDrone.Core/Providers/IMediaProvider.cs @@ -5,8 +5,8 @@ using System.Text; namespace NzbDrone.Core.Providers { - interface IMediaProvider - { + public interface IMediaProvider + { void Play(); void Play(string Location); void Play(string Location, bool AddToQueue); diff --git a/NzbDrone.Core/Providers/MediaDiscoveryProvider.cs b/NzbDrone.Core/Providers/MediaDiscoveryProvider.cs new file mode 100644 index 000000000..e09a5097f --- /dev/null +++ b/NzbDrone.Core/Providers/MediaDiscoveryProvider.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NzbDrone.Core.Providers +{ + public class MediaDiscoveryProvider : IMediaDiscoveryProvider + { + #region IMediaDiscoveryProvider Members + + public void Discover() + { + //calling the static instance will kick off the discovery process + OpenSource.UPnP.AudioVideoDevices instance = OpenSource.UPnP.AudioVideoDevices.Instance; + } + + public bool DiscoveredMedia + { + get { return (OpenSource.UPnP.AudioVideoDevices.Instance.Devices.Count > 0); } + } + + private object _lock = new object(); + public List Providers + { + get { + lock (_lock) + { + List list = new List(); + foreach (OpenSource.UPnP.IAVDevice device in OpenSource.UPnP.AudioVideoDevices.Instance.Devices) + { + OpenSource.XBMC.XBMCAVDevice xbmc = (device as OpenSource.XBMC.XBMCAVDevice); + if (xbmc != null) + { + XBMCMediaProvider newX = new XBMCMediaProvider(xbmc); + list.Add(newX); + } + } + return list; + } + } + } + + #endregion + } +} diff --git a/NzbDrone.Web/Views/Series/index.aspx b/NzbDrone.Web/Views/Series/index.aspx index 1b09b0726..ae6cfd0b1 100644 --- a/NzbDrone.Web/Views/Series/index.aspx +++ b/NzbDrone.Web/Views/Series/index.aspx @@ -11,6 +11,8 @@ .Items(items => items.Add().Text("Sync With Disk").Action("Sync", "Series")) .Render(); %> + + sss <%