2
0
Эх сурвалжийг харах

Moved TV into the main project and added Series properties to DTOBaseItem

LukePulverenti Luke Pulverenti luke pulverenti 13 жил өмнө
parent
commit
8b39ed2f63
31 өөрчлөгдсөн 124 нэмэгдсэн , 339 устгасан
  1. 21 3
      MediaBrowser.Api/ApiService.cs
  2. 12 29
      MediaBrowser.Controller/Kernel.cs
  3. 10 1
      MediaBrowser.Controller/MediaBrowser.Controller.csproj
  4. 7 40
      MediaBrowser.Controller/Providers/AudioInfoProvider.cs
  5. 4 3
      MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
  6. 3 18
      MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
  7. 3 4
      MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
  8. 3 3
      MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
  9. 4 4
      MediaBrowser.Controller/Providers/LocalTrailerProvider.cs
  10. 5 6
      MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
  11. 5 7
      MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
  12. 3 4
      MediaBrowser.Controller/Providers/TV/EpisodeXmlParser.cs
  13. 5 7
      MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
  14. 4 5
      MediaBrowser.Controller/Providers/TV/SeriesXmlParser.cs
  15. 4 14
      MediaBrowser.Controller/Providers/VideoInfoProvider.cs
  16. 4 5
      MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
  17. 4 5
      MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs
  18. 5 6
      MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs
  19. 3 3
      MediaBrowser.Controller/Resolvers/TV/TVUtils.cs
  20. 0 75
      MediaBrowser.InternetProviders/MediaBrowser.InternetProviders.csproj
  21. 0 14
      MediaBrowser.InternetProviders/Plugin.cs
  22. 0 8
      MediaBrowser.InternetProviders/PluginConfiguration.cs
  23. 0 36
      MediaBrowser.InternetProviders/Properties/AssemblyInfo.cs
  24. 1 1
      MediaBrowser.Model/DTO/DTOBaseItem.cs
  25. 7 0
      MediaBrowser.Model/Entities/TV/Episode.cs
  26. 3 4
      MediaBrowser.Model/Entities/TV/Season.cs
  27. 1 2
      MediaBrowser.Model/Entities/TV/Series.cs
  28. 3 0
      MediaBrowser.Model/MediaBrowser.Model.csproj
  29. 0 8
      MediaBrowser.TV/Entities/Episode.cs
  30. 0 12
      MediaBrowser.TV/MediaBrowser.TV.csproj
  31. 0 12
      MediaBrowser.sln

+ 21 - 3
MediaBrowser.Api/ApiService.cs

@@ -1,11 +1,12 @@
 using MediaBrowser.Controller;
 using MediaBrowser.Model.DTO;
 using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities.TV;
 using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Threading.Tasks;
 using System.Net;
+using System.Threading.Tasks;
 
 namespace MediaBrowser.Api
 {
@@ -92,7 +93,7 @@ namespace MediaBrowser.Api
             }
 
             AttachBasicFields(dto, item, user);
-            
+
             // Make sure all the tasks we kicked off have completed.
             if (tasks.Count > 0)
             {
@@ -116,7 +117,7 @@ namespace MediaBrowser.Api
             {
                 dto.Genres = item.Genres.ToArray();
             }
-            
+
             dto.HasArt = !string.IsNullOrEmpty(item.ArtImagePath);
             dto.HasBanner = !string.IsNullOrEmpty(item.BannerImagePath);
             dto.HasLogo = !string.IsNullOrEmpty(item.LogoImagePath);
@@ -182,6 +183,7 @@ namespace MediaBrowser.Api
                 dto.IsVirtualFolder = folder.IsVirtualFolder;
             }
 
+            // Add AudioInfo
             Audio audio = item as Audio;
 
             if (audio != null)
@@ -196,6 +198,7 @@ namespace MediaBrowser.Api
                 };
             }
 
+            // Add VideoInfo
             Video video = item as Video;
 
             if (video != null)
