Explorar o código

Merge pull request #1694 from MediaBrowser/dev

Dev
Luke %!s(int64=9) %!d(string=hai) anos
pai
achega
02aa4229fb
Modificáronse 25 ficheiros con 98 adicións e 79 borrados
  1. 11 5
      MediaBrowser.Api/Playback/BaseStreamingService.cs
  2. 0 2
      MediaBrowser.Controller/Entities/InternalItemsQuery.cs
  3. 21 4
      MediaBrowser.MediaEncoding/Encoder/AudioEncoder.cs
  4. 9 3
      MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
  5. 1 0
      MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs
  6. 8 0
      MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs
  7. 1 1
      MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs
  8. 1 1
      MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs
  9. 3 1
      MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
  10. 1 1
      MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
  11. 1 1
      MediaBrowser.Providers/Movies/MovieDbImageProvider.cs
  12. 1 1
      MediaBrowser.Providers/Movies/MovieDbProvider.cs
  13. 1 1
      MediaBrowser.Providers/Movies/MovieDbSearch.cs
  14. 1 1
      MediaBrowser.Providers/Movies/TmdbSettings.cs
  15. 1 1
      MediaBrowser.Providers/People/MovieDbPersonImageProvider.cs
  16. 1 1
      MediaBrowser.Providers/People/MovieDbPersonProvider.cs
  17. 1 1
      MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs
  18. 1 1
      MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs
  19. 2 2
      MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs
  20. 1 6
      MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs
  21. 7 4
      MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs
  22. 9 1
      MediaBrowser.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs
  23. 15 1
      MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
  24. 0 14
      MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
  25. 0 25
      MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj

+ 11 - 5
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -821,9 +821,14 @@ namespace MediaBrowser.Api.Playback
         /// <returns>System.String.</returns>
         protected string GetVideoDecoder(StreamState state)
         {
-            if (string.Equals(ApiEntryPoint.Instance.GetEncodingOptions().HardwareAccelerationType, "qsv", StringComparison.OrdinalIgnoreCase))
+            if (string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase))
+            {
+                return null;
+            }
+
+            if (state.VideoStream != null && !string.IsNullOrWhiteSpace(state.VideoStream.Codec))
             {
-                if (state.VideoStream != null && !string.IsNullOrWhiteSpace(state.VideoStream.Codec))
+                if (string.Equals(ApiEntryPoint.Instance.GetEncodingOptions().HardwareAccelerationType, "qsv", StringComparison.OrdinalIgnoreCase))
                 {
                     switch (state.MediaSource.VideoStream.Codec.ToLower())
                     {
@@ -831,7 +836,8 @@ namespace MediaBrowser.Api.Playback
                         case "h264":
                             if (MediaEncoder.SupportsDecoder("h264_qsv"))
                             {
-                                return "-c:v h264_qsv ";
+                                // Seeing stalls and failures with decoding. Not worth it compared to encoding.
+                                //return "-c:v h264_qsv ";
                             }
                             break;
                         case "mpeg2video":
@@ -1033,7 +1039,7 @@ namespace MediaBrowser.Api.Playback
             process.BeginOutputReadLine();
 
             // Important - don't await the log task or we won't be able to kill ffmpeg when the user stops playback
-            StartStreamingLog(transcodingJob, state, process.StandardError.BaseStream, state.LogFileStream);
+            Task.Run(() => StartStreamingLog(transcodingJob, state, process.StandardError.BaseStream, state.LogFileStream));
 
             // Wait for the file to exist before proceeeding
             while (!FileSystem.FileExists(state.WaitForPath ?? outputPath) && !transcodingJob.HasExited)
@@ -1076,7 +1082,7 @@ namespace MediaBrowser.Api.Playback
             return true;
         }
 
-        private async void StartStreamingLog(TranscodingJob transcodingJob, StreamState state, Stream source, Stream target)
+        private async Task StartStreamingLog(TranscodingJob transcodingJob, StreamState state, Stream source, Stream target)
         {
             try
             {

+ 0 - 2
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -123,7 +123,6 @@ namespace MediaBrowser.Controller.Entities
         public SourceType[] SourceTypes { get; set; }
         public SourceType[] ExcludeSourceTypes { get; set; }
         public TrailerType[] TrailerTypes { get; set; }
-        public TrailerType[] ExcludeTrailerTypes { get; set; }
 
         public DayOfWeek[] AirDays { get; set; }
         public SeriesStatus[] SeriesStatuses { get; set; }
@@ -165,7 +164,6 @@ namespace MediaBrowser.Controller.Entities
             SourceTypes = new SourceType[] { };
             ExcludeSourceTypes = new SourceType[] { };
             TrailerTypes = new TrailerType[] { };
-            ExcludeTrailerTypes = new TrailerType[] { };
             AirDays = new DayOfWeek[] { };
             SeriesStatuses = new SeriesStatus[] { };
         }

+ 21 - 4
MediaBrowser.MediaEncoding/Encoder/AudioEncoder.cs

@@ -41,19 +41,36 @@ namespace MediaBrowser.MediaEncoding.Encoder
                 }
             }
 
-            const string vn = " -vn";
-
             var threads = GetNumberOfThreads(state, false);
 
             var inputModifier = GetInputModifier(state);
 
-            return string.Format("{0} {1} -threads {2}{3} {4} -id3v2_version 3 -write_id3v1 1 -y \"{5}\"",
+            var albumCoverInput = string.Empty;
+            var mapArgs = string.Empty;
+            var metadata = string.Empty;
+            var vn = string.Empty;
+
+            if (!string.IsNullOrWhiteSpace(state.AlbumCoverPath))
+            {
+                albumCoverInput = " -i \"" + state.AlbumCoverPath + "\"";
+                mapArgs = " -map 0:a -map 1:v -c:v copy";
+                metadata = " -metadata:s:v title=\"Album cover\" -metadata:s:v comment=\"Cover(Front)\"";
+            }
+            else
+            {
+                vn = " -vn";
+            }
+
+            return string.Format("{0} {1}{6}{7} -threads {2}{3} {4} -id3v2_version 3 -write_id3v1 1{8} -y \"{5}\"",
                 inputModifier,
                 GetInputArgument(state),
                 threads,
                 vn,
                 string.Join(" ", audioTranscodeParams.ToArray()),
-                state.OutputFilePath).Trim();
+                state.OutputFilePath,
+                albumCoverInput,
+                mapArgs,
+                metadata).Trim();
         }
 
         protected override string GetOutputFileExtension(EncodingJob state)

