mirror of
https://github.com/jellyfin/jellyfin
synced 2024-09-06 08:04:44 +00:00
reduce traffic from session player
This commit is contained in:
parent
900714c866
commit
a7db7cd40c
|
@ -345,7 +345,10 @@ namespace Emby.Server.Implementations.Data
|
||||||
|
|
||||||
// items by name
|
// items by name
|
||||||
"create index if not exists idx_ItemValues6 on ItemValues(ItemId,Type,CleanValue)",
|
"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);
|
connection.RunQueries(postQueries);
|
||||||
|
@ -1293,16 +1296,13 @@ namespace Emby.Server.Implementations.Data
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_config.Configuration.SkipDeserializationForAudio)
|
if (type == typeof(Audio))
|
||||||
{
|
{
|
||||||
if (type == typeof(Audio))
|
return false;
|
||||||
{
|
}
|
||||||
return false;
|
if (type == typeof(MusicAlbum))
|
||||||
}
|
{
|
||||||
if (type == typeof(MusicAlbum))
|
return false;
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -4695,41 +4695,65 @@ namespace Emby.Server.Implementations.Data
|
||||||
|
|
||||||
private async Task UpdateInheritedTags(CancellationToken cancellationToken)
|
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 (WriteLock.Write())
|
||||||
{
|
{
|
||||||
using (var connection = CreateConnection())
|
using (var connection = CreateConnection())
|
||||||
{
|
{
|
||||||
foreach (var row in connection.Query(commandText))
|
connection.RunInTransaction(db =>
|
||||||
{
|
{
|
||||||
var id = row.GetGuid(0);
|
foreach (var row in connection.Query(commandText))
|
||||||
string value = row.IsDBNull(2) ? null : row.GetString(2);
|
|
||||||
|
|
||||||
newValues.Add(new Tuple<Guid, string>(id, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Debug("UpdateInheritedTags - {0} rows", newValues.Count);
|
|
||||||
if (newValues.Count == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// write lock here
|
|
||||||
using (var statement = PrepareStatement(connection, "Update TypedBaseItems set InheritedTags=@InheritedTags where Guid=@Guid"))
|
|
||||||
{
|
|
||||||
foreach (var item in newValues)
|
|
||||||
{
|
{
|
||||||
var paramList = new List<object>();
|
var id = row.GetGuid(0);
|
||||||
|
string value = row.IsDBNull(1) ? null : row.GetString(1);
|
||||||
|
|
||||||
paramList.Add(item.Item1);
|
var valuesArray = string.IsNullOrWhiteSpace(value) ? new string[] { } : value.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
paramList.Add(item.Item2);
|
|
||||||
|
|
||||||
statement.Execute(paramList.ToArray());
|
newValues.Add(new Tuple<Guid, string[]>(id, valuesArray));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
Logger.Debug("UpdateInheritedTags - {0} rows", newValues.Count);
|
||||||
|
if (newValues.Count == 0)
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
|
||||||
|
deleteStatement.Reset();
|
||||||
|
deleteStatement.TryBind("@ItemId", guidBlob);
|
||||||
|
deleteStatement.MoveNext();
|
||||||
|
|
||||||
|
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();
|
CheckDisposed();
|
||||||
|
|
||||||
|
var guidBlob = itemId.ToGuidBlob();
|
||||||
|
|
||||||
// First delete
|
// 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)"))
|
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.Reset();
|
||||||
|
|
||||||
statement.TryBind("@ItemId", itemId.ToGuidBlob());
|
statement.TryBind("@ItemId", guidBlob);
|
||||||
statement.TryBind("@Type", pair.Item1);
|
statement.TryBind("@Type", pair.Item1);
|
||||||
statement.TryBind("@Value", itemValue);
|
statement.TryBind("@Value", itemValue);
|
||||||
|
|
||||||
|
|
|
@ -1119,8 +1119,7 @@ namespace Emby.Server.Implementations.Dto
|
||||||
|
|
||||||
// Include artists that are not in the database yet, e.g., just added via metadata editor
|
// 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();
|
//var foundArtists = artistItems.Items.Select(i => i.Item1.Name).ToList();
|
||||||
dto.ArtistItems = new List<NameIdPair>();
|
dto.ArtistItems = hasArtist.Artists
|
||||||
dto.ArtistItems.AddRange(hasArtist.Artists
|
|
||||||
//.Except(foundArtists, new DistinctNameComparer())
|
//.Except(foundArtists, new DistinctNameComparer())
|
||||||
.Select(i =>
|
.Select(i =>
|
||||||
{
|
{
|
||||||
|
@ -1145,7 +1144,7 @@ namespace Emby.Server.Implementations.Dto
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}).Where(i => i != null));
|
}).Where(i => i != null).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
var hasAlbumArtist = item as IHasAlbumArtist;
|
var hasAlbumArtist = item as IHasAlbumArtist;
|
||||||
|
@ -1332,8 +1331,7 @@ namespace Emby.Server.Implementations.Dto
|
||||||
var series = item as Series;
|
var series = item as Series;
|
||||||
if (series != null)
|
if (series != null)
|
||||||
{
|
{
|
||||||
dto.AirDays = series.AirDays.ToArray();
|
dto.AirDays = new DayOfWeek[] {};
|
||||||
dto.AirTime = series.AirTime;
|
|
||||||
dto.Status = series.Status.HasValue ? series.Status.Value.ToString() : null;
|
dto.Status = series.Status.HasValue ? series.Status.Value.ToString() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -249,7 +249,6 @@
|
||||||
<Compile Include="Social\SharingManager.cs" />
|
<Compile Include="Social\SharingManager.cs" />
|
||||||
<Compile Include="Social\SharingRepository.cs" />
|
<Compile Include="Social\SharingRepository.cs" />
|
||||||
<Compile Include="Sorting\AiredEpisodeOrderComparer.cs" />
|
<Compile Include="Sorting\AiredEpisodeOrderComparer.cs" />
|
||||||
<Compile Include="Sorting\AirTimeComparer.cs" />
|
|
||||||
<Compile Include="Sorting\AlbumArtistComparer.cs" />
|
<Compile Include="Sorting\AlbumArtistComparer.cs" />
|
||||||
<Compile Include="Sorting\AlbumComparer.cs" />
|
<Compile Include="Sorting\AlbumComparer.cs" />
|
||||||
<Compile Include="Sorting\AlphanumComparator.cs" />
|
<Compile Include="Sorting\AlphanumComparator.cs" />
|
||||||
|
|
|
@ -1172,6 +1172,8 @@ namespace Emby.Server.Implementations.Library
|
||||||
progress.Report(percent * 100);
|
progress.Report(percent * 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await ItemRepository.UpdateInheritedValues(cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
progress.Report(100);
|
progress.Report(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -372,8 +372,6 @@ namespace MediaBrowser.Api
|
||||||
if (series != null)
|
if (series != null)
|
||||||
{
|
{
|
||||||
series.Status = GetSeriesStatus(request);
|
series.Status = GetSeriesStatus(request);
|
||||||
series.AirDays = request.AirDays;
|
|
||||||
series.AirTime = request.AirTime;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,6 @@ namespace MediaBrowser.Api
|
||||||
config.EnableStandaloneMusicKeys = true;
|
config.EnableStandaloneMusicKeys = true;
|
||||||
config.EnableCaseSensitiveItemIds = true;
|
config.EnableCaseSensitiveItemIds = true;
|
||||||
config.SkipDeserializationForBasicTypes = true;
|
config.SkipDeserializationForBasicTypes = true;
|
||||||
config.SkipDeserializationForAudio = true;
|
|
||||||
config.EnableLocalizedGuids = true;
|
config.EnableLocalizedGuids = true;
|
||||||
config.EnableSimpleArtistDetection = true;
|
config.EnableSimpleArtistDetection = true;
|
||||||
config.EnableNormalizedItemByNameIds = true;
|
config.EnableNormalizedItemByNameIds = true;
|
||||||
|
|
|
@ -23,18 +23,6 @@ namespace MediaBrowser.Controller.Entities
|
||||||
PhysicalLocationsList = new List<string>();
|
PhysicalLocationsList = new List<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// We don't support manual shortcuts
|
|
||||||
/// </summary>
|
|
||||||
[IgnoreDataMember]
|
|
||||||
protected override bool SupportsShortcutChildren
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public override bool IsPhysicalRoot
|
public override bool IsPhysicalRoot
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,15 +31,6 @@ namespace MediaBrowser.Controller.Entities
|
||||||
PhysicalFolderIds = new List<Guid>();
|
PhysicalFolderIds = new List<Guid>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
|
||||||
protected override bool SupportsShortcutChildren
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public override bool SupportsPlayedStatus
|
public override bool SupportsPlayedStatus
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,8 +22,6 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
{
|
{
|
||||||
public Series()
|
public Series()
|
||||||
{
|
{
|
||||||
AirDays = new List<DayOfWeek>();
|
|
||||||
|
|
||||||
RemoteTrailers = EmptyMediaUrlArray;
|
RemoteTrailers = EmptyMediaUrlArray;
|
||||||
LocalTrailerIds = EmptyGuidArray;
|
LocalTrailerIds = EmptyGuidArray;
|
||||||
RemoteTrailerIds = EmptyGuidArray;
|
RemoteTrailerIds = EmptyGuidArray;
|
||||||
|
@ -77,16 +75,6 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The status.</value>
|
/// <value>The status.</value>
|
||||||
public SeriesStatus? Status { get; set; }
|
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>
|
/// <summary>
|
||||||
/// Gets or sets the date last episode added.
|
/// Gets or sets the date last episode added.
|
||||||
|
|
|
@ -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)
|
if (query.SeriesStatuses.Length > 0)
|
||||||
{
|
{
|
||||||
var ok = new[] { item }.OfType<Series>().Any(p => p.Status.HasValue && query.SeriesStatuses.Contains(p.Status.Value));
|
var ok = new[] { item }.OfType<Series>().Any(p => p.Status.HasValue && query.SeriesStatuses.Contains(p.Status.Value));
|
||||||
|
|
|
@ -162,7 +162,6 @@ namespace MediaBrowser.Model.Configuration
|
||||||
|
|
||||||
public bool EnableAutomaticRestart { get; set; }
|
public bool EnableAutomaticRestart { get; set; }
|
||||||
public bool SkipDeserializationForBasicTypes { get; set; }
|
public bool SkipDeserializationForBasicTypes { get; set; }
|
||||||
public bool SkipDeserializationForAudio { get; set; }
|
|
||||||
|
|
||||||
public string ServerName { get; set; }
|
public string ServerName { get; set; }
|
||||||
public string WanDdns { get; set; }
|
public string WanDdns { get; set; }
|
||||||
|
|
|
@ -444,7 +444,7 @@ namespace MediaBrowser.Model.Dto
|
||||||
/// Gets or sets the artist items.
|
/// Gets or sets the artist items.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The artist items.</value>
|
/// <value>The artist items.</value>
|
||||||
public List<NameIdPair> ArtistItems { get; set; }
|
public NameIdPair[] ArtistItems { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the album.
|
/// Gets or sets the album.
|
||||||
|
|
|
@ -64,20 +64,10 @@ namespace MediaBrowser.Providers.TV
|
||||||
var sourceItem = source.Item;
|
var sourceItem = source.Item;
|
||||||
var targetItem = target.Item;
|
var targetItem = target.Item;
|
||||||
|
|
||||||
if (replaceData || string.IsNullOrEmpty(targetItem.AirTime))
|
|
||||||
{
|
|
||||||
targetItem.AirTime = sourceItem.AirTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (replaceData || !targetItem.Status.HasValue)
|
if (replaceData || !targetItem.Status.HasValue)
|
||||||
{
|
{
|
||||||
targetItem.Status = sourceItem.Status;
|
targetItem.Status = sourceItem.Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (replaceData || targetItem.AirDays == null || targetItem.AirDays.Count == 0)
|
|
||||||
{
|
|
||||||
targetItem.AirDays = sourceItem.AirDays;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1090,28 +1090,6 @@ namespace MediaBrowser.Providers.TV
|
||||||
break;
|
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":
|
case "ContentRating":
|
||||||
{
|
{
|
||||||
var val = reader.ReadElementContentAsString();
|
var val = reader.ReadElementContentAsString();
|
||||||
|
|
|
@ -96,27 +96,4 @@ namespace MediaBrowser.Providers.TV
|
||||||
return item is Episode;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,22 +61,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
}
|
}
|
||||||
break;
|
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":
|
case "status":
|
||||||
{
|
{
|
||||||
|
|
|
@ -611,13 +611,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
writtenProviderIds.Add(MetadataProviders.Tmdb.ToString());
|
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))
|
if (!string.IsNullOrEmpty(item.PreferredMetadataLanguage))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("language", item.PreferredMetadataLanguage);
|
writer.WriteElementString("language", item.PreferredMetadataLanguage);
|
||||||
|
|
|
@ -69,20 +69,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
{
|
{
|
||||||
writer.WriteElementString("status", series.Status.Value.ToString());
|
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)
|
protected override List<string> GetTagsUsed(IHasMetadata item)
|
||||||
|
@ -94,9 +80,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
"episodeguide",
|
"episodeguide",
|
||||||
"season",
|
"season",
|
||||||
"episode",
|
"episode",
|
||||||
"status",
|
"status"
|
||||||
"airs_time",
|
|
||||||
"airs_dayofweek"
|
|
||||||
});
|
});
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Common</id>
|
<id>MediaBrowser.Common</id>
|
||||||
<version>3.0.717</version>
|
<version>3.0.720</version>
|
||||||
<title>Emby.Common</title>
|
<title>Emby.Common</title>
|
||||||
<authors>Emby Team</authors>
|
<authors>Emby Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Server.Core</id>
|
<id>MediaBrowser.Server.Core</id>
|
||||||
<version>3.0.717</version>
|
<version>3.0.720</version>
|
||||||
<title>Emby.Server.Core</title>
|
<title>Emby.Server.Core</title>
|
||||||
<authors>Emby Team</authors>
|
<authors>Emby Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<description>Contains core components required to build plugins for Emby Server.</description>
|
<description>Contains core components required to build plugins for Emby Server.</description>
|
||||||
<copyright>Copyright © Emby 2013</copyright>
|
<copyright>Copyright © Emby 2013</copyright>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="MediaBrowser.Common" version="3.0.717" />
|
<dependency id="MediaBrowser.Common" version="3.0.720" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
[assembly: AssemblyVersion("3.2.26.20")]
|
[assembly: AssemblyVersion("3.2.26.21")]
|
||||||
|
|
Loading…
Reference in a new issue