Compare commits

...

16 Commits

Author SHA1 Message Date
Bogdan
695b8b2ae1 Bump dotnet to 6.0.29 2024-04-22 09:32:41 +03:00
Bogdan
420824b279 Convert createTagsSelector to typescript 2024-04-21 12:48:48 +03:00
Servarr
badc2567c3 Automated API Docs update 2024-04-21 12:44:49 +03:00
Bogdan
c8c81927d9 Fixed: Re-testing edited providers will forcibly test them
(cherry picked from commit e9662544621b2d1fb133ff9d96d0eb20b8198725)

Closes #3432
2024-04-21 12:36:52 +03:00
Josh McKinney
f9df843789 Add dev container workspace
Allows the linting and style settings for the frontend to be applied even when you load the main repo as a workspace

(cherry picked from commit d6278fced49b26be975c3a6039b38a94f700864b)

Closes #3428
2024-04-21 12:34:01 +03:00
Bogdan
3cd39d4ee8 Bump frontend dependencies 2024-04-21 12:30:55 +03:00
Bogdan
8a39ef4c56 Bump version to 0.3.25 2024-04-21 09:17:25 +03:00
Bogdan
ba1195fc1b Fixed: Skip move when source and destination are the same
Co-authored-by: Qstick <qstick@gmail.com>
2024-04-20 18:00:00 +03:00
Bogdan
7656142db4 Bump SixLabors.ImageSharp to 3.1.4 2024-04-19 08:03:01 +03:00
Weblate
74c3b45ef8 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Altair <villagermd@outlook.com>
Co-authored-by: Ano10 <arnaudthommeray+github@ik.me>
Co-authored-by: Gandrushka <andrew.pyndyk@gmail.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Jacopo Luca Maria Latrofa <jacopo.latrofa@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: fordas <fordas15@gmail.com>
Co-authored-by: toeiazarothis <patrickdealmeida89000@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/it/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/uk/
Translation: Servarr/Readarr
2024-04-18 20:00:38 +03:00
Josh McKinney
f7368d3d09 Add DevContainer, VSCode config and extensions.json
(cherry picked from commit 5061dc4b5e5ea9925740496a5939a1762788b793)

Closes #3414
2024-04-14 08:35:27 +03:00
Bogdan
5d8e2300f2 Bump version to 0.3.24 2024-04-14 08:26:42 +03:00
Weblate
1fb54c0da5 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: fordas <fordas15@gmail.com>
Co-authored-by: myrad2267 <myrad2267@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ar/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/he/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ro/
Translation: Servarr/Readarr
2024-04-10 02:22:54 +03:00
Bogdan
5a9a6e593b New: Detect shfs mounts in disk space
(cherry picked from commit 1aef91041e404f76f278f430e4e53140fb125792)
2024-04-10 02:22:17 +03:00
Qstick
2d5fc655c0 Added table identifier to OrderBy to avoid column ambiguity on joins
Co-Authored-By: Richard <1252123+kharenis@users.noreply.github.com>

(cherry picked from commit c57ceac4debf7419be84096f997ba7b75c906586)
2024-04-08 18:47:02 +03:00
Bogdan
cfcc9a5856 Bump version to 0.3.23 2024-04-07 07:58:18 +03:00
33 changed files with 2233 additions and 1575 deletions

View File

@@ -0,0 +1,13 @@
// This file is used to open the backend and frontend in the same workspace, which is necessary as
// the frontend has vscode settings that are distinct from the backend
{
"folders": [
{
"path": ".."
},
{
"path": "../frontend"
}
],
"settings": {}
}

View File

@@ -0,0 +1,19 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
{
"name": "Readarr",
"image": "mcr.microsoft.com/devcontainers/dotnet:1-6.0",
"features": {
"ghcr.io/devcontainers/features/node:1": {
"nodeGypDependencies": true,
"version": "16",
"nvmVersion": "latest"
}
},
"forwardPorts": [8787],
"customizations": {
"vscode": {
"extensions": ["esbenp.prettier-vscode"]
}
}
}

12
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for more information:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
# https://containers.dev/guide/dependabot
version: 2
updates:
- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: weekly

1
.gitignore vendored
View File

@@ -125,6 +125,7 @@ coverage*.xml
coverage*.json
setup/Output/
*.~is
.mono
# .NET Core
project.lock.json

7
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"recommendations": [
"esbenp.prettier-vscode",
"ms-dotnettools.csdevkit",
"ms-vscode-remote.remote-containers"
]
}

26
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,26 @@
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md
"name": "Run Readarr",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build dotnet",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/_output/net6.0/Readarr",
"args": [],
"cwd": "${workspaceFolder}",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}

