aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Dlna/PlayTo/Device.cs42
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs92
-rw-r--r--Emby.Server.Implementations/Dto/DtoService.cs51
-rw-r--r--Emby.Server.Implementations/Emby.Server.Implementations.csproj1
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs2
-rw-r--r--Emby.Server.Implementations/Session/SessionManager.cs1
-rw-r--r--Emby.Server.Implementations/Sorting/AirTimeComparer.cs71
-rw-r--r--MediaBrowser.Api/ItemUpdateService.cs9
-rw-r--r--MediaBrowser.Api/StartupWizardService.cs1
-rw-r--r--MediaBrowser.Controller/Entities/AggregateFolder.cs12
-rw-r--r--MediaBrowser.Controller/Entities/CollectionFolder.cs9
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs12
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs9
-rw-r--r--MediaBrowser.Model/Configuration/ServerConfiguration.cs8
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs58
-rw-r--r--MediaBrowser.Model/Dto/StudioDto.cs29
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj1
-rw-r--r--MediaBrowser.Model/Querying/ItemFields.cs5
-rw-r--r--MediaBrowser.Providers/TV/SeriesMetadataService.cs10
-rw-r--r--MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs22
-rw-r--r--MediaBrowser.Providers/TV/TvExternalIds.cs23
-rw-r--r--MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs16
-rw-r--r--MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs7
-rw-r--r--MediaBrowser.XbmcMetadata/Savers/SeriesNfoSaver.cs18
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
-rw-r--r--SharedVersion.cs2
27 files changed, 103 insertions, 414 deletions
diff --git a/Emby.Dlna/PlayTo/Device.cs b/Emby.Dlna/PlayTo/Device.cs
index ff493e365..213e7367f 100644
--- a/Emby.Dlna/PlayTo/Device.cs
+++ b/Emby.Dlna/PlayTo/Device.cs
@@ -113,7 +113,7 @@ namespace Emby.Dlna.PlayTo
private int GetInactiveTimerIntervalMs()
{
- return 30000;
+ return Timeout.Infinite;
}
public void Start()
@@ -161,18 +161,15 @@ namespace Emby.Dlna.PlayTo
if (_disposed)
return;
- if (!_timerActive)
+ lock (_timerLock)
{
- lock (_timerLock)
+ if (!_timerActive)
{
- if (!_timerActive)
- {
- _logger.Debug("RestartTimer");
- _timer.Change(10, GetPlaybackTimerIntervalMs());
- }
-
- _timerActive = true;
+ _logger.Debug("RestartTimer");
+ _timer.Change(10, GetPlaybackTimerIntervalMs());
}
+
+ _timerActive = true;
}
}
@@ -184,23 +181,20 @@ namespace Emby.Dlna.PlayTo
if (_disposed)
return;
- if (_timerActive)
+ lock (_timerLock)
{
- lock (_timerLock)
+ if (_timerActive)
{
- if (_timerActive)
- {
- _logger.Debug("RestartTimerInactive");
- var interval = GetInactiveTimerIntervalMs();
+ _logger.Debug("RestartTimerInactive");
+ var interval = GetInactiveTimerIntervalMs();
- if (_timer != null)
- {
- _timer.Change(interval, interval);
- }
+ if (_timer != null)
+ {
+ _timer.Change(interval, interval);
}
-
- _timerActive = false;
}
+
+ _timerActive = false;
}
}
@@ -493,6 +487,10 @@ namespace Emby.Dlna.PlayTo
RestartTimer();
}
}
+ else
+ {
+ RestartTimerInactive();
+ }
}
catch (HttpException ex)
{
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index b7e2687ec..e8a9b2eaa 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -345,7 +345,10 @@ namespace Emby.Server.Implementations.Data
// items by name
"create index if not exists idx_ItemValues6 on ItemValues(ItemId,Type,CleanValue)",
- "create index if not exists idx_ItemValues7 on ItemValues(Type,CleanValue,ItemId)"
+ "create index if not exists idx_ItemValues7 on ItemValues(Type,CleanValue,ItemId)",
+
+ // Used to update inherited tags
+ "create index if not exists idx_ItemValues8 on ItemValues(Type, ItemId, Value)",
};
connection.RunQueries(postQueries);
@@ -1293,16 +1296,13 @@ namespace Emby.Server.Implementations.Data
return false;
}
- if (_config.Configuration.SkipDeserializationForAudio)
+ if (type == typeof(Audio))
{
- if (type == typeof(Audio))
- {
- return false;
- }
- if (type == typeof(MusicAlbum))
- {
- return false;
- }
+ return false;
+ }
+ if (type == typeof(MusicAlbum))
+ {
+ return false;
}
return true;
@@ -4695,41 +4695,65 @@ namespace Emby.Server.Implementations.Data
private async Task UpdateInheritedTags(CancellationToken cancellationToken)
{
- var newValues = new List<Tuple<Guid, string>>();
+ var newValues = new List<Tuple<Guid, string[]>>();
- var commandText = "select Guid,(select group_concat(Tags, '|') from TypedBaseItems where (guid=outer.guid) OR (guid in (Select AncestorId from AncestorIds where ItemId=Outer.guid))) as NewInheritedTags from typedbaseitems as Outer";
+ var commandText = @"select guid,
+(select group_concat(Value, '|') from ItemValues where (ItemValues.ItemId = Outer.Guid OR ItemValues.ItemId in ((Select AncestorId from AncestorIds where AncestorIds.ItemId=Outer.guid))) and ItemValues.Type = 4) NewInheritedTags,
+(select group_concat(Value, '|') from ItemValues where ItemValues.ItemId = Outer.Guid and ItemValues.Type = 6) CurrentInheritedTags
+from typedbaseitems as Outer
+where (NewInheritedTags <> CurrentInheritedTags or (NewInheritedTags is null) <> (CurrentInheritedTags is null))
+limit 100";
using (WriteLock.Write())
{
using (var connection = CreateConnection())
{
- foreach (var row in connection.Query(commandText))
+ connection.RunInTransaction(db =>
{
- var id = row.GetGuid(0);
- string value = row.IsDBNull(2) ? null : row.GetString(2);
+ foreach (var row in connection.Query(commandText))
+ {
+ var id = row.GetGuid(0);
+ string value = row.IsDBNull(1) ? null : row.GetString(1);
- newValues.Add(new Tuple<Guid, string>(id, value));
- }
+ var valuesArray = string.IsNullOrWhiteSpace(value) ? new string[] { } : value.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
- Logger.Debug("UpdateInheritedTags - {0} rows", newValues.Count);
- if (newValues.Count == 0)
- {
- return;
- }
+ newValues.Add(new Tuple<Guid, string[]>(id, valuesArray));
+ }
- // write lock here
- using (var statement = PrepareStatement(connection, "Update TypedBaseItems set InheritedTags=@InheritedTags where Guid=@Guid"))
- {
- foreach (var item in newValues)
+ Logger.Debug("UpdateInheritedTags - {0} rows", newValues.Count);
+ if (newValues.Count == 0)
{
- var paramList = new List<object>();
+ return;
+ }
+
+ using (var insertStatement = PrepareStatement(connection, "insert into ItemValues (ItemId, Type, Value, CleanValue) values (@ItemId, 6, @Value, @CleanValue)"))
+ {
+ using (var deleteStatement = PrepareStatement(connection, "delete from ItemValues where ItemId=@ItemId and Type=6"))
+ {
+ foreach (var item in newValues)
+ {
+ var guidBlob = item.Item1.ToGuidBlob();
- paramList.Add(item.Item1);
- paramList.Add(item.Item2);
+ deleteStatement.Reset();
+ deleteStatement.TryBind("@ItemId", guidBlob);
+ deleteStatement.MoveNext();
- statement.Execute(paramList.ToArray());
+ foreach (var itemValue in item.Item2)
+ {
+ insertStatement.Reset();
+
+ insertStatement.TryBind("@ItemId", guidBlob);
+ insertStatement.TryBind("@Value", itemValue);
+
+ insertStatement.TryBind("@CleanValue", GetCleanValue(itemValue));
+
+ insertStatement.MoveNext();
+ }
+ }
+ }
}
- }
+
+ }, TransactionMode);
}
}
}
@@ -5458,8 +5482,10 @@ namespace Emby.Server.Implementations.Data
CheckDisposed();
+ var guidBlob = itemId.ToGuidBlob();
+
// First delete
- db.Execute("delete from ItemValues where ItemId=@Id", itemId.ToGuidBlob());
+ db.Execute("delete from ItemValues where ItemId=@Id", guidBlob);
using (var statement = PrepareStatement(db, "insert into ItemValues (ItemId, Type, Value, CleanValue) values (@ItemId, @Type, @Value, @CleanValue)"))
{
@@ -5475,7 +5501,7 @@ namespace Emby.Server.Implementations.Data
statement.Reset();
- statement.TryBind("@ItemId", itemId.ToGuidBlob());
+ statement.TryBind("@ItemId", guidBlob);
statement.TryBind("@Type", pair.Item1);
statement.TryBind("@Value", itemValue);
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index bf70cc19b..2d717dc2c 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -639,7 +639,6 @@ namespace Emby.Server.Implementations.Dto
private void SetGameProperties(BaseItemDto dto, Game item)
{
- dto.Players = item.PlayersSupported;
dto.GameSystem = item.GameSystem;
dto.MultiPartGameFiles = item.MultiPartGameFiles;
}
@@ -1120,8 +1119,7 @@ namespace Emby.Server.Implementations.Dto
// Include artists that are not in the database yet, e.g., just added via metadata editor
//var foundArtists = artistItems.Items.Select(i => i.Item1.Name).ToList();
- dto.ArtistItems = new List<NameIdPair>();
- dto.ArtistItems.AddRange(hasArtist.Artists
+ dto.ArtistItems = hasArtist.Artists
//.Except(foundArtists, new DistinctNameComparer())
.Select(i =>
{
@@ -1146,7 +1144,7 @@ namespace Emby.Server.Implementations.Dto
return null;
- }).Where(i => i != null));
+ }).Where(i => i != null).ToArray();
}
var hasAlbumArtist = item as IHasAlbumArtist;
@@ -1310,15 +1308,6 @@ namespace Emby.Server.Implementations.Dto
Series episodeSeries = null;
- if (fields.Contains(ItemFields.SeriesGenres))
- {
- episodeSeries = episodeSeries ?? episode.Series;
- if (episodeSeries != null)
- {
- dto.SeriesGenres = episodeSeries.Genres.ToList();
- }
- }
-
//if (fields.Contains(ItemFields.SeriesPrimaryImage))
{
episodeSeries = episodeSeries ?? episode.Series;
@@ -1334,27 +1323,6 @@ namespace Emby.Server.Implementations.Dto
if (episodeSeries != null)
{
dto.SeriesStudio = episodeSeries.Studios.FirstOrDefault();
- if (!string.IsNullOrWhiteSpace(dto.SeriesStudio))
- {
- try
- {
- var studio = _libraryManager.GetStudio(dto.SeriesStudio);
-
- if (studio != null)
- {
- dto.SeriesStudioInfo = new StudioDto
- {
- Name = dto.SeriesStudio,
- Id = studio.Id.ToString("N"),
- PrimaryImageTag = GetImageCacheTag(studio, ImageType.Primary)
- };
- }
- }
- catch (Exception ex)
- {
-
- }
- }
}
}
}
@@ -1363,8 +1331,7 @@ namespace Emby.Server.Implementations.Dto
var series = item as Series;
if (series != null)
{
- dto.AirDays = series.AirDays;
- dto.AirTime = series.AirTime;
+ dto.AirDays = new DayOfWeek[] {};
dto.Status = series.Status.HasValue ? series.Status.Value.ToString() : null;
}
@@ -1498,7 +1465,9 @@ namespace Emby.Server.Implementations.Dto
BaseItem parent = null;
var isFirst = true;
- while (((!dto.HasLogo && logoLimit > 0) || (!dto.HasArtImage && artLimit > 0) || (!dto.HasThumb && thumbLimit > 0) || parent is Series) &&
+ var imageTags = dto.ImageTags;
+
+ while (((!(imageTags != null && imageTags.ContainsKey(ImageType.Logo)) && logoLimit > 0) || (!(imageTags != null && imageTags.ContainsKey(ImageType.Art)) && artLimit > 0) || (!(imageTags != null && imageTags.ContainsKey(ImageType.Thumb)) && thumbLimit > 0) || parent is Series) &&
(parent = parent ?? (isFirst ? GetImageDisplayParent(item, item) ?? owner : parent)) != null)
{
if (parent == null)
@@ -1508,7 +1477,7 @@ namespace Emby.Server.Implementations.Dto
var allImages = parent.ImageInfos;
- if (logoLimit > 0 && !dto.HasLogo && dto.ParentLogoItemId == null)
+ if (logoLimit > 0 && !(imageTags != null && imageTags.ContainsKey(ImageType.Logo)) && dto.ParentLogoItemId == null)
{
var image = allImages.FirstOrDefault(i => i.Type == ImageType.Logo);
@@ -1518,7 +1487,7 @@ namespace Emby.Server.Implementations.Dto
dto.ParentLogoImageTag = GetImageCacheTag(parent, image);
}
}
- if (artLimit > 0 && !dto.HasArtImage && dto.ParentArtItemId == null)
+ if (artLimit > 0 && !(imageTags != null && imageTags.ContainsKey(ImageType.Art)) && dto.ParentArtItemId == null)
{
var image = allImages.FirstOrDefault(i => i.Type == ImageType.Art);
@@ -1528,7 +1497,7 @@ namespace Emby.Server.Implementations.Dto
dto.ParentArtImageTag = GetImageCacheTag(parent, image);
}
}
- if (thumbLimit > 0 && !dto.HasThumb && (dto.ParentThumbItemId == null || parent is Series) && !(parent is ICollectionFolder) && !(parent is UserView))
+ if (thumbLimit > 0 && !(imageTags != null && imageTags.ContainsKey(ImageType.Thumb)) && (dto.ParentThumbItemId == null || parent is Series) && !(parent is ICollectionFolder) && !(parent is UserView))
{
var image = allImages.FirstOrDefault(i => i.Type == ImageType.Thumb);
@@ -1538,7 +1507,7 @@ namespace Emby.Server.Implementations.Dto
dto.ParentThumbImageTag = GetImageCacheTag(parent, image);
}
}
- if (backdropLimit > 0 && !dto.HasBackdrop)
+ if (backdropLimit > 0 && !((dto.BackdropImageTags != null && dto.BackdropImageTags.Length > 0) || (dto.ParentBackdropImageTags != null && dto.ParentBackdropImageTags.Length > 0)))
{
var images = allImages.Where(i => i.Type == ImageType.Backdrop).Take(backdropLimit).ToList();
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index d4976196c..38f51919a 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -249,7 +249,6 @@
<Compile Include="Social\SharingManager.cs" />
<Compile Include="Social\SharingRepository.cs" />
<Compile Include="Sorting\AiredEpisodeOrderComparer.cs" />
- <Compile Include="Sorting\AirTimeComparer.cs" />
<Compile Include="Sorting\AlbumArtistComparer.cs" />
<Compile Include="Sorting\AlbumComparer.cs" />
<Compile Include="Sorting\AlphanumComparator.cs" />
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index 271dac153..b4ba58cfd 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -1172,6 +1172,8 @@ namespace Emby.Server.Implementations.Library
progress.Report(percent * 100);
}
+ await ItemRepository.UpdateInheritedValues(cancellationToken).ConfigureAwait(false);
+
progress.Report(100);
}
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs
index 0b39cfc47..9a1a229c5 100644
--- a/Emby.Server.Implementations/Session/SessionManager.cs
+++ b/Emby.Server.Implementations/Session/SessionManager.cs
@@ -1686,7 +1686,6 @@ namespace Emby.Server.Implementations.Session
dtoOptions.Fields.Remove(ItemFields.RecursiveItemCount);
dtoOptions.Fields.Remove(ItemFields.RemoteTrailers);
dtoOptions.Fields.Remove(ItemFields.SeasonUserData);
- dtoOptions.Fields.Remove(ItemFields.SeriesGenres);
dtoOptions.Fields.Remove(ItemFields.Settings);
dtoOptions.Fields.Remove(ItemFields.SortName);
dtoOptions.Fields.Remove(ItemFields.Tags);
diff --git a/Emby.Server.Implementations/Sorting/AirTimeComparer.cs b/Emby.Server.Implementations/Sorting/AirTimeComparer.cs
deleted file mode 100644
index bc05e9af3..000000000
--- a/Emby.Server.Implementations/Sorting/AirTimeComparer.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.Sorting;
-using MediaBrowser.Model.Querying;
-using System;
-
-namespace Emby.Server.Implementations.Sorting
-{
- public class AirTimeComparer : IBaseItemComparer
- {
- /// <summary>
- /// Compares the specified x.
- /// </summary>
- /// <param name="x">The x.</param>
- /// <param name="y">The y.</param>
- /// <returns>System.Int32.</returns>
- public int Compare(BaseItem x, BaseItem y)
- {
- return DateTime.Compare(GetValue(x), GetValue(y));
- }
-
- /// <summary>
- /// Gets the value.
- /// </summary>
- /// <param name="x">The x.</param>
- /// <returns>System.String.</returns>
- private DateTime GetValue(BaseItem x)
- {
- var series = x as Series;
-
- if (series == null)
- {
- var season = x as Season;
-
- if (season != null)
- {
- series = season.Series;
- }
- else
- {
- var episode = x as Episode;
-
- if (episode != null)
- {
- series = episode.Series;
- }
- }
- }
-
- if (series != null)
- {
- DateTime result;
- if (DateTime.TryParse(series.AirTime, out result))
- {
- return result;
- }
- }
-
- return DateTime.MinValue;
- }
-
- /// <summary>
- /// Gets the name.
- /// </summary>
- /// <value>The name.</value>
- public string Name
- {
- get { return ItemSortBy.AirTime; }
- }
- }
-}
diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs
index 68b30ec1e..13b5b64d9 100644
--- a/MediaBrowser.Api/ItemUpdateService.cs
+++ b/MediaBrowser.Api/ItemUpdateService.cs
@@ -332,13 +332,6 @@ namespace MediaBrowser.Api
video.Video3DFormat = request.Video3DFormat;
}
- var game = item as Game;
-
- if (game != null)
- {
- game.PlayersSupported = request.Players;
- }
-
if (request.AlbumArtists != null)
{
var hasAlbumArtists = item as IHasAlbumArtist;
@@ -379,8 +372,6 @@ namespace MediaBrowser.Api
if (series != null)
{
series.Status = GetSeriesStatus(request);
- series.AirDays = request.AirDays;
- series.AirTime = request.AirTime;
}
}
diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs
index cd56b69bd..7d612a796 100644
--- a/MediaBrowser.Api/StartupWizardService.cs
+++ b/MediaBrowser.Api/StartupWizardService.cs
@@ -95,7 +95,6 @@ namespace MediaBrowser.Api
config.EnableStandaloneMusicKeys = true;
config.EnableCaseSensitiveItemIds = true;
config.SkipDeserializationForBasicTypes = true;
- config.SkipDeserializationForAudio = true;
config.EnableLocalizedGuids = true;
config.EnableSimpleArtistDetection = true;
config.EnableNormalizedItemByNameIds = true;
diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs
index 5520737b4..f88522f78 100644
--- a/MediaBrowser.Controller/Entities/AggregateFolder.cs
+++ b/MediaBrowser.Controller/Entities/AggregateFolder.cs
@@ -23,18 +23,6 @@ namespace MediaBrowser.Controller.Entities
PhysicalLocationsList = new List<string>();
}
- /// <summary>
- /// We don't support manual shortcuts
- /// </summary>
- [IgnoreDataMember]
- protected override bool SupportsShortcutChildren
- {
- get
- {
- return false;
- }
- }
-
[IgnoreDataMember]
public override bool IsPhysicalRoot
{
diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs
index f314d82c1..d02e469d4 100644
--- a/MediaBrowser.Controller/Entities/CollectionFolder.cs
+++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs
@@ -32,15 +32,6 @@ namespace MediaBrowser.Controller.Entities
}
[IgnoreDataMember]
- protected override bool SupportsShortcutChildren
- {
- get
- {
- return true;
- }
- }
-
- [IgnoreDataMember]
public override bool SupportsPlayedStatus
{
get
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index f9133ccb0..7d1c7314d 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -22,8 +22,6 @@ namespace MediaBrowser.Controller.Entities.TV
{
public Series()
{
- AirDays = new List<DayOfWeek>();
-
RemoteTrailers = EmptyMediaUrlArray;
LocalTrailerIds = EmptyGuidArray;
RemoteTrailerIds = EmptyGuidArray;
@@ -77,16 +75,6 @@ namespace MediaBrowser.Controller.Entities.TV
/// </summary>
/// <value>The status.</value>
public SeriesStatus? Status { get; set; }
- /// <summary>
- /// Gets or sets the air days.
- /// </summary>
- /// <value>The air days.</value>
- public List<DayOfWeek> AirDays { get; set; }
- /// <summary>
- /// Gets or sets the air time.
- /// </summary>
- /// <value>The air time.</value>
- public string AirTime { get; set; }
/// <summary>
/// Gets or sets the date last episode added.
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index b7cf50ee3..f0d4d544e 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -1674,15 +1674,6 @@ namespace MediaBrowser.Controller.Entities
}
}
- if (query.AirDays.Length > 0)
- {
- var ok = new[] { item }.OfType<Series>().Any(p => p.AirDays != null && query.AirDays.Any(d => p.AirDays.Contains(d)));
- if (!ok)
- {
- return false;
- }
- }
-
if (query.SeriesStatuses.Length > 0)
{
var ok = new[] { item }.OfType<Series>().Any(p => p.Status.HasValue && query.SeriesStatuses.Contains(p.Status.Value));
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index a570f7b10..db66837e4 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -162,7 +162,6 @@ namespace MediaBrowser.Model.Configuration
public bool EnableAutomaticRestart { get; set; }
public bool SkipDeserializationForBasicTypes { get; set; }
- public bool SkipDeserializationForAudio { get; set; }
public string ServerName { get; set; }
public string WanDdns { get; set; }
@@ -349,7 +348,9 @@ namespace MediaBrowser.Model.Configuration
Limit = 1,
Type = ImageType.Logo
}
- }
+ },
+
+ DisabledImageFetchers = new [] {"FanArt"}
},
new MetadataOptions(1, 1280)
@@ -539,7 +540,8 @@ namespace MediaBrowser.Model.Configuration
Type = ImageType.Thumb
}
},
- DisabledMetadataFetchers = new []{ "TheMovieDb" }
+ DisabledMetadataFetchers = new []{ "TheMovieDb" },
+ DisabledImageFetchers = new [] { "FanArt" }
},
new MetadataOptions(0, 1280)
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index e5cc22c5f..2df69a58f 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -210,12 +210,6 @@ namespace MediaBrowser.Model.Dto
public List<string> Genres { get; set; }
/// <summary>
- /// Gets or sets the series genres.
- /// </summary>
- /// <value>The series genres.</value>
- public List<string> SeriesGenres { get; set; }
-
- /// <summary>
/// Gets or sets the community rating.
/// </summary>
/// <value>The community rating.</value>
@@ -258,12 +252,6 @@ namespace MediaBrowser.Model.Dto
public int? ProductionYear { get; set; }
/// <summary>
- /// Gets or sets the players supported by a game.
- /// </summary>
- /// <value>The players.</value>
- public int? Players { get; set; }
-
- /// <summary>
/// Gets or sets a value indicating whether this instance is place holder.
/// </summary>
/// <value><c>null</c> if [is place holder] contains no value, <c>true</c> if [is place holder]; otherwise, <c>false</c>.</value>
@@ -432,7 +420,7 @@ namespace MediaBrowser.Model.Dto
/// Gets or sets the air days.
/// </summary>
/// <value>The air days.</value>
- public List<DayOfWeek> AirDays { get; set; }
+ public DayOfWeek[] AirDays { get; set; }
/// <summary>
/// Gets or sets the tags.
@@ -456,7 +444,7 @@ namespace MediaBrowser.Model.Dto
/// Gets or sets the artist items.
/// </summary>
/// <value>The artist items.</value>
- public List<NameIdPair> ArtistItems { get; set; }
+ public NameIdPair[] ArtistItems { get; set; }
/// <summary>
/// Gets or sets the album.
@@ -598,8 +586,6 @@ namespace MediaBrowser.Model.Dto
/// <value>The series studio.</value>
public string SeriesStudio { get; set; }
- public StudioDto SeriesStudioInfo { get; set; }
-
/// <summary>
/// Gets or sets the parent thumb item id.
/// </summary>
@@ -742,46 +728,6 @@ namespace MediaBrowser.Model.Dto
public string SeriesTimerId { get; set; }
/// <summary>
- /// Gets a value indicating whether this instance has art.
- /// </summary>
- /// <value><c>true</c> if this instance has art; otherwise, <c>false</c>.</value>
- [IgnoreDataMember]
- public bool HasArtImage
- {
- get { return ImageTags != null && ImageTags.ContainsKey(ImageType.Art); }
- }
-
- /// <summary>
- /// Gets a value indicating whether this instance has logo.
- /// </summary>
- /// <value><c>true</c> if this instance has logo; otherwise, <c>false</c>.</value>
- [IgnoreDataMember]
- public bool HasLogo
- {
- get { return ImageTags != null && ImageTags.ContainsKey(ImageType.Logo); }
- }
-
- /// <summary>
- /// Gets a value indicating whether this instance has thumb.
- /// </summary>
- /// <value><c>true</c> if this instance has thumb; otherwise, <c>false</c>.</value>
- [IgnoreDataMember]
- public bool HasThumb
- {
- get { return ImageTags != null && ImageTags.ContainsKey(ImageType.Thumb); }
- }
-
- /// <summary>
- /// Gets a value indicating whether this instance has thumb.
- /// </summary>
- /// <value><c>true</c> if this instance has thumb; otherwise, <c>false</c>.</value>
- [IgnoreDataMember]
- public bool HasBackdrop
- {
- get { return (BackdropImageTags != null && BackdropImageTags.Length > 0) || (ParentBackdropImageTags != null && ParentBackdropImageTags.Length > 0); }
- }
-
- /// <summary>
/// Gets or sets the program identifier.
/// </summary>
/// <value>The program identifier.</value>
diff --git a/MediaBrowser.Model/Dto/StudioDto.cs b/MediaBrowser.Model/Dto/StudioDto.cs
deleted file mode 100644
index 10dc60699..000000000
--- a/MediaBrowser.Model/Dto/StudioDto.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Diagnostics;
-
-namespace MediaBrowser.Model.Dto
-{
- /// <summary>
- /// Class StudioDto
- /// </summary>
- [DebuggerDisplay("Name = {Name}")]
- public class StudioDto
- {
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <value>The name.</value>
- public string Name { get; set; }
-
- /// <summary>
- /// Gets or sets the identifier.
- /// </summary>
- /// <value>The identifier.</value>
- public string Id { get; set; }
-
- /// <summary>
- /// Gets or sets the primary image tag.
- /// </summary>
- /// <value>The primary image tag.</value>
- public string PrimaryImageTag { get; set; }
- }
-} \ No newline at end of file
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index 249e970dd..547baee66 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -284,7 +284,6 @@
<Compile Include="Providers\ExternalUrl.cs" />
<Compile Include="Providers\ImageProviderInfo.cs" />
<Compile Include="Providers\RemoteImageInfo.cs" />
- <Compile Include="Dto\StudioDto.cs" />
<Compile Include="Entities\CollectionType.cs" />
<Compile Include="Entities\ItemReview.cs" />
<Compile Include="Entities\MediaUrl.cs" />
diff --git a/MediaBrowser.Model/Querying/ItemFields.cs b/MediaBrowser.Model/Querying/ItemFields.cs
index a294e4a3a..6cc6ba329 100644
--- a/MediaBrowser.Model/Querying/ItemFields.cs
+++ b/MediaBrowser.Model/Querying/ItemFields.cs
@@ -153,11 +153,6 @@
/// </summary>
ScreenshotImageTags,
- /// <summary>
- /// The series genres
- /// </summary>
- SeriesGenres,
-
SeriesPrimaryImage,
/// <summary>
diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs
index cfea0c315..5ca36b448 100644
--- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs
+++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs
@@ -64,20 +64,10 @@ namespace MediaBrowser.Providers.TV
var sourceItem = source.Item;
var targetItem = target.Item;
- if (replaceData || string.IsNullOrEmpty(targetItem.AirTime))
- {
- targetItem.AirTime = sourceItem.AirTime;
- }
-
if (replaceData || !targetItem.Status.HasValue)
{
targetItem.Status = sourceItem.Status;
}
-
- if (replaceData || targetItem.AirDays == null || targetItem.AirDays.Count == 0)
- {
- targetItem.AirDays = sourceItem.AirDays;
- }
}
}
}
diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs
index 78556c5a4..4a062f97e 100644
--- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs
@@ -1090,28 +1090,6 @@ namespace MediaBrowser.Providers.TV
break;
}
- case "Airs_DayOfWeek":
- {
- var val = reader.ReadElementContentAsString();
-
- if (!string.IsNullOrWhiteSpace(val))
- {
- item.AirDays = TVUtils.GetAirDays(val);
- }
- break;
- }
-
- case "Airs_Time":
- {
- var val = reader.ReadElementContentAsString();
-
- if (!string.IsNullOrWhiteSpace(val))
- {
- item.AirTime = val;
- }
- break;
- }
-
case "ContentRating":
{
var val = reader.ReadElementContentAsString();
diff --git a/MediaBrowser.Providers/TV/TvExternalIds.cs b/MediaBrowser.Providers/TV/TvExternalIds.cs
index d2860a622..104bcb5ae 100644
--- a/MediaBrowser.Providers/TV/TvExternalIds.cs
+++ b/MediaBrowser.Providers/TV/TvExternalIds.cs
@@ -96,27 +96,4 @@ namespace MediaBrowser.Providers.TV
return item is Episode;
}
}
-
- public class TvComSeriesExternalId : IExternalId
- {
- public string Name
- {
- get { return "TV.com"; }
- }
-
- public string Key
- {
- get { return MetadataProviders.Tvcom.ToString(); }
- }
-
- public string UrlFormatString
- {
- get { return null; }
- }
-
- public bool Supports(IHasProviderIds item)
- {
- return item is Series;
- }
- }
}
diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs
index b0db4e6f3..795540e26 100644
--- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs
+++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs
@@ -61,22 +61,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
}
break;
}
- case "airs_dayofweek":
- {
- item.AirDays = TVUtils.GetAirDays(reader.ReadElementContentAsString());
- break;
- }
-
- case "airs_time":
- {
- var val = reader.ReadElementContentAsString();
-
- if (!string.IsNullOrWhiteSpace(val))
- {
- item.AirTime = val;
- }
- break;
- }
case "status":
{
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index 5f14137bd..41c376ddf 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -611,13 +611,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
writtenProviderIds.Add(MetadataProviders.Tmdb.ToString());
}
- var tvcom = item.GetProviderId(MetadataProviders.Tvcom);
- if (!string.IsNullOrEmpty(tvcom))
- {
- writer.WriteElementString("tvcomid", tvcom);
- writtenProviderIds.Add(MetadataProviders.Tvcom.ToString());
- }
-
if (!string.IsNullOrEmpty(item.PreferredMetadataLanguage))
{
writer.WriteElementString("language", item.PreferredMetadataLanguage);
diff --git a/MediaBrowser.XbmcMetadata/Savers/SeriesNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/SeriesNfoSaver.cs
index e9b2b786a..a2f07d952 100644
--- a/MediaBrowser.XbmcMetadata/Savers/SeriesNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/SeriesNfoSaver.cs
@@ -69,20 +69,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
{
writer.WriteElementString("status", series.Status.Value.ToString());
}
-
- if (!string.IsNullOrEmpty(series.AirTime))
- {
- writer.WriteElementString("airs_time", series.AirTime);
- }
-
- if (series.AirDays.Count == 7)
- {
- writer.WriteElementString("airs_dayofweek", "Daily");
- }
- else if (series.AirDays.Count > 0)
- {
- writer.WriteElementString("airs_dayofweek", series.AirDays[0].ToString());
- }
}
protected override List<string> GetTagsUsed(IHasMetadata item)
@@ -94,9 +80,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
"episodeguide",
"season",
"episode",
- "status",
- "airs_time",
- "airs_dayofweek"
+ "status"
});
return list;
}
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index 890ecaccd..d82242826 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.717</version>
+ <version>3.0.720</version>
<title>Emby.Common</title>
<authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 6b7a8729b..8c3f90e4f 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.717</version>
+ <version>3.0.720</version>
<title>Emby.Server.Core</title>
<authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Emby Server.</description>
<copyright>Copyright © Emby 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.717" />
+ <dependency id="MediaBrowser.Common" version="3.0.720" />
</dependencies>
</metadata>
<files>
diff --git a/SharedVersion.cs b/SharedVersion.cs
index b201954e6..719ace03f 100644
--- a/SharedVersion.cs
+++ b/SharedVersion.cs
@@ -1,3 +1,3 @@
using System.Reflection;
-[assembly: AssemblyVersion("3.2.26.20")]
+[assembly: AssemblyVersion("3.2.26.21")]