mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
Merge pull request #3336 from telans/specific-fixes
Fix trivial SA1005, SA1111, SA1508, SA1510 warnings
This commit is contained in:
commit
100e9d586d
@ -466,12 +466,12 @@ namespace Emby.Dlna.ContentDirectory
|
|||||||
}
|
}
|
||||||
else if (search.SearchType == SearchType.Playlist)
|
else if (search.SearchType == SearchType.Playlist)
|
||||||
{
|
{
|
||||||
//items = items.OfType<Playlist>();
|
// items = items.OfType<Playlist>();
|
||||||
isFolder = true;
|
isFolder = true;
|
||||||
}
|
}
|
||||||
else if (search.SearchType == SearchType.MusicAlbum)
|
else if (search.SearchType == SearchType.MusicAlbum)
|
||||||
{
|
{
|
||||||
//items = items.OfType<MusicAlbum>();
|
// items = items.OfType<MusicAlbum>();
|
||||||
isFolder = true;
|
isFolder = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -926,7 +926,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||||||
private QueryResult<ServerItem> GetMovieCollections(User user, InternalItemsQuery query)
|
private QueryResult<ServerItem> GetMovieCollections(User user, InternalItemsQuery query)
|
||||||
{
|
{
|
||||||
query.Recursive = true;
|
query.Recursive = true;
|
||||||
//query.Parent = parent;
|
// query.Parent = parent;
|
||||||
query.SetUser(user);
|
query.SetUser(user);
|
||||||
|
|
||||||
query.IncludeItemTypes = new[] { typeof(BoxSet).Name };
|
query.IncludeItemTypes = new[] { typeof(BoxSet).Name };
|
||||||
|
@ -98,21 +98,21 @@ namespace Emby.Dlna.Didl
|
|||||||
{
|
{
|
||||||
using (var writer = XmlWriter.Create(builder, settings))
|
using (var writer = XmlWriter.Create(builder, settings))
|
||||||
{
|
{
|
||||||
//writer.WriteStartDocument();
|
// writer.WriteStartDocument();
|
||||||
|
|
||||||
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
|
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
|
||||||
|
|
||||||
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
|
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
|
||||||
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
|
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
|
||||||
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
|
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
|
||||||
//didl.SetAttribute("xmlns:sec", NS_SEC);
|
// didl.SetAttribute("xmlns:sec", NS_SEC);
|
||||||
|
|
||||||
WriteXmlRootAttributes(_profile, writer);
|
WriteXmlRootAttributes(_profile, writer);
|
||||||
|
|
||||||
WriteItemElement(writer, item, user, context, null, deviceId, filter, streamInfo);
|
WriteItemElement(writer, item, user, context, null, deviceId, filter, streamInfo);
|
||||||
|
|
||||||
writer.WriteFullEndElement();
|
writer.WriteFullEndElement();
|
||||||
//writer.WriteEndDocument();
|
// writer.WriteEndDocument();
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder.ToString();
|
return builder.ToString();
|
||||||
@ -711,7 +711,7 @@ namespace Emby.Dlna.Didl
|
|||||||
{
|
{
|
||||||
// Don't filter on dc:title because not all devices will include it in the filter
|
// Don't filter on dc:title because not all devices will include it in the filter
|
||||||
// MediaMonkey for example won't display content without a title
|
// MediaMonkey for example won't display content without a title
|
||||||
//if (filter.Contains("dc:title"))
|
// if (filter.Contains("dc:title"))
|
||||||
{
|
{
|
||||||
AddValue(writer, "dc", "title", GetDisplayName(item, itemStubType, context), NS_DC);
|
AddValue(writer, "dc", "title", GetDisplayName(item, itemStubType, context), NS_DC);
|
||||||
}
|
}
|
||||||
@ -750,7 +750,7 @@ namespace Emby.Dlna.Didl
|
|||||||
AddValue(writer, "dc", "description", desc, NS_DC);
|
AddValue(writer, "dc", "description", desc, NS_DC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if (filter.Contains("upnp:longDescription"))
|
// if (filter.Contains("upnp:longDescription"))
|
||||||
//{
|
//{
|
||||||
// if (!string.IsNullOrWhiteSpace(item.Overview))
|
// if (!string.IsNullOrWhiteSpace(item.Overview))
|
||||||
// {
|
// {
|
||||||
@ -1135,25 +1135,24 @@ namespace Emby.Dlna.Didl
|
|||||||
|
|
||||||
if (width == 0 || height == 0)
|
if (width == 0 || height == 0)
|
||||||
{
|
{
|
||||||
//_imageProcessor.GetImageSize(item, imageInfo);
|
// _imageProcessor.GetImageSize(item, imageInfo);
|
||||||
width = null;
|
width = null;
|
||||||
height = null;
|
height = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (width == -1 || height == -1)
|
else if (width == -1 || height == -1)
|
||||||
{
|
{
|
||||||
width = null;
|
width = null;
|
||||||
height = null;
|
height = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//try
|
// try
|
||||||
//{
|
//{
|
||||||
// var size = _imageProcessor.GetImageSize(imageInfo);
|
// var size = _imageProcessor.GetImageSize(imageInfo);
|
||||||
|
|
||||||
// width = size.Width;
|
// width = size.Width;
|
||||||
// height = size.Height;
|
// height = size.Height;
|
||||||
//}
|
//}
|
||||||
//catch
|
// catch
|
||||||
//{
|
//{
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
@ -12,7 +12,6 @@ namespace Emby.Dlna.Didl
|
|||||||
public Filter()
|
public Filter()
|
||||||
: this("*")
|
: this("*")
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Filter(string filter)
|
public Filter(string filter)
|
||||||
@ -26,7 +25,7 @@ namespace Emby.Dlna.Didl
|
|||||||
{
|
{
|
||||||
// Don't bother with this. Some clients (media monkey) use the filter and then don't display very well when very little data comes back.
|
// Don't bother with this. Some clients (media monkey) use the filter and then don't display very well when very little data comes back.
|
||||||
return true;
|
return true;
|
||||||
//return _all || ListHelper.ContainsIgnoreCase(_fields, field);
|
// return _all || ListHelper.ContainsIgnoreCase(_fields, field);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,6 @@ namespace Emby.Dlna
|
|||||||
.Select(i => i.Item2)
|
.Select(i => i.Item2)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public DeviceProfile GetDefaultProfile()
|
public DeviceProfile GetDefaultProfile()
|
||||||
@ -251,7 +250,7 @@ namespace Emby.Dlna
|
|||||||
return string.Equals(value, header.Value, StringComparison.OrdinalIgnoreCase);
|
return string.Equals(value, header.Value, StringComparison.OrdinalIgnoreCase);
|
||||||
case HeaderMatchType.Substring:
|
case HeaderMatchType.Substring:
|
||||||
var isMatch = value.ToString().IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1;
|
var isMatch = value.ToString().IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1;
|
||||||
//_logger.LogDebug("IsMatch-Substring value: {0} testValue: {1} isMatch: {2}", value, header.Value, isMatch);
|
// _logger.LogDebug("IsMatch-Substring value: {0} testValue: {1} isMatch: {2}", value, header.Value, isMatch);
|
||||||
return isMatch;
|
return isMatch;
|
||||||
case HeaderMatchType.Regex:
|
case HeaderMatchType.Regex:
|
||||||
return Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase);
|
return Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase);
|
||||||
@ -566,9 +565,9 @@ namespace Emby.Dlna
|
|||||||
new Foobar2000Profile(),
|
new Foobar2000Profile(),
|
||||||
new SharpSmartTvProfile(),
|
new SharpSmartTvProfile(),
|
||||||
new MediaMonkeyProfile(),
|
new MediaMonkeyProfile(),
|
||||||
//new Windows81Profile(),
|
// new Windows81Profile(),
|
||||||
//new WindowsMediaCenterProfile(),
|
// new WindowsMediaCenterProfile(),
|
||||||
//new WindowsPhoneProfile(),
|
// new WindowsPhoneProfile(),
|
||||||
new DirectTvProfile(),
|
new DirectTvProfile(),
|
||||||
new DishHopperJoeyProfile(),
|
new DishHopperJoeyProfile(),
|
||||||
new DefaultProfile(),
|
new DefaultProfile(),
|
||||||
|
@ -169,7 +169,6 @@ namespace Emby.Dlna.Eventing
|
|||||||
{
|
{
|
||||||
using (await _httpClient.SendAsync(options, new HttpMethod("NOTIFY")).ConfigureAwait(false))
|
using (await _httpClient.SendAsync(options, new HttpMethod("NOTIFY")).ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException)
|
catch (OperationCanceledException)
|
||||||
|
@ -276,7 +276,7 @@ namespace Emby.Dlna.Main
|
|||||||
|
|
||||||
var device = new SsdpRootDevice
|
var device = new SsdpRootDevice
|
||||||
{
|
{
|
||||||
CacheLifetime = TimeSpan.FromSeconds(1800), //How long SSDP clients can cache this info.
|
CacheLifetime = TimeSpan.FromSeconds(1800), // How long SSDP clients can cache this info.
|
||||||
Location = uri, // Must point to the URL that serves your devices UPnP description document.
|
Location = uri, // Must point to the URL that serves your devices UPnP description document.
|
||||||
Address = address,
|
Address = address,
|
||||||
SubnetMask = _networkManager.GetLocalIpSubnetMask(address),
|
SubnetMask = _networkManager.GetLocalIpSubnetMask(address),
|
||||||
|
@ -750,7 +750,7 @@ namespace Emby.Dlna.PlayTo
|
|||||||
|
|
||||||
if (track == null)
|
if (track == null)
|
||||||
{
|
{
|
||||||
//If track is null, some vendors do this, use GetMediaInfo instead
|
// If track is null, some vendors do this, use GetMediaInfo instead
|
||||||
return (true, null);
|
return (true, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -794,7 +794,6 @@ namespace Emby.Dlna.PlayTo
|
|||||||
}
|
}
|
||||||
catch (XmlException)
|
catch (XmlException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// first try to add a root node with a dlna namesapce
|
// first try to add a root node with a dlna namesapce
|
||||||
@ -806,7 +805,6 @@ namespace Emby.Dlna.PlayTo
|
|||||||
}
|
}
|
||||||
catch (XmlException)
|
catch (XmlException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// some devices send back invalid xml
|
// some devices send back invalid xml
|
||||||
@ -816,7 +814,6 @@ namespace Emby.Dlna.PlayTo
|
|||||||
}
|
}
|
||||||
catch (XmlException)
|
catch (XmlException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -88,7 +88,7 @@ namespace Emby.Dlna.PlayTo
|
|||||||
if (usn.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) == -1 &&
|
if (usn.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) == -1 &&
|
||||||
nt.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) == -1)
|
nt.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) == -1)
|
||||||
{
|
{
|
||||||
//_logger.LogDebug("Upnp device {0} does not contain a MediaRenderer device (0).", location);
|
// _logger.LogDebug("Upnp device {0} does not contain a MediaRenderer device (0).", location);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +112,6 @@ namespace Emby.Dlna.PlayTo
|
|||||||
}
|
}
|
||||||
catch (OperationCanceledException)
|
catch (OperationCanceledException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -243,7 +242,6 @@ namespace Emby.Dlna.PlayTo
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_sessionLock.Dispose();
|
_sessionLock.Dispose();
|
||||||
|
@ -91,7 +91,6 @@ namespace Emby.Dlna.PlayTo
|
|||||||
|
|
||||||
using (await _httpClient.SendAsync(options, new HttpMethod("SUBSCRIBE")).ConfigureAwait(false))
|
using (await _httpClient.SendAsync(options, new HttpMethod("SUBSCRIBE")).ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ namespace Emby.Dlna.Ssdp
|
|||||||
// (Optional) Set the filter so we only see notifications for devices we care about
|
// (Optional) Set the filter so we only see notifications for devices we care about
|
||||||
// (can be any search target value i.e device type, uuid value etc - any value that appears in the
|
// (can be any search target value i.e device type, uuid value etc - any value that appears in the
|
||||||
// DiscoverdSsdpDevice.NotificationType property or that is used with the searchTarget parameter of the Search method).
|
// DiscoverdSsdpDevice.NotificationType property or that is used with the searchTarget parameter of the Search method).
|
||||||
//_DeviceLocator.NotificationFilter = "upnp:rootdevice";
|
// _DeviceLocator.NotificationFilter = "upnp:rootdevice";
|
||||||
|
|
||||||
// Connect our event handler so we process devices as they are found
|
// Connect our event handler so we process devices as they are found
|
||||||
_deviceLocator.DeviceAvailable += OnDeviceLocatorDeviceAvailable;
|
_deviceLocator.DeviceAvailable += OnDeviceLocatorDeviceAvailable;
|
||||||
|
@ -1072,7 +1072,7 @@ namespace Emby.Server.Implementations.Channels
|
|||||||
}
|
}
|
||||||
|
|
||||||
// was used for status
|
// was used for status
|
||||||
//if (!string.Equals(item.ExternalEtag ?? string.Empty, info.Etag ?? string.Empty, StringComparison.Ordinal))
|
// if (!string.Equals(item.ExternalEtag ?? string.Empty, info.Etag ?? string.Empty, StringComparison.Ordinal))
|
||||||
//{
|
//{
|
||||||
// item.ExternalEtag = info.Etag;
|
// item.ExternalEtag = info.Etag;
|
||||||
// forceUpdate = true;
|
// forceUpdate = true;
|
||||||
|
@ -162,7 +162,6 @@ namespace Emby.Server.Implementations.Data
|
|||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}, ReadTransactionMode);
|
}, ReadTransactionMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,6 @@ namespace Emby.Server.Implementations.Data
|
|||||||
_libraryManager.DeleteItem(item, new DeleteOptions
|
_libraryManager.DeleteItem(item, new DeleteOptions
|
||||||
{
|
{
|
||||||
DeleteFileLocation = false
|
DeleteFileLocation = false
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,7 +321,6 @@ namespace Emby.Server.Implementations.Data
|
|||||||
AddColumn(db, "MediaStreams", "ColorPrimaries", "TEXT", existingColumnNames);
|
AddColumn(db, "MediaStreams", "ColorPrimaries", "TEXT", existingColumnNames);
|
||||||
AddColumn(db, "MediaStreams", "ColorSpace", "TEXT", existingColumnNames);
|
AddColumn(db, "MediaStreams", "ColorSpace", "TEXT", existingColumnNames);
|
||||||
AddColumn(db, "MediaStreams", "ColorTransfer", "TEXT", existingColumnNames);
|
AddColumn(db, "MediaStreams", "ColorTransfer", "TEXT", existingColumnNames);
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
|
|
||||||
connection.RunQueries(postQueries);
|
connection.RunQueries(postQueries);
|
||||||
@ -2044,7 +2043,6 @@ namespace Emby.Server.Implementations.Data
|
|||||||
db.Execute("delete from " + ChaptersTableName + " where ItemId=@ItemId", idBlob);
|
db.Execute("delete from " + ChaptersTableName + " where ItemId=@ItemId", idBlob);
|
||||||
|
|
||||||
InsertChapters(idBlob, chapters, db);
|
InsertChapters(idBlob, chapters, db);
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4360,7 +4358,7 @@ namespace Emby.Server.Implementations.Data
|
|||||||
|
|
||||||
// TODO this seems to be an idea for a better schema where ProviderIds are their own table
|
// TODO this seems to be an idea for a better schema where ProviderIds are their own table
|
||||||
// buut this is not implemented
|
// buut this is not implemented
|
||||||
//hasProviderIds.Add("(COALESCE((select value from ProviderIds where ItemId=Guid and Name = '" + pair.Key + "'), '') <> " + paramName + ")");
|
// hasProviderIds.Add("(COALESCE((select value from ProviderIds where ItemId=Guid and Name = '" + pair.Key + "'), '') <> " + paramName + ")");
|
||||||
|
|
||||||
// TODO this is a really BAD way to do it since the pair:
|
// TODO this is a really BAD way to do it since the pair:
|
||||||
// Tmdb, 1234 matches Tmdb=1234 but also Tmdb=1234567
|
// Tmdb, 1234 matches Tmdb=1234 but also Tmdb=1234567
|
||||||
@ -4789,7 +4787,6 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
|||||||
connection.RunInTransaction(db =>
|
connection.RunInTransaction(db =>
|
||||||
{
|
{
|
||||||
connection.ExecuteAll(sql);
|
connection.ExecuteAll(sql);
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5180,7 +5177,6 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LogQueryTime("GetItemValueNames", commandText, now);
|
LogQueryTime("GetItemValueNames", commandText, now);
|
||||||
@ -5631,7 +5627,6 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
|||||||
db.Execute("delete from People where ItemId=@ItemId", itemIdBlob);
|
db.Execute("delete from People where ItemId=@ItemId", itemIdBlob);
|
||||||
|
|
||||||
InsertPeople(itemIdBlob, people, db);
|
InsertPeople(itemIdBlob, people, db);
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5788,7 +5783,6 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
|||||||
db.Execute("delete from mediastreams where ItemId=@ItemId", itemIdBlob);
|
db.Execute("delete from mediastreams where ItemId=@ItemId", itemIdBlob);
|
||||||
|
|
||||||
InsertMediaStreams(itemIdBlob, streams, db);
|
InsertMediaStreams(itemIdBlob, streams, db);
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6134,7 +6128,6 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
|||||||
db.Execute("delete from mediaattachments where ItemId=@ItemId", itemIdBlob);
|
db.Execute("delete from mediaattachments where ItemId=@ItemId", itemIdBlob);
|
||||||
|
|
||||||
InsertMediaAttachments(itemIdBlob, attachments, db, cancellationToken);
|
InsertMediaAttachments(itemIdBlob, attachments, db, cancellationToken);
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -347,7 +347,7 @@ namespace Emby.Server.Implementations.Data
|
|||||||
var userData = new UserItemData();
|
var userData = new UserItemData();
|
||||||
|
|
||||||
userData.Key = reader[0].ToString();
|
userData.Key = reader[0].ToString();
|
||||||
//userData.UserId = reader[1].ReadGuidFromBlob();
|
// userData.UserId = reader[1].ReadGuidFromBlob();
|
||||||
|
|
||||||
if (reader[2].SQLiteType != SQLiteType.Null)
|
if (reader[2].SQLiteType != SQLiteType.Null)
|
||||||
{
|
{
|
||||||
|
@ -112,7 +112,7 @@ namespace Emby.Server.Implementations.Devices
|
|||||||
{
|
{
|
||||||
IEnumerable<AuthenticationInfo> sessions = _authRepo.Get(new AuthenticationInfoQuery
|
IEnumerable<AuthenticationInfo> sessions = _authRepo.Get(new AuthenticationInfoQuery
|
||||||
{
|
{
|
||||||
//UserId = query.UserId
|
// UserId = query.UserId
|
||||||
HasUser = true
|
HasUser = true
|
||||||
}).Items;
|
}).Items;
|
||||||
|
|
||||||
|
@ -406,7 +406,6 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
dto.DateLastMediaAdded = folder.DateLastMediaAdded;
|
dto.DateLastMediaAdded = folder.DateLastMediaAdded;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (options.EnableUserData)
|
if (options.EnableUserData)
|
||||||
@ -594,7 +593,6 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
_logger.LogError(ex, "Error getting person {Name}", c);
|
_logger.LogError(ex, "Error getting person {Name}", c);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}).Where(i => i != null)
|
}).Where(i => i != null)
|
||||||
.GroupBy(i => i.Name, StringComparer.OrdinalIgnoreCase)
|
.GroupBy(i => i.Name, StringComparer.OrdinalIgnoreCase)
|
||||||
.Select(x => x.First())
|
.Select(x => x.First())
|
||||||
@ -947,7 +945,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
dto.AlbumPrimaryImageTag = GetTagAndFillBlurhash(dto, albumParent, ImageType.Primary);
|
dto.AlbumPrimaryImageTag = GetTagAndFillBlurhash(dto, albumParent, ImageType.Primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (options.ContainsField(ItemFields.MediaSourceCount))
|
// if (options.ContainsField(ItemFields.MediaSourceCount))
|
||||||
//{
|
//{
|
||||||
// Songs always have one
|
// Songs always have one
|
||||||
//}
|
//}
|
||||||
@ -957,13 +955,13 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
{
|
{
|
||||||
dto.Artists = hasArtist.Artists;
|
dto.Artists = hasArtist.Artists;
|
||||||
|
|
||||||
//var artistItems = _libraryManager.GetArtists(new InternalItemsQuery
|
// var artistItems = _libraryManager.GetArtists(new InternalItemsQuery
|
||||||
//{
|
//{
|
||||||
// EnableTotalRecordCount = false,
|
// EnableTotalRecordCount = false,
|
||||||
// ItemIds = new[] { item.Id.ToString("N", CultureInfo.InvariantCulture) }
|
// ItemIds = new[] { item.Id.ToString("N", CultureInfo.InvariantCulture) }
|
||||||
//});
|
//});
|
||||||
|
|
||||||
//dto.ArtistItems = artistItems.Items
|
// dto.ArtistItems = artistItems.Items
|
||||||
// .Select(i =>
|
// .Select(i =>
|
||||||
// {
|
// {
|
||||||
// var artist = i.Item1;
|
// var artist = i.Item1;
|
||||||
@ -976,7 +974,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
// .ToList();
|
// .ToList();
|
||||||
|
|
||||||
// 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 = hasArtist.Artists
|
dto.ArtistItems = hasArtist.Artists
|
||||||
//.Except(foundArtists, new DistinctNameComparer())
|
//.Except(foundArtists, new DistinctNameComparer())
|
||||||
.Select(i =>
|
.Select(i =>
|
||||||
@ -1001,7 +999,6 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}).Where(i => i != null).ToArray();
|
}).Where(i => i != null).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1010,13 +1007,13 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
{
|
{
|
||||||
dto.AlbumArtist = hasAlbumArtist.AlbumArtists.FirstOrDefault();
|
dto.AlbumArtist = hasAlbumArtist.AlbumArtists.FirstOrDefault();
|
||||||
|
|
||||||
//var artistItems = _libraryManager.GetAlbumArtists(new InternalItemsQuery
|
// var artistItems = _libraryManager.GetAlbumArtists(new InternalItemsQuery
|
||||||
//{
|
//{
|
||||||
// EnableTotalRecordCount = false,
|
// EnableTotalRecordCount = false,
|
||||||
// ItemIds = new[] { item.Id.ToString("N", CultureInfo.InvariantCulture) }
|
// ItemIds = new[] { item.Id.ToString("N", CultureInfo.InvariantCulture) }
|
||||||
//});
|
//});
|
||||||
|
|
||||||
//dto.AlbumArtists = artistItems.Items
|
// dto.AlbumArtists = artistItems.Items
|
||||||
// .Select(i =>
|
// .Select(i =>
|
||||||
// {
|
// {
|
||||||
// var artist = i.Item1;
|
// var artist = i.Item1;
|
||||||
@ -1052,7 +1049,6 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}).Where(i => i != null).ToArray();
|
}).Where(i => i != null).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1166,7 +1162,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
|
|
||||||
// this block will add the series poster for episodes without a poster
|
// this block will add the series poster for episodes without a poster
|
||||||
// TODO maybe remove the if statement entirely
|
// TODO maybe remove the if statement entirely
|
||||||
//if (options.ContainsField(ItemFields.SeriesPrimaryImage))
|
// if (options.ContainsField(ItemFields.SeriesPrimaryImage))
|
||||||
{
|
{
|
||||||
episodeSeries = episodeSeries ?? episode.Series;
|
episodeSeries = episodeSeries ?? episode.Series;
|
||||||
if (episodeSeries != null)
|
if (episodeSeries != null)
|
||||||
@ -1212,7 +1208,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
|
|
||||||
// this block will add the series poster for seasons without a poster
|
// this block will add the series poster for seasons without a poster
|
||||||
// TODO maybe remove the if statement entirely
|
// TODO maybe remove the if statement entirely
|
||||||
//if (options.ContainsField(ItemFields.SeriesPrimaryImage))
|
// if (options.ContainsField(ItemFields.SeriesPrimaryImage))
|
||||||
{
|
{
|
||||||
series = series ?? season.Series;
|
series = series ?? season.Series;
|
||||||
if (series != null)
|
if (series != null)
|
||||||
|
@ -132,7 +132,6 @@ namespace Emby.Server.Implementations.EntryPoints
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,6 @@ namespace Emby.Server.Implementations.EntryPoints
|
|||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +174,6 @@ namespace Emby.Server.Implementations.EntryPoints
|
|||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,6 @@ namespace Emby.Server.Implementations.EntryPoints
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
_appHost = appHost;
|
_appHost = appHost;
|
||||||
_config = configuration;
|
_config = configuration;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
@ -580,7 +580,6 @@ namespace Emby.Server.Implementations.HttpServer
|
|||||||
}
|
}
|
||||||
catch (NotSupportedException)
|
catch (NotSupportedException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
|||||||
throw new AuthenticationException("Access token is invalid or expired.");
|
throw new AuthenticationException("Access token is invalid or expired.");
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (!string.IsNullOrEmpty(info.UserId))
|
// if (!string.IsNullOrEmpty(info.UserId))
|
||||||
//{
|
//{
|
||||||
// var user = _userManager.GetUserById(info.UserId);
|
// var user = _userManager.GetUserById(info.UserId);
|
||||||
|
|
||||||
|
@ -116,7 +116,6 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
|||||||
{
|
{
|
||||||
info.Device = tokenInfo.DeviceName;
|
info.Device = tokenInfo.DeviceName;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (!string.Equals(info.Device, tokenInfo.DeviceName, StringComparison.OrdinalIgnoreCase))
|
else if (!string.Equals(info.Device, tokenInfo.DeviceName, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
if (allowTokenInfoUpdate)
|
if (allowTokenInfoUpdate)
|
||||||
|
@ -266,7 +266,6 @@ namespace Emby.Server.Implementations.IO
|
|||||||
{
|
{
|
||||||
DisposeWatcher(newWatcher, false);
|
DisposeWatcher(newWatcher, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -393,7 +392,6 @@ namespace Emby.Server.Implementations.IO
|
|||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}))
|
}))
|
||||||
{
|
{
|
||||||
monitorPath = false;
|
monitorPath = false;
|
||||||
|
@ -237,7 +237,7 @@ namespace Emby.Server.Implementations.IO
|
|||||||
{
|
{
|
||||||
result.IsDirectory = info is DirectoryInfo || (info.Attributes & FileAttributes.Directory) == FileAttributes.Directory;
|
result.IsDirectory = info is DirectoryInfo || (info.Attributes & FileAttributes.Directory) == FileAttributes.Directory;
|
||||||
|
|
||||||
//if (!result.IsDirectory)
|
// if (!result.IsDirectory)
|
||||||
//{
|
//{
|
||||||
// result.IsHidden = (info.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden;
|
// result.IsHidden = (info.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden;
|
||||||
//}
|
//}
|
||||||
|
@ -71,7 +71,6 @@ namespace Emby.Server.Implementations.Images
|
|||||||
new ValueTuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending)
|
new ValueTuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending)
|
||||||
},
|
},
|
||||||
IncludeItemTypes = includeItemTypes
|
IncludeItemTypes = includeItemTypes
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +78,6 @@ namespace Emby.Server.Implementations.Images
|
|||||||
}
|
}
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
|
|
||||||
}).GroupBy(x => x.Id)
|
}).GroupBy(x => x.Id)
|
||||||
.Select(x => x.First());
|
.Select(x => x.First());
|
||||||
|
|
||||||
|
@ -2595,7 +2595,7 @@ namespace Emby.Server.Implementations.Library
|
|||||||
Anime series don't generally have a season in their file name, however,
|
Anime series don't generally have a season in their file name, however,
|
||||||
tvdb needs a season to correctly get the metadata.
|
tvdb needs a season to correctly get the metadata.
|
||||||
Hence, a null season needs to be filled with something. */
|
Hence, a null season needs to be filled with something. */
|
||||||
//FIXME perhaps this would be better for tvdb parser to ask for season 1 if no season is specified
|
// FIXME perhaps this would be better for tvdb parser to ask for season 1 if no season is specified
|
||||||
episode.ParentIndexNumber = 1;
|
episode.ParentIndexNumber = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2861,7 +2861,6 @@ namespace Emby.Server.Implementations.Library
|
|||||||
_logger.LogError(ex, "Error getting person");
|
_logger.LogError(ex, "Error getting person");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}).Where(i => i != null).ToList();
|
}).Where(i => i != null).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2991,7 +2990,7 @@ namespace Emby.Server.Implementations.Library
|
|||||||
|
|
||||||
private static bool ValidateNetworkPath(string path)
|
private static bool ValidateNetworkPath(string path)
|
||||||
{
|
{
|
||||||
//if (Environment.OSVersion.Platform == PlatformID.Win32NT)
|
// if (Environment.OSVersion.Platform == PlatformID.Win32NT)
|
||||||
//{
|
//{
|
||||||
// // We can't validate protocol-based paths, so just allow them
|
// // We can't validate protocol-based paths, so just allow them
|
||||||
// if (path.IndexOf("://", StringComparison.OrdinalIgnoreCase) == -1)
|
// if (path.IndexOf("://", StringComparison.OrdinalIgnoreCase) == -1)
|
||||||
|
@ -50,7 +50,7 @@ namespace Emby.Server.Implementations.Library
|
|||||||
{
|
{
|
||||||
mediaInfo = _json.DeserializeFromFile<MediaInfo>(cacheFilePath);
|
mediaInfo = _json.DeserializeFromFile<MediaInfo>(cacheFilePath);
|
||||||
|
|
||||||
//_logger.LogDebug("Found cached media info");
|
// _logger.LogDebug("Found cached media info");
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@ -85,7 +85,7 @@ namespace Emby.Server.Implementations.Library
|
|||||||
Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath));
|
Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath));
|
||||||
_json.SerializeToFile(mediaInfo, cacheFilePath);
|
_json.SerializeToFile(mediaInfo, cacheFilePath);
|
||||||
|
|
||||||
//_logger.LogDebug("Saved media info to {0}", cacheFilePath);
|
// _logger.LogDebug("Saved media info to {0}", cacheFilePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,17 +148,14 @@ namespace Emby.Server.Implementations.Library
|
|||||||
{
|
{
|
||||||
videoStream.BitRate = 30000000;
|
videoStream.BitRate = 30000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (width >= 1900)
|
else if (width >= 1900)
|
||||||
{
|
{
|
||||||
videoStream.BitRate = 20000000;
|
videoStream.BitRate = 20000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (width >= 1200)
|
else if (width >= 1200)
|
||||||
{
|
{
|
||||||
videoStream.BitRate = 8000000;
|
videoStream.BitRate = 8000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (width >= 700)
|
else if (width >= 700)
|
||||||
{
|
{
|
||||||
videoStream.BitRate = 2000000;
|
videoStream.BitRate = 2000000;
|
||||||
|
@ -436,7 +436,6 @@ namespace Emby.Server.Implementations.Library
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
}).ThenBy(i => i.Video3DFormat.HasValue ? 1 : 0)
|
}).ThenBy(i => i.Video3DFormat.HasValue ? 1 : 0)
|
||||||
.ThenByDescending(i =>
|
.ThenByDescending(i =>
|
||||||
{
|
{
|
||||||
@ -620,7 +619,6 @@ namespace Emby.Server.Implementations.Library
|
|||||||
MediaSource = mediaSource,
|
MediaSource = mediaSource,
|
||||||
ExtractChapters = false,
|
ExtractChapters = false,
|
||||||
MediaType = DlnaProfileType.Video
|
MediaType = DlnaProfileType.Video
|
||||||
|
|
||||||
}, cancellationToken).ConfigureAwait(false);
|
}, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
mediaSource.MediaStreams = info.MediaStreams;
|
mediaSource.MediaStreams = info.MediaStreams;
|
||||||
@ -646,7 +644,7 @@ namespace Emby.Server.Implementations.Library
|
|||||||
{
|
{
|
||||||
mediaInfo = _jsonSerializer.DeserializeFromFile<MediaInfo>(cacheFilePath);
|
mediaInfo = _jsonSerializer.DeserializeFromFile<MediaInfo>(cacheFilePath);
|
||||||
|
|
||||||
//_logger.LogDebug("Found cached media info");
|
// _logger.LogDebug("Found cached media info");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -682,7 +680,7 @@ namespace Emby.Server.Implementations.Library
|
|||||||
Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath));
|
Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath));
|
||||||
_jsonSerializer.SerializeToFile(mediaInfo, cacheFilePath);
|
_jsonSerializer.SerializeToFile(mediaInfo, cacheFilePath);
|
||||||
|
|
||||||
//_logger.LogDebug("Saved media info to {0}", cacheFilePath);
|
// _logger.LogDebug("Saved media info to {0}", cacheFilePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -748,17 +746,14 @@ namespace Emby.Server.Implementations.Library
|
|||||||
{
|
{
|
||||||
videoStream.BitRate = 30000000;
|
videoStream.BitRate = 30000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (width >= 1900)
|
else if (width >= 1900)
|
||||||
{
|
{
|
||||||
videoStream.BitRate = 20000000;
|
videoStream.BitRate = 20000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (width >= 1200)
|
else if (width >= 1200)
|
||||||
{
|
{
|
||||||
videoStream.BitRate = 8000000;
|
videoStream.BitRate = 8000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (width >= 700)
|
else if (width >= 700)
|
||||||
{
|
{
|
||||||
videoStream.BitRate = 2000000;
|
videoStream.BitRate = 2000000;
|
||||||
|
@ -209,8 +209,8 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
|||||||
Name = parseName ?
|
Name = parseName ?
|
||||||
resolvedItem.Name :
|
resolvedItem.Name :
|
||||||
Path.GetFileNameWithoutExtension(firstMedia.Path),
|
Path.GetFileNameWithoutExtension(firstMedia.Path),
|
||||||
//AdditionalParts = resolvedItem.Files.Skip(1).Select(i => i.Path).ToArray(),
|
// AdditionalParts = resolvedItem.Files.Skip(1).Select(i => i.Path).ToArray(),
|
||||||
//LocalAlternateVersions = resolvedItem.AlternateVersions.Select(i => i.Path).ToArray()
|
// LocalAlternateVersions = resolvedItem.AlternateVersions.Select(i => i.Path).ToArray()
|
||||||
};
|
};
|
||||||
|
|
||||||
result.Items.Add(libraryItem);
|
result.Items.Add(libraryItem);
|
||||||
|
@ -92,7 +92,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
|||||||
// Args points to an album if parent is an Artist folder or it directly contains music
|
// Args points to an album if parent is an Artist folder or it directly contains music
|
||||||
if (args.IsDirectory)
|
if (args.IsDirectory)
|
||||||
{
|
{
|
||||||
// if (args.Parent is MusicArtist) return true; //saves us from testing children twice
|
// if (args.Parent is MusicArtist) return true; // saves us from testing children twice
|
||||||
if (ContainsMusic(args.FileSystemChildren, true, args.DirectoryService, _logger, _fileSystem, _libraryManager))
|
if (ContainsMusic(args.FileSystemChildren, true, args.DirectoryService, _logger, _fileSystem, _libraryManager))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -292,7 +292,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
//var blurayExtensions = new[]
|
// var blurayExtensions = new[]
|
||||||
//{
|
//{
|
||||||
// ".mts",
|
// ".mts",
|
||||||
// ".m2ts",
|
// ".m2ts",
|
||||||
@ -300,7 +300,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
|||||||
// ".mpls"
|
// ".mpls"
|
||||||
//};
|
//};
|
||||||
|
|
||||||
//return directoryService.GetFiles(fullPath).Any(i => blurayExtensions.Contains(i.Extension ?? string.Empty, StringComparer.OrdinalIgnoreCase));
|
// return directoryService.GetFiles(fullPath).Any(i => blurayExtensions.Contains(i.Extension ?? string.Empty, StringComparer.OrdinalIgnoreCase));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
|||||||
}
|
}
|
||||||
if (string.Equals(args.Path, _appPaths.DefaultUserViewsPath, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(args.Path, _appPaths.DefaultUserViewsPath, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return new UserRootFolder(); //if we got here and still a root - must be user root
|
return new UserRootFolder(); // if we got here and still a root - must be user root
|
||||||
}
|
}
|
||||||
if (args.IsVf)
|
if (args.IsVf)
|
||||||
{
|
{
|
||||||
@ -73,7 +73,6 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
.Select(i => _fileSystem.GetFileNameWithoutExtension(i))
|
.Select(i => _fileSystem.GetFileNameWithoutExtension(i))
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
@ -94,7 +94,6 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
|
|||||||
_localization.GetLocalizedString("NameSeasonNumber"),
|
_localization.GetLocalizedString("NameSeasonNumber"),
|
||||||
seasonNumber,
|
seasonNumber,
|
||||||
args.GetLibraryOptions().PreferredMetadataLanguage);
|
args.GetLibraryOptions().PreferredMetadataLanguage);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return season;
|
return season;
|
||||||
|
@ -59,7 +59,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
|
|||||||
var collectionType = args.GetCollectionType();
|
var collectionType = args.GetCollectionType();
|
||||||
if (string.Equals(collectionType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(collectionType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
//if (args.ContainsFileSystemEntryByName("tvshow.nfo"))
|
// if (args.ContainsFileSystemEntryByName("tvshow.nfo"))
|
||||||
//{
|
//{
|
||||||
// return new Series
|
// return new Series
|
||||||
// {
|
// {
|
||||||
|
@ -207,7 +207,6 @@ namespace Emby.Server.Implementations.Library
|
|||||||
return mediaItems.Select(i => new SearchHintInfo
|
return mediaItems.Select(i => new SearchHintInfo
|
||||||
{
|
{
|
||||||
Item = i
|
Item = i
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,6 @@ namespace Emby.Server.Implementations.Library.Validators
|
|||||||
_libraryManager.DeleteItem(item, new DeleteOptions
|
_libraryManager.DeleteItem(item, new DeleteOptions
|
||||||
{
|
{
|
||||||
DeleteFileLocation = false
|
DeleteFileLocation = false
|
||||||
|
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +92,6 @@ namespace Emby.Server.Implementations.Library.Validators
|
|||||||
_libraryManager.DeleteItem(item, new DeleteOptions
|
_libraryManager.DeleteItem(item, new DeleteOptions
|
||||||
{
|
{
|
||||||
DeleteFileLocation = false
|
DeleteFileLocation = false
|
||||||
|
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1547,7 +1547,6 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||||||
IsFolder = false,
|
IsFolder = false,
|
||||||
Recursive = true,
|
Recursive = true,
|
||||||
DtoOptions = new DtoOptions(true)
|
DtoOptions = new DtoOptions(true)
|
||||||
|
|
||||||
})
|
})
|
||||||
.Where(i => i.IsFileProtocol && File.Exists(i.Path))
|
.Where(i => i.IsFileProtocol && File.Exists(i.Path))
|
||||||
.Skip(seriesTimer.KeepUpTo - 1)
|
.Skip(seriesTimer.KeepUpTo - 1)
|
||||||
|
@ -183,7 +183,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||||||
|
|
||||||
var subtitleArgs = CopySubtitles ? " -codec:s copy" : " -sn";
|
var subtitleArgs = CopySubtitles ? " -codec:s copy" : " -sn";
|
||||||
|
|
||||||
//var outputParam = string.Equals(Path.GetExtension(targetFile), ".mp4", StringComparison.OrdinalIgnoreCase) ?
|
// var outputParam = string.Equals(Path.GetExtension(targetFile), ".mp4", StringComparison.OrdinalIgnoreCase) ?
|
||||||
// " -f mp4 -movflags frag_keyframe+empty_moov" :
|
// " -f mp4 -movflags frag_keyframe+empty_moov" :
|
||||||
// string.Empty;
|
// string.Empty;
|
||||||
|
|
||||||
@ -206,13 +206,13 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||||||
{
|
{
|
||||||
return "-codec:a:0 copy";
|
return "-codec:a:0 copy";
|
||||||
|
|
||||||
//var audioChannels = 2;
|
// var audioChannels = 2;
|
||||||
//var audioStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio);
|
// var audioStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio);
|
||||||
//if (audioStream != null)
|
// if (audioStream != null)
|
||||||
//{
|
//{
|
||||||
// audioChannels = audioStream.Channels ?? audioChannels;
|
// audioChannels = audioStream.Channels ?? audioChannels;
|
||||||
//}
|
//}
|
||||||
//return "-codec:a:0 aac -strict experimental -ab 320000";
|
// return "-codec:a:0 aac -strict experimental -ab 320000";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool EncodeVideo(MediaSourceInfo mediaSource)
|
private static bool EncodeVideo(MediaSourceInfo mediaSource)
|
||||||
|
@ -56,7 +56,6 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||||||
name += " " + info.EpisodeTitle;
|
name += " " + info.EpisodeTitle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (info.IsMovie && info.ProductionYear != null)
|
else if (info.IsMovie && info.ProductionYear != null)
|
||||||
{
|
{
|
||||||
name += " (" + info.ProductionYear + ")";
|
name += " (" + info.ProductionYear + ")";
|
||||||
|
@ -145,7 +145,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
|||||||
var programsInfo = new List<ProgramInfo>();
|
var programsInfo = new List<ProgramInfo>();
|
||||||
foreach (ScheduleDirect.Program schedule in dailySchedules.SelectMany(d => d.programs))
|
foreach (ScheduleDirect.Program schedule in dailySchedules.SelectMany(d => d.programs))
|
||||||
{
|
{
|
||||||
//_logger.LogDebug("Proccesing Schedule for statio ID " + stationID +
|
// _logger.LogDebug("Proccesing Schedule for statio ID " + stationID +
|
||||||
// " which corresponds to channel " + channelNumber + " and program id " +
|
// " which corresponds to channel " + channelNumber + " and program id " +
|
||||||
// schedule.programID + " which says it has images? " +
|
// schedule.programID + " which says it has images? " +
|
||||||
// programDict[schedule.programID].hasImageArtwork);
|
// programDict[schedule.programID].hasImageArtwork);
|
||||||
@ -178,7 +178,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
|||||||
|
|
||||||
programEntry.backdropImage = GetProgramImage(ApiUrl, imagesWithoutText, true, WideAspect);
|
programEntry.backdropImage = GetProgramImage(ApiUrl, imagesWithoutText, true, WideAspect);
|
||||||
|
|
||||||
//programEntry.bannerImage = GetProgramImage(ApiUrl, data, "Banner", false) ??
|
// programEntry.bannerImage = GetProgramImage(ApiUrl, data, "Banner", false) ??
|
||||||
// GetProgramImage(ApiUrl, data, "Banner-L1", false) ??
|
// GetProgramImage(ApiUrl, data, "Banner-L1", false) ??
|
||||||
// GetProgramImage(ApiUrl, data, "Banner-LO", false) ??
|
// GetProgramImage(ApiUrl, data, "Banner-LO", false) ??
|
||||||
// GetProgramImage(ApiUrl, data, "Banner-LOT", false);
|
// GetProgramImage(ApiUrl, data, "Banner-LOT", false);
|
||||||
@ -276,7 +276,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
|||||||
CommunityRating = null,
|
CommunityRating = null,
|
||||||
EpisodeTitle = episodeTitle,
|
EpisodeTitle = episodeTitle,
|
||||||
Audio = audioType,
|
Audio = audioType,
|
||||||
//IsNew = programInfo.@new ?? false,
|
// IsNew = programInfo.@new ?? false,
|
||||||
IsRepeat = programInfo.@new == null,
|
IsRepeat = programInfo.@new == null,
|
||||||
IsSeries = string.Equals(details.entityType, "episode", StringComparison.OrdinalIgnoreCase),
|
IsSeries = string.Equals(details.entityType, "episode", StringComparison.OrdinalIgnoreCase),
|
||||||
ImageUrl = details.primaryImage,
|
ImageUrl = details.primaryImage,
|
||||||
@ -701,7 +701,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
|||||||
CancellationToken = cancellationToken,
|
CancellationToken = cancellationToken,
|
||||||
LogErrorResponseBody = true
|
LogErrorResponseBody = true
|
||||||
};
|
};
|
||||||
//_logger.LogInformation("Obtaining token from Schedules Direct from addres: " + httpOptions.Url + " with body " +
|
// _logger.LogInformation("Obtaining token from Schedules Direct from addres: " + httpOptions.Url + " with body " +
|
||||||
// httpOptions.RequestContent);
|
// httpOptions.RequestContent);
|
||||||
|
|
||||||
using (var response = await Post(httpOptions, false, null).ConfigureAwait(false))
|
using (var response = await Post(httpOptions, false, null).ConfigureAwait(false))
|
||||||
@ -1218,7 +1218,6 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
|||||||
public string programID { get; set; }
|
public string programID { get; set; }
|
||||||
public List<ImageData> data { get; set; }
|
public List<ImageData> data { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -406,8 +406,8 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
if (!(service is EmbyTV.EmbyTV))
|
if (!(service is EmbyTV.EmbyTV))
|
||||||
{
|
{
|
||||||
// We can't trust that we'll be able to direct stream it through emby server, no matter what the provider says
|
// We can't trust that we'll be able to direct stream it through emby server, no matter what the provider says
|
||||||
//mediaSource.SupportsDirectPlay = false;
|
// mediaSource.SupportsDirectPlay = false;
|
||||||
//mediaSource.SupportsDirectStream = false;
|
// mediaSource.SupportsDirectStream = false;
|
||||||
mediaSource.SupportsTranscoding = true;
|
mediaSource.SupportsTranscoding = true;
|
||||||
foreach (var stream in mediaSource.MediaStreams)
|
foreach (var stream in mediaSource.MediaStreams)
|
||||||
{
|
{
|
||||||
@ -558,7 +558,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
}
|
}
|
||||||
item.ParentId = channel.Id;
|
item.ParentId = channel.Id;
|
||||||
|
|
||||||
//item.ChannelType = channelType;
|
// item.ChannelType = channelType;
|
||||||
|
|
||||||
item.Audio = info.Audio;
|
item.Audio = info.Audio;
|
||||||
item.ChannelId = channel.Id;
|
item.ChannelId = channel.Id;
|
||||||
@ -1168,7 +1168,6 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
IncludeItemTypes = new string[] { typeof(LiveTvProgram).Name },
|
IncludeItemTypes = new string[] { typeof(LiveTvProgram).Name },
|
||||||
ChannelIds = new Guid[] { currentChannel.Id },
|
ChannelIds = new Guid[] { currentChannel.Id },
|
||||||
DtoOptions = new DtoOptions(true)
|
DtoOptions = new DtoOptions(true)
|
||||||
|
|
||||||
}).Cast<LiveTvProgram>().ToDictionary(i => i.Id);
|
}).Cast<LiveTvProgram>().ToDictionary(i => i.Id);
|
||||||
|
|
||||||
var newPrograms = new List<LiveTvProgram>();
|
var newPrograms = new List<LiveTvProgram>();
|
||||||
@ -1368,10 +1367,10 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
// limit = (query.Limit ?? 10) * 2;
|
// limit = (query.Limit ?? 10) * 2;
|
||||||
limit = null;
|
limit = null;
|
||||||
|
|
||||||
//var allActivePaths = EmbyTV.EmbyTV.Current.GetAllActiveRecordings().Select(i => i.Path).ToArray();
|
// var allActivePaths = EmbyTV.EmbyTV.Current.GetAllActiveRecordings().Select(i => i.Path).ToArray();
|
||||||
//var items = allActivePaths.Select(i => _libraryManager.FindByPath(i, false)).Where(i => i != null).ToArray();
|
// var items = allActivePaths.Select(i => _libraryManager.FindByPath(i, false)).Where(i => i != null).ToArray();
|
||||||
|
|
||||||
//return new QueryResult<BaseItem>
|
// return new QueryResult<BaseItem>
|
||||||
//{
|
//{
|
||||||
// Items = items,
|
// Items = items,
|
||||||
// TotalRecordCount = items.Length
|
// TotalRecordCount = items.Length
|
||||||
@ -1738,7 +1737,6 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
var results = await GetTimers(new TimerQuery
|
var results = await GetTimers(new TimerQuery
|
||||||
{
|
{
|
||||||
Id = id
|
Id = id
|
||||||
|
|
||||||
}, cancellationToken).ConfigureAwait(false);
|
}, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
return results.Items.FirstOrDefault(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase));
|
return results.Items.FirstOrDefault(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase));
|
||||||
@ -1790,7 +1788,6 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
.Select(i =>
|
.Select(i =>
|
||||||
{
|
{
|
||||||
return i.Item1;
|
return i.Item1;
|
||||||
|
|
||||||
})
|
})
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
@ -1845,7 +1842,6 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
}
|
}
|
||||||
|
|
||||||
return _tvDtoService.GetSeriesTimerInfoDto(i.Item1, i.Item2, channelName);
|
return _tvDtoService.GetSeriesTimerInfoDto(i.Item1, i.Item2, channelName);
|
||||||
|
|
||||||
})
|
})
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
@ -1878,7 +1874,6 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
OrderBy = new[] { (ItemSortBy.StartDate, SortOrder.Ascending) },
|
OrderBy = new[] { (ItemSortBy.StartDate, SortOrder.Ascending) },
|
||||||
TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Id },
|
TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Id },
|
||||||
DtoOptions = options
|
DtoOptions = options
|
||||||
|
|
||||||
}) : new List<BaseItem>();
|
}) : new List<BaseItem>();
|
||||||
|
|
||||||
RemoveFields(options);
|
RemoveFields(options);
|
||||||
@ -1956,7 +1951,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
OriginalAirDate = program.PremiereDate,
|
OriginalAirDate = program.PremiereDate,
|
||||||
Overview = program.Overview,
|
Overview = program.Overview,
|
||||||
StartDate = program.StartDate,
|
StartDate = program.StartDate,
|
||||||
//ImagePath = program.ExternalImagePath,
|
// ImagePath = program.ExternalImagePath,
|
||||||
Name = program.Name,
|
Name = program.Name,
|
||||||
OfficialRating = program.OfficialRating
|
OfficialRating = program.OfficialRating
|
||||||
};
|
};
|
||||||
@ -2456,7 +2451,6 @@ namespace Emby.Server.Implementations.LiveTv
|
|||||||
UserId = user.Id,
|
UserId = user.Id,
|
||||||
IsRecordingsFolder = true,
|
IsRecordingsFolder = true,
|
||||||
RefreshLatestChannelItems = refreshChannels
|
RefreshLatestChannelItems = refreshChannels
|
||||||
|
|
||||||
}).Items);
|
}).Items);
|
||||||
|
|
||||||
return folders.Cast<BaseItem>().ToList();
|
return folders.Cast<BaseItem>().ToList();
|
||||||
|
@ -54,7 +54,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
|
|
||||||
var result = await GetChannelsInternal(tuner, cancellationToken).ConfigureAwait(false);
|
var result = await GetChannelsInternal(tuner, cancellationToken).ConfigureAwait(false);
|
||||||
var list = result.ToList();
|
var list = result.ToList();
|
||||||
//logger.LogInformation("Channels from {0}: {1}", tuner.Url, JsonSerializer.SerializeToString(list));
|
// logger.LogInformation("Channels from {0}: {1}", tuner.Url, JsonSerializer.SerializeToString(list));
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(key) && list.Count > 0)
|
if (!string.IsNullOrEmpty(key) && list.Count > 0)
|
||||||
{
|
{
|
||||||
@ -99,7 +99,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
}
|
}
|
||||||
catch (IOException)
|
catch (IOException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,7 +115,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
}
|
}
|
||||||
catch (IOException)
|
catch (IOException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
|||||||
ChannelType = ChannelType.TV,
|
ChannelType = ChannelType.TV,
|
||||||
IsLegacyTuner = (i.URL ?? string.Empty).StartsWith("hdhomerun", StringComparison.OrdinalIgnoreCase),
|
IsLegacyTuner = (i.URL ?? string.Empty).StartsWith("hdhomerun", StringComparison.OrdinalIgnoreCase),
|
||||||
Path = i.URL
|
Path = i.URL
|
||||||
|
|
||||||
}).Cast<ChannelInfo>().ToList();
|
}).Cast<ChannelInfo>().ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,7 +480,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
|||||||
Height = height,
|
Height = height,
|
||||||
BitRate = videoBitrate,
|
BitRate = videoBitrate,
|
||||||
NalLengthSize = nal
|
NalLengthSize = nal
|
||||||
|
|
||||||
},
|
},
|
||||||
new MediaStream
|
new MediaStream
|
||||||
{
|
{
|
||||||
@ -502,8 +500,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
|||||||
SupportsTranscoding = true,
|
SupportsTranscoding = true,
|
||||||
IsInfiniteStream = true,
|
IsInfiniteStream = true,
|
||||||
IgnoreDts = true,
|
IgnoreDts = true,
|
||||||
//IgnoreIndex = true,
|
// IgnoreIndex = true,
|
||||||
//ReadAtNativeFramerate = true
|
// ReadAtNativeFramerate = true
|
||||||
};
|
};
|
||||||
|
|
||||||
mediaSource.InferTotalBitrate();
|
mediaSource.InferTotalBitrate();
|
||||||
@ -722,7 +720,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException)
|
catch (OperationCanceledException)
|
||||||
{
|
{
|
||||||
|
@ -117,17 +117,17 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
|||||||
taskCompletionSource,
|
taskCompletionSource,
|
||||||
LiveStreamCancellationTokenSource.Token).ConfigureAwait(false);
|
LiveStreamCancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
//OpenedMediaSource.Protocol = MediaProtocol.File;
|
// OpenedMediaSource.Protocol = MediaProtocol.File;
|
||||||
//OpenedMediaSource.Path = tempFile;
|
// OpenedMediaSource.Path = tempFile;
|
||||||
//OpenedMediaSource.ReadAtNativeFramerate = true;
|
// OpenedMediaSource.ReadAtNativeFramerate = true;
|
||||||
|
|
||||||
MediaSource.Path = _appHost.GetLoopbackHttpApiUrl() + "/LiveTv/LiveStreamFiles/" + UniqueId + "/stream.ts";
|
MediaSource.Path = _appHost.GetLoopbackHttpApiUrl() + "/LiveTv/LiveStreamFiles/" + UniqueId + "/stream.ts";
|
||||||
MediaSource.Protocol = MediaProtocol.Http;
|
MediaSource.Protocol = MediaProtocol.Http;
|
||||||
//OpenedMediaSource.SupportsDirectPlay = false;
|
// OpenedMediaSource.SupportsDirectPlay = false;
|
||||||
//OpenedMediaSource.SupportsDirectStream = true;
|
// OpenedMediaSource.SupportsDirectStream = true;
|
||||||
//OpenedMediaSource.SupportsTranscoding = true;
|
// OpenedMediaSource.SupportsTranscoding = true;
|
||||||
|
|
||||||
//await Task.Delay(5000).ConfigureAwait(false);
|
// await Task.Delay(5000).ConfigureAwait(false);
|
||||||
await taskCompletionSource.Task.ConfigureAwait(false);
|
await taskCompletionSource.Task.ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,11 +220,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
}
|
}
|
||||||
catch (IOException)
|
catch (IOException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (ArgumentException)
|
catch (ArgumentException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -127,7 +127,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
{
|
{
|
||||||
using (var stream = await new M3uParser(Logger, _httpClient, _appHost).GetListingsStream(info.Url, CancellationToken.None).ConfigureAwait(false))
|
using (var stream = await new M3uParser(Logger, _httpClient, _appHost).GetListingsStream(info.Url, CancellationToken.None).ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +210,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsValidChannelNumber(numberString))
|
if (!IsValidChannelNumber(numberString))
|
||||||
@ -284,7 +283,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
|
|
||||||
if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out var number))
|
if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out var number))
|
||||||
{
|
{
|
||||||
//channel.Number = number.ToString();
|
// channel.Number = number.ToString();
|
||||||
nameInExtInf = nameInExtInf.Substring(numberIndex + 1).Trim(new[] { ' ', '-' });
|
nameInExtInf = nameInExtInf.Substring(numberIndex + 1).Trim(new[] { ' ', '-' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,21 +103,21 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
|
|
||||||
_ = StartStreaming(response, taskCompletionSource, LiveStreamCancellationTokenSource.Token);
|
_ = StartStreaming(response, taskCompletionSource, LiveStreamCancellationTokenSource.Token);
|
||||||
|
|
||||||
//OpenedMediaSource.Protocol = MediaProtocol.File;
|
// OpenedMediaSource.Protocol = MediaProtocol.File;
|
||||||
//OpenedMediaSource.Path = tempFile;
|
// OpenedMediaSource.Path = tempFile;
|
||||||
//OpenedMediaSource.ReadAtNativeFramerate = true;
|
// OpenedMediaSource.ReadAtNativeFramerate = true;
|
||||||
|
|
||||||
MediaSource.Path = _appHost.GetLoopbackHttpApiUrl() + "/LiveTv/LiveStreamFiles/" + UniqueId + "/stream.ts";
|
MediaSource.Path = _appHost.GetLoopbackHttpApiUrl() + "/LiveTv/LiveStreamFiles/" + UniqueId + "/stream.ts";
|
||||||
MediaSource.Protocol = MediaProtocol.Http;
|
MediaSource.Protocol = MediaProtocol.Http;
|
||||||
|
|
||||||
//OpenedMediaSource.Path = TempFilePath;
|
// OpenedMediaSource.Path = TempFilePath;
|
||||||
//OpenedMediaSource.Protocol = MediaProtocol.File;
|
// OpenedMediaSource.Protocol = MediaProtocol.File;
|
||||||
|
|
||||||
//OpenedMediaSource.Path = _tempFilePath;
|
// OpenedMediaSource.Path = _tempFilePath;
|
||||||
//OpenedMediaSource.Protocol = MediaProtocol.File;
|
// OpenedMediaSource.Protocol = MediaProtocol.File;
|
||||||
//OpenedMediaSource.SupportsDirectPlay = false;
|
// OpenedMediaSource.SupportsDirectPlay = false;
|
||||||
//OpenedMediaSource.SupportsDirectStream = true;
|
// OpenedMediaSource.SupportsDirectStream = true;
|
||||||
//OpenedMediaSource.SupportsTranscoding = true;
|
// OpenedMediaSource.SupportsTranscoding = true;
|
||||||
await taskCompletionSource.Task.ConfigureAwait(false);
|
await taskCompletionSource.Task.ConfigureAwait(false);
|
||||||
if (taskCompletionSource.Task.Exception != null)
|
if (taskCompletionSource.Task.Exception != null)
|
||||||
{
|
{
|
||||||
|
@ -98,7 +98,6 @@ namespace Emby.Server.Implementations.Net
|
|||||||
}
|
}
|
||||||
catch (SocketException)
|
catch (SocketException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -109,12 +108,11 @@ namespace Emby.Server.Implementations.Net
|
|||||||
}
|
}
|
||||||
catch (SocketException)
|
catch (SocketException)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
|
// retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
|
||||||
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
|
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
|
||||||
|
|
||||||
var localIp = IPAddress.Any;
|
var localIp = IPAddress.Any;
|
||||||
|
@ -167,7 +167,7 @@ namespace Emby.Server.Implementations.Networking
|
|||||||
|
|
||||||
foreach (var subnet_Match in subnets)
|
foreach (var subnet_Match in subnets)
|
||||||
{
|
{
|
||||||
//logger.LogDebug("subnet_Match:" + subnet_Match);
|
// logger.LogDebug("subnet_Match:" + subnet_Match);
|
||||||
|
|
||||||
if (endpoint.StartsWith(subnet_Match + ".", StringComparison.OrdinalIgnoreCase))
|
if (endpoint.StartsWith(subnet_Match + ".", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
@ -163,7 +163,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
|||||||
}
|
}
|
||||||
catch (ObjectDisposedException)
|
catch (ObjectDisposedException)
|
||||||
{
|
{
|
||||||
//TODO Investigate and properly fix.
|
// TODO Investigate and properly fix.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,6 @@ namespace Emby.Server.Implementations.Security
|
|||||||
AddColumn(db, "AccessTokens", "UserName", "TEXT", existingColumnNames);
|
AddColumn(db, "AccessTokens", "UserName", "TEXT", existingColumnNames);
|
||||||
AddColumn(db, "AccessTokens", "DateLastActivity", "DATETIME", existingColumnNames);
|
AddColumn(db, "AccessTokens", "DateLastActivity", "DATETIME", existingColumnNames);
|
||||||
AddColumn(db, "AccessTokens", "AppVersion", "TEXT", existingColumnNames);
|
AddColumn(db, "AccessTokens", "AppVersion", "TEXT", existingColumnNames);
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
|
|
||||||
connection.RunQueries(new[]
|
connection.RunQueries(new[]
|
||||||
@ -107,7 +106,6 @@ namespace Emby.Server.Implementations.Security
|
|||||||
|
|
||||||
statement.MoveNext();
|
statement.MoveNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -367,7 +365,6 @@ namespace Emby.Server.Implementations.Security
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}, ReadTransactionMode);
|
}, ReadTransactionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -398,7 +395,6 @@ namespace Emby.Server.Implementations.Security
|
|||||||
|
|
||||||
statement.MoveNext();
|
statement.MoveNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
}, TransactionMode);
|
}, TransactionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,8 +59,8 @@ namespace Emby.Server.Implementations.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//ContentType='text/html' is the default for a HttpResponse
|
// ContentType='text/html' is the default for a HttpResponse
|
||||||
//Do not override if another has been set
|
// Do not override if another has been set
|
||||||
if (response.ContentType == null || response.ContentType == "text/html")
|
if (response.ContentType == null || response.ContentType == "text/html")
|
||||||
{
|
{
|
||||||
response.ContentType = defaultContentType;
|
response.ContentType = defaultContentType;
|
||||||
|
@ -59,8 +59,8 @@ namespace Emby.Server.Implementations.Services
|
|||||||
|
|
||||||
ServiceExecGeneral.CreateServiceRunnersFor(requestType, actions);
|
ServiceExecGeneral.CreateServiceRunnersFor(requestType, actions);
|
||||||
|
|
||||||
//var returnMarker = GetTypeWithGenericTypeDefinitionOf(requestType, typeof(IReturn<>));
|
// var returnMarker = GetTypeWithGenericTypeDefinitionOf(requestType, typeof(IReturn<>));
|
||||||
//var responseType = returnMarker != null ?
|
// var responseType = returnMarker != null ?
|
||||||
// GetGenericArguments(returnMarker)[0]
|
// GetGenericArguments(returnMarker)[0]
|
||||||
// : mi.ReturnType != typeof(object) && mi.ReturnType != typeof(void) ?
|
// : mi.ReturnType != typeof(object) && mi.ReturnType != typeof(void) ?
|
||||||
// mi.ReturnType
|
// mi.ReturnType
|
||||||
@ -182,7 +182,7 @@ namespace Emby.Server.Implementations.Services
|
|||||||
serviceRequiresContext.Request = req;
|
serviceRequiresContext.Request = req;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Executes the service and returns the result
|
// Executes the service and returns the result
|
||||||
return ServiceExecGeneral.Execute(serviceType, req, service, requestDto, requestType.GetMethodName());
|
return ServiceExecGeneral.Execute(serviceType, req, service, requestDto, requestType.GetMethodName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ namespace Emby.Server.Implementations.Services
|
|||||||
|
|
||||||
var componentsList = new List<string>();
|
var componentsList = new List<string>();
|
||||||
|
|
||||||
//We only split on '.' if the restPath has them. Allows for /{action}.{type}
|
// We only split on '.' if the restPath has them. Allows for /{action}.{type}
|
||||||
var hasSeparators = new List<bool>();
|
var hasSeparators = new List<bool>();
|
||||||
foreach (var component in this.restPath.Split(PathSeperatorChar))
|
foreach (var component in this.restPath.Split(PathSeperatorChar))
|
||||||
{
|
{
|
||||||
@ -298,12 +298,12 @@ namespace Emby.Server.Implementations.Services
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Routes with least wildcard matches get the highest score
|
// Routes with least wildcard matches get the highest score
|
||||||
var score = Math.Max((100 - wildcardMatchCount), 1) * 1000
|
var score = Math.Max((100 - wildcardMatchCount), 1) * 1000
|
||||||
//Routes with less variable (and more literal) matches
|
// Routes with less variable (and more literal) matches
|
||||||
+ Math.Max((10 - VariableArgsCount), 1) * 100;
|
+ Math.Max((10 - VariableArgsCount), 1) * 100;
|
||||||
|
|
||||||
//Exact verb match is better than ANY
|
// Exact verb match is better than ANY
|
||||||
if (Verbs.Length == 1 && string.Equals(httpMethod, Verbs[0], StringComparison.OrdinalIgnoreCase))
|
if (Verbs.Length == 1 && string.Equals(httpMethod, Verbs[0], StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
score += 10;
|
score += 10;
|
||||||
@ -470,7 +470,7 @@ namespace Emby.Server.Implementations.Services
|
|||||||
+ variableName + " on " + RequestType.GetMethodName());
|
+ variableName + " on " + RequestType.GetMethodName());
|
||||||
}
|
}
|
||||||
|
|
||||||
var value = requestComponents.Length > pathIx ? requestComponents[pathIx] : null; //wildcard has arg mismatch
|
var value = requestComponents.Length > pathIx ? requestComponents[pathIx] : null; // wildcard has arg mismatch
|
||||||
if (value != null && this.isWildcard[i])
|
if (value != null && this.isWildcard[i])
|
||||||
{
|
{
|
||||||
if (i == this.TotalComponentsCount - 1)
|
if (i == this.TotalComponentsCount - 1)
|
||||||
@ -519,8 +519,8 @@ namespace Emby.Server.Implementations.Services
|
|||||||
|
|
||||||
if (queryStringAndFormData != null)
|
if (queryStringAndFormData != null)
|
||||||
{
|
{
|
||||||
//Query String and form data can override variable path matches
|
// Query String and form data can override variable path matches
|
||||||
//path variables < query string < form data
|
// path variables < query string < form data
|
||||||
foreach (var name in queryStringAndFormData)
|
foreach (var name in queryStringAndFormData)
|
||||||
{
|
{
|
||||||
requestKeyValuesMap[name.Key] = name.Value;
|
requestKeyValuesMap[name.Key] = name.Value;
|
||||||
|
@ -83,7 +83,7 @@ namespace Emby.Server.Implementations.Services
|
|||||||
|
|
||||||
if (propertySerializerEntry.PropertyType == typeof(bool))
|
if (propertySerializerEntry.PropertyType == typeof(bool))
|
||||||
{
|
{
|
||||||
//InputExtensions.cs#530 MVC Checkbox helper emits extra hidden input field, generating 2 values, first is the real value
|
// InputExtensions.cs#530 MVC Checkbox helper emits extra hidden input field, generating 2 values, first is the real value
|
||||||
propertyTextValue = StringExtensions.LeftPart(propertyTextValue, ',').ToString();
|
propertyTextValue = StringExtensions.LeftPart(propertyTextValue, ',').ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ namespace Emby.Server.Implementations.Sorting
|
|||||||
|
|
||||||
if (val != 0)
|
if (val != 0)
|
||||||
{
|
{
|
||||||
//return val;
|
// return val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,20 +102,15 @@ namespace Emby.Server.Implementations.SyncPlay
|
|||||||
return new SessionInfo[] { from };
|
return new SessionInfo[] { from };
|
||||||
case BroadcastType.AllGroup:
|
case BroadcastType.AllGroup:
|
||||||
return _group.Participants.Values.Select(
|
return _group.Participants.Values.Select(
|
||||||
session => session.Session
|
session => session.Session).ToArray();
|
||||||
).ToArray();
|
|
||||||
case BroadcastType.AllExceptCurrentSession:
|
case BroadcastType.AllExceptCurrentSession:
|
||||||
return _group.Participants.Values.Select(
|
return _group.Participants.Values.Select(
|
||||||
session => session.Session
|
session => session.Session).Where(
|
||||||
).Where(
|
session => !session.Id.Equals(from.Id)).ToArray();
|
||||||
session => !session.Id.Equals(from.Id)
|
|
||||||
).ToArray();
|
|
||||||
case BroadcastType.AllReady:
|
case BroadcastType.AllReady:
|
||||||
return _group.Participants.Values.Where(
|
return _group.Participants.Values.Where(
|
||||||
session => !session.IsBuffering
|
session => !session.IsBuffering).Select(
|
||||||
).Select(
|
session => session.Session).ToArray();
|
||||||
session => session.Session
|
|
||||||
).ToArray();
|
|
||||||
default:
|
default:
|
||||||
return Array.Empty<SessionInfo>();
|
return Array.Empty<SessionInfo>();
|
||||||
}
|
}
|
||||||
@ -314,8 +309,7 @@ namespace Emby.Server.Implementations.SyncPlay
|
|||||||
// Playback synchronization will mainly happen client side
|
// Playback synchronization will mainly happen client side
|
||||||
_group.IsPaused = false;
|
_group.IsPaused = false;
|
||||||
_group.LastActivity = DateTime.UtcNow.AddMilliseconds(
|
_group.LastActivity = DateTime.UtcNow.AddMilliseconds(
|
||||||
delay
|
delay);
|
||||||
);
|
|
||||||
|
|
||||||
var command = NewSyncPlayCommand(SendCommandType.Play);
|
var command = NewSyncPlayCommand(SendCommandType.Play);
|
||||||
SendCommand(session, BroadcastType.AllGroup, command, cancellationToken);
|
SendCommand(session, BroadcastType.AllGroup, command, cancellationToken);
|
||||||
@ -449,8 +443,7 @@ namespace Emby.Server.Implementations.SyncPlay
|
|||||||
{
|
{
|
||||||
// Client that was buffering is recovering, notifying others to resume
|
// Client that was buffering is recovering, notifying others to resume
|
||||||
_group.LastActivity = currentTime.AddMilliseconds(
|
_group.LastActivity = currentTime.AddMilliseconds(
|
||||||
delay
|
delay);
|
||||||
);
|
|
||||||
var command = NewSyncPlayCommand(SendCommandType.Play);
|
var command = NewSyncPlayCommand(SendCommandType.Play);
|
||||||
SendCommand(session, BroadcastType.AllExceptCurrentSession, command, cancellationToken);
|
SendCommand(session, BroadcastType.AllExceptCurrentSession, command, cancellationToken);
|
||||||
}
|
}
|
||||||
@ -461,8 +454,7 @@ namespace Emby.Server.Implementations.SyncPlay
|
|||||||
delay = delay < _group.DefaulPing ? _group.DefaulPing : delay;
|
delay = delay < _group.DefaulPing ? _group.DefaulPing : delay;
|
||||||
|
|
||||||
_group.LastActivity = currentTime.AddMilliseconds(
|
_group.LastActivity = currentTime.AddMilliseconds(
|
||||||
delay
|
delay);
|
||||||
);
|
|
||||||
|
|
||||||
var command = NewSyncPlayCommand(SendCommandType.Play);
|
var command = NewSyncPlayCommand(SendCommandType.Play);
|
||||||
SendCommand(session, BroadcastType.AllGroup, command, cancellationToken);
|
SendCommand(session, BroadcastType.AllGroup, command, cancellationToken);
|
||||||
|
@ -297,19 +297,15 @@ namespace Emby.Server.Implementations.SyncPlay
|
|||||||
if (!filterItemId.Equals(Guid.Empty))
|
if (!filterItemId.Equals(Guid.Empty))
|
||||||
{
|
{
|
||||||
return _groups.Values.Where(
|
return _groups.Values.Where(
|
||||||
group => group.GetPlayingItemId().Equals(filterItemId) && HasAccessToItem(user, group.GetPlayingItemId())
|
group => group.GetPlayingItemId().Equals(filterItemId) && HasAccessToItem(user, group.GetPlayingItemId())).Select(
|
||||||
).Select(
|
group => group.GetInfo()).ToList();
|
||||||
group => group.GetInfo()
|
|
||||||
).ToList();
|
|
||||||
}
|
}
|
||||||
// Otherwise show all available groups
|
// Otherwise show all available groups
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return _groups.Values.Where(
|
return _groups.Values.Where(
|
||||||
group => HasAccessToItem(user, group.GetPlayingItemId())
|
group => HasAccessToItem(user, group.GetPlayingItemId())).Select(
|
||||||
).Select(
|
group => group.GetInfo()).ToList();
|
||||||
group => group.GetInfo()
|
|
||||||
).ToList();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ namespace Emby.Server.Implementations.TV
|
|||||||
var allNextUp = seriesKeys
|
var allNextUp = seriesKeys
|
||||||
.Select(i => GetNextUp(i, currentUser, dtoOptions));
|
.Select(i => GetNextUp(i, currentUser, dtoOptions));
|
||||||
|
|
||||||
//allNextUp = allNextUp.OrderByDescending(i => i.Item1);
|
// allNextUp = allNextUp.OrderByDescending(i => i.Item1);
|
||||||
|
|
||||||
// If viewing all next up for all series, remove first episodes
|
// If viewing all next up for all series, remove first episodes
|
||||||
// But if that returns empty, keep those first episodes (avoid completely empty view)
|
// But if that returns empty, keep those first episodes (avoid completely empty view)
|
||||||
@ -225,7 +225,6 @@ namespace Emby.Server.Implementations.TV
|
|||||||
ParentIndexNumberNotEquals = 0,
|
ParentIndexNumberNotEquals = 0,
|
||||||
MinSortName = lastWatchedEpisode?.SortName,
|
MinSortName = lastWatchedEpisode?.SortName,
|
||||||
DtoOptions = dtoOptions
|
DtoOptions = dtoOptions
|
||||||
|
|
||||||
}).Cast<Episode>().FirstOrDefault();
|
}).Cast<Episode>().FirstOrDefault();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -189,7 +189,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Release_Releases_Id")]
|
[ForeignKey("Release_Releases_Id")]
|
||||||
public virtual ICollection<Release> Releases { get; protected set; }
|
public virtual ICollection<Release> Releases { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +101,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Company_Publishers_Id")]
|
[ForeignKey("Company_Publishers_Id")]
|
||||||
public virtual ICollection<Company> Publishers { get; protected set; }
|
public virtual ICollection<Company> Publishers { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,7 +257,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
[ForeignKey("CollectionItem_CollectionItem_Id")]
|
[ForeignKey("CollectionItem_CollectionItem_Id")]
|
||||||
public virtual ICollection<CollectionItem> CollectionItem { get; protected set; }
|
public virtual ICollection<CollectionItem> CollectionItem { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
[ForeignKey("CollectionItem_Previous_Id")]
|
[ForeignKey("CollectionItem_Previous_Id")]
|
||||||
public virtual CollectionItem Previous { get; set; }
|
public virtual CollectionItem Previous { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,7 +131,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
public virtual ICollection<CompanyMetadata> CompanyMetadata { get; protected set; }
|
public virtual ICollection<CompanyMetadata> CompanyMetadata { get; protected set; }
|
||||||
[ForeignKey("Company_Parent_Id")]
|
[ForeignKey("Company_Parent_Id")]
|
||||||
public virtual Company Parent { get; set; }
|
public virtual Company Parent { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +210,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Release_Releases_Id")]
|
[ForeignKey("Release_Releases_Id")]
|
||||||
public virtual ICollection<Release> Releases { get; protected set; }
|
public virtual ICollection<Release> Releases { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +104,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
public virtual ICollection<Release> Releases { get; protected set; }
|
public virtual ICollection<Release> Releases { get; protected set; }
|
||||||
[ForeignKey("EpisodeMetadata_EpisodeMetadata_Id")]
|
[ForeignKey("EpisodeMetadata_EpisodeMetadata_Id")]
|
||||||
public virtual ICollection<EpisodeMetadata> EpisodeMetadata { get; protected set; }
|
public virtual ICollection<EpisodeMetadata> EpisodeMetadata { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,7 +146,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +141,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +164,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[ForeignKey("LibraryRoot_Id")]
|
[ForeignKey("LibraryRoot_Id")]
|
||||||
public virtual LibraryRoot LibraryRoot { get; set; }
|
public virtual LibraryRoot LibraryRoot { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,7 +186,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[ForeignKey("Library_Id")]
|
[ForeignKey("Library_Id")]
|
||||||
public virtual Library Library { get; set; }
|
public virtual Library Library { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,7 +194,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("MediaFileStream_MediaFileStreams_Id")]
|
[ForeignKey("MediaFileStream_MediaFileStreams_Id")]
|
||||||
public virtual ICollection<MediaFileStream> MediaFileStreams { get; protected set; }
|
public virtual ICollection<MediaFileStream> MediaFileStreams { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +143,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,7 +374,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("PersonRole_PersonRoles_Id")]
|
[ForeignKey("PersonRole_PersonRoles_Id")]
|
||||||
public virtual ICollection<MetadataProviderId> Sources { get; protected set; }
|
public virtual ICollection<MetadataProviderId> Sources { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +141,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[ForeignKey("MetadataProvider_Id")]
|
[ForeignKey("MetadataProvider_Id")]
|
||||||
public virtual MetadataProvider MetadataProvider { get; set; }
|
public virtual MetadataProvider MetadataProvider { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("MovieMetadata_MovieMetadata_Id")]
|
[ForeignKey("MovieMetadata_MovieMetadata_Id")]
|
||||||
public virtual ICollection<MovieMetadata> MovieMetadata { get; protected set; }
|
public virtual ICollection<MovieMetadata> MovieMetadata { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +217,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
[ForeignKey("Company_Studios_Id")]
|
[ForeignKey("Company_Studios_Id")]
|
||||||
public virtual ICollection<Company> Studios { get; protected set; }
|
public virtual ICollection<Company> Studios { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Track_Tracks_Id")]
|
[ForeignKey("Track_Tracks_Id")]
|
||||||
public virtual ICollection<Track> Tracks { get; protected set; }
|
public virtual ICollection<Track> Tracks { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +181,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Company_Labels_Id")]
|
[ForeignKey("Company_Labels_Id")]
|
||||||
public virtual ICollection<Company> Labels { get; protected set; }
|
public virtual ICollection<Company> Labels { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -296,7 +296,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
[ForeignKey("MetadataProviderId_Sources_Id")]
|
[ForeignKey("MetadataProviderId_Sources_Id")]
|
||||||
public virtual ICollection<MetadataProviderId> Sources { get; protected set; }
|
public virtual ICollection<MetadataProviderId> Sources { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,7 +203,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("MetadataProviderId_Sources_Id")]
|
[ForeignKey("MetadataProviderId_Sources_Id")]
|
||||||
public virtual ICollection<MetadataProviderId> Sources { get; protected set; }
|
public virtual ICollection<MetadataProviderId> Sources { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Release_Releases_Id")]
|
[ForeignKey("Release_Releases_Id")]
|
||||||
public virtual ICollection<Release> Releases { get; protected set; }
|
public virtual ICollection<Release> Releases { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +111,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +181,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[ForeignKey("RatingSource_RatingType_Id")]
|
[ForeignKey("RatingSource_RatingType_Id")]
|
||||||
public virtual RatingSource RatingType { get; set; }
|
public virtual RatingSource RatingType { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +225,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
[ForeignKey("MetadataProviderId_Source_Id")]
|
[ForeignKey("MetadataProviderId_Source_Id")]
|
||||||
public virtual MetadataProviderId Source { get; set; }
|
public virtual MetadataProviderId Source { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +182,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Chapter_Chapters_Id")]
|
[ForeignKey("Chapter_Chapters_Id")]
|
||||||
public virtual ICollection<Chapter> Chapters { get; protected set; }
|
public virtual ICollection<Chapter> Chapters { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +105,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Episode_Episodes_Id")]
|
[ForeignKey("Episode_Episodes_Id")]
|
||||||
public virtual ICollection<Episode> Episodes { get; protected set; }
|
public virtual ICollection<Episode> Episodes { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +100,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Navigation properties
|
* Navigation properties
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +153,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
|
|
||||||
[ForeignKey("Season_Seasons_Id")]
|
[ForeignKey("Season_Seasons_Id")]
|
||||||
public virtual ICollection<Season> Seasons { get; protected set; }
|
public virtual ICollection<Season> Seasons { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +217,6 @@ namespace Jellyfin.Data.Entities
|
|||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
[ForeignKey("Company_Networks_Id")]
|
[ForeignKey("Company_Networks_Id")]
|
||||||
public virtual ICollection<Company> Networks { get; protected set; }
|
public virtual ICollection<Company> Networks { get; protected set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user