Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
1cec41baf8
1
.github/ISSUE_TEMPLATE/bug_report.md
vendored
1
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -30,6 +30,7 @@ assignees: ''
|
|||
- OS: [e.g. Docker, Debian, Windows]
|
||||
- Browser: [e.g. Firefox, Chrome, Safari]
|
||||
- Jellyfin Version: [e.g. 10.0.1]
|
||||
- Installed Plugins: [e.g. none, Fanart, Anime, etc.]
|
||||
- Reverse proxy: [e.g. no, nginx, apache, etc.]
|
||||
|
||||
**Additional context**
|
||||
|
|
|
@ -314,7 +314,7 @@ namespace Emby.Naming.Common
|
|||
// This isn't a Kodi naming rule, but the expression below causes false positives,
|
||||
// so we make sure this one gets tested first.
|
||||
// "Foo Bar 889"
|
||||
new EpisodeExpression(@".*[\\\/](?![Ee]pisode)(?<seriesname>(\w+\s*?)*)\s(?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*[^\\\/]*$")
|
||||
new EpisodeExpression(@".*[\\\/](?![Ee]pisode)(?<seriesname>[\w\s]+?)\s(?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*[^\\\/]*$")
|
||||
{
|
||||
IsNamed = true
|
||||
},
|
||||
|
@ -337,7 +337,7 @@ namespace Emby.Naming.Common
|
|||
// *** End Kodi Standard Naming
|
||||
|
||||
// [bar] Foo - 1 [baz]
|
||||
new EpisodeExpression(@".*?(\[.*?\])+.*?(?<seriesname>(\w+\s*?)+?)[-\s_]+(?<epnumber>\d+).*$")
|
||||
new EpisodeExpression(@".*?(\[.*?\])+.*?(?<seriesname>[\w\s]+?)[-\s_]+(?<epnumber>\d+).*$")
|
||||
{
|
||||
IsNamed = true
|
||||
},
|
||||
|
|
|
@ -84,6 +84,7 @@ namespace Emby.Server.Implementations.AppBase
|
|||
/// </summary>
|
||||
/// <value>The logger.</value>
|
||||
protected ILogger Logger { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the XML serializer.
|
||||
/// </summary>
|
||||
|
@ -97,7 +98,7 @@ namespace Emby.Server.Implementations.AppBase
|
|||
public IApplicationPaths CommonApplicationPaths { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the system configuration.
|
||||
/// Gets or sets the system configuration.
|
||||
/// </summary>
|
||||
/// <value>The configuration.</value>
|
||||
public BaseApplicationConfiguration CommonConfiguration
|
||||
|
@ -123,6 +124,7 @@ namespace Emby.Server.Implementations.AppBase
|
|||
return _configuration;
|
||||
}
|
||||
}
|
||||
|
||||
protected set
|
||||
{
|
||||
_configuration = value;
|
||||
|
@ -215,7 +217,7 @@ namespace Emby.Server.Implementations.AppBase
|
|||
cachePath = CommonConfiguration.CachePath;
|
||||
}
|
||||
|
||||
Logger.LogInformation("Setting cache path to " + cachePath);
|
||||
Logger.LogInformation("Setting cache path: {Path}", cachePath);
|
||||
((BaseApplicationPaths)CommonApplicationPaths).CachePath = cachePath;
|
||||
}
|
||||
|
||||
|
@ -223,7 +225,7 @@ namespace Emby.Server.Implementations.AppBase
|
|||
/// Replaces the cache path.
|
||||
/// </summary>
|
||||
/// <param name="newConfig">The new configuration.</param>
|
||||
/// <exception cref="DirectoryNotFoundException"></exception>
|
||||
/// <exception cref="DirectoryNotFoundException">The new cache path doesn't exist.</exception>
|
||||
private void ValidateCachePath(BaseApplicationConfiguration newConfig)
|
||||
{
|
||||
var newPath = newConfig.CachePath;
|
||||
|
@ -234,7 +236,7 @@ namespace Emby.Server.Implementations.AppBase
|
|||
// Validate
|
||||
if (!Directory.Exists(newPath))
|
||||
{
|
||||
throw new FileNotFoundException(
|
||||
throw new DirectoryNotFoundException(
|
||||
string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} does not exist.",
|
||||
|
|
1
Emby.Server.Implementations/Localization/Core/is.json
Normal file
1
Emby.Server.Implementations/Localization/Core/is.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -9,13 +9,13 @@
|
|||
"Channels": "Canali",
|
||||
"ChapterNameValue": "Capitolo {0}",
|
||||
"Collections": "Collezioni",
|
||||
"DeviceOfflineWithName": "{0} è stato disconnesso",
|
||||
"DeviceOfflineWithName": "{0} ha disconnesso",
|
||||
"DeviceOnlineWithName": "{0} è connesso",
|
||||
"FailedLoginAttemptWithUserName": "Tentativo di accesso fallito da {0}",
|
||||
"Favorites": "Preferiti",
|
||||
"Folders": "Cartelle",
|
||||
"Genres": "Generi",
|
||||
"HeaderAlbumArtists": "Artisti Album",
|
||||
"HeaderAlbumArtists": "Artisti dell' Album",
|
||||
"HeaderCameraUploads": "Caricamenti Fotocamera",
|
||||
"HeaderContinueWatching": "Continua a guardare",
|
||||
"HeaderFavoriteAlbums": "Album preferiti",
|
||||
|
@ -32,7 +32,7 @@
|
|||
"ItemRemovedWithName": "{0} è stato rimosso dalla libreria",
|
||||
"LabelIpAddressValue": "Indirizzo IP: {0}",
|
||||
"LabelRunningTimeValue": "Durata: {0}",
|
||||
"Latest": "Più recenti",
|
||||
"Latest": "Novità",
|
||||
"MessageApplicationUpdated": "Il Server Jellyfin è stato aggiornato",
|
||||
"MessageApplicationUpdatedTo": "Jellyfin Server è stato aggiornato a {0}",
|
||||
"MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} della configurazione server è stata aggiornata",
|
||||
|
@ -43,7 +43,7 @@
|
|||
"MusicVideos": "Video musicali",
|
||||
"NameInstallFailed": "{0} installazione fallita",
|
||||
"NameSeasonNumber": "Stagione {0}",
|
||||
"NameSeasonUnknown": "Stagione sconosciuto",
|
||||
"NameSeasonUnknown": "Stagione sconosciuta",
|
||||
"NewVersionIsAvailable": "Una nuova versione di Jellyfin Server è disponibile per il download.",
|
||||
"NotificationOptionApplicationUpdateAvailable": "Aggiornamento dell'applicazione disponibile",
|
||||
"NotificationOptionApplicationUpdateInstalled": "Aggiornamento dell'applicazione installato",
|
||||
|
@ -88,9 +88,9 @@
|
|||
"UserOfflineFromDevice": "{0} è stato disconnesso da {1}",
|
||||
"UserOnlineFromDevice": "{0} è online da {1}",
|
||||
"UserPasswordChangedWithName": "La password è stata cambiata per l'utente {0}",
|
||||
"UserPolicyUpdatedWithName": "La politica dell'utente è stata aggiornata per {0}",
|
||||
"UserStartedPlayingItemWithValues": "{0} ha avviato la riproduzione di {1}",
|
||||
"UserStoppedPlayingItemWithValues": "{0} ha interrotto la riproduzione di {1}",
|
||||
"UserPolicyUpdatedWithName": "La policy dell'utente è stata aggiornata per {0}",
|
||||
"UserStartedPlayingItemWithValues": "{0} ha avviato la riproduzione di {1} su {2}",
|
||||
"UserStoppedPlayingItemWithValues": "{0} ha interrotto la riproduzione di {1} su {2}",
|
||||
"ValueHasBeenAddedToLibrary": "{0} è stato aggiunto alla tua libreria multimediale",
|
||||
"ValueSpecialEpisodeName": "Speciale - {0}",
|
||||
"VersionNumber": "Versione {0}"
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using Emby.Server.Implementations.AppBase;
|
||||
using MediaBrowser.Controller;
|
||||
|
@ -10,8 +9,6 @@ namespace Emby.Server.Implementations
|
|||
/// </summary>
|
||||
public class ServerApplicationPaths : BaseApplicationPaths, IServerApplicationPaths
|
||||
{
|
||||
private string _defaultTranscodePath;
|
||||
private string _transcodePath;
|
||||
private string _internalMetadataPath;
|
||||
|
||||
/// <summary>
|
||||
|
@ -23,7 +20,8 @@ namespace Emby.Server.Implementations
|
|||
string configurationDirectoryPath,
|
||||
string cacheDirectoryPath,
|
||||
string webDirectoryPath)
|
||||
: base(programDataPath,
|
||||
: base(
|
||||
programDataPath,
|
||||
logDirectoryPath,
|
||||
configurationDirectoryPath,
|
||||
cacheDirectoryPath,
|
||||
|
@ -31,8 +29,6 @@ namespace Emby.Server.Implementations
|
|||
{
|
||||
}
|
||||
|
||||
public string ApplicationResourcesPath { get; } = AppContext.BaseDirectory;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to the base root media directory.
|
||||
/// </summary>
|
||||
|
@ -45,18 +41,13 @@ namespace Emby.Server.Implementations
|
|||
/// <value>The default user views path.</value>
|
||||
public string DefaultUserViewsPath => Path.Combine(RootFolderPath, "default");
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to localization data.
|
||||
/// </summary>
|
||||
/// <value>The localization path.</value>
|
||||
public string LocalizationPath => Path.Combine(ProgramDataPath, "localization");
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to the People directory.
|
||||
/// </summary>
|
||||
/// <value>The people path.</value>
|
||||
public string PeoplePath => Path.Combine(InternalMetadataPath, "People");
|
||||
|
||||
/// <inheritdoc />
|
||||
public string ArtistsPath => Path.Combine(InternalMetadataPath, "artists");
|
||||
|
||||
/// <summary>
|
||||
|
@ -107,12 +98,14 @@ namespace Emby.Server.Implementations
|
|||
/// <value>The user configuration directory path.</value>
|
||||
public string UserConfigurationDirectoryPath => Path.Combine(ConfigurationDirectoryPath, "users");
|
||||
|
||||
/// <inheritdoc />
|
||||
public string InternalMetadataPath
|
||||
{
|
||||
get => _internalMetadataPath ?? (_internalMetadataPath = Path.Combine(DataPath, "metadata"));
|
||||
set => _internalMetadataPath = value;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public string VirtualInternalMetadataPath { get; } = "%MetadataPath%";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,14 @@ namespace MediaBrowser.Common.Configuration
|
|||
/// <param name="configurationManager">The Configuration manager.</param>
|
||||
/// <returns>The transcoding temp path.</returns>
|
||||
public static string GetTranscodePath(this IConfigurationManager configurationManager)
|
||||
=> configurationManager.GetEncodingOptions().TranscodingTempPath
|
||||
?? Path.Combine(configurationManager.CommonApplicationPaths.ProgramDataPath, "transcodes");
|
||||
{
|
||||
var transcodingTempPath = configurationManager.GetEncodingOptions().TranscodingTempPath;
|
||||
if (string.IsNullOrEmpty(transcodingTempPath))
|
||||
{
|
||||
return Path.Combine(configurationManager.CommonApplicationPaths.ProgramDataPath, "transcodes");
|
||||
}
|
||||
|
||||
return transcodingTempPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,24 +10,12 @@ namespace MediaBrowser.Controller
|
|||
/// <value>The root folder path.</value>
|
||||
string RootFolderPath { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the application resources path. This is the path to the folder containing resources that are deployed as part of the application
|
||||
/// </summary>
|
||||
/// <value>The application resources path.</value>
|
||||
string ApplicationResourcesPath { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to the default user view directory. Used if no specific user view is defined.
|
||||
/// </summary>
|
||||
/// <value>The default user views path.</value>
|
||||
string DefaultUserViewsPath { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to localization data.
|
||||
/// </summary>
|
||||
/// <value>The localization path.</value>
|
||||
string LocalizationPath { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to the People directory
|
||||
/// </summary>
|
||||
|
@ -87,8 +75,13 @@ namespace MediaBrowser.Controller
|
|||
/// </summary>
|
||||
/// <value>The internal metadata path.</value>
|
||||
string InternalMetadataPath { get; }
|
||||
|
||||
string VirtualInternalMetadataPath { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to the artists directory.
|
||||
/// </summary>
|
||||
/// <value>The artists path.</value>
|
||||
string ArtistsPath { get; }
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user