@@ -219,6 +222,21 @@ namespace MediaBrowser.Api
                     dto.VideoInfo.Subtitles = video.Subtitles.ToArray();
                 }
             }
+
+            // Add SeriesInfo
+            Series series = item as Series;
+
+            if (series != null)
+            {
+                DayOfWeek[] airDays = series.AirDays == null ? new DayOfWeek[] { } : series.AirDays.ToArray(); ;
+
+                dto.SeriesInfo = new SeriesInfo()
+                {
+                    AirDays = airDays,
+                    AirTime = series.AirTime,
+                    Status = series.Status
+                };
+            }
         }
 
         /// <summary>

+ 12 - 29
MediaBrowser.Controller/Kernel.cs

@@ -8,6 +8,7 @@ using MediaBrowser.Controller.Weather;
 using MediaBrowser.Model.Authentication;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities.TV;
 using MediaBrowser.Model.Progress;
 using System;
 using System.Collections.Generic;
@@ -111,12 +112,6 @@ namespace MediaBrowser.Controller
 
             // Sort the providers by priority
             MetadataProviders = MetadataProvidersEnumerable.OrderBy(e => e.Priority).ToArray();
-
-            // Initialize the metadata providers
-            Parallel.ForEach(MetadataProviders, provider =>
-            {
-                provider.Init();
-            });
         }
 
         /// <summary>
@@ -126,17 +121,26 @@ namespace MediaBrowser.Controller
         /// </summary>
         void ItemController_PreBeginResolvePath(object sender, PreBeginResolveEventArgs e)
         {
+            // Ignore hidden files and folders
             if (e.IsHidden || e.IsSystemFile)
             {
-                // Ignore hidden files and folders
                 e.Cancel = true;
             }
 
+            // Ignore any folders named "trailers"
             else if (Path.GetFileName(e.Path).Equals("trailers", StringComparison.OrdinalIgnoreCase))
             {
-                // Ignore any folders named "trailers"
                 e.Cancel = true;
             }
+
+            // Don't try and resolve files within the season metadata folder
+            else if (Path.GetFileName(e.Path).Equals("metadata", StringComparison.OrdinalIgnoreCase) && e.IsDirectory)
+            {
+                if (e.Parent is Season || e.Parent is Series)
+                {
+                    e.Cancel = true;
+                }
+            }
         }
 
         /// <summary>
@@ -383,26 +387,5 @@ namespace MediaBrowser.Controller
                 }
             }
         }
-
-        protected override void DisposeComposableParts()
-        {
-            base.DisposeComposableParts();
-
-            DisposeProviders();
-        }
-
-        /// <summary>
-        /// Disposes all providers
-        /// </summary>
-        private void DisposeProviders()
-        {
-            if (MetadataProviders != null)
-            {
-                foreach (var provider in MetadataProviders)
-                {
-                    provider.Dispose();
-                }
-            }
-        }
     }
 }

+ 10 - 1
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -59,8 +59,17 @@
   <ItemGroup>
     <Compile Include="Providers\Movies\MovieProviderFromXml.cs" />
     <Compile Include="Providers\Movies\MovieSpecialFeaturesProvider.cs" />
+    <Compile Include="Providers\TV\EpisodeImageFromMediaLocationProvider.cs" />
+    <Compile Include="Providers\TV\EpisodeProviderFromXml.cs" />
+    <Compile Include="Providers\TV\EpisodeXmlParser.cs" />
+    <Compile Include="Providers\TV\SeriesProviderFromXml.cs" />
+    <Compile Include="Providers\TV\SeriesXmlParser.cs" />
     <Compile Include="Resolvers\Movies\BoxSetResolver.cs" />
     <Compile Include="Resolvers\Movies\MovieResolver.cs" />
+    <Compile Include="Resolvers\TV\EpisodeResolver.cs" />
+    <Compile Include="Resolvers\TV\SeasonResolver.cs" />
+    <Compile Include="Resolvers\TV\SeriesResolver.cs" />
+    <Compile Include="Resolvers\TV\TVUtils.cs" />
     <Compile Include="ServerApplicationPaths.cs" />
     <Compile Include="Library\ItemResolveEventArgs.cs" />
     <Compile Include="FFMpeg\FFProbe.cs" />
@@ -82,7 +91,7 @@
     <Compile Include="Resolvers\FolderResolver.cs" />
     <Compile Include="Resolvers\VideoResolver.cs" />
     <Compile Include="Weather\WeatherClient.cs" />
-    <Compile Include="Xml\BaseItemXmlParser.cs" />
+    <Compile Include="Providers\BaseItemXmlParser.cs" />
     <Compile Include="Xml\XmlExtensions.cs" />
   </ItemGroup>
   <ItemGroup>

+ 7 - 40
MediaBrowser.Controller/Providers/AudioInfoProvider.cs

@@ -1,17 +1,15 @@
-using System;
+using MediaBrowser.Controller.FFMpeg;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel.Composition;
-using System.IO;
 using System.Linq;
 using System.Threading.Tasks;
-using MediaBrowser.Common.Logging;
-using MediaBrowser.Controller.FFMpeg;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
 
 namespace MediaBrowser.Controller.Providers
 {
-    //[Export(typeof(BaseMetadataProvider))]
+    [Export(typeof(BaseMetadataProvider))]
     public class AudioInfoProvider : BaseMediaInfoProvider<Audio>
     {
         public override MetadataProviderPriority Priority
@@ -161,7 +159,7 @@ namespace MediaBrowser.Controller.Providers
         {
             await Task.Run(() =>
             {
-                T myItem = item as T;
+                /*T myItem = item as T;
 
                 if (CanSkipFFProbe(myItem))
                 {
@@ -192,43 +190,12 @@ namespace MediaBrowser.Controller.Providers
                     }
                 }
 
-                Fetch(myItem, result);
+                Fetch(myItem, result);*/
             });
         }
 
         protected abstract void Fetch(T item, FFProbeResult result);
 
-        public override void Init()
-        {
-            base.Init();
-
-            EnsureCacheSubFolders(CacheDirectory);
-        }
-
-        private void EnsureCacheSubFolders(string root)
-        {
-            // Do this now so that we don't have to do this on every operation, which would require us to create a lock in order to maintain thread-safety
-            for (int i = 0; i <= 9; i++)
-            {
-                EnsureDirectory(Path.Combine(root, i.ToString()));
-            }
-
-            EnsureDirectory(Path.Combine(root, "a"));
-            EnsureDirectory(Path.Combine(root, "b"));
-            EnsureDirectory(Path.Combine(root, "c"));
-            EnsureDirectory(Path.Combine(root, "d"));
-            EnsureDirectory(Path.Combine(root, "e"));
-            EnsureDirectory(Path.Combine(root, "f"));
-        }
-
-        private void EnsureDirectory(string path)
-        {
-            if (!Directory.Exists(path))
-            {
-                Directory.CreateDirectory(path);
-            }
-        }
-
         protected virtual bool CanSkipFFProbe(T item)
         {
             return false;

+ 4 - 3
MediaBrowser.Controller/Xml/BaseItemXmlParser.cs → MediaBrowser.Controller/Providers/BaseItemXmlParser.cs

@@ -1,10 +1,11 @@
-using System;
+using MediaBrowser.Controller.Xml;
+using MediaBrowser.Model.Entities;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Xml;
-using MediaBrowser.Model.Entities;
 
-namespace MediaBrowser.Controller.Xml
+namespace MediaBrowser.Controller.Providers
 {
     /// <summary>
     /// Provides a base class for parsing metadata xml

+ 3 - 18
MediaBrowser.Controller/Providers/BaseMetadataProvider.cs

@@ -1,26 +1,11 @@
-using System;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Library;
 using MediaBrowser.Model.Entities;
+using System.Threading.Tasks;
 
 namespace MediaBrowser.Controller.Providers
 {
-    public abstract class BaseMetadataProvider : IDisposable
+    public abstract class BaseMetadataProvider
     {
-        /// <summary>
-        /// If the provider needs any startup routines, add them here
-        /// </summary>
-        public virtual void Init()
-        {
-        }
-
-        /// <summary>
-        /// Disposes anything created during Init
-        /// </summary>
-        public virtual void Dispose()
-        {
-        }
-
         public abstract bool Supports(BaseEntity item);
 
         public virtual bool RequiresInternet

+ 3 - 4
MediaBrowser.Controller/Providers/FolderProviderFromXml.cs

@@ -1,9 +1,8 @@
-using System.ComponentModel.Composition;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
+using System.ComponentModel.Composition;
 using System.IO;
 using System.Threading.Tasks;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Xml;
-using MediaBrowser.Model.Entities;
 
 namespace MediaBrowser.Controller.Providers
 {

+ 3 - 3
MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs

@@ -1,10 +1,10 @@
-using System;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel.Composition;
 using System.IO;
 using System.Threading.Tasks;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
 
 namespace MediaBrowser.Controller.Providers
 {

+ 4 - 4
MediaBrowser.Controller/Providers/LocalTrailerProvider.cs

@@ -1,10 +1,10 @@
-using System.Collections.Generic;
+using MediaBrowser.Controller.IO;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
+using System.Collections.Generic;
 using System.ComponentModel.Composition;
 using System.IO;
 using System.Threading.Tasks;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
 
 namespace MediaBrowser.Controller.Providers
 {

+ 5 - 6
MediaBrowser.TV/Providers/EpisodeImageFromMediaLocationProvider.cs → MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs

@@ -1,13 +1,12 @@
-using System.ComponentModel.Composition;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities.TV;
+using System.ComponentModel.Composition;
 using System.IO;
 using System.Linq;
 using System.Threading.Tasks;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.TV.Entities;
 
-namespace MediaBrowser.TV.Providers
+namespace MediaBrowser.Controller.Providers.TV
 {
     [Export(typeof(BaseMetadataProvider))]
     public class EpisodeImageFromMediaLocationProvider : BaseMetadataProvider

+ 5 - 7
MediaBrowser.TV/Providers/EpisodeProviderFromXml.cs → MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs

@@ -1,13 +1,11 @@
-using System.ComponentModel.Composition;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities.TV;
+using System.ComponentModel.Composition;
 using System.IO;
 using System.Threading.Tasks;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.TV.Entities;
-using MediaBrowser.TV.Metadata;
 
-namespace MediaBrowser.TV.Providers
+namespace MediaBrowser.Controller.Providers.TV
 {
     [Export(typeof(BaseMetadataProvider))]
     public class EpisodeProviderFromXml : BaseMetadataProvider

+ 3 - 4
MediaBrowser.TV/Metadata/EpisodeXmlParser.cs → MediaBrowser.Controller/Providers/TV/EpisodeXmlParser.cs

@@ -1,9 +1,8 @@
-using System.IO;
+using MediaBrowser.Model.Entities.TV;
+using System.IO;
 using System.Xml;
-using MediaBrowser.Controller.Xml;
-using MediaBrowser.TV.Entities;
 
-namespace MediaBrowser.TV.Metadata
+namespace MediaBrowser.Controller.Providers.TV
 {
     public class EpisodeXmlParser : BaseItemXmlParser<Episode>
     {

+ 5 - 7
MediaBrowser.TV/Providers/SeriesProviderFromXml.cs → MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs

@@ -1,13 +1,11 @@
-using System.ComponentModel.Composition;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities.TV;
+using System.ComponentModel.Composition;
 using System.IO;
 using System.Threading.Tasks;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.TV.Entities;
-using MediaBrowser.TV.Metadata;
 
-namespace MediaBrowser.TV.Providers
+namespace MediaBrowser.Controller.Providers.TV
 {
     [Export(typeof(BaseMetadataProvider))]
     public class SeriesProviderFromXml : BaseMetadataProvider

+ 4 - 5
MediaBrowser.TV/Metadata/SeriesXmlParser.cs → MediaBrowser.Controller/Providers/TV/SeriesXmlParser.cs

@@ -1,10 +1,9 @@
-using System;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities.TV;
+using System;
 using System.Xml;
-using MediaBrowser.Controller.Xml;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.TV.Entities;
 
-namespace MediaBrowser.TV.Metadata
+namespace MediaBrowser.Controller.Providers.TV
 {
     public class SeriesXmlParser : BaseItemXmlParser<Series>
     {

+ 4 - 14
MediaBrowser.Controller/Providers/VideoInfoProvider.cs

@@ -1,13 +1,13 @@
-using System;
+using MediaBrowser.Controller.FFMpeg;
+using MediaBrowser.Model.Entities;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel.Composition;
 using System.Linq;
-using MediaBrowser.Controller.FFMpeg;
-using MediaBrowser.Model.Entities;
 
 namespace MediaBrowser.Controller.Providers
 {
-    //[Export(typeof(BaseMetadataProvider))]
+    [Export(typeof(BaseMetadataProvider))]
     public class VideoInfoProvider : BaseMediaInfoProvider<Video>
     {
         public override MetadataProviderPriority Priority
@@ -163,15 +163,5 @@ namespace MediaBrowser.Controller.Providers
             
             return true;
         }
-
-        public override void Init()
-        {
-            base.Init();
-
-            // This is an optimzation. Do this now so that it doesn't have to be done upon first serialization.
-            ProtoBuf.Meta.RuntimeTypeModel.Default.Add(typeof(FFProbeResult), true);
-            ProtoBuf.Meta.RuntimeTypeModel.Default.Add(typeof(MediaStream), true);
-            ProtoBuf.Meta.RuntimeTypeModel.Default.Add(typeof(MediaFormat), true);
-        }
     }
 }

+ 4 - 5
MediaBrowser.TV/Resolvers/EpisodeResolver.cs → MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs

@@ -1,9 +1,8 @@
-using System.ComponentModel.Composition;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Resolvers;
-using MediaBrowser.TV.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities.TV;
+using System.ComponentModel.Composition;
 
-namespace MediaBrowser.TV.Resolvers
+namespace MediaBrowser.Controller.Resolvers.TV
 {
     [Export(typeof(IBaseItemResolver))]
     public class EpisodeResolver : BaseVideoResolver<Episode>

+ 4 - 5
MediaBrowser.TV/Resolvers/SeasonResolver.cs → MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs

@@ -1,10 +1,9 @@
-using System.ComponentModel.Composition;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities.TV;
+using System.ComponentModel.Composition;
 using System.IO;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Resolvers;
-using MediaBrowser.TV.Entities;
 
-namespace MediaBrowser.TV.Resolvers
+namespace MediaBrowser.Controller.Resolvers.TV
 {
     [Export(typeof(IBaseItemResolver))]
     public class SeasonResolver : BaseFolderResolver<Season>

+ 5 - 6
MediaBrowser.TV/Resolvers/SeriesResolver.cs → MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs

@@ -1,12 +1,11 @@
-using System;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities.TV;
+using System;
 using System.ComponentModel.Composition;
 using System.IO;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Resolvers;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.TV.Entities;
 
-namespace MediaBrowser.TV.Resolvers
+namespace MediaBrowser.Controller.Resolvers.TV
 {
     [Export(typeof(IBaseItemResolver))]
     public class SeriesResolver : BaseFolderResolver<Series>

+ 3 - 3
MediaBrowser.TV/TVUtils.cs → MediaBrowser.Controller/Resolvers/TV/TVUtils.cs

@@ -1,8 +1,8 @@
-using System;
+using MediaBrowser.Controller.IO;
+using System;
 using System.Text.RegularExpressions;
-using MediaBrowser.Controller.IO;
 
-namespace MediaBrowser.TV
+namespace MediaBrowser.Controller.Resolvers.TV
 {
     public static class TVUtils
     {

+ 0 - 75
MediaBrowser.InternetProviders/MediaBrowser.InternetProviders.csproj

@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{5758B2C7-949A-421D-B268-70A950CF8741}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>MediaBrowser.InternetProviders</RootNamespace>
-    <AssemblyName>MediaBrowser.InternetProviders</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup>
-    <RunPostBuildEvent>Always</RunPostBuildEvent>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Plugin.cs" />
-    <Compile Include="PluginConfiguration.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
-      <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
-      <Name>MediaBrowser.Common</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj">
-      <Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project>
-      <Name>MediaBrowser.Controller</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj">
-      <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
-      <Name>MediaBrowser.Model</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PostBuildEvent>xcopy "$(TargetPath)" "$(SolutionDir)\ProgramData\Plugins\" /y</PostBuildEvent>
-  </PropertyGroup>
-  <!-- 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">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

+ 0 - 14
MediaBrowser.InternetProviders/Plugin.cs

@@ -1,14 +0,0 @@
-using System.ComponentModel.Composition;
-using MediaBrowser.Common.Plugins;
-
-namespace MediaBrowser.InternetProviders
-{
-    [Export(typeof(BasePlugin))]
-    public class Plugin : BaseGenericPlugin<PluginConfiguration>
-    {
-        public override string Name
-        {
-            get { return "Internet Providers"; }
-        }
-    }
-}

+ 0 - 8
MediaBrowser.InternetProviders/PluginConfiguration.cs

@@ -1,8 +0,0 @@
-using MediaBrowser.Model.Plugins;
-
-namespace MediaBrowser.InternetProviders
-{
-    public class PluginConfiguration : BasePluginConfiguration
-    {
-    }
-}

+ 0 - 36
MediaBrowser.InternetProviders/Properties/AssemblyInfo.cs

@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("MediaBrowser.InternetProviders")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("MediaBrowser.InternetProviders")]
-[assembly: AssemblyCopyright("Copyright ©  2012")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("520717d0-3257-41b2-8da2-6aa8b8248250")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyFileVersion("1.0.0.0")]

+ 1 - 1
MediaBrowser.Model/DTO/DTOBaseItem.cs

@@ -157,7 +157,7 @@ namespace MediaBrowser.Model.DTO
         public VideoInfo VideoInfo { get; set; }
 
         [ProtoMember(44)]
-        public VideoInfo SeriesInfo { get; set; }
+        public SeriesInfo SeriesInfo { get; set; }
 
         [ProtoMember(45)]
         public bool IsNew { get; set; }

+ 7 - 0
MediaBrowser.Model/Entities/TV/Episode.cs

@@ -0,0 +1,7 @@
+
+namespace MediaBrowser.Model.Entities.TV
+{
+    public class Episode : Video
+    {
+    }
+}

+ 3 - 4
MediaBrowser.TV/Entities/Season.cs → MediaBrowser.Model/Entities/TV/Season.cs

@@ -1,19 +1,18 @@
 using System;
-using MediaBrowser.Model.Entities;
 
-namespace MediaBrowser.TV.Entities
+namespace MediaBrowser.Model.Entities.TV
 {
     public class Season : Folder
     {
         /// <summary>
         /// Store these to reduce disk access in Episode Resolver
         /// </summary>
-        internal string[] MetadataFiles { get; set; }
+        public string[] MetadataFiles { get; set; }
 
         /// <summary>
         /// Determines if the metafolder contains a given file
         /// </summary>
-        internal bool ContainsMetadataFile(string file)
+        public bool ContainsMetadataFile(string file)
         {
             for (int i = 0; i < MetadataFiles.Length; i++)
             {

+ 1 - 2
MediaBrowser.TV/Entities/Series.cs → MediaBrowser.Model/Entities/TV/Series.cs

@@ -1,8 +1,7 @@
 using System;
 using System.Collections.Generic;
-using MediaBrowser.Model.Entities;
 
-namespace MediaBrowser.TV.Entities
+namespace MediaBrowser.Model.Entities.TV
 {
     public class Series : Folder
     {

+ 3 - 0
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -54,6 +54,9 @@
     <Compile Include="Entities\Movies\Movie.cs" />
     <Compile Include="Entities\Person.cs" />
     <Compile Include="Entities\Studio.cs" />
+    <Compile Include="Entities\TV\Episode.cs" />
+    <Compile Include="Entities\TV\Season.cs" />
+    <Compile Include="Entities\TV\Series.cs" />
     <Compile Include="Entities\Video.cs" />
     <Compile Include="Entities\Year.cs" />
     <Compile Include="Plugins\BasePluginConfiguration.cs" />

+ 0 - 8
MediaBrowser.TV/Entities/Episode.cs

@@ -1,8 +0,0 @@
-using MediaBrowser.Model.Entities;
-
-namespace MediaBrowser.TV.Entities
-{
-    public class Episode : Video
-    {
-    }
-}

+ 0 - 12
MediaBrowser.TV/MediaBrowser.TV.csproj

@@ -44,20 +44,8 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Entities\Episode.cs" />
-    <Compile Include="Providers\EpisodeImageFromMediaLocationProvider.cs" />
-    <Compile Include="Providers\EpisodeProviderFromXml.cs" />
-    <Compile Include="Providers\SeriesProviderFromXml.cs" />
-    <Compile Include="Resolvers\EpisodeResolver.cs" />
-    <Compile Include="Metadata\EpisodeXmlParser.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Entities\Season.cs" />
-    <Compile Include="Resolvers\SeasonResolver.cs" />
-    <Compile Include="Entities\Series.cs" />
-    <Compile Include="Resolvers\SeriesResolver.cs" />
-    <Compile Include="Metadata\SeriesXmlParser.cs" />
-    <Compile Include="TVUtils.cs" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">

+ 0 - 12
MediaBrowser.sln

@@ -3,12 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2012
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Controller", "MediaBrowser.Controller\MediaBrowser.Controller.csproj", "{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.TV", "MediaBrowser.TV\MediaBrowser.TV.csproj", "{32DFC600-CD2F-4B2D-B39A-3B4C6C32F9B4}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Api", "MediaBrowser.Api\MediaBrowser.Api.csproj", "{4FD51AC5-2C16-4308-A993-C3A84F3B4582}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.InternetProviders", "MediaBrowser.InternetProviders\MediaBrowser.InternetProviders.csproj", "{5758B2C7-949A-421D-B268-70A950CF8741}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Common", "MediaBrowser.Common\MediaBrowser.Common.csproj", "{9142EEFA-7570-41E1-BFCC-468BB571AF2F}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Model", "MediaBrowser.Model\MediaBrowser.Model.csproj", "{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}"
@@ -32,18 +28,10 @@ Global
 		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Release|Any CPU.Build.0 = Release|Any CPU
-		{32DFC600-CD2F-4B2D-B39A-3B4C6C32F9B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{32DFC600-CD2F-4B2D-B39A-3B4C6C32F9B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{32DFC600-CD2F-4B2D-B39A-3B4C6C32F9B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{32DFC600-CD2F-4B2D-B39A-3B4C6C32F9B4}.Release|Any CPU.Build.0 = Release|Any CPU
 		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5758B2C7-949A-421D-B268-70A950CF8741}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5758B2C7-949A-421D-B268-70A950CF8741}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5758B2C7-949A-421D-B268-70A950CF8741}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5758B2C7-949A-421D-B268-70A950CF8741}.Release|Any CPU.Build.0 = Release|Any CPU
 		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Release|Any CPU.ActiveCfg = Release|Any CPU