mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-03-20 09:06:38 +00:00
Merge branch 'master' into warn12
This commit is contained in:
@@ -838,16 +838,14 @@ namespace Emby.Server.Implementations
|
||||
serviceCollection.AddSingleton(ChapterManager);
|
||||
|
||||
MediaEncoder = new MediaBrowser.MediaEncoding.Encoder.MediaEncoder(
|
||||
LoggerFactory,
|
||||
JsonSerializer,
|
||||
StartupOptions.FFmpegPath,
|
||||
LoggerFactory.CreateLogger<MediaBrowser.MediaEncoding.Encoder.MediaEncoder>(),
|
||||
ServerConfigurationManager,
|
||||
FileSystemManager,
|
||||
() => SubtitleEncoder,
|
||||
() => MediaSourceManager,
|
||||
ProcessFactory,
|
||||
5000,
|
||||
LocalizationManager);
|
||||
LocalizationManager,
|
||||
() => SubtitleEncoder,
|
||||
_configuration,
|
||||
StartupOptions.FFmpegPath);
|
||||
serviceCollection.AddSingleton(MediaEncoder);
|
||||
|
||||
EncodingManager = new MediaEncoder.EncodingManager(FileSystemManager, LoggerFactory, MediaEncoder, ChapterManager, LibraryManager);
|
||||
@@ -864,10 +862,19 @@ namespace Emby.Server.Implementations
|
||||
AuthService = new AuthService(LoggerFactory.CreateLogger<AuthService>(), authContext, ServerConfigurationManager, SessionManager, NetworkManager);
|
||||
serviceCollection.AddSingleton(AuthService);
|
||||
|
||||
SubtitleEncoder = new MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder(LibraryManager, LoggerFactory, ApplicationPaths, FileSystemManager, MediaEncoder, JsonSerializer, HttpClient, MediaSourceManager, ProcessFactory);
|
||||
SubtitleEncoder = new MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder(
|
||||
LibraryManager,
|
||||
LoggerFactory.CreateLogger<MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder>(),
|
||||
ApplicationPaths,
|
||||
FileSystemManager,
|
||||
MediaEncoder,
|
||||
HttpClient,
|
||||
MediaSourceManager,
|
||||
ProcessFactory);
|
||||
serviceCollection.AddSingleton(SubtitleEncoder);
|
||||
|
||||
serviceCollection.AddSingleton(typeof(IResourceFileManager), typeof(ResourceFileManager));
|
||||
serviceCollection.AddSingleton<EncodingHelper>();
|
||||
|
||||
_displayPreferencesRepository.Initialize();
|
||||
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
using System.Collections.Generic;
|
||||
using static MediaBrowser.Controller.Extensions.ConfigurationExtensions;
|
||||
|
||||
namespace Emby.Server.Implementations
|
||||
{
|
||||
public static class ConfigurationOptions
|
||||
{
|
||||
public static readonly Dictionary<string, string> Configuration = new Dictionary<string, string>
|
||||
public static Dictionary<string, string> Configuration => new Dictionary<string, string>
|
||||
{
|
||||
{ "HttpListenerHost:DefaultRedirectPath", "web/index.html" },
|
||||
{ "MusicBrainz:BaseUrl", "https://www.musicbrainz.org" }
|
||||
{ "MusicBrainz:BaseUrl", "https://www.musicbrainz.org" },
|
||||
{ FfmpegProbeSizeKey, "1G" },
|
||||
{ FfmpegAnalyzeDurationKey, "200M" }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
<ProjectReference Include="..\MediaBrowser.LocalMetadata\MediaBrowser.LocalMetadata.csproj" />
|
||||
<ProjectReference Include="..\Emby.Photos\Emby.Photos.csproj" />
|
||||
<ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj" />
|
||||
<ProjectReference Include="..\Emby.XmlTv\Emby.XmlTv\Emby.XmlTv.csproj" />
|
||||
<ProjectReference Include="..\MediaBrowser.MediaEncoding\MediaBrowser.MediaEncoding.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IPNetwork2" Version="2.4.0.126" />
|
||||
<PackageReference Include="Jellyfin.XmlTv" Version="10.4.3" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Version="2.2.0" />
|
||||
@@ -29,7 +29,6 @@
|
||||
<PackageReference Include="Microsoft.AspNetCore.ResponseCompression" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="2.2.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="3.1.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.0" />
|
||||
|
||||
@@ -227,24 +227,21 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
var pctIn = decimal.Divide(positionTicks, runtimeTicks) * 100;
|
||||
|
||||
// Don't track in very beginning
|
||||
if (pctIn < _config.Configuration.MinResumePct)
|
||||
{
|
||||
// ignore progress during the beginning
|
||||
positionTicks = 0;
|
||||
}
|
||||
|
||||
// If we're at the end, assume completed
|
||||
else if (pctIn > _config.Configuration.MaxResumePct || positionTicks >= runtimeTicks)
|
||||
{
|
||||
// mark as completed close to the end
|
||||
positionTicks = 0;
|
||||
data.Played = playedToCompletion = true;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// Enforce MinResumeDuration
|
||||
var durationSeconds = TimeSpan.FromTicks(runtimeTicks).TotalSeconds;
|
||||
|
||||
if (durationSeconds < _config.Configuration.MinResumeDurationSeconds)
|
||||
{
|
||||
positionTicks = 0;
|
||||
@@ -264,6 +261,7 @@ namespace Emby.Server.Implementations.Library
|
||||
positionTicks = 0;
|
||||
data.Played = false;
|
||||
}
|
||||
|
||||
if (!item.SupportsPositionTicksResume)
|
||||
{
|
||||
positionTicks = 0;
|
||||
|
||||
@@ -7,8 +7,8 @@ using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Emby.XmlTv.Classes;
|
||||
using Emby.XmlTv.Entities;
|
||||
using Jellyfin.XmlTv;
|
||||
using Jellyfin.XmlTv.Entities;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
|
||||
@@ -304,9 +304,12 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
}
|
||||
|
||||
private ILiveTvService GetService(string name)
|
||||
{
|
||||
return _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
=> Array.Find(_services, x => string.Equals(x.Name, name, StringComparison.OrdinalIgnoreCase))
|
||||
?? throw new KeyNotFoundException(
|
||||
string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"No service with the name '{0}' can be found.",
|
||||
name));
|
||||
|
||||
private static void Normalize(MediaSourceInfo mediaSource, ILiveTvService service, bool isVideo)
|
||||
{
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"Albums": "Àlbums",
|
||||
"AppDeviceValues": "App: {0}, Dispositiu: {1}",
|
||||
"Application": "Application",
|
||||
"AppDeviceValues": "Aplicació: {0}, Dispositiu: {1}",
|
||||
"Application": "Aplicació",
|
||||
"Artists": "Artistes",
|
||||
"AuthenticationSucceededWithUserName": "{0} s'ha autenticat correctament",
|
||||
"Books": "Llibres",
|
||||
"CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
|
||||
"CameraImageUploadedFrom": "Una nova imatge de càmera ha sigut pujada des de {0}",
|
||||
"Channels": "Canals",
|
||||
"ChapterNameValue": "Episodi {0}",
|
||||
"Collections": "Col·leccions",
|
||||
@@ -15,8 +15,8 @@
|
||||
"Favorites": "Preferits",
|
||||
"Folders": "Directoris",
|
||||
"Genres": "Gèneres",
|
||||
"HeaderAlbumArtists": "Album Artists",
|
||||
"HeaderCameraUploads": "Camera Uploads",
|
||||
"HeaderAlbumArtists": "Artistes dels Àlbums",
|
||||
"HeaderCameraUploads": "Pujades de Càmera",
|
||||
"HeaderContinueWatching": "Continua Veient",
|
||||
"HeaderFavoriteAlbums": "Àlbums Preferits",
|
||||
"HeaderFavoriteArtists": "Artistes Preferits",
|
||||
@@ -27,71 +27,71 @@
|
||||
"HeaderNextUp": "A continuació",
|
||||
"HeaderRecordingGroups": "Grups d'Enregistrament",
|
||||
"HomeVideos": "Vídeos domèstics",
|
||||
"Inherit": "Heretat",
|
||||
"ItemAddedWithName": "{0} afegit a la biblioteca",
|
||||
"ItemRemovedWithName": "{0} eliminat de la biblioteca",
|
||||
"Inherit": "Hereta",
|
||||
"ItemAddedWithName": "{0} ha estat afegit a la biblioteca",
|
||||
"ItemRemovedWithName": "{0} ha estat eliminat de la biblioteca",
|
||||
"LabelIpAddressValue": "Adreça IP: {0}",
|
||||
"LabelRunningTimeValue": "Temps en marxa: {0}",
|
||||
"LabelRunningTimeValue": "Temps en funcionament: {0}",
|
||||
"Latest": "Darreres",
|
||||
"MessageApplicationUpdated": "El Servidor d'Jellyfin ha estat actualitzat",
|
||||
"MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
|
||||
"MessageNamedServerConfigurationUpdatedWithValue": "La secció de configuració {0} ha estat actualitzada",
|
||||
"MessageApplicationUpdated": "El Servidor de Jellyfin ha estat actualitzat",
|
||||
"MessageApplicationUpdatedTo": "El Servidor de Jellyfin ha estat actualitzat a {0}",
|
||||
"MessageNamedServerConfigurationUpdatedWithValue": "La secció {0} de la configuració del servidor ha estat actualitzada",
|
||||
"MessageServerConfigurationUpdated": "S'ha actualitzat la configuració del servidor",
|
||||
"MixedContent": "Contingut mesclat",
|
||||
"Movies": "Pel·lícules",
|
||||
"Music": "Música",
|
||||
"MusicVideos": "Vídeos musicals",
|
||||
"NameInstallFailed": "{0} installation failed",
|
||||
"NameInstallFailed": "Instalació de {0} fallida",
|
||||
"NameSeasonNumber": "Temporada {0}",
|
||||
"NameSeasonUnknown": "Season Unknown",
|
||||
"NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
|
||||
"NameSeasonUnknown": "Temporada Desconeguda",
|
||||
"NewVersionIsAvailable": "Una nova versió del Servidor Jellyfin està disponible per descarregar.",
|
||||
"NotificationOptionApplicationUpdateAvailable": "Actualització d'aplicació disponible",
|
||||
"NotificationOptionApplicationUpdateInstalled": "Actualització d'aplicació instal·lada",
|
||||
"NotificationOptionAudioPlayback": "Audio playback started",
|
||||
"NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
|
||||
"NotificationOptionCameraImageUploaded": "Camera image uploaded",
|
||||
"NotificationOptionInstallationFailed": "Installation failure",
|
||||
"NotificationOptionNewLibraryContent": "New content added",
|
||||
"NotificationOptionPluginError": "Un component ha fallat",
|
||||
"NotificationOptionPluginInstalled": "Complement instal·lat",
|
||||
"NotificationOptionPluginUninstalled": "Complement desinstal·lat",
|
||||
"NotificationOptionPluginUpdateInstalled": "Actualització de complement instal·lada",
|
||||
"NotificationOptionServerRestartRequired": "Server restart required",
|
||||
"NotificationOptionTaskFailed": "Scheduled task failure",
|
||||
"NotificationOptionUserLockedOut": "User locked out",
|
||||
"NotificationOptionVideoPlayback": "Video playback started",
|
||||
"NotificationOptionVideoPlaybackStopped": "Video playback stopped",
|
||||
"NotificationOptionAudioPlayback": "Reproducció d'audio iniciada",
|
||||
"NotificationOptionAudioPlaybackStopped": "Reproducció d'audio aturada",
|
||||
"NotificationOptionCameraImageUploaded": "Imatge de càmera pujada",
|
||||
"NotificationOptionInstallationFailed": "Instalació fallida",
|
||||
"NotificationOptionNewLibraryContent": "Nou contingut afegit",
|
||||
"NotificationOptionPluginError": "Un connector ha fallat",
|
||||
"NotificationOptionPluginInstalled": "Connector instal·lat",
|
||||
"NotificationOptionPluginUninstalled": "Connector desinstal·lat",
|
||||
"NotificationOptionPluginUpdateInstalled": "Actualització de connector instal·lada",
|
||||
"NotificationOptionServerRestartRequired": "Reinici del servidor requerit",
|
||||
"NotificationOptionTaskFailed": "Tasca programada fallida",
|
||||
"NotificationOptionUserLockedOut": "Usuari tancat",
|
||||
"NotificationOptionVideoPlayback": "Reproducció de video iniciada",
|
||||
"NotificationOptionVideoPlaybackStopped": "Reproducció de video aturada",
|
||||
"Photos": "Fotos",
|
||||
"Playlists": "Llistes de reproducció",
|
||||
"Plugin": "Plugin",
|
||||
"Plugin": "Connector",
|
||||
"PluginInstalledWithName": "{0} ha estat instal·lat",
|
||||
"PluginUninstalledWithName": "{0} ha estat desinstal·lat",
|
||||
"PluginUpdatedWithName": "{0} ha estat actualitzat",
|
||||
"ProviderValue": "Proveïdor: {0}",
|
||||
"ScheduledTaskFailedWithName": "{0} ha fallat",
|
||||
"ScheduledTaskStartedWithName": "{0} iniciat",
|
||||
"ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
|
||||
"Shows": "Espectacles",
|
||||
"ServerNameNeedsToBeRestarted": "{0} necessita ser reiniciat",
|
||||
"Shows": "Programes",
|
||||
"Songs": "Cançons",
|
||||
"StartupEmbyServerIsLoading": "El Servidor d'Jellyfin està carregant. Si et plau, prova de nou en breus.",
|
||||
"SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
|
||||
"SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
|
||||
"SubtitleDownloadFailureFromForItem": "Els subtítols no s'han pogut baixar de {0} per {1}",
|
||||
"SubtitlesDownloadedForItem": "Subtítols descarregats per a {0}",
|
||||
"Sync": "Sync",
|
||||
"Sync": "Sincronitzar",
|
||||
"System": "System",
|
||||
"TvShows": "Espectacles de TV",
|
||||
"User": "User",
|
||||
"UserCreatedWithName": "S'ha creat l'usuari {0}",
|
||||
"UserDeletedWithName": "L'usuari {0} ha estat eliminat",
|
||||
"UserDownloadingItemWithValues": "{0} està descarregant {1}",
|
||||
"UserLockedOutWithName": "User {0} has been locked out",
|
||||
"UserLockedOutWithName": "L'usuari {0} ha sigut tancat",
|
||||
"UserOfflineFromDevice": "{0} s'ha desconnectat de {1}",
|
||||
"UserOnlineFromDevice": "{0} està connectat des de {1}",
|
||||
"UserPasswordChangedWithName": "La contrasenya ha estat canviada per a l'usuari {0}",
|
||||
"UserPolicyUpdatedWithName": "User policy has been updated for {0}",
|
||||
"UserPolicyUpdatedWithName": "La política d'usuari s'ha actualitzat per {0}",
|
||||
"UserStartedPlayingItemWithValues": "{0} ha començat a reproduir {1}",
|
||||
"UserStoppedPlayingItemWithValues": "{0} ha parat de reproduir {1}",
|
||||
"ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
|
||||
"ValueHasBeenAddedToLibrary": "{0} ha sigut afegit a la teva llibreria",
|
||||
"ValueSpecialEpisodeName": "Especial - {0}",
|
||||
"VersionNumber": "Versió {0}"
|
||||
}
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
"HeaderRecordingGroups": "Upptökuhópar",
|
||||
"HeaderNextUp": "Næst á dagskrá",
|
||||
"HeaderLiveTV": "Sjónvarp í beinni útsendingu",
|
||||
"HeaderFavoriteSongs": "Uppáhalds lög",
|
||||
"HeaderFavoriteShows": "Uppáhalds sjónvarpsþættir",
|
||||
"HeaderFavoriteEpisodes": "Uppáhalds þættir",
|
||||
"HeaderFavoriteArtists": "Uppáhalds listamenn",
|
||||
"HeaderFavoriteAlbums": "Uppáhalds plötur",
|
||||
"HeaderFavoriteSongs": "Uppáhalds Lög",
|
||||
"HeaderFavoriteShows": "Uppáhalds Sjónvarpsþættir",
|
||||
"HeaderFavoriteEpisodes": "Uppáhalds Þættir",
|
||||
"HeaderFavoriteArtists": "Uppáhalds Listamenn",
|
||||
"HeaderFavoriteAlbums": "Uppáhalds Plötur",
|
||||
"HeaderContinueWatching": "Halda áfram að horfa",
|
||||
"HeaderCameraUploads": "Myndavéla upphal",
|
||||
"HeaderAlbumArtists": "Höfundur plötu",
|
||||
@@ -30,5 +30,49 @@
|
||||
"Artists": "Listamaður",
|
||||
"Application": "Forrit",
|
||||
"AppDeviceValues": "Snjallforrit: {0}, Tæki: {1}",
|
||||
"Albums": "Plötur"
|
||||
"Albums": "Plötur",
|
||||
"Plugin": "Viðbót",
|
||||
"Photos": "Myndir",
|
||||
"NotificationOptionVideoPlaybackStopped": "Myndbandafspilun stöðvuð",
|
||||
"NotificationOptionVideoPlayback": "Myndbandafspilun hafin",
|
||||
"NotificationOptionUserLockedOut": "Notandi læstur úti",
|
||||
"NotificationOptionServerRestartRequired": "Endurræsing miðlara nauðsynileg",
|
||||
"NotificationOptionPluginUpdateInstalled": "Viðbótar uppfærsla uppsett",
|
||||
"NotificationOptionPluginUninstalled": "Viðbót fjarlægð",
|
||||
"NotificationOptionPluginInstalled": "Viðbót settur upp",
|
||||
"NotificationOptionPluginError": "Bilun í viðbót",
|
||||
"NotificationOptionInstallationFailed": "Uppsetning tókst ekki",
|
||||
"NotificationOptionCameraImageUploaded": "Myndavélarmynd hlaðið upp",
|
||||
"NotificationOptionAudioPlaybackStopped": "Hljóðafspilun stöðvuð",
|
||||
"NotificationOptionAudioPlayback": "Hljóðafspilun hafin",
|
||||
"NotificationOptionApplicationUpdateInstalled": "Uppfærsla uppsett",
|
||||
"NotificationOptionApplicationUpdateAvailable": "Uppfærsla í boði",
|
||||
"NameSeasonUnknown": "Sería óþekkt",
|
||||
"NameSeasonNumber": "Sería {0}",
|
||||
"MixedContent": "Blandað efni",
|
||||
"MessageServerConfigurationUpdated": "Stillingar miðlarans hefur verið uppfærð",
|
||||
"MessageApplicationUpdatedTo": "Jellyfin Server hefur verið uppfærður í {0}",
|
||||
"MessageApplicationUpdated": "Jellyfin Server hefur verið uppfærður",
|
||||
"Latest": "Nýjasta",
|
||||
"LabelRunningTimeValue": "Keyrslutími kerfis: {0}",
|
||||
"User": "Notandi",
|
||||
"System": "Kerfi",
|
||||
"NotificationOptionNewLibraryContent": "Nýju efni bætt við",
|
||||
"NewVersionIsAvailable": "Ný útgáfa af Jellyfin Server er fáanleg til niðurhals.",
|
||||
"NameInstallFailed": "{0} uppsetning mistókst",
|
||||
"MusicVideos": "Tónlistarmyndbönd",
|
||||
"Music": "Tónlist",
|
||||
"Movies": "Kvikmyndir",
|
||||
"UserDeletedWithName": "Notanda {0} hefur verið eytt",
|
||||
"UserCreatedWithName": "Notandi {0} hefur verið stofnaður",
|
||||
"TvShows": "Þættir",
|
||||
"Sync": "Samstilla",
|
||||
"Songs": "Lög",
|
||||
"ServerNameNeedsToBeRestarted": "{0} þarf að endurræsa",
|
||||
"ScheduledTaskStartedWithName": "{0} hafin",
|
||||
"ScheduledTaskFailedWithName": "{0} mistókst",
|
||||
"PluginUpdatedWithName": "{0} var uppfært",
|
||||
"PluginUninstalledWithName": "{0} var fjarlægt",
|
||||
"PluginInstalledWithName": "{0} var sett upp",
|
||||
"NotificationOptionTaskFailed": "Tímasett verkefni mistókst"
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
"Artists": "아티스트",
|
||||
"AuthenticationSucceededWithUserName": "{0}이 성공적으로 인증됨",
|
||||
"Books": "도서",
|
||||
"CameraImageUploadedFrom": "{0}에서 새로운 카메라 이미지가 업로드되었습니다",
|
||||
"CameraImageUploadedFrom": "{0}에서 새로운 카메라 이미지가 업로드됨",
|
||||
"Channels": "채널",
|
||||
"ChapterNameValue": "챕터 {0}",
|
||||
"Collections": "컬렉션",
|
||||
"DeviceOfflineWithName": "{0} 연결 끊김",
|
||||
"DeviceOnlineWithName": "{0} 연결됨",
|
||||
"FailedLoginAttemptWithUserName": "{0} 로그인 실패",
|
||||
"DeviceOfflineWithName": "{0}의 연결 끊김",
|
||||
"DeviceOnlineWithName": "{0}이 연결됨",
|
||||
"FailedLoginAttemptWithUserName": "{0}에서 로그인 실패",
|
||||
"Favorites": "즐겨찾기",
|
||||
"Folders": "폴더",
|
||||
"Genres": "장르",
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
"Artists": "Artiesten",
|
||||
"AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd",
|
||||
"Books": "Boeken",
|
||||
"CameraImageUploadedFrom": "Er is een nieuwe foto toegevoegd via {0}",
|
||||
"CameraImageUploadedFrom": "Er is een nieuwe foto toegevoegd van {0}",
|
||||
"Channels": "Kanalen",
|
||||
"ChapterNameValue": "Hoofdstuk {0}",
|
||||
"Collections": "Collecties",
|
||||
"Collections": "Verzamelingen",
|
||||
"DeviceOfflineWithName": "{0} heeft de verbinding verbroken",
|
||||
"DeviceOnlineWithName": "{0} is verbonden",
|
||||
"FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}",
|
||||
@@ -58,7 +58,7 @@
|
||||
"NotificationOptionPluginUpdateInstalled": "Plug-in-update geïnstalleerd",
|
||||
"NotificationOptionServerRestartRequired": "Server herstart nodig",
|
||||
"NotificationOptionTaskFailed": "Geplande taak mislukt",
|
||||
"NotificationOptionUserLockedOut": "Gebruikersaccount vergrendeld",
|
||||
"NotificationOptionUserLockedOut": "Gebruiker is vergrendeld",
|
||||
"NotificationOptionVideoPlayback": "Video gestart",
|
||||
"NotificationOptionVideoPlaybackStopped": "Video gestopt",
|
||||
"Photos": "Foto's",
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"HeaderFavoriteShows": "Séries Favoritas",
|
||||
"HeaderFavoriteSongs": "Músicas Favoritas",
|
||||
"HeaderLiveTV": "TV ao Vivo",
|
||||
"HeaderNextUp": "Próximos",
|
||||
"HeaderNextUp": "A Seguir",
|
||||
"HeaderRecordingGroups": "Grupos de Gravação",
|
||||
"HomeVideos": "Vídeos caseiros",
|
||||
"Inherit": "Herdar",
|
||||
|
||||
@@ -667,12 +667,9 @@ namespace Emby.Server.Implementations.Session
|
||||
data.PlayCount++;
|
||||
data.LastPlayedDate = DateTime.UtcNow;
|
||||
|
||||
if (item.SupportsPlayedStatus)
|
||||
if (item.SupportsPlayedStatus && !item.SupportsPositionTicksResume)
|
||||
{
|
||||
if (!(item is Video))
|
||||
{
|
||||
data.Played = true;
|
||||
}
|
||||
data.Played = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -769,7 +766,6 @@ namespace Emby.Server.Implementations.Session
|
||||
{
|
||||
_userDataManager.SaveUserData(user, item, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static bool UpdatePlaybackSettings(User user, PlaybackProgressInfo info, UserItemData data)
|
||||
@@ -1393,6 +1389,12 @@ namespace Emby.Server.Implementations.Session
|
||||
}
|
||||
}
|
||||
|
||||
if (user == null)
|
||||
{
|
||||
AuthenticationFailed?.Invoke(this, new GenericEventArgs<AuthenticationRequest>(request));
|
||||
throw new SecurityException("Invalid user or password entered.");
|
||||
}
|
||||
|
||||
if (enforcePassword)
|
||||
{
|
||||
user = await _userManager.AuthenticateUser(
|
||||
@@ -1403,13 +1405,6 @@ namespace Emby.Server.Implementations.Session
|
||||
true).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
if (user == null)
|
||||
{
|
||||
AuthenticationFailed?.Invoke(this, new GenericEventArgs<AuthenticationRequest>(request));
|
||||
|
||||
throw new SecurityException("Invalid user or password entered.");
|
||||
}
|
||||
|
||||
var token = GetAuthorizationToken(user, request.DeviceId, request.App, request.AppVersion, request.DeviceName);
|
||||
|
||||
var session = LogSessionActivity(
|
||||
|
||||
@@ -141,8 +141,7 @@ namespace Emby.Server.Implementations.Updates
|
||||
|
||||
if (guid != Guid.Empty)
|
||||
{
|
||||
var strGuid = guid.ToString("N", CultureInfo.InvariantCulture);
|
||||
availablePackages = availablePackages.Where(x => x.guid.Equals(strGuid, StringComparison.OrdinalIgnoreCase));
|
||||
availablePackages = availablePackages.Where(x => Guid.Parse(x.guid) == guid);
|
||||
}
|
||||
|
||||
return availablePackages;
|
||||
|
||||
Reference in New Issue
Block a user