diff --git a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
index e6479feaa8..15bbca136a 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -89,6 +89,11 @@ namespace Emby.Server.Implementations.LiveTv
if (channel != null)
{
dto.ChannelName = channel.Name;
+
+ if (channel.HasImage(ImageType.Primary))
+ {
+ dto.ChannelPrimaryImageTag = GetImageTag(channel);
+ }
}
return dto;
diff --git a/Emby.Server.Implementations/Localization/Core/kk.json b/Emby.Server.Implementations/Localization/Core/kk.json
index e996235575..c24ee3d13b 100644
--- a/Emby.Server.Implementations/Localization/Core/kk.json
+++ b/Emby.Server.Implementations/Localization/Core/kk.json
@@ -27,7 +27,7 @@
"Artists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440",
"Folders": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440",
"Songs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440",
- "TvShows": "TV Shows",
+ "TvShows": "\u0422\u0414-\u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440",
"Shows": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440",
"Genres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440",
"NameSeasonNumber": "{0}-\u043c\u0430\u0443\u0441\u044b\u043c",
diff --git a/Emby.Server.Implementations/Localization/Core/ru.json b/Emby.Server.Implementations/Localization/Core/ru.json
index f3a1cfb7b8..aa624f0e72 100644
--- a/Emby.Server.Implementations/Localization/Core/ru.json
+++ b/Emby.Server.Implementations/Localization/Core/ru.json
@@ -2,13 +2,13 @@
"Latest": "\u041d\u043e\u0432\u0435\u0439\u0448\u0435\u0435",
"ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}",
"Inherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u0435",
- "Books": "\u041a\u043d\u0438\u0433\u0438",
+ "Books": "\u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430",
"Music": "\u041c\u0443\u0437\u044b\u043a\u0430",
"Games": "\u0418\u0433\u0440\u044b",
"Photos": "\u0424\u043e\u0442\u043e",
"MixedContent": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435",
- "MusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e",
- "HomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e",
+ "MusicVideos": "\u041c\u0443\u0437. \u0432\u0438\u0434\u0435\u043e",
+ "HomeVideos": "\u0414\u043e\u043c. \u0432\u0438\u0434\u0435\u043e",
"Playlists": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b",
"HeaderRecordingGroups": "\u0413\u0440\u0443\u043f\u043f\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439",
"HeaderContinueWatching": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430",
@@ -22,12 +22,12 @@
"Favorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435",
"Collections": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438",
"Channels": "\u041a\u0430\u043d\u0430\u043b\u044b",
- "Movies": "\u0424\u0438\u043b\u044c\u043c\u044b",
+ "Movies": "\u041a\u0438\u043d\u043e",
"Albums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b",
"Artists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438",
"Folders": "\u041f\u0430\u043f\u043a\u0438",
"Songs": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438",
- "TvShows": "TV Shows",
+ "TvShows": "\u0422\u0412",
"Shows": "\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0438",
"Genres": "\u0416\u0430\u043d\u0440\u044b",
"NameSeasonNumber": "\u0421\u0435\u0437\u043e\u043d {0}",
@@ -49,7 +49,7 @@
"DeviceOnlineWithName": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0443\u0441\u0442-\u043d\u043e",
"UserOnlineFromDevice": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0441 {1} \u0443\u0441\u0442-\u043d\u043e",
"ProviderValue": "\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a: {0}",
- "SubtitlesDownloadedForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u0434\u043b\u044f {0} \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b",
+ "SubtitlesDownloadedForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u043a {0} \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b",
"UserCreatedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d",
"UserPasswordChangedWithName": "\u041f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437-\u043b\u044f {0} \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d",
"UserDeletedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0451\u043d",
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
index 1c16373306..9dff18690e 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
@@ -50,21 +50,40 @@ namespace MediaBrowser.Controller.LiveTv
public static double? GetDefaultPrimaryImageAspectRatio(IHasProgramAttributes item)
{
var serviceName = item.ServiceName;
- if (!item.IsMovie
- && !string.Equals(serviceName, EmbyServiceName, StringComparison.OrdinalIgnoreCase)
- && !string.Equals(serviceName, "Next Pvr", StringComparison.OrdinalIgnoreCase))
+
+ if (item.IsMovie)
{
- double value = 16;
- value /= 9;
+ if (string.Equals(serviceName, EmbyServiceName, StringComparison.OrdinalIgnoreCase) || string.Equals(serviceName, "Next Pvr", StringComparison.OrdinalIgnoreCase))
+ {
+ double value = 2;
+ value /= 3;
+
+ return value;
+ }
+ else
+ {
+ double value = 16;
+ value /= 9;
- return value;
+ return value;
+ }
}
else
{
- double value = 2;
- value /= 3;
+ if (string.Equals(serviceName, EmbyServiceName, StringComparison.OrdinalIgnoreCase) || string.Equals(serviceName, "Next Pvr", StringComparison.OrdinalIgnoreCase))
+ {
+ double value = 2;
+ value /= 3;
- return value;
+ return value;
+ }
+ else
+ {
+ double value = 16;
+ value /= 9;
+
+ return value;
+ }
}
}
diff --git a/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs b/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs
index 7c9fe07909..e4d32ca4a5 100644
--- a/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs
+++ b/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs
@@ -41,6 +41,8 @@ namespace MediaBrowser.Model.LiveTv
///
public string ChannelName { get; set; }
+ public string ChannelPrimaryImageTag { get; set; }
+
///
/// Gets or sets the program identifier.
///
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 3759670d4f..af03e21b2d 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -38,28 +38,6 @@ namespace MediaBrowser.Providers.Manager
LibraryManager = libraryManager;
}
- private bool RequiresRefresh(IHasMetadata item, IDirectoryService directoryService)
- {
- if (item.RequiresRefresh())
- {
- return true;
- }
-
- if (item.SupportsLocalMetadata)
- {
- var video = item as Video;
-
- if (video != null && !video.IsPlaceHolder)
- {
- return !video.SubtitleFiles
- .SequenceEqual(SubtitleResolver.GetSubtitleFiles(video, directoryService, FileSystem, false)
- .OrderBy(i => i), StringComparer.OrdinalIgnoreCase);
- }
- }
-
- return false;
- }
-
public async Task RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
{
var itemOfType = (TItemType)item;
@@ -70,6 +48,11 @@ namespace MediaBrowser.Providers.Manager
var libraryOptions = LibraryManager.GetLibraryOptions((BaseItem)item);
+ if (!requiresRefresh && libraryOptions.AutomaticRefreshIntervalDays > 0 && (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= libraryOptions.AutomaticRefreshIntervalDays)
+ {
+ requiresRefresh = true;
+ }
+
DateTime? newDateModified = null;
if (item.LocationType == LocationType.FileSystem)
{
@@ -85,18 +68,25 @@ namespace MediaBrowser.Providers.Manager
requiresRefresh = true;
}
}
- }
- }
- if (!requiresRefresh && libraryOptions.AutomaticRefreshIntervalDays > 0 && (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= libraryOptions.AutomaticRefreshIntervalDays)
- {
- requiresRefresh = true;
+ if (!requiresRefresh && item.SupportsLocalMetadata)
+ {
+ var video = item as Video;
+
+ if (video != null && !video.IsPlaceHolder)
+ {
+ requiresRefresh = !video.SubtitleFiles
+ .SequenceEqual(SubtitleResolver.GetSubtitleFiles(video, refreshOptions.DirectoryService, FileSystem, false)
+ .OrderBy(i => i), StringComparer.OrdinalIgnoreCase);
+ }
+ }
+ }
}
if (!requiresRefresh && refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
{
// TODO: If this returns true, should we instead just change metadata refresh mode to Full?
- requiresRefresh = RequiresRefresh(item, refreshOptions.DirectoryService);
+ requiresRefresh = item.RequiresRefresh();
}
var itemImageProvider = new ItemImageProvider(Logger, ProviderManager, ServerConfigurationManager, FileSystem);
diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
index bb4a98fa86..f55d95a2e7 100644
--- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs
+++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
@@ -152,7 +152,7 @@ namespace MediaBrowser.WebDashboard.Api
}
}
- html = html.Replace("", "" + GetMetaTags(mode) + GetCommonCss(mode, appVersion));
+ html = html.Replace("", "" + GetMetaTags(mode));
// Disable embedded scripts from plugins. We'll run them later once resources have loaded
if (html.IndexOf("