Przeglądaj źródła

Merge pull request #1847 from MediaBrowser/dev

Dev
Luke 9 lat temu
rodzic
commit
f18ea222f2

+ 15 - 41
MediaBrowser.Controller/Entities/Folder.cs

@@ -1413,59 +1413,33 @@ namespace MediaBrowser.Controller.Entities
                 return;
             }
 
-            var recursiveItemCount = 0;
-            var unplayed = 0;
-
-            double totalPercentPlayed = 0;
-
-            var itemsResult = GetItems(new InternalItemsQuery(user)
+            var playedQueryResult = GetItems(new InternalItemsQuery(user)
             {
                 Recursive = true,
                 IsFolder = false,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
-                EnableTotalRecordCount = false
+                IsVirtualItem = false,
+                EnableTotalRecordCount = true,
+                Limit = 0,
+                IsPlayed = true
 
             }).Result;
 
-            var children = itemsResult.Items;
-
-            // Loop through each recursive child
-            foreach (var child in children)
+            var allItemsQueryResult = GetItems(new InternalItemsQuery(user)
             {
-                recursiveItemCount++;
-
-                var isUnplayed = true;
-
-                var itemUserData = UserDataManager.GetUserData(user, child);
-
-                // Incrememt totalPercentPlayed
-                if (itemUserData != null)
-                {
-                    if (itemUserData.Played)
-                    {
-                        totalPercentPlayed += 100;
-
-                        isUnplayed = false;
-                    }
-                    else if (itemUserData.PlaybackPositionTicks > 0 && child.RunTimeTicks.HasValue && child.RunTimeTicks.Value > 0)
-                    {
-                        double itemPercent = itemUserData.PlaybackPositionTicks;
-                        itemPercent /= child.RunTimeTicks.Value;
-                        totalPercentPlayed += itemPercent;
-                    }
-                }
+                Recursive = true,
+                IsFolder = false,
+                IsVirtualItem = false,
+                EnableTotalRecordCount = true,
+                Limit = 0
 
-                if (isUnplayed)
-                {
-                    unplayed++;
-                }
-            }
+            }).Result;
 
-            dto.UnplayedItemCount = unplayed;
+            double recursiveItemCount = allItemsQueryResult.TotalRecordCount;
+            double playedCount = playedQueryResult.TotalRecordCount;
 
             if (recursiveItemCount > 0)
             {
-                dto.PlayedPercentage = totalPercentPlayed / recursiveItemCount;
+                dto.PlayedPercentage = (playedCount / recursiveItemCount) * 100;
                 dto.Played = dto.PlayedPercentage.Value >= 100;
             }
         }

+ 0 - 1
MediaBrowser.Server.Implementations/Library/UserDataManager.cs

@@ -208,7 +208,6 @@ namespace MediaBrowser.Server.Implementations.Library
             var dto = GetUserItemDataDto(userData);
 
             item.FillUserDataDtoValues(dto, userData, user);
-
             return dto;
         }
 

+ 4 - 3
MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs

@@ -66,7 +66,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
             {
                 CancellationToken = cancellationToken,
                 Url = path,
-                Progress = new Progress<Double>()
+                Progress = new Progress<Double>(),
+                EnableHttpCompression = false
 
             }).ConfigureAwait(false);
 
@@ -96,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
                 ShortOverview = p.Description,
                 ProductionYear = !p.CopyrightDate.HasValue ? (int?)null : p.CopyrightDate.Value.Year,
                 SeasonNumber = p.Episode == null ? null : p.Episode.Series,
-                IsSeries = p.IsSeries,
+                IsSeries = p.Episode != null,
                 IsRepeat = p.IsRepeat,
                 IsPremiere = p.Premiere != null,
                 IsKids = p.Categories.Any(c => info.KidsCategories.Contains(c, StringComparer.InvariantCultureIgnoreCase)),
@@ -107,7 +108,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
                 HasImage = p.Icon != null && !String.IsNullOrEmpty(p.Icon.Source),
                 OfficialRating = p.Rating != null && !String.IsNullOrEmpty(p.Rating.Value) ? p.Rating.Value : null,
                 CommunityRating = p.StarRating.HasValue ? p.StarRating.Value : (float?)null,
-                SeriesId = p.IsSeries ? p.Title.GetMD5().ToString("N") : null
+                SeriesId = p.Episode != null ? p.Title.GetMD5().ToString("N") : null
             });
         }
 

+ 1 - 1
MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj

@@ -46,7 +46,7 @@
       <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath>
     </Reference>
     <Reference Include="Emby.XmlTv, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\Emby.XmlTv.1.0.0.51\lib\net45\Emby.XmlTv.dll</HintPath>
+      <HintPath>..\packages\Emby.XmlTv.1.0.0.53\lib\net45\Emby.XmlTv.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="INIFileParser, Version=2.3.0.0, Culture=neutral, PublicKeyToken=79af7b307b65cf3c, processorArchitecture=MSIL">

+ 1 - 1
MediaBrowser.Server.Implementations/packages.config

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
   <package id="CommonIO" version="1.0.0.9" targetFramework="net45" />
-  <package id="Emby.XmlTv" version="1.0.0.51" targetFramework="net45" />
+  <package id="Emby.XmlTv" version="1.0.0.53" targetFramework="net45" />
   <package id="ini-parser" version="2.3.0" targetFramework="net45" />
   <package id="Interfaces.IO" version="1.0.0.5" targetFramework="net45" />
   <package id="MediaBrowser.Naming" version="1.0.0.51" targetFramework="net45" />

+ 9 - 5
MediaBrowser.ServerApplication/Networking/NetworkManager.cs

@@ -89,19 +89,21 @@ namespace MediaBrowser.ServerApplication.Networking
         /// </summary>
         /// <returns>Arraylist that represents all the SV_TYPE_WORKSTATION and SV_TYPE_SERVER
         /// PC's in the Domain</returns>
-        private IEnumerable<string> GetNetworkDevicesInternal()
+        private List<string> GetNetworkDevicesInternal()
         {
             //local fields
             const int MAX_PREFERRED_LENGTH = -1;
             var SV_TYPE_WORKSTATION = 1;
             var SV_TYPE_SERVER = 2;
-            var buffer = IntPtr.Zero;
-            var tmpBuffer = IntPtr.Zero;
+            IntPtr buffer = IntPtr.Zero;
+            IntPtr tmpBuffer = IntPtr.Zero;
             var entriesRead = 0;
             var totalEntries = 0;
             var resHandle = 0;
             var sizeofINFO = Marshal.SizeOf(typeof(_SERVER_INFO_100));
 
+            var returnList = new List<string>();
+
             try
             {
                 //call the DllImport : NetServerEnum with all its required parameters
@@ -118,7 +120,7 @@ namespace MediaBrowser.ServerApplication.Networking
                         //get pointer to, Pointer to the buffer that received the data from
                         //the call to NetServerEnum. Must ensure to use correct size of 
                         //STRUCTURE to ensure correct location in memory is pointed to
-                        tmpBuffer = new IntPtr((int)buffer + (i * sizeofINFO));
+                        tmpBuffer = new IntPtr((Int64)buffer + (i * sizeofINFO));
                         //Have now got a pointer to the list of SV_TYPE_WORKSTATION and 
                         //SV_TYPE_SERVER PC's, which is unmanaged memory
                         //Needs to Marshal data from an unmanaged block of memory to a 
@@ -129,7 +131,7 @@ namespace MediaBrowser.ServerApplication.Networking
                         //add the PC names to the ArrayList
                         if (!string.IsNullOrEmpty(svrInfo.sv100_name))
                         {
-                            yield return svrInfo.sv100_name;
+                            returnList.Add(svrInfo.sv100_name);
                         }
                     }
                 }
@@ -140,6 +142,8 @@ namespace MediaBrowser.ServerApplication.Networking
                 //the memory that the NetApiBufferAllocate function allocates
                 NativeMethods.NetApiBufferFree(buffer);
             }
+
+            return returnList;
         }
 
         /// <summary>