44
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,44 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build dotnet",
"command": "dotnet",
"type": "process",
"args": [
"msbuild",
"-restore",
"${workspaceFolder}/src/Readarr.sln",
"-p:GenerateFullPaths=true",
"-p:Configuration=Debug",
"-p:Platform=Posix",
"-consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/src/Readarr.sln",
"-property:GenerateFullPaths=true",
"-consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/src/Readarr.sln"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@@ -9,13 +9,13 @@ variables:
testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
majorVersion: '0.3.22'
majorVersion: '0.3.25'
minorVersion: $[counter('minorVersion', 1)]
readarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
sentryOrg: 'servarr'
sentryUrl: 'https://sentry.servarr.com'
dotnetVersion: '6.0.417'
dotnetVersion: '6.0.421'
nodeVersion: '20.X'
innoVersion: '6.2.0'
windowsImage: 'windows-2022'

View File

@@ -1,8 +1,11 @@
import $ from 'jquery';
import _ from 'lodash';
import createAjaxRequest from 'Utilities/createAjaxRequest';
import getProviderState from 'Utilities/State/getProviderState';
import { set } from '../baseActions';
const abortCurrentRequests = {};
let lastTestData = null;
export function createCancelTestProviderHandler(section) {
return function(getState, payload, dispatch) {
@@ -17,10 +20,25 @@ function createTestProviderHandler(section, url) {
return function(getState, payload, dispatch) {
dispatch(set({ section, isTesting: true }));
const testData = getProviderState(payload, getState, section);
const {
queryParams = {},
...otherPayload
} = payload;
const testData = getProviderState({ ...otherPayload }, getState, section);
const params = { ...queryParams };
// If the user is re-testing the same provider without changes
// force it to be tested.
if (_.isEqual(testData, lastTestData)) {
params.forceTest = true;
}
lastTestData = testData;
const ajaxOptions = {
url: `${url}/test`,
url: `${url}/test?${$.param(params, true)}`,
method: 'POST',
contentType: 'application/json',
dataType: 'json',
@@ -32,6 +50,8 @@ function createTestProviderHandler(section, url) {
abortCurrentRequests[section] = abortRequest;
request.done((data) => {
lastTestData = null;
dispatch(set({
section,
isTesting: false,

View File

@@ -1,8 +1,9 @@
import { createSelector } from 'reselect';
import AppState from 'App/State/AppState';
function createTagsSelector() {
return createSelector(
(state) => state.tags.items,
(state: AppState) => state.tags.items,
(tags) => {
return tags;
}

View File

@@ -33,9 +33,9 @@
"@microsoft/signalr": "6.0.25",
"@sentry/browser": "7.51.2",
"@sentry/integrations": "7.51.2",
"@types/node": "18.16.16",
"@types/react": "18.2.7",
"@types/react-dom": "18.2.4",
"@types/node": "18.19.31",
"@types/react": "18.2.79",
"@types/react-dom": "18.2.25",
"ansi-colors": "4.1.3",
"classnames": "2.3.2",
"clipboard": "2.0.11",
@@ -84,44 +84,44 @@
"redux-thunk": "2.3.0",
"reselect": "4.1.8",
"stacktrace-js": "2.0.2",
"typescript": "4.9.5"
"typescript": "5.1.6"
},
"devDependencies": {
"@babel/core": "7.22.11",
"@babel/eslint-parser": "7.22.11",
"@babel/plugin-proposal-export-default-from": "7.22.5",
"@babel/core": "7.24.4",
"@babel/eslint-parser": "7.24.1",
"@babel/plugin-proposal-export-default-from": "7.24.1",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/preset-env": "7.22.15",
"@babel/preset-react": "7.22.5",
"@babel/preset-typescript": "7.22.11",
"@types/lodash": "4.14.197",
"@types/react-lazyload": "3.2.1",
"@babel/preset-env": "7.24.4",
"@babel/preset-react": "7.24.1",
"@babel/preset-typescript": "7.24.1",
"@types/lodash": "4.14.195",
"@types/react-lazyload": "3.2.0",
"@types/redux-actions": "2.6.2",
"@typescript-eslint/eslint-plugin": "6.5.0",
"@typescript-eslint/parser": "6.5.0",
"@typescript-eslint/eslint-plugin": "6.21.0",
"@typescript-eslint/parser": "6.21.0",
"autoprefixer": "10.4.14",
"babel-loader": "9.1.3",
"babel-plugin-inline-classnames": "2.0.1",
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
"core-js": "3.32.1",
"core-js": "3.37.0",
"css-loader": "6.8.1",
"css-modules-typescript-loader": "4.0.1",
"eslint": "8.44.0",
"eslint-config-prettier": "8.8.0",
"eslint": "8.57.0",
"eslint-config-prettier": "8.10.0",
"eslint-plugin-filenames": "1.3.2",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-json": "3.1.0",
"eslint-plugin-prettier": "4.2.1",
"eslint-plugin-react": "7.32.2",
"eslint-plugin-react": "7.34.1",
"eslint-plugin-react-hooks": "4.6.0",
"eslint-plugin-simple-import-sort": "10.0.0",
"eslint-plugin-simple-import-sort": "12.1.0",
"file-loader": "6.2.0",
"filemanager-webpack-plugin": "8.0.0",
"fork-ts-checker-webpack-plugin": "8.0.0",
"html-webpack-plugin": "5.5.3",
"loader-utils": "^3.2.1",
"mini-css-extract-plugin": "2.7.6",
"postcss": "8.4.31",
"postcss": "8.4.38",
"postcss-color-function": "4.1.0",
"postcss-loader": "7.3.0",
"postcss-mixins": "9.0.4",

View File

@@ -139,16 +139,46 @@
</Otherwise>
</Choose>
<!--
Set architecture to RuntimeInformation.ProcessArchitecture if not specified -->
<Choose>
<When Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'X64'">
<PropertyGroup>
<Architecture>x64</Architecture>
</PropertyGroup>
</When>
<When Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'X86'">
<PropertyGroup>
<Architecture>x86</Architecture>
</PropertyGroup>
</When>
<When Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'Arm64'">
<PropertyGroup>
<Architecture>arm64</Architecture>
</PropertyGroup>
</When>
<When Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'Arm'">
<PropertyGroup>
<Architecture>arm</Architecture>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<Architecture></Architecture>
</PropertyGroup>
</Otherwise>
</Choose>
<PropertyGroup Condition="'$(IsWindows)' == 'true' and
'$(RuntimeIdentifier)' == ''">
<_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<RuntimeIdentifier>win-$(Architecture)</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(IsLinux)' == 'true' and
'$(RuntimeIdentifier)' == ''">
<_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<RuntimeIdentifier>linux-$(Architecture)</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(IsOSX)' == 'true' and

View File

@@ -3,7 +3,7 @@
<ItemGroup>
<PackageVersion Include="AutoFixture" Version="4.17.0" />
<PackageVersion Include="coverlet.collector" Version="3.0.4-preview.27.ge7cb7c3b40" PrivateAssets="all" />
<PackageVersion Include="Dapper" Version="2.0.123" />
<PackageVersion Include="Dapper" Version="2.0.151" />
<PackageVersion Include="DryIoc.dll" Version="5.4.3" />
<PackageVersion Include="DryIoc.Microsoft.DependencyInjection" Version="6.2.0" />
<PackageVersion Include="Equ" Version="2.3.0" />
@@ -17,13 +17,13 @@
<PackageVersion Include="ImpromptuInterface" Version="7.0.1" />
<PackageVersion Include="LazyCache" Version="2.4.0" />
<PackageVersion Include="Mailkit" Version="3.6.0" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="6.0.25" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="6.0.29" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
<PackageVersion Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.2" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="6.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageVersion Include="Microsoft.Win32.Registry" Version="5.0.0" />
<PackageVersion Include="Mono.Posix.NETStandard" Version="5.20.1.34-servarr22" />
<PackageVersion Include="Moq" Version="4.17.2" />
@@ -35,7 +35,7 @@
<PackageVersion Include="NLog.Targets.Syslog" Version="7.0.0" />
<PackageVersion Include="Npgsql" Version="7.0.6" />
<PackageVersion Include="NUnit3TestAdapter" Version="4.2.1" />
<PackageVersion Include="NUnit" Version="3.13.3" />
<PackageVersion Include="NUnit" Version="3.14.0" />
<PackageVersion Include="NunitXml.TestLogger" Version="3.0.117" />
<PackageVersion Include="PdfSharpCore" Version="1.3.32" />
<PackageVersion Include="RestSharp.Serializers.SystemTextJson" Version="106.15.0" />
@@ -44,7 +44,7 @@
<PackageVersion Include="Selenium.WebDriver.ChromeDriver" Version="91.0.4472.10100" />
<PackageVersion Include="Sentry" Version="3.31.0" />
<PackageVersion Include="SharpZipLib" Version="1.4.2" />
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.3" />
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.4" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.1.118" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.5.0" />
<PackageVersion Include="System.Buffers" Version="4.5.1" />

View File

@@ -1,6 +1,7 @@
using System.IO;
using NLog;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Instrumentation.Extensions;
using NzbDrone.Core.Books.Commands;
using NzbDrone.Core.Books.Events;
@@ -55,6 +56,12 @@ namespace NzbDrone.Core.Books
_logger.ProgressInfo("Moving {0} from '{1}' to '{2}'", author.Name, sourcePath, destinationPath);
}
if (sourcePath.PathEquals(destinationPath))
{
_logger.ProgressInfo("{0} is already in the specified location '{1}'.", author, destinationPath);
return;
}
try
{
_rootFolderWatchingService.ReportFileSystemChangeBeginning(sourcePath, destinationPath);

View File

@@ -455,7 +455,7 @@ namespace NzbDrone.Core.Datastore
var sortKey = TableMapping.Mapper.GetSortKey(pagingSpec.SortKey);
var sortDirection = pagingSpec.SortDirection == SortDirection.Descending ? "DESC" : "ASC";
var pagingOffset = Math.Max(pagingSpec.Page - 1, 0) * pagingSpec.PageSize;
builder.OrderBy($"\"{sortKey}\" {sortDirection} LIMIT {pagingSpec.PageSize} OFFSET {pagingOffset}");
builder.OrderBy($"\"{sortKey.Table ?? _table}\".\"{sortKey.Column}\" {sortDirection} LIMIT {pagingSpec.PageSize} OFFSET {pagingOffset}");
return queryFunc(builder).ToList();
}

View File

@@ -91,33 +91,28 @@ namespace NzbDrone.Core.Datastore
return true;
}
public string GetSortKey(string sortKey)
public (string Table, string Column) GetSortKey(string sortKey)
{
string table = null;
if (sortKey.Contains('.'))
{
var split = sortKey.Split('.');
if (split.Length != 2)
if (split.Length == 2)
{
return sortKey;
table = split[0];
sortKey = split[1];
}
table = split[0];
sortKey = split[1];
}
if (table != null && !TableMap.Values.Contains(table, StringComparer.OrdinalIgnoreCase))
if (table != null)
{
return sortKey;
table = TableMap.Values.FirstOrDefault(x => x.Equals(table, StringComparison.OrdinalIgnoreCase)) ?? table;
}
if (!_allowedOrderBy.Contains(sortKey))
{
return sortKey;
}
sortKey = _allowedOrderBy.FirstOrDefault(x => x.Equals(sortKey, StringComparison.OrdinalIgnoreCase)) ?? sortKey;
return _allowedOrderBy.First(x => x.Equals(sortKey, StringComparison.OrdinalIgnoreCase));
return (table, sortKey);
}
}

View File

@@ -636,5 +636,7 @@
"ListsSettingsSummary": "القوائم",
"SelectDropdown": "'تحديد...",
"SelectQuality": "حدد الجودة",
"CustomFilter": "مرشحات مخصصة"
"CustomFilter": "مرشحات مخصصة",
"IndexerFlags": "أعلام المفهرس",
"InteractiveSearchModalHeader": "بحث تفاعلي"
}

View File

@@ -636,5 +636,7 @@
"SelectDropdown": "„Изберете ...",
"SelectQuality": "Изберете Качество",
"CustomFilter": "Персонализирани филтри",
"RemoveQueueItemConfirmation": "Наистина ли искате да премахнете {0} елемент {1} от опашката?"
"RemoveQueueItemConfirmation": "Наистина ли искате да премахнете {0} елемент {1} от опашката?",
"IndexerFlags": "Индексиращи знамена",
"InteractiveSearchModalHeader": "Интерактивно търсене"
}

View File

@@ -691,5 +691,7 @@
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Automaticky vyhledat a pokusit se o stažení jiného vydání, pokud bylo neúspěšné vydání zachyceno z interaktivního vyhledávání",
"SelectDropdown": "'Vybrat...",
"CustomFilter": "Vlastní filtry",
"SelectQuality": "Vyberte kvalitu"
"SelectQuality": "Vyberte kvalitu",
"IndexerFlags": "Příznaky indexeru",
"InteractiveSearchModalHeader": "Interaktivní vyhledávání"
}

View File

@@ -644,5 +644,11 @@
"CustomFilter": "Bruger Tilpassede Filtere",
"SelectDropdown": "'Vælg...",
"SelectQuality": "Vælg Kvalitet",
"ApplyChanges": "Anvend ændringer"
"ApplyChanges": "Anvend ændringer",
"Series": "Serie",
"IndexerFlags": "Indexer Flag",
"InteractiveSearchModalHeader": "Interaktiv søgning",
"Theme": "Tema",
"Publisher": "Udgiver",
"CatalogNumber": "katalognummer"
}

View File

@@ -82,8 +82,8 @@
"DeleteImportListExclusion": "Eliminar exclusión de listas de importación",
"DeleteImportListExclusionMessageText": "¿Está seguro de que desea eliminar esta exclusión de la lista de importación?",
"DeleteImportListMessageText": "Seguro que quieres eliminar la lista '{name}'?",
"DeleteIndexer": "Borrar Indexer",
"DeleteIndexerMessageText": "Seguro que quieres eliminar el indexer '{name}'?",
"DeleteIndexer": "Borrar indexador",
"DeleteIndexerMessageText": "¿Estás seguro que quieres eliminar el indexador '{name}'?",
"DeleteMetadataProfileMessageText": "¿Seguro que quieres eliminar el perfil de metadatos '{name}'?",
"DeleteNotification": "Borrar Notificacion",
"DeleteNotificationMessageText": "¿Seguro que quieres eliminar la notificación '{name}'?",
@@ -655,7 +655,7 @@
"DeleteSelectedDownloadClients": "Borrar Cliente de Descarga(s)",
"DeleteSelectedDownloadClientsMessageText": "¿Está seguro de querer eliminar {count} cliente(s) de descarga seleccionado(s)?",
"DeleteSelectedImportListsMessageText": "Seguro que quieres eliminar {count} lista(s) de importación seleccionada(s)?",
"DeleteSelectedIndexers": "Borrar indexer(s)",
"DeleteSelectedIndexers": "Borrar indexador(es)",
"DownloadClientTagHelpText": "Solo utilizar este indexador para películas que coincidan con al menos una etiqueta. Déjelo en blanco para utilizarlo con todas las películas.",
"ExistingTag": "Etiquetas existentes",
"No": "No",
@@ -757,7 +757,7 @@
"ColonReplacement": "Reemplazar dos puntos",
"CloneProfile": "Clonar Perfil",
"Close": "Cerrar",
"CloneIndexer": "Clonar Indexer",
"CloneIndexer": "Clonar indexador",
"CompletedDownloadHandling": "Manipulación de descargas completas",
"EnableProfile": "Habilitar perfil",
"ListsSettingsSummary": "lista de importación",
@@ -845,5 +845,37 @@
"RemoveMultipleFromDownloadClientHint": "Elimina descargas y archivos del cliente de descarga",
"RemoveQueueItem": "Eliminar - {sourceTitle}",
"RemoveQueueItemRemovalMethodHelpTextWarning": "'Eliminar del cliente de descarga' eliminará la descarga y el archivo(s) del cliente de descarga.",
"RemoveQueueItemsRemovalMethodHelpTextWarning": "'Eliminar del cliente de descarga' eliminará las descargas y los archivos del cliente de descarga."
"RemoveQueueItemsRemovalMethodHelpTextWarning": "'Eliminar del cliente de descarga' eliminará las descargas y los archivos del cliente de descarga.",
"EndedAllBooksDownloaded": "FInalizado (Todos los episodios descargados)",
"ClickToChangeIndexerFlags": "Clic para cambiar las banderas del indexador",
"CustomFormatsSpecificationFlag": "Bandera",
"IndexerFlags": "Banderas del indexador",
"NotificationsSettingsUpdateMapPathsFrom": "Mapear rutas desde",
"NotificationsSettingsUpdateMapPathsFromHelpText": "Ruta de {appName}, usado para modificar rutas de series cuando {serviceName} ve la ubicación de ruta de biblioteca de forma distinta a {appName} (Requiere 'Actualizar biblioteca')",
"NotificationsSettingsUpdateMapPathsTo": "Mapear rutas a",
"NotificationsSettingsUpdateMapPathsToHelpText": "Ruta de {appName}, usado para modificar rutas de series cuando {serviceName} ve la ubicación de ruta de biblioteca de forma distinta a {appName} (Requiere 'Actualizar biblioteca')",
"NotificationsSettingsUseSslHelpText": "Conectar a {serviceName} sobre HTTPS en vez de HTTP",
"Rejections": "Rechazos",
"SelectIndexerFlags": "Seleccionar banderas del indexador",
"RecycleBinUnableToWriteHealthCheck": "No se pudo escribir en la carpeta configurada de la papelera de reciclaje: {path}. Asegúrate de que la ruta existe y es modificable por el usuario que ejecuta {appName}",
"SearchForAllMissingBooks": "Buscar todos los episodios perdidos",
"IndexerIdHelpText": "Especifica a qué indexador se aplica el perfil",
"ProfilesSettingsSummary": "Perfiles de calidad, de retraso de idioma y de lanzamiento",
"DataExistingBooks": "Monitoriza episodios que no tienen archivos o que no se han emitido aún",
"MonitoredAuthorIsMonitored": "El artista no está vigilado",
"RemotePathMappingsInfo": "Los mapeos de ruta remota son muy raramente solicitados, si {appName} y tu cliente de descarga están en el mismo sistema es mejor coincidir sus rutas. Para más información mira la [wiki]({wikiLink})",
"ShowBannersHelpText": "Muestra banners en lugar de títulos",
"DefaultTagsHelpText": "Perfil de metadatos predeterminado para los artistas detectados en esta carpeta",
"UseSSL": "Usar SSL",
"SetIndexerFlags": "Establecer banderas del indexador",
"NotificationsPlexSettingsAuthenticateWithPlexTv": "Autenticar con Plex.tv",
"NotificationsSettingsUpdateLibrary": "Actualizar biblioteca",
"ConnectionSettingsUrlBaseHelpText": "Añade un prefijo a la url {connectionName}, como {url}",
"DownloadClientDelugeSettingsDirectory": "Directorio de descarga",
"DownloadClientDelugeSettingsDirectoryCompleted": "Directorio al que mover cuando se complete",
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Ubicación opcional a la que mover las descargas completadas, dejar en blanco para usar la ubicación predeterminada de Deluge",
"DownloadClientDelugeSettingsDirectoryHelpText": "Ubicación opcional en la que poner las descargas, dejar en blanco para usar la ubicación predeterminada de Deluge",
"InteractiveSearchModalHeader": "Búsqueda Interactiva",
"NotificationsPlexSettingsAuthToken": "Token de autenticación",
"CustomFormatsSettingsTriggerInfo": "Un formato personalizado será aplicado al lanzamiento o archivo cuando coincida con al menos uno de los diferentes tipos de condición elegidos."
}

View File

@@ -990,5 +990,18 @@
"RemoveQueueItem": "Poistetaan - {sourceTitle}",
"RemoveQueueItemConfirmation": "Haluatko varmasti poistaa kohteen \"{sourceTitle}\" jonosta?",
"SelectReleaseGroup": "Aseta julkaisuryhmä",
"BlocklistOnly": "Vain esto"
"BlocklistOnly": "Vain esto",
"IndexerFlags": "Tietolähteen liput",
"NotificationsSettingsUpdateMapPathsFrom": "Kohdista sijainnit lähteeseen",
"NotificationsSettingsUpdateMapPathsFromHelpText": "{appName}-sijainti, jonka mukaisesti sarjasijainteja muutetaan kun {serviceName} näkee kirjastosijainnin eri tavalla kuin {appName} (vaatii \"Päivitä kirjasto\" -asetuksen).",
"NotificationsSettingsUpdateMapPathsTo": "Kohdista sijainnit kohteeseen",
"NotificationsSettingsUpdateMapPathsToHelpText": "{serviceName}-sijainti, jonka mukaisesti sarjasijainteja muutetaan kun {serviceName} näkee kirjastosijainnin eri tavalla kuin {appName} (vaatii \"Päivitä kirjasto\" -asetuksen).",
"NotificationsSettingsUseSslHelpText": "Muodosta yhteys sovellukseen {serviceName} SSL-protokollan välityksellä.",
"Rejections": "Hylkäykset",
"NotificationsSettingsUpdateLibrary": "Päivitä kirjasto",
"ConnectionSettingsUrlBaseHelpText": "Lisää etuliite lataustuökalun {clientName} URL-osoitteeseen, kuten {url}.",
"DownloadClientDelugeSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi.",
"InteractiveSearchModalHeader": "Manuaalihaku",
"NotificationsPlexSettingsAuthToken": "Todennustunniste",
"NotificationsPlexSettingsAuthenticateWithPlexTv": "Plex.tv-tunnistautuminen"
}

View File

@@ -112,7 +112,7 @@
"DiskSpace": "Espace disque",
"DownloadClient": "Client de téléchargement",
"DownloadClientSettings": "Télécharger les paramètres client",
"DownloadClients": "Clients de télécharg.",
"DownloadClients": "Clients de téléchargement",
"DownloadFailedCheckDownloadClientForMoreDetails": "Téléchargement échoué : voir le client de téléchargement pour plus de détails",
"DownloadFailedInterp": "Échec du téléchargement : {0}",
"DownloadPropersAndRepacksHelpTexts1": "S'il faut ou non mettre à niveau automatiquement vers Propres/Repacks",
@@ -484,9 +484,9 @@
"AppDataLocationHealthCheckMessage": "La mise à jour ne sera pas possible afin empêcher la suppression de AppData lors de la mise à jour",
"IndexerPriorityHelpText": "Priorité de l'indexeur de 1 (la plus élevée) à 50 (la plus basse). Par défaut : 25. Utilisé pour départager les versions lors des téléchargements. Readarr continuera d'utiliser tous les indexeurs activés pour les synchro RSS et les recherches.",
"Duration": "Durée",
"RemotePathMappingCheckBadDockerPath": "Vous utilisez docker ; le client de téléchargement {0} enregistre les téléchargements dans {1} mais ce n'est pas un chemin valide. Vérifiez vos paramètres de dossier distant et les paramètres de votre client de téléchargement.",
"RemotePathMappingCheckBadDockerPath": "Vous utilisez docker ; le client de téléchargement {0} enregistre les téléchargements dans {1} mais ce n'est pas un chemin {2} valide. Vérifiez vos mappages de chemins distants et les paramètres de votre client de téléchargement.",
"RemotePathMappingCheckDockerFolderMissing": "Vous utilisez docker; {0} enregistre les téléchargements dans {1} mais ce dossier n'est pas présent dans ce conteneur. Vérifiez vos paramètres de dossier distant et les paramètres de votre conteneur docker.",
"RemotePathMappingCheckFilesBadDockerPath": "Vous utilisez docker; {0} signifie les téléchargement dans {1} mais ce n'est pas un dossier valide. Vérifiez vos paramètres de dossier distant et les paramètres de votre client de téléchargement.",
"RemotePathMappingCheckFilesBadDockerPath": "Vous utilisez docker ; le client de téléchargement {0} a signalé des fichiers dans {1} mais ce n'est pas un chemin {2} valide. Vérifiez vos mappages de chemins distants et les paramètres de votre client de téléchargement.",
"RemotePathMappingCheckFilesWrongOSPath": "Le client de téléchargement distant {0} met les téléchargements dans {1} mais il ne s'agit pas d'un chemin {2} valide. Vérifiez les paramètres de votre client de téléchargement.",
"RemotePathMappingCheckLocalFolderMissing": "Le client de téléchargement distant {0} met les téléchargements dans {1} mais ce chemin ne semble pas exister. Vérifiez vos paramètres de chemins distants.",
"RemotePathMappingCheckRemoteDownloadClient": "Le client de téléchargement distant {0} met les téléchargements dans {1} mais ce chemin ne semble pas exister. Vérifiez vos paramètres de chemins distants.",
@@ -540,7 +540,7 @@
"FileWasDeletedByUpgrade": "Le fichier à été supprimé pour importer une version supérieure",
"Filters": "Filtres",
"General": "Général",
"GeneralSettingsSummary": "Port, SSL/TLS, nom d'utilisateur/mot de passe, proxy, analyses et mises à jour",
"GeneralSettingsSummary": "Port, SSL, nom d'utilisateur/mot de passe, proxy, analyses et mises à jour",
"HealthNoIssues": "Aucun problème avec votre configuration",
"ImportListStatusCheckSingleClientMessage": "Listes indisponibles en raison d'échecs: {0}",
"IndexerLongTermStatusCheckAllClientMessage": "Tous les indexeurs sont indisponibles en raison d'échecs de plus de 6 heures",
@@ -552,7 +552,7 @@
"OnBookFileDeleteForUpgrade": "À la suppression du fichier vidéo pour mise à niveau",
"OnBookFileDeleteForUpgradeHelpText": "À la suppression du fichier vidéo pour mise à niveau",
"OnBookFileDeleteHelpText": "À la suppression d'un fichier vidéo",
"OnGrab": "À saisir",
"OnGrab": "Lors de la saisie",
"OnHealthIssue": "Sur la question de la santé",
"OnRename": "Au renommage",
"ProxyCheckBadRequestMessage": "Échec du test du proxy. StatusCode: {0}",
@@ -809,7 +809,7 @@
"MinimumPopularity": "Popularité minimum",
"NoHistoryBlocklist": "Pas d'historique de liste noire",
"AppUpdatedVersion": "{appName} a été mis à jour vers la version `{version}`, pour profiter des derniers changements, vous devrez relancer {appName}",
"IndexerDownloadClientHealthCheckMessage": "Indexeurs avec des clients de téléchargement invalides : {0].",
"IndexerDownloadClientHealthCheckMessage": "Indexeurs avec des clients de téléchargement invalides : {0}.",
"MonitoringOptions": "Options de surveillance",
"OnDownloadFailure": "En cas d'échec de téléchargement",
"RootFolderPathHelpText": "Les éléments de la liste du dossier racine seront ajoutés à",
@@ -973,5 +973,20 @@
"NotificationsSettingsUpdateMapPathsToHelpText": "Chemin {serviceName}, utilisé pour modifier les chemins des séries quand {serviceName} voit un chemin d'emplacement de bibliothèque différemment de {appName} (nécessite 'Mise à jour bibliothèque')",
"ClickToChangeIndexerFlags": "Cliquez pour changer les drapeaux de l'indexeur",
"CustomFormatsSpecificationFlag": "Drapeau",
"EditAuthor": "Éditer l'auteur"
"EditAuthor": "Éditer l'auteur",
"EditBook": "Modifier le livre",
"EditList": "Modifier la liste",
"AuthorProgressBarText": "{availableBookCount} / {bookCount} (Total: {totalBookCount}, Fichiers : {bookFileCount})",
"BookProgressBarText": "{bookCount} / {totalBookCount} (Fichiers : {bookFileCount})",
"CustomFormatsSettingsTriggerInfo": "Un format personnalisé sera appliqué à une version ou à un fichier lorsqu'il correspond à au moins un de chacun des différents types de conditions choisis.",
"IndexerFlags": "Drapeaux de l'indexeur",
"Rejections": "Rejets",
"SelectIndexerFlags": "Sélectionner les drapeaux de l'indexeur",
"SetIndexerFlags": "Définir les drapeaux de l'indexeur",
"NotificationsPlexSettingsAuthToken": "Jeton d'authentification",
"NotificationsPlexSettingsAuthenticateWithPlexTv": "S'authentifier avec Plex.tv",
"NotificationsSettingsUpdateLibrary": "Mettre à jour la bibliothèque",
"NotificationsSettingsUpdateMapPathsFrom": "Mapper les chemins depuis",
"NotificationsSettingsUseSslHelpText": "Se connecter à {serviceName} en HTTPS plutôt qu'en HTTP",
"NotificationsSettingsUpdateMapPathsTo": "Mapper les chemins vers"
}

View File

@@ -665,5 +665,7 @@
"CustomFilter": "מסננים מותאמים אישית",
"RemoveQueueItemConfirmation": "האם אתה בטוח שברצונך להסיר את {0} פריט {1} מהתור?",
"SourceTitle": "כותרת מקור",
"AutoRedownloadFailed": "הורדה נכשלה"
"AutoRedownloadFailed": "הורדה נכשלה",
"IndexerFlags": "אינדקס דגלים",
"InteractiveSearchModalHeader": "חיפוש אינטראקטיבי"
}

View File

@@ -728,5 +728,6 @@
"ConnectionLost": "Connessione Persa",
"AppUpdated": "{appName} Aggiornato",
"AllResultsAreHiddenByTheAppliedFilter": "Tutti i risultati sono nascosti dal filtro applicato",
"AutoRedownloadFailed": "Download fallito"
"AutoRedownloadFailed": "Download fallito",
"AddListExclusion": "Aggiungi elenco esclusioni"
}

View File

@@ -1081,5 +1081,6 @@
"Rejections": "Rejeições",
"SelectIndexerFlags": "Selecionar Sinalizadores do Indexador",
"SetIndexerFlags": "Definir Sinalizadores de Indexador",
"IndexerFlags": "Sinalizadores do Indexador"
"IndexerFlags": "Sinalizadores do Indexador",
"CustomFormatsSettingsTriggerInfo": "Um formato personalizado será aplicado a um lançamento ou arquivo quando corresponder a pelo menos um de cada um dos diferentes tipos de condição escolhidos."
}

View File

@@ -645,5 +645,13 @@
"BlocklistReleaseHelpText": "Împiedică Radarr să apuce automat această versiune din nou",
"ExtraFileExtensionsHelpText": "Lista separată prin virgulă a fișierelor suplimentare de importat (.nfo va fi importat ca .nfo-orig)",
"ExtraFileExtensionsHelpTextsExamples": "Exemple: „.sub, .nfo” sau „sub, nfo”",
"CustomFilter": "Filtru personalizat"
"CustomFilter": "Filtru personalizat",
"ImportLists": "Liste",
"InteractiveSearchModalHeader": "Căutare interactivă",
"ListsSettingsSummary": "Liste",
"SelectDropdown": "Selectați...",
"RemoveQueueItemConfirmation": "Sigur doriți să eliminați {0} elementul {1} din coadă?",
"SelectQuality": "Selectați Calitate",
"AutoRedownloadFailed": "Descarcare esuata",
"SourceTitle": "Titlul sursei"
}

View File

@@ -23,7 +23,7 @@
"AgeWhenGrabbed": "Yaş (yakalandığında)",
"AlreadyInYourLibrary": "Zaten kitaplığınızda",
"AlternateTitles": "Alternatif Başlık",
"Analytics": "Analitik",
"Analytics": "Analiz",
"AnalyticsEnabledHelpText": "Anonim kullanım ve hata bilgilerini Radarr sunucularına gönderin. Bu, tarayıcınızla ilgili bilgileri, kullandığınız Radarr WebUI sayfalarını, hata raporlamasının yanı sıra işletim sistemi ve çalışma zamanı sürümünü içerir. Bu bilgileri, özellikleri ve hata düzeltmelerini önceliklendirmek için kullanacağız.",
"AppDataDirectory": "Uygulama Veri Dizini",
"ApplyTags": "Etiketleri Uygula",
@@ -87,15 +87,15 @@
"DeleteEmptyFolders": "Boş klasörleri silin",
"DeleteEmptyFoldersHelpText": "Disk taraması sırasında ve film dosyaları silindiğinde boş film klasörlerini silin",
"DeleteImportListExclusion": "İçe Aktarma Listesi Hariç Tutmasını Sil",
"DeleteImportListExclusionMessageText": "Bu içe aktarma listesi dışlamasını silmek istediğinizden emin misiniz?",
"DeleteImportListMessageText": "'{0}' listesini silmek istediğinizden emin misiniz?",
"DeleteImportListExclusionMessageText": "Bu içe aktarma listesi hariç tutma işlemini silmek istediğinizden emin misiniz?",
"DeleteImportListMessageText": "'{name}' listesini silmek istediğinizden emin misiniz?",
"DeleteIndexerMessageText": "Dizin oluşturucuyu '{0}' silmek istediğinizden emin misiniz?",
"DeleteMetadataProfileMessageText": "Kalite profilini silmek istediğinizden emin misiniz {0}",
"DeleteNotification": "Bildirimi Sil",
"DeleteNotificationMessageText": "'{0}' bildirimini silmek istediğinizden emin misiniz?",
"DeleteQualityProfile": "Kalite Profilini Sil",
"DeleteQualityProfileMessageText": "Kalite profilini silmek istediğinizden emin misiniz {0}",
"DeleteReleaseProfile": "Gecikme Profilini Sil",
"DeleteQualityProfileMessageText": "'{name}' kalite profilini silmek istediğinizden emin misiniz?",
"DeleteReleaseProfile": "Sürüm Profilini Sil",
"DeleteReleaseProfileMessageText": "Bu gecikme profilini silmek istediğinizden emin misiniz?",
"DeleteSelectedBookFiles": "Seçili Film Dosyalarını Sil",
"DeleteSelectedBookFilesMessageText": "Seçili film dosyalarını silmek istediğinizden emin misiniz?",
@@ -560,7 +560,7 @@
"UpgradesAllowed": "Yükseltmelere İzin Verildi",
"CustomFormat": "Özel Biçimler",
"CustomFormatSettings": "Özel Biçim Ayarları",
"DeleteCustomFormatMessageText": "Dizin oluşturucuyu '{0}' silmek istediğinizden emin misiniz?",
"DeleteCustomFormatMessageText": "'{name}' özel biçimini silmek istediğinizden emin misiniz?",
"DeleteFormatMessageText": "{0} biçim etiketini silmek istediğinizden emin misiniz?",
"ExportCustomFormat": "Özel Formatı Dışa Aktar",
"Formats": "Biçimler",
@@ -596,8 +596,8 @@
"ApplyTagsHelpTextHowToApplyIndexers": "Seçilen indeksleyicilere etiketler nasıl uygulanır?",
"ApplyTagsHelpTextRemove": "Kaldır: Girilen etiketleri kaldırın",
"ApplyTagsHelpTextReplace": "Değiştir: Etiketleri girilen etiketlerle değiştirin (tüm etiketleri kaldırmak için etiket girmeyin)",
"DeleteSelectedDownloadClients": "İndirme İstemcisini Sil",
"DeleteSelectedIndexers": "Dizinleyiciyi Sil",
"DeleteSelectedDownloadClients": "İndirme İstemcilerini Sil",
"DeleteSelectedIndexers": "Dizin Oluşturucuları Sil",
"ExistingTag": "Mevcut etiket",
"No": "Hayır",
"NoChange": "Değişiklik yok",
@@ -658,5 +658,21 @@
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Başarısız indirmeler, etkileşimli aramada bulunduğunda otomatik olarak farklı bir versiyonu arayın ve indirmeyi deneyin",
"ChangeCategoryHint": "İndirme İstemcisi'nden indirme işlemini 'İçe Aktarma Sonrası Kategorisi' olarak değiştirir",
"AutoRedownloadFailedFromInteractiveSearch": "Etkileşimli Aramadan Yeniden İndirme Başarısız Oldu",
"AutomaticAdd": "Otomatik Ekle"
"AutomaticAdd": "Otomatik Ekle",
"DeleteCondition": "Koşulu Sil",
"DeleteSelectedImportListsMessageText": "Seçilen {count} içe aktarma listesini silmek istediğinizden emin misiniz?",
"Database": "Veri tabanı",
"DeleteImportList": "İçe Aktarma Listesini Sil",
"DeleteSelectedImportLists": "İçe Aktarma Listelerini Sil",
"DeleteSelectedDownloadClientsMessageText": "Seçilen {count} indirme istemcisini silmek istediğinizden emin misiniz?",
"DeleteRootFolder": "Kök Klasörü Sil",
"DeleteSelectedIndexersMessageText": "Seçilen {count} dizin oluşturucuyu silmek istediğinizden emin misiniz?",
"DoNotBlocklist": "Engelleme Listesine Eklemeyin",
"DoNotBlocklistHint": "Engellenenler listesine eklemeden kaldır",
"CustomFormatsSettingsTriggerInfo": "Bir yayına veya dosyaya, seçilen farklı koşul türlerinden en az biriyle eşleştiğinde Özel Format uygulanacaktır.",
"ConnectionSettingsUrlBaseHelpText": "{connectionName} URL'sine {url} gibi bir önek ekler",
"DownloadClientDelugeSettingsDirectory": "İndirme Dizini",
"DownloadClientDelugeSettingsDirectoryCompleted": "Tamamlandığında Dizini Taşı",
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Tamamlanan indirmelerin taşınacağı isteğe bağlı konum; varsayılan Deluge konumunu kullanmak için boş bırakın",
"DownloadClientDelugeSettingsDirectoryHelpText": "İndirilenlerin yerleştirileceği isteğe bağlı konum; varsayılan Deluge konumunu kullanmak için boş bırakın"
}

View File

@@ -542,8 +542,8 @@
"StatusEndedEnded": "Завершено",
"ThisWillApplyToAllIndexersPleaseFollowTheRulesSetForthByThem": "Це стосується всіх індексаторів, будь ласка, дотримуйтеся встановлених ними правил",
"UnableToLoadHistory": "Не вдалося завантажити історію.",
"20MinutesTwenty": "60 хвилин: {0}",
"45MinutesFourtyFive": "60 хвилин: {0}",
"20MinutesTwenty": "20 хвилин: {0}",
"45MinutesFourtyFive": "45 хвилин: {0}",
"60MinutesSixty": "60 хвилин: {0}",
"SorryThatBookCannotBeFound": "Вибачте, цей фільм неможливо знайти.",
"ICalLink": "Посилання iCal",

View File

@@ -6,15 +6,16 @@ namespace NzbDrone.Mono.Disk
{
public static class FindDriveType
{
private static readonly Dictionary<string, DriveType> DriveTypeMap = new Dictionary<string, DriveType>
{
{ "afpfs", DriveType.Network },
{ "apfs", DriveType.Fixed },
{ "fuse.mergerfs", DriveType.Fixed },
{ "fuse.glusterfs", DriveType.Network },
{ "nullfs", DriveType.Fixed },
{ "zfs", DriveType.Fixed }
};
private static readonly Dictionary<string, DriveType> DriveTypeMap = new ()
{
{ "afpfs", DriveType.Network },
{ "apfs", DriveType.Fixed },
{ "fuse.mergerfs", DriveType.Fixed },
{ "fuse.shfs", DriveType.Fixed },
{ "fuse.glusterfs", DriveType.Network },
{ "nullfs", DriveType.Fixed },
{ "zfs", DriveType.Fixed }
};
public static DriveType Find(string driveFormat)
{

View File

@@ -196,9 +196,9 @@ namespace Readarr.Api.V1
[SkipValidation(true, false)]
[HttpPost("test")]
[Consumes("application/json")]
public object Test([FromBody] TProviderResource providerResource)
public object Test([FromBody] TProviderResource providerResource, [FromQuery] bool forceTest = false)
{
var providerDefinition = GetDefinition(providerResource, true, true, true);
var providerDefinition = GetDefinition(providerResource, true, !forceTest, true);
Test(providerDefinition, true);

View File

@@ -2628,6 +2628,16 @@
"tags": [
"DownloadClient"
],
"parameters": [
{
"name": "forceTest",
"in": "query",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"content": {
"application/json": {
@@ -3578,6 +3588,16 @@
"tags": [
"ImportList"
],
"parameters": [
{
"name": "forceTest",
"in": "query",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"content": {
"application/json": {
@@ -4055,6 +4075,16 @@
"tags": [
"Indexer"
],
"parameters": [
{
"name": "forceTest",
"in": "query",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"content": {
"application/json": {
@@ -4960,6 +4990,16 @@
"tags": [
"Metadata"
],
"parameters": [
{
"name": "forceTest",
"in": "query",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"content": {
"application/json": {
@@ -5865,6 +5905,16 @@
"tags": [
"Notification"
],
"parameters": [
{
"name": "forceTest",
"in": "query",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"content": {
"application/json": {

3302
yarn.lock

File diff suppressed because it is too large Load Diff