Sfoglia il codice sorgente

fix roku live tv stream closing

Luke Pulverenti 10 anni fa
parent
commit
1279c6d8b5

+ 0 - 7
MediaBrowser.Api/MediaBrowser.Api.csproj

@@ -208,13 +208,6 @@
     <PostBuildEvent>
     </PostBuildEvent>
   </PropertyGroup>
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
-  </Target>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

+ 3 - 0
MediaBrowser.Providers/Manager/ProviderManager.cs

@@ -912,6 +912,9 @@ namespace MediaBrowser.Providers.Manager
                 {
                     try
                     {
+                        // Try to throttle this a little bit.
+                        await Task.Delay(100).ConfigureAwait(false);
+
                         var artist = item as MusicArtist;
                         var task = artist == null
                             ? RefreshItem(item, refreshItem.Item2, CancellationToken.None)

+ 5 - 2
MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs

@@ -230,7 +230,7 @@ namespace MediaBrowser.Server.Implementations.Library
 
         private void SetKeyProperties(IMediaSourceProvider provider, MediaSourceInfo mediaSource)
         {
-            var prefix = provider.GetType().FullName.GetMD5().ToString("N") + "|";
+            var prefix = provider.GetType().FullName.GetMD5().ToString("N") + LiveStreamIdDelimeter;
 
             if (!string.IsNullOrWhiteSpace(mediaSource.OpenToken) && !mediaSource.OpenToken.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
             {
@@ -463,10 +463,13 @@ namespace MediaBrowser.Server.Implementations.Library
                 _liveStreamSemaphore.Release();
             }
         }
+        
+        // Do not use a pipe here because Roku http requests to the server will fail, without any explicit error message.
+        private const char LiveStreamIdDelimeter = '_';
 
         private Tuple<IMediaSourceProvider, string> GetProvider(string key)
         {
-            var keys = key.Split(new[] { '|' }, 2);
+            var keys = key.Split(new[] { LiveStreamIdDelimeter }, 2);
 
             var provider = _providers.FirstOrDefault(i => string.Equals(i.GetType().FullName.GetMD5().ToString("N"), keys[0], StringComparison.OrdinalIgnoreCase));