+ 9 - 3
MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs

@@ -366,9 +366,14 @@ namespace MediaBrowser.MediaEncoding.Encoder
         /// <returns>System.String.</returns>
         protected string GetVideoDecoder(EncodingJob state)
         {
-            if (string.Equals(GetEncodingOptions().HardwareAccelerationType, "qsv", StringComparison.OrdinalIgnoreCase))
+            if (string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase))
             {
-                if (state.VideoStream != null && !string.IsNullOrWhiteSpace(state.VideoStream.Codec))
+                return null;    
+            }
+
+            if (state.VideoStream != null && !string.IsNullOrWhiteSpace(state.VideoStream.Codec))
+            {
+                if (string.Equals(GetEncodingOptions().HardwareAccelerationType, "qsv", StringComparison.OrdinalIgnoreCase))
                 {
                     switch (state.MediaSource.VideoStream.Codec.ToLower())
                     {
@@ -376,7 +381,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
                         case "h264":
                             if (MediaEncoder.SupportsDecoder("h264_qsv"))
                             {
-                                return "-c:v h264_qsv ";
+                                // Seeing stalls and failures with decoding. Not worth it compared to encoding.
+                                //return "-c:v h264_qsv ";
                             }
                             break;
                         case "mpeg2video":

+ 1 - 0
MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs

@@ -64,6 +64,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
         public long? InputFileSize { get; set; }
         public string OutputAudioSync = "1";
         public string OutputVideoSync = "vfr";
+        public string AlbumCoverPath { get; set; }
 
         public string GetMimeType(string outputPath)
         {

+ 8 - 0
MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs

@@ -60,6 +60,14 @@ namespace MediaBrowser.MediaEncoding.Encoder
 
             state.IsInputVideo = string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase);
 
+            var primaryImage = item.GetImageInfo(ImageType.Primary, 0) ??
+                               item.Parents.Select(i => i.GetImageInfo(ImageType.Primary, 0)).FirstOrDefault(i => i != null);
+
+            if (primaryImage != null)
+            {
+                state.AlbumCoverPath = primaryImage.Path;
+            }
+
             var mediaSources = await _mediaSourceManager.GetPlayackMediaSources(request.ItemId, null, false, new[] { MediaType.Audio, MediaType.Video }, cancellationToken).ConfigureAwait(false);
 
             var mediaSource = string.IsNullOrEmpty(request.MediaSourceId)

+ 1 - 1
MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs

@@ -61,7 +61,7 @@ namespace MediaBrowser.Providers.BoxSets
                 {
                     var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-                    var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+                    var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
                     return GetImages(mainResult, language, tmdbImageUrl);
                 }

+ 1 - 1
MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs

@@ -64,7 +64,7 @@ namespace MediaBrowser.Providers.BoxSets
 
                 var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-                var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+                var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
                 var result = new RemoteSearchResult
                 {

+ 3 - 1
MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs

@@ -16,6 +16,7 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
 using System.Linq;
+using System.Text.RegularExpressions;
 using System.Threading;
 using System.Threading.Tasks;
 using CommonIO;
@@ -185,6 +186,7 @@ namespace MediaBrowser.Providers.Movies
             PopulateImages(list, obj.moviebackground, ImageType.Backdrop, 1920, 1080);
         }
 
+        private Regex _regex_http = new Regex("^http://");
         private void PopulateImages(List<RemoteImageInfo> list, List<Image> images, ImageType type, int width, int height)
         {
             if (images == null)
@@ -208,7 +210,7 @@ namespace MediaBrowser.Providers.Movies
                         Width = width,
                         Height = height,
                         ProviderName = Name,
-                        Url = url,
+                        Url = _regex_http.Replace(url, "https://", 1),
                         Language = i.lang
                     };
 

+ 1 - 1
MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs

@@ -249,7 +249,7 @@ namespace MediaBrowser.Providers.Movies
             }
 
             resultItem.ResetPeople();
-            var tmdbImageUrl = settings.images.base_url + "original";
+            var tmdbImageUrl = settings.images.secure_base_url + "original";
 
             //Actors, Directors, Writers - all in People
             //actors come from cast

+ 1 - 1
MediaBrowser.Providers/Movies/MovieDbImageProvider.cs

@@ -72,7 +72,7 @@ namespace MediaBrowser.Providers.Movies
 
             var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-            var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+            var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
             var supportedImages = GetSupportedImages(item).ToList();
 

+ 1 - 1
MediaBrowser.Providers/Movies/MovieDbProvider.cs

@@ -78,7 +78,7 @@ namespace MediaBrowser.Providers.Movies
 
                 var tmdbSettings = await GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-                var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+                var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
                 var remoteResult = new RemoteSearchResult
                 {

+ 1 - 1
MediaBrowser.Providers/Movies/MovieDbSearch.cs

@@ -56,7 +56,7 @@ namespace MediaBrowser.Providers.Movies
 
             var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-            var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+            var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
             if (!string.IsNullOrWhiteSpace(name))
             {

+ 1 - 1
MediaBrowser.Providers/Movies/TmdbSettings.cs

@@ -5,7 +5,7 @@ namespace MediaBrowser.Providers.Movies
     internal class TmdbImageSettings
     {
         public List<string> backdrop_sizes { get; set; }
-        public string base_url { get; set; }
+        public string secure_base_url { get; set; }
         public List<string> poster_sizes { get; set; }
         public List<string> profile_sizes { get; set; }
     }

+ 1 - 1
MediaBrowser.Providers/People/MovieDbPersonImageProvider.cs

@@ -67,7 +67,7 @@ namespace MediaBrowser.Providers.People
 
                 var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-                var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+                var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
                 return GetImages(images, item.GetPreferredMetadataLanguage(), tmdbImageUrl);
             }

+ 1 - 1
MediaBrowser.Providers/People/MovieDbPersonProvider.cs

@@ -59,7 +59,7 @@ namespace MediaBrowser.Providers.People
 
             var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-            var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+            var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
             if (!string.IsNullOrEmpty(tmdbId))
             {

+ 1 - 1
MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs

@@ -62,7 +62,7 @@ namespace MediaBrowser.Providers.TV
 
             var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-            var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+            var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
             list.AddRange(GetPosters(response.images).Select(i => new RemoteImageInfo
             {

+ 1 - 1
MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs

@@ -64,7 +64,7 @@ namespace MediaBrowser.Providers.TV
 
             var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
 
-            var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+            var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
             list.AddRange(GetPosters(results).Select(i => new RemoteImageInfo
             {

+ 2 - 2
MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs

@@ -69,7 +69,7 @@ namespace MediaBrowser.Providers.TV
                 var obj = _jsonSerializer.DeserializeFromFile<RootObject>(dataFilePath);
 
                 var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
-                var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+                var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
                 var remoteResult = new RemoteSearchResult
                 {
@@ -460,7 +460,7 @@ namespace MediaBrowser.Providers.TV
                     if (tv != null)
                     {
                         var tmdbSettings = await MovieDbProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
-                        var tmdbImageUrl = tmdbSettings.images.base_url + "original";
+                        var tmdbImageUrl = tmdbSettings.images.secure_base_url + "original";
 
                         var remoteResult = new RemoteSearchResult
                         {

+ 1 - 6
MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs

@@ -102,15 +102,10 @@ namespace MediaBrowser.Server.Implementations.Intros
 
             if (trailerTypes.Count > 0)
             {
-                var excludeTrailerTypes = Enum.GetNames(typeof(TrailerType))
-                        .Select(i => (TrailerType)Enum.Parse(typeof(TrailerType), i, true))
-                        .Except(trailerTypes)
-                        .ToArray();
-
                 var trailerResult = _libraryManager.GetItemList(new InternalItemsQuery
                 {
                     IncludeItemTypes = new[] { typeof(Trailer).Name },
-                    ExcludeTrailerTypes = excludeTrailerTypes
+                    TrailerTypes = trailerTypes.ToArray()
                 });
 
                 candidates.AddRange(trailerResult.Select(i => new ItemWithTrailer

+ 7 - 4
MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs

@@ -27,13 +27,16 @@ namespace MediaBrowser.Server.Implementations.Library
                 .Cast<IHasTrailers>()
                 .ToList();
 
+            var trailerTypes = Enum.GetNames(typeof(TrailerType))
+                    .Select(i => (TrailerType)Enum.Parse(typeof(TrailerType), i, true))
+                    .Except(new[] { TrailerType.LocalTrailer })
+                    .ToArray();
+
             var trailers = _libraryManager.GetItemList(new InternalItemsQuery
             {
                 IncludeItemTypes = new[] { typeof(Trailer).Name },
-                ExcludeTrailerTypes = new[]
-                {
-                    TrailerType.LocalTrailer
-                }
+                TrailerTypes = trailerTypes
+
             }).ToArray();
 
             var numComplete = 0;

+ 9 - 1
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs

@@ -42,8 +42,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
 
                     _logger.Info("Copying recording stream to file {0}", targetFile);
 
-                    if (!mediaSource.RunTimeTicks.HasValue)
+                    if (mediaSource.RunTimeTicks.HasValue)
                     {
+                        // The media source already has a fixed duration
+                        // But add another stop 1 minute later just in case the recording gets stuck for any reason
+                        var durationToken = new CancellationTokenSource(duration.Add(TimeSpan.FromMinutes(1)));
+                        cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, durationToken.Token).Token;
+                    }
+                    else
+                    {
+                        // The media source if infinite so we need to handle stopping ourselves
                         var durationToken = new CancellationTokenSource(duration);
                         cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, durationToken.Token).Token;
                     }

+ 15 - 1
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs

@@ -44,6 +44,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
 
         public async Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken)
         {
+            if (mediaSource.RunTimeTicks.HasValue)
+            {
+                // The media source already has a fixed duration
+                // But add another stop 1 minute later just in case the recording gets stuck for any reason
+                var durationToken = new CancellationTokenSource(duration.Add(TimeSpan.FromMinutes(1)));
+                cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, durationToken.Token).Token;
+            }
+            else
+            {
+                // The media source if infinite so we need to handle stopping ourselves
+                var durationToken = new CancellationTokenSource(duration);
+                cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, durationToken.Token).Token;
+            }
+
             _targetPath = targetFile;
             _fileSystem.CreateDirectory(Path.GetDirectoryName(targetFile));
 
@@ -143,7 +157,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
             {
                 audioChannels = audioStream.Channels ?? audioChannels;
             }
-            return "-codec:a:0 aac -strict experimental -ab 320000";
+            return "-codec:a:0 aac -strict experimental -ab 320000 -af \"async=1000\"";
         }
 
         private bool EncodeVideo(MediaSourceInfo mediaSource)

+ 0 - 14
MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs

@@ -1961,20 +1961,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
                 whereClauses.Add(clause);
             }
 
-            if (query.ExcludeTrailerTypes.Length > 0)
-            {
-                var clauses = new List<string>();
-                var index = 0;
-                foreach (var type in query.ExcludeTrailerTypes)
-                {
-                    clauses.Add("(TrailerTypes is null OR TrailerTypes not like @TrailerTypes" + index + ")");
-                    cmd.Parameters.Add(cmd, "@TrailerTypes" + index, DbType.String).Value = "%" + type + "%";
-                    index++;
-                }
-                var clause = "(" + string.Join(" AND ", clauses.ToArray()) + ")";
-                whereClauses.Add(clause);
-            }
-
             if (query.IsAiring.HasValue)
             {
                 if (query.IsAiring.Value)

+ 0 - 25
MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj

@@ -368,9 +368,6 @@
     <Content Include="dashboard-ui\scripts\shared.js">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="dashboard-ui\components\sharingwidget.js">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
     <Content Include="dashboard-ui\scripts\supporterkeypage.js">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -473,17 +470,6 @@
     <Content Include="dashboard-ui\thirdparty\paper-button-style.css">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\.gitignore" />
-    <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\css\social-share-kit.css">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\fonts\social-share-kit.svg">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\js\social-share-kit.js" />
-    <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\js\social-share-kit.min.js">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
     <Content Include="dashboard-ui\components\tvproviders\schedulesdirect.js">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -1730,17 +1716,6 @@
     <None Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile-1.4.5.min.map">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\fonts\social-share-kit.eot">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\fonts\social-share-kit.ttf">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\fonts\social-share-kit.woff">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\LICENSE" />
-    <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\README.md" />
     <None Include="dashboard-ui\voice\grammar\en-US.json">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>