update translations
This commit is contained in:
parent
561b630210
commit
576768de59
|
@ -652,7 +652,13 @@ namespace MediaBrowser.Api.Images
|
||||||
{
|
{
|
||||||
if ((Request.AcceptTypes ?? new string[] { }).Contains("image/webp", StringComparer.OrdinalIgnoreCase))
|
if ((Request.AcceptTypes ?? new string[] { }).Contains("image/webp", StringComparer.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return new[] { ImageOutputFormat.Webp, ImageOutputFormat.Jpg, ImageOutputFormat.Png };
|
var userAgent = Request.UserAgent ?? string.Empty;
|
||||||
|
|
||||||
|
// Not displaying properly on iOS
|
||||||
|
if (userAgent.IndexOf("cfnetwork", StringComparison.OrdinalIgnoreCase) == -1)
|
||||||
|
{
|
||||||
|
return new[] { ImageOutputFormat.Webp, ImageOutputFormat.Jpg, ImageOutputFormat.Png };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new[] { ImageOutputFormat.Jpg, ImageOutputFormat.Png };
|
return new[] { ImageOutputFormat.Jpg, ImageOutputFormat.Png };
|
||||||
|
|
|
@ -52,7 +52,15 @@ namespace MediaBrowser.Api.Playback
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var hasMediaSources = (IHasMediaSources)item;
|
var hasMediaSources = (IHasMediaSources)item;
|
||||||
mediaSources = hasMediaSources.GetMediaSources(true, user);
|
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
mediaSources = hasMediaSources.GetMediaSources(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mediaSources = hasMediaSources.GetMediaSources(true, user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ToOptimizedResult(new LiveMediaInfoResult
|
return ToOptimizedResult(new LiveMediaInfoResult
|
||||||
|
|
|
@ -421,7 +421,6 @@ namespace MediaBrowser.Api.Playback.Progressive
|
||||||
if (!File.Exists(outputPath))
|
if (!File.Exists(outputPath))
|
||||||
{
|
{
|
||||||
job = await StartFfMpeg(state, outputPath, cancellationTokenSource).ConfigureAwait(false);
|
job = await StartFfMpeg(state, outputPath, cancellationTokenSource).ConfigureAwait(false);
|
||||||
job.ActiveRequestCount++;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using System;
|
|
||||||
using System.Configuration;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations
|
namespace MediaBrowser.Common.Implementations
|
||||||
|
@ -11,20 +9,6 @@ namespace MediaBrowser.Common.Implementations
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class BaseApplicationPaths : IApplicationPaths
|
public abstract class BaseApplicationPaths : IApplicationPaths
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// The _use debug path
|
|
||||||
/// </summary>
|
|
||||||
private readonly bool _useDebugPath;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes a new instance of the <see cref="BaseApplicationPaths" /> class.
|
|
||||||
/// </summary>
|
|
||||||
protected BaseApplicationPaths(bool useDebugPath, string applicationPath)
|
|
||||||
{
|
|
||||||
_useDebugPath = useDebugPath;
|
|
||||||
ApplicationPath = applicationPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="BaseApplicationPaths"/> class.
|
/// Initializes a new instance of the <see cref="BaseApplicationPaths"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -39,17 +23,14 @@ namespace MediaBrowser.Common.Implementations
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _program data path
|
/// The _program data path
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private string _programDataPath;
|
private readonly string _programDataPath;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the path to the program data folder
|
/// Gets the path to the program data folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The program data path.</value>
|
/// <value>The program data path.</value>
|
||||||
public string ProgramDataPath
|
public string ProgramDataPath
|
||||||
{
|
{
|
||||||
get
|
get { return _programDataPath; }
|
||||||
{
|
|
||||||
return _programDataPath ?? (_programDataPath = GetProgramDataPath());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -202,35 +183,5 @@ namespace MediaBrowser.Common.Implementations
|
||||||
return Path.Combine(CachePath, "temp");
|
return Path.Combine(CachePath, "temp");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the path to the application's ProgramDataFolder
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>System.String.</returns>
|
|
||||||
private string GetProgramDataPath()
|
|
||||||
{
|
|
||||||
var programDataPath = _useDebugPath ? ConfigurationManager.AppSettings["DebugProgramDataPath"] : ConfigurationManager.AppSettings["ReleaseProgramDataPath"];
|
|
||||||
|
|
||||||
programDataPath = programDataPath.Replace("%ApplicationData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
|
|
||||||
|
|
||||||
// If it's a relative path, e.g. "..\"
|
|
||||||
if (!Path.IsPathRooted(programDataPath))
|
|
||||||
{
|
|
||||||
var path = Path.GetDirectoryName(ApplicationPath);
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(path))
|
|
||||||
{
|
|
||||||
throw new ApplicationException("Unable to determine running assembly location");
|
|
||||||
}
|
|
||||||
|
|
||||||
programDataPath = Path.Combine(path, programDataPath);
|
|
||||||
|
|
||||||
programDataPath = Path.GetFullPath(programDataPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
Directory.CreateDirectory(programDataPath);
|
|
||||||
|
|
||||||
return programDataPath;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Cache;
|
using System.Net.Cache;
|
||||||
using System.Net.Http;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
|
@ -61,11 +61,9 @@
|
||||||
<HintPath>..\packages\SimpleInjector.2.6.1\lib\net45\SimpleInjector.Diagnostics.dll</HintPath>
|
<HintPath>..\packages\SimpleInjector.2.6.1\lib\net45\SimpleInjector.Diagnostics.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Configuration" />
|
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="SharpCompress">
|
<Reference Include="SharpCompress">
|
||||||
<HintPath>..\packages\sharpcompress.0.10.2\lib\net40\SharpCompress.dll</HintPath>
|
<HintPath>..\packages\sharpcompress.0.10.2\lib\net40\SharpCompress.dll</HintPath>
|
||||||
|
|
|
@ -70,7 +70,6 @@
|
||||||
<Compile Include="Configuration\IApplicationPaths.cs" />
|
<Compile Include="Configuration\IApplicationPaths.cs" />
|
||||||
<Compile Include="Net\HttpRequestOptions.cs" />
|
<Compile Include="Net\HttpRequestOptions.cs" />
|
||||||
<Compile Include="Net\HttpResponseInfo.cs" />
|
<Compile Include="Net\HttpResponseInfo.cs" />
|
||||||
<Compile Include="Net\IServerManager.cs" />
|
|
||||||
<Compile Include="Net\IWebSocketListener.cs" />
|
<Compile Include="Net\IWebSocketListener.cs" />
|
||||||
<Compile Include="IApplicationHost.cs" />
|
<Compile Include="IApplicationHost.cs" />
|
||||||
<Compile Include="Net\IHttpClient.cs" />
|
<Compile Include="Net\IHttpClient.cs" />
|
||||||
|
|
|
@ -220,6 +220,7 @@
|
||||||
<Compile Include="Net\IHttpResultFactory.cs" />
|
<Compile Include="Net\IHttpResultFactory.cs" />
|
||||||
<Compile Include="Net\IHttpServer.cs" />
|
<Compile Include="Net\IHttpServer.cs" />
|
||||||
<Compile Include="Net\IRestfulService.cs" />
|
<Compile Include="Net\IRestfulService.cs" />
|
||||||
|
<Compile Include="Net\IServerManager.cs" />
|
||||||
<Compile Include="Net\IServiceRequest.cs" />
|
<Compile Include="Net\IServiceRequest.cs" />
|
||||||
<Compile Include="Net\ISessionContext.cs" />
|
<Compile Include="Net\ISessionContext.cs" />
|
||||||
<Compile Include="Net\LoggedAttribute.cs" />
|
<Compile Include="Net\LoggedAttribute.cs" />
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
using System;
|
using MediaBrowser.Common.Net;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Net
|
namespace MediaBrowser.Controller.Net
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface IServerManager
|
/// Interface IServerManager
|
|
@ -228,8 +228,9 @@ namespace MediaBrowser.Model.ApiClient
|
||||||
/// Gets the live media information.
|
/// Gets the live media information.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="itemId">The item identifier.</param>
|
/// <param name="itemId">The item identifier.</param>
|
||||||
|
/// <param name="userId">The user identifier.</param>
|
||||||
/// <returns>Task<LiveMediaInfoResult>.</returns>
|
/// <returns>Task<LiveMediaInfoResult>.</returns>
|
||||||
Task<LiveMediaInfoResult> GetLiveMediaInfo(string itemId);
|
Task<LiveMediaInfoResult> GetLiveMediaInfo(string itemId, string userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the users async.
|
/// Gets the users async.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Controller.Net;
|
||||||
using MediaBrowser.Controller.Notifications;
|
using MediaBrowser.Controller.Notifications;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Plugins;
|
||||||
using MediaBrowser.Common.Plugins;
|
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Common.Updates;
|
using MediaBrowser.Common.Updates;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Dto;
|
using MediaBrowser.Controller.Dto;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Net;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using MediaBrowser.Controller.Session;
|
using MediaBrowser.Controller.Session;
|
||||||
using MediaBrowser.Model.Events;
|
using MediaBrowser.Model.Events;
|
||||||
|
|
|
@ -623,29 +623,20 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
public List<T> ResolvePaths<T>(IEnumerable<FileSystemInfo> files, IDirectoryService directoryService, Folder parent, string collectionType = null)
|
public List<T> ResolvePaths<T>(IEnumerable<FileSystemInfo> files, IDirectoryService directoryService, Folder parent, string collectionType = null)
|
||||||
where T : BaseItem
|
where T : BaseItem
|
||||||
{
|
{
|
||||||
var list = new List<T>();
|
return files.Select(f =>
|
||||||
|
|
||||||
Parallel.ForEach(files, f =>
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var item = ResolvePath(f, directoryService, parent, collectionType) as T;
|
return ResolvePath(f, directoryService, parent, collectionType) as T;
|
||||||
|
|
||||||
if (item != null)
|
|
||||||
{
|
|
||||||
lock (list)
|
|
||||||
{
|
|
||||||
list.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.ErrorException("Error resolving path {0}", ex, f.FullName);
|
_logger.ErrorException("Error resolving path {0}", ex, f.FullName);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
return list;
|
}).Where(i => i != null)
|
||||||
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -285,7 +285,7 @@
|
||||||
"LabelPremiereProgram": "PREMIERE",
|
"LabelPremiereProgram": "PREMIERE",
|
||||||
"LabelHDProgram": "HD",
|
"LabelHDProgram": "HD",
|
||||||
"HeaderChangeFolderType": "Cambia il tipo di cartella",
|
"HeaderChangeFolderType": "Cambia il tipo di cartella",
|
||||||
"HeaderChangeFolderTypeHelp": "Per cambiare il tipo di cartella, rimuovere e ricostruire la collezione con il nuovo tipo.",
|
"HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.",
|
||||||
"HeaderAlert": "Avviso",
|
"HeaderAlert": "Avviso",
|
||||||
"MessagePleaseRestart": "Si prega di riavviare per completare l'aggiornamento.",
|
"MessagePleaseRestart": "Si prega di riavviare per completare l'aggiornamento.",
|
||||||
"ButtonRestart": "Riavvia",
|
"ButtonRestart": "Riavvia",
|
||||||
|
@ -617,14 +617,14 @@
|
||||||
"DefaultErrorMessage": "Si \u00e8 verificato un errore durante l'elaborazione della richiesta. Si prega di riprovare pi\u00f9 tardi.",
|
"DefaultErrorMessage": "Si \u00e8 verificato un errore durante l'elaborazione della richiesta. Si prega di riprovare pi\u00f9 tardi.",
|
||||||
"ButtonAccept": "Accetta",
|
"ButtonAccept": "Accetta",
|
||||||
"ButtonReject": "Rifiuta",
|
"ButtonReject": "Rifiuta",
|
||||||
"HeaderForgotPassword": "Forgot Password",
|
"HeaderForgotPassword": "Password dimenticata",
|
||||||
"MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.",
|
"MessageContactAdminToResetPassword": "Si prega di contattare l'amministratore di sistema per reimpostare la password.",
|
||||||
"MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.",
|
"MessageForgotPasswordInNetworkRequired": "Riprova all'interno della rete domestica per avviare il processo di reimpostazione della password.",
|
||||||
"MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:",
|
"MessageForgotPasswordFileCreated": "Il seguente file \u00e8 stato creato sul server e contiene le istruzioni su come procedere:",
|
||||||
"MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.",
|
"MessageForgotPasswordFileExpiration": "Il pin scadr\u00e0 {0}.",
|
||||||
"MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.",
|
"MessageInvalidForgotPasswordPin": "Un pin Invalido o scaduto \u00e8 stato inserito. Riprova.",
|
||||||
"MessagePasswordResetForUsers": "Passwords have been reset for the following users:",
|
"MessagePasswordResetForUsers": "Le password sono state rimesse per i seguenti utenti:",
|
||||||
"HeaderInviteGuest": "Invite Guest",
|
"HeaderInviteGuest": "Invita Ospite",
|
||||||
"ButtonLinkMyMediaBrowserAccount": "Link my account now",
|
"ButtonLinkMyMediaBrowserAccount": "Collega il mio account",
|
||||||
"MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Media Browser account to this server."
|
"MessageConnectAccountRequiredToInviteGuest": "Per invitare gli ospiti \u00e8 necessario collegare prima il tuo account browser media a questo server."
|
||||||
}
|
}
|
|
@ -285,7 +285,7 @@
|
||||||
"LabelPremiereProgram": "PREMIERE",
|
"LabelPremiereProgram": "PREMIERE",
|
||||||
"LabelHDProgram": "HD",
|
"LabelHDProgram": "HD",
|
||||||
"HeaderChangeFolderType": "Endre Mappe Type",
|
"HeaderChangeFolderType": "Endre Mappe Type",
|
||||||
"HeaderChangeFolderTypeHelp": "For \u00e5 endre mappe type, vennligst fjern og bygg samlingen med en ny type.",
|
"HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.",
|
||||||
"HeaderAlert": "Varsling",
|
"HeaderAlert": "Varsling",
|
||||||
"MessagePleaseRestart": "Vennligst utf\u00f8r en omstart for \u00e5 fullf\u00f8re oppdatering.",
|
"MessagePleaseRestart": "Vennligst utf\u00f8r en omstart for \u00e5 fullf\u00f8re oppdatering.",
|
||||||
"ButtonRestart": "Restart",
|
"ButtonRestart": "Restart",
|
||||||
|
|
|
@ -285,7 +285,7 @@
|
||||||
"LabelPremiereProgram": "PREMIERE",
|
"LabelPremiereProgram": "PREMIERE",
|
||||||
"LabelHDProgram": "HD",
|
"LabelHDProgram": "HD",
|
||||||
"HeaderChangeFolderType": "Verander Maptype",
|
"HeaderChangeFolderType": "Verander Maptype",
|
||||||
"HeaderChangeFolderTypeHelp": "Als u het type map wilt wijzigen, verwijder het dan en maak dan een nieuwe collectie met het nieuwe type.",
|
"HeaderChangeFolderTypeHelp": "Als u het type map wilt wijzigen, verwijder het dan en maak dan een nieuwe map met het nieuwe type.",
|
||||||
"HeaderAlert": "Waarschuwing",
|
"HeaderAlert": "Waarschuwing",
|
||||||
"MessagePleaseRestart": "Herstart om update te voltooien.",
|
"MessagePleaseRestart": "Herstart om update te voltooien.",
|
||||||
"ButtonRestart": "Herstart",
|
"ButtonRestart": "Herstart",
|
||||||
|
|
|
@ -285,7 +285,7 @@
|
||||||
"LabelPremiereProgram": "PREMI\u00c4R",
|
"LabelPremiereProgram": "PREMI\u00c4R",
|
||||||
"LabelHDProgram": "HD",
|
"LabelHDProgram": "HD",
|
||||||
"HeaderChangeFolderType": "\u00c4ndra mapptyp",
|
"HeaderChangeFolderType": "\u00c4ndra mapptyp",
|
||||||
"HeaderChangeFolderTypeHelp": "F\u00f6r att \u00e4ndra mapptyp, ta bort den existerande och skapa en ny av den \u00f6nskade typen.",
|
"HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.",
|
||||||
"HeaderAlert": "Varning",
|
"HeaderAlert": "Varning",
|
||||||
"MessagePleaseRestart": "V\u00e4nligen starta om f\u00f6r att slutf\u00f6ra uppdateringarna.",
|
"MessagePleaseRestart": "V\u00e4nligen starta om f\u00f6r att slutf\u00f6ra uppdateringarna.",
|
||||||
"ButtonRestart": "Starta om",
|
"ButtonRestart": "Starta om",
|
||||||
|
|
|
@ -285,7 +285,7 @@
|
||||||
"LabelPremiereProgram": "\u9996\u6620\u5f0f",
|
"LabelPremiereProgram": "\u9996\u6620\u5f0f",
|
||||||
"LabelHDProgram": "HD\u9ad8\u6e05",
|
"LabelHDProgram": "HD\u9ad8\u6e05",
|
||||||
"HeaderChangeFolderType": "\u53d8\u66f4\u6587\u4ef6\u5939\u7c7b\u578b",
|
"HeaderChangeFolderType": "\u53d8\u66f4\u6587\u4ef6\u5939\u7c7b\u578b",
|
||||||
"HeaderChangeFolderTypeHelp": "\u5982\u8981\u53d8\u66f4\u6587\u4ef6\u5939\u7c7b\u578b\uff0c\u8bf7\u79fb\u9664\u5408\u96c6\u5e76\u7528\u65b0\u7c7b\u578b\u91cd\u5efa\u3002",
|
"HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.",
|
||||||
"HeaderAlert": "\u8b66\u62a5",
|
"HeaderAlert": "\u8b66\u62a5",
|
||||||
"MessagePleaseRestart": "\u8bf7\u91cd\u542f\u670d\u52a1\u5668\u4ee5\u5b8c\u6210\u66f4\u65b0\u3002",
|
"MessagePleaseRestart": "\u8bf7\u91cd\u542f\u670d\u52a1\u5668\u4ee5\u5b8c\u6210\u66f4\u65b0\u3002",
|
||||||
"ButtonRestart": "\u91cd\u542f",
|
"ButtonRestart": "\u91cd\u542f",
|
||||||
|
|
|
@ -1232,7 +1232,7 @@
|
||||||
"HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Media Browser.",
|
"HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Media Browser.",
|
||||||
"MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.",
|
"MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.",
|
||||||
"LabelCameraUploadPath": "Camera upload path:",
|
"LabelCameraUploadPath": "Camera upload path:",
|
||||||
"LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used.",
|
"LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.",
|
||||||
"LabelCreateCameraUploadSubfolder": "Create a subfolder for each device",
|
"LabelCreateCameraUploadSubfolder": "Create a subfolder for each device",
|
||||||
"LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.",
|
"LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.",
|
||||||
"LabelCustomDeviceDisplayName": "Display name:",
|
"LabelCustomDeviceDisplayName": "Display name:",
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using MediaBrowser.Common.Implementations;
|
using MediaBrowser.Common.Implementations;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using System;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace MediaBrowser.Server.Implementations
|
namespace MediaBrowser.Server.Implementations
|
||||||
|
@ -10,24 +9,6 @@ namespace MediaBrowser.Server.Implementations
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ServerApplicationPaths : BaseApplicationPaths, IServerApplicationPaths
|
public class ServerApplicationPaths : BaseApplicationPaths, IServerApplicationPaths
|
||||||
{
|
{
|
||||||
#if (DEBUG)
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes a new instance of the <see cref="ServerApplicationPaths" /> class.
|
|
||||||
/// </summary>
|
|
||||||
public ServerApplicationPaths(string applicationPath)
|
|
||||||
: base(true, applicationPath)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes a new instance of the <see cref="ServerApplicationPaths"/> class.
|
|
||||||
/// </summary>
|
|
||||||
public ServerApplicationPaths(string applicationPath)
|
|
||||||
: base(false, applicationPath)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="BaseApplicationPaths" /> class.
|
/// Initializes a new instance of the <see cref="BaseApplicationPaths" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -165,12 +165,12 @@ namespace MediaBrowser.Server.Mono.Native
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
private NativeApp.Uname _unixName;
|
private Uname _unixName;
|
||||||
private NativeApp.Uname GetUnixName()
|
private Uname GetUnixName()
|
||||||
{
|
{
|
||||||
if (_unixName == null)
|
if (_unixName == null)
|
||||||
{
|
{
|
||||||
var uname = new NativeApp.Uname();
|
var uname = new Uname();
|
||||||
Utsname utsname;
|
Utsname utsname;
|
||||||
var callResult = Syscall.uname(out utsname);
|
var callResult = Syscall.uname(out utsname);
|
||||||
if (callResult == 0)
|
if (callResult == 0)
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace MediaBrowser.Server.Mono
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(programDataPath))
|
if (string.IsNullOrEmpty(programDataPath))
|
||||||
{
|
{
|
||||||
return new ServerApplicationPaths(applicationPath);
|
return new ServerApplicationPaths(ApplicationPathHelper.GetProgramDataPath(applicationPath), applicationPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ServerApplicationPaths(programDataPath, applicationPath);
|
return new ServerApplicationPaths(programDataPath, applicationPath);
|
||||||
|
|
45
MediaBrowser.Server.Startup.Common/ApplicationPathHelper.cs
Normal file
45
MediaBrowser.Server.Startup.Common/ApplicationPathHelper.cs
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
using System;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Server.Startup.Common
|
||||||
|
{
|
||||||
|
public static class ApplicationPathHelper
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the path to the application's ProgramDataFolder
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>System.String.</returns>
|
||||||
|
public static string GetProgramDataPath(string applicationPath)
|
||||||
|
{
|
||||||
|
var useDebugPath = false;
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
useDebugPath = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
var programDataPath = useDebugPath ? ConfigurationManager.AppSettings["DebugProgramDataPath"] : ConfigurationManager.AppSettings["ReleaseProgramDataPath"];
|
||||||
|
|
||||||
|
programDataPath = programDataPath.Replace("%ApplicationData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
|
||||||
|
|
||||||
|
// If it's a relative path, e.g. "..\"
|
||||||
|
if (!Path.IsPathRooted(programDataPath))
|
||||||
|
{
|
||||||
|
var path = Path.GetDirectoryName(applicationPath);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
throw new ApplicationException("Unable to determine running assembly location");
|
||||||
|
}
|
||||||
|
|
||||||
|
programDataPath = Path.Combine(path, programDataPath);
|
||||||
|
|
||||||
|
programDataPath = Path.GetFullPath(programDataPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
Directory.CreateDirectory(programDataPath);
|
||||||
|
|
||||||
|
return programDataPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -41,6 +41,7 @@
|
||||||
<HintPath>..\ThirdParty\ServiceStack\ServiceStack.Interfaces.dll</HintPath>
|
<HintPath>..\ThirdParty\ServiceStack\ServiceStack.Interfaces.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Configuration" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
@ -53,6 +54,7 @@
|
||||||
<Link>Properties\SharedVersion.cs</Link>
|
<Link>Properties\SharedVersion.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ApplicationHost.cs" />
|
<Compile Include="ApplicationHost.cs" />
|
||||||
|
<Compile Include="ApplicationPathHelper.cs" />
|
||||||
<Compile Include="Browser\BrowserLauncher.cs" />
|
<Compile Include="Browser\BrowserLauncher.cs" />
|
||||||
<Compile Include="EntryPoints\KeepServerAwake.cs" />
|
<Compile Include="EntryPoints\KeepServerAwake.cs" />
|
||||||
<Compile Include="EntryPoints\StartupWizard.cs" />
|
<Compile Include="EntryPoints\StartupWizard.cs" />
|
||||||
|
|
|
@ -148,6 +148,7 @@ namespace MediaBrowser.ServerApplication
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates the application paths.
|
/// Creates the application paths.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="applicationPath">The application path.</param>
|
||||||
/// <param name="runAsService">if set to <c>true</c> [run as service].</param>
|
/// <param name="runAsService">if set to <c>true</c> [run as service].</param>
|
||||||
/// <returns>ServerApplicationPaths.</returns>
|
/// <returns>ServerApplicationPaths.</returns>
|
||||||
private static ServerApplicationPaths CreateApplicationPaths(string applicationPath, bool runAsService)
|
private static ServerApplicationPaths CreateApplicationPaths(string applicationPath, bool runAsService)
|
||||||
|
@ -161,7 +162,7 @@ namespace MediaBrowser.ServerApplication
|
||||||
return new ServerApplicationPaths(programDataPath, applicationPath);
|
return new ServerApplicationPaths(programDataPath, applicationPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ServerApplicationPaths(applicationPath);
|
return new ServerApplicationPaths(ApplicationPathHelper.GetProgramDataPath(applicationPath), applicationPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
#if (DEBUG)
|
#if (DEBUG)
|
||||||
[assembly: AssemblyVersion("3.0.*")]
|
[assembly: AssemblyVersion("3.0.*")]
|
||||||
#else
|
#else
|
||||||
//[assembly: AssemblyVersion("3.0.*")]
|
[assembly: AssemblyVersion("3.0.*")]
|
||||||
[assembly: AssemblyVersion("3.0.5441.2")]
|
//[assembly: AssemblyVersion("3.0.5441.2")]
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue
Block a user