mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-04-22 04:47:23 -04:00
Compare commits
127 commits
v1.28.1.48
...
develop
Author | SHA1 | Date | |
---|---|---|---|
|
48a658571b | ||
|
0b3a5c9bc4 | ||
|
356d07ef34 | ||
|
0322d70d63 | ||
|
362f3fe223 | ||
|
075fd24f96 | ||
|
4ba72ea7f3 | ||
|
46f73c51bb | ||
|
3287d45661 | ||
|
71937fa44c | ||
|
6aefd46cd4 | ||
|
c8370c9e00 | ||
|
6be4203b41 | ||
|
1339373e43 | ||
|
fc9dfb0cf7 | ||
|
48301055ea | ||
|
8a9518c9c1 | ||
|
de099c6770 | ||
|
07711da4e0 | ||
|
7cb70716d0 | ||
|
548dedad5c | ||
|
7008626358 | ||
|
f6f2a3b00d | ||
|
2b16d93095 | ||
|
e63ee13d23 | ||
|
5c5a163151 | ||
|
023eec0ec0 | ||
|
5bc5f0e6b8 | ||
|
5cbacc01eb | ||
|
f4f1b38324 | ||
|
758dddd4ad | ||
|
73ee695633 | ||
|
27fbd7ef7e | ||
|
5125f256fb | ||
|
b99e8d0d65 | ||
|
d20b2cc9c0 | ||
|
8a1787bdb6 | ||
|
a19b8ea997 | ||
|
10ea6cd753 | ||
|
2c1b464715 | ||
|
3263454041 | ||
|
015db4a916 | ||
|
49268f3b8d | ||
|
f02a6f3e2c | ||
|
46b6124b97 | ||
|
53bc97b3be | ||
|
b09d4927cc | ||
|
328f3c0423 | ||
|
635e76526a | ||
|
790feed5ab | ||
|
59b5d2fc78 | ||
|
d5b12cf51a | ||
|
2d584f7eb6 | ||
|
0f1d647cd7 | ||
|
d6e8d89be4 | ||
|
8672129d5a | ||
|
44bdff8b8f | ||
|
4df8fc02f1 | ||
|
e101129cff | ||
|
147e732c9c | ||
|
a12381fb1d | ||
|
3a4de9cca1 | ||
|
43c988d951 | ||
|
a036e0fc37 | ||
|
56b9da16cf | ||
|
887c262589 | ||
|
12ff612775 | ||
|
0d3d27e46f | ||
|
d1846fde61 | ||
|
e6901506a0 | ||
|
08b4eddbc5 | ||
|
979db70e68 | ||
|
22834a852a | ||
|
f0540a5f8b | ||
|
1f7ac7d7d6 | ||
|
8ac68240ad | ||
|
b463a3f54b | ||
|
e15e57329e | ||
|
d8354408a4 | ||
|
6d2d49f7bd | ||
|
37610eec40 | ||
|
ed51208116 | ||
|
26e4dcad65 | ||
|
6eb21a02a1 | ||
|
8c2d5a404d | ||
|
3b83a00eaf | ||
|
a5a86a6f86 | ||
|
e7ed09a43d | ||
|
547bc2e58c | ||
|
8eb674c8d7 | ||
|
2c3621d25e | ||
|
2648f2c639 | ||
|
f4d621063b | ||
|
73494c462c | ||
|
36f6896f30 | ||
|
e01741a69e | ||
|
1dbff1235e | ||
|
1a9ad6b363 | ||
|
c88249300c | ||
|
7b8e352d87 | ||
|
81f7a6cbab | ||
|
523e46af2a | ||
|
2b4a6def2a | ||
|
9097c0ef6d | ||
|
4321c1d40c | ||
|
bb2548a08d | ||
|
3a9b841fad | ||
|
31203d1370 | ||
|
c8a910eaf4 | ||
|
9ab3c3e6c7 | ||
|
4659cb706a | ||
|
500759bf1f | ||
|
43c7c43257 | ||
|
9c2fced391 | ||
|
52ec5b6ff6 | ||
|
b46e657976 | ||
|
51fd30ba10 | ||
|
5fbb347108 | ||
|
54d3d44620 | ||
|
5ca18683ca | ||
|
6bdf5f5d69 | ||
|
7cba7152f1 | ||
|
cf012eb001 | ||
|
6b8a7993ff | ||
|
c6440bb21b | ||
|
b95eac98b9 | ||
|
0eb19ce834 |
127 changed files with 3193 additions and 1730 deletions
|
@ -9,7 +9,7 @@ variables:
|
|||
testsFolder: './_tests'
|
||||
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
||||
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
||||
majorVersion: '1.28.1'
|
||||
majorVersion: '1.35.0'
|
||||
minorVersion: $[counter('minorVersion', 1)]
|
||||
prowlarrVersion: '$(majorVersion).$(minorVersion)'
|
||||
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
|
||||
|
@ -19,7 +19,7 @@ variables:
|
|||
nodeVersion: '20.X'
|
||||
innoVersion: '6.2.2'
|
||||
windowsImage: 'windows-2022'
|
||||
linuxImage: 'ubuntu-20.04'
|
||||
linuxImage: 'ubuntu-22.04'
|
||||
macImage: 'macOS-13'
|
||||
|
||||
trigger:
|
||||
|
@ -1169,12 +1169,12 @@ stages:
|
|||
submodules: true
|
||||
- powershell: Set-Service SCardSvr -StartupType Manual
|
||||
displayName: Enable Windows Test Service
|
||||
- task: SonarCloudPrepare@2
|
||||
- task: SonarCloudPrepare@3
|
||||
condition: eq(variables['System.PullRequest.IsFork'], 'False')
|
||||
inputs:
|
||||
SonarCloud: 'SonarCloud'
|
||||
organization: 'prowlarr'
|
||||
scannerMode: 'MSBuild'
|
||||
scannerMode: 'dotnet'
|
||||
projectKey: 'Prowlarr_Prowlarr'
|
||||
projectName: 'Prowlarr'
|
||||
projectVersion: '$(prowlarrVersion)'
|
||||
|
@ -1187,7 +1187,7 @@ stages:
|
|||
./build.sh --backend -f net6.0 -r win-x64
|
||||
TEST_DIR=_tests/net6.0/win-x64/publish/ ./test.sh Windows Unit Coverage
|
||||
displayName: Coverage Unit Tests
|
||||
- task: SonarCloudAnalyze@2
|
||||
- task: SonarCloudAnalyze@3
|
||||
condition: eq(variables['System.PullRequest.IsFork'], 'False')
|
||||
displayName: Publish SonarCloud Results
|
||||
- task: reportgenerator@5.3.11
|
||||
|
|
11
docs.sh
11
docs.sh
|
@ -3,15 +3,16 @@ set -e
|
|||
|
||||
FRAMEWORK="net6.0"
|
||||
PLATFORM=$1
|
||||
ARCHITECTURE="${2:-x64}"
|
||||
|
||||
if [ "$PLATFORM" = "Windows" ]; then
|
||||
RUNTIME="win-x64"
|
||||
RUNTIME="win-$ARCHITECTURE"
|
||||
elif [ "$PLATFORM" = "Linux" ]; then
|
||||
RUNTIME="linux-x64"
|
||||
RUNTIME="linux-$ARCHITECTURE"
|
||||
elif [ "$PLATFORM" = "Mac" ]; then
|
||||
RUNTIME="osx-x64"
|
||||
RUNTIME="osx-$ARCHITECTURE"
|
||||
else
|
||||
echo "Platform must be provided as first arguement: Windows, Linux or Mac"
|
||||
echo "Platform must be provided as first argument: Windows, Linux or Mac"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -37,7 +38,7 @@ dotnet clean $slnFile -c Release
|
|||
dotnet msbuild -restore $slnFile -p:Configuration=Debug -p:Platform=$platform -p:RuntimeIdentifiers=$RUNTIME -t:PublishAllRids
|
||||
|
||||
dotnet new tool-manifest
|
||||
dotnet tool install --version 6.6.2 Swashbuckle.AspNetCore.Cli
|
||||
dotnet tool install --version 7.3.2 Swashbuckle.AspNetCore.Cli
|
||||
|
||||
dotnet tool run swagger tofile --output ./src/Prowlarr.Api.V1/openapi.json "$outputFolder/$FRAMEWORK/$RUNTIME/$application" v1 &
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ module.exports = (env) => {
|
|||
loose: true,
|
||||
debug: false,
|
||||
useBuiltIns: 'entry',
|
||||
corejs: 3
|
||||
corejs: '3.39'
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -20,6 +20,8 @@ import HintedSelectInputSelectedValue from './HintedSelectInputSelectedValue';
|
|||
import TextInput from './TextInput';
|
||||
import styles from './EnhancedSelectInput.css';
|
||||
|
||||
const MINIMUM_DISTANCE_FROM_EDGE = 10;
|
||||
|
||||
function isArrowKey(keyCode) {
|
||||
return keyCode === keyCodes.UP_ARROW || keyCode === keyCodes.DOWN_ARROW;
|
||||
}
|
||||
|
@ -137,18 +139,9 @@ class EnhancedSelectInput extends Component {
|
|||
// Listeners
|
||||
|
||||
onComputeMaxHeight = (data) => {
|
||||
const {
|
||||
top,
|
||||
bottom
|
||||
} = data.offsets.reference;
|
||||
|
||||
const windowHeight = window.innerHeight;
|
||||
|
||||
if ((/^botton/).test(data.placement)) {
|
||||
data.styles.maxHeight = windowHeight - bottom;
|
||||
} else {
|
||||
data.styles.maxHeight = top;
|
||||
}
|
||||
data.styles.maxHeight = windowHeight - MINIMUM_DISTANCE_FROM_EDGE;
|
||||
|
||||
return data;
|
||||
};
|
||||
|
@ -460,6 +453,10 @@ class EnhancedSelectInput extends Component {
|
|||
order: 851,
|
||||
enabled: true,
|
||||
fn: this.onComputeMaxHeight
|
||||
},
|
||||
preventOverflow: {
|
||||
enabled: true,
|
||||
boundariesElement: 'viewport'
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
composes: link;
|
||||
|
||||
padding: 10px 24px;
|
||||
padding-left: 35px;
|
||||
}
|
||||
|
||||
.isActiveLink {
|
||||
|
@ -41,10 +42,6 @@
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.noIcon {
|
||||
margin-left: 25px;
|
||||
}
|
||||
|
||||
.status {
|
||||
float: right;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ interface CssExports {
|
|||
'isActiveParentLink': string;
|
||||
'item': string;
|
||||
'link': string;
|
||||
'noIcon': string;
|
||||
'status': string;
|
||||
}
|
||||
export const cssExports: CssExports;
|
||||
|
|
|
@ -63,9 +63,7 @@ class PageSidebarItem extends Component {
|
|||
</span>
|
||||
}
|
||||
|
||||
<span className={isChildItem ? styles.noIcon : null}>
|
||||
{typeof title === 'function' ? title() : title}
|
||||
</span>
|
||||
{typeof title === 'function' ? title() : title}
|
||||
|
||||
{
|
||||
!!StatusComponent &&
|
||||
|
|
|
@ -22,11 +22,14 @@
|
|||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.label {
|
||||
padding: 0 3px;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
color: var(--toolbarLabelColor);
|
||||
font-size: $extraSmallFontSize;
|
||||
line-height: calc($extraSmallFontSize + 1px);
|
||||
|
|
|
@ -23,6 +23,7 @@ function PageToolbarButton(props) {
|
|||
isDisabled && styles.isDisabled
|
||||
)}
|
||||
isDisabled={isDisabled || isSpinning}
|
||||
title={label}
|
||||
{...otherProps}
|
||||
>
|
||||
<Icon
|
||||
|
|
|
@ -17,7 +17,7 @@ export async function fetchTranslations(): Promise<boolean> {
|
|||
translations = data.Strings;
|
||||
|
||||
resolve(true);
|
||||
} catch (error) {
|
||||
} catch {
|
||||
resolve(false);
|
||||
}
|
||||
});
|
||||
|
|
28
package.json
28
package.json
|
@ -23,10 +23,10 @@
|
|||
"defaults"
|
||||
],
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "6.6.0",
|
||||
"@fortawesome/fontawesome-svg-core": "6.6.0",
|
||||
"@fortawesome/free-regular-svg-icons": "6.6.0",
|
||||
"@fortawesome/free-solid-svg-icons": "6.6.0",
|
||||
"@fortawesome/fontawesome-free": "6.7.1",
|
||||
"@fortawesome/fontawesome-svg-core": "6.7.1",
|
||||
"@fortawesome/free-regular-svg-icons": "6.7.1",
|
||||
"@fortawesome/free-solid-svg-icons": "6.7.1",
|
||||
"@fortawesome/react-fontawesome": "0.2.2",
|
||||
"@juggle/resize-observer": "3.4.0",
|
||||
"@microsoft/signalr": "6.0.25",
|
||||
|
@ -81,30 +81,30 @@
|
|||
"redux-thunk": "2.4.2",
|
||||
"reselect": "4.1.8",
|
||||
"stacktrace-js": "2.0.2",
|
||||
"typescript": "5.1.6"
|
||||
"typescript": "5.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.25.8",
|
||||
"@babel/eslint-parser": "7.25.8",
|
||||
"@babel/plugin-proposal-export-default-from": "7.25.8",
|
||||
"@babel/core": "7.26.0",
|
||||
"@babel/eslint-parser": "7.25.9",
|
||||
"@babel/plugin-proposal-export-default-from": "7.25.9",
|
||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||
"@babel/preset-env": "7.25.8",
|
||||
"@babel/preset-react": "7.25.7",
|
||||
"@babel/preset-typescript": "7.25.7",
|
||||
"@babel/preset-env": "7.26.0",
|
||||
"@babel/preset-react": "7.26.3",
|
||||
"@babel/preset-typescript": "7.26.0",
|
||||
"@types/lodash": "4.14.195",
|
||||
"@types/react-document-title": "2.0.10",
|
||||
"@types/react-router-dom": "5.3.3",
|
||||
"@types/react-text-truncate": "0.19.0",
|
||||
"@types/react-window": "1.8.8",
|
||||
"@types/webpack-livereload-plugin": "2.3.6",
|
||||
"@typescript-eslint/eslint-plugin": "6.21.0",
|
||||
"@typescript-eslint/parser": "6.21.0",
|
||||
"@typescript-eslint/eslint-plugin": "8.18.1",
|
||||
"@typescript-eslint/parser": "8.18.1",
|
||||
"are-you-es5": "2.1.2",
|
||||
"autoprefixer": "10.4.20",
|
||||
"babel-loader": "9.2.1",
|
||||
"babel-plugin-inline-classnames": "2.0.1",
|
||||
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
|
||||
"core-js": "3.38.1",
|
||||
"core-js": "3.39.0",
|
||||
"css-loader": "6.7.3",
|
||||
"css-modules-typescript-loader": "4.0.1",
|
||||
"eslint": "8.57.1",
|
||||
|
|
|
@ -221,7 +221,7 @@
|
|||
<PropertyGroup Condition="'$(IsOSX)' == 'true' and
|
||||
'$(RuntimeIdentifier)' == ''">
|
||||
<_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
|
||||
<RuntimeIdentifier>osx-x64</RuntimeIdentifier>
|
||||
<RuntimeIdentifier>osx-$(Architecture)</RuntimeIdentifier>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Selenium.Support" Version="4.1.0" />
|
||||
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="99.0.4844.5100" />
|
||||
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="134.0.6998.16500" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\NzbDrone.Test.Common\Prowlarr.Test.Common.csproj" />
|
||||
|
|
|
@ -30,6 +30,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
|
|||
[TestCase(@"https://anthelion.me/api.php?api_key=2b51db35e1910123321025a12b9933d2&o=json&t=movie&q=&tmdb=&imdb=&cat=&limit=100&offset=0")]
|
||||
[TestCase(@"https://avistaz.to/api/v1/jackett/auth: username=mySecret&password=mySecret&pid=mySecret")]
|
||||
[TestCase(@"https://www.sharewood.tv/api/2b51db35e1910123321025a12b9933d2/last-torrents")]
|
||||
[TestCase(@"https://example.org/rss/torrents?rsskey=2b51db35e1910123321025a12b9933d2&search=")]
|
||||
|
||||
// Indexer and Download Client Responses
|
||||
|
||||
|
|
|
@ -42,17 +42,18 @@ namespace NzbDrone.Common
|
|||
|
||||
public void CreateZip(string path, IEnumerable<string> files)
|
||||
{
|
||||
using (var zipFile = ZipFile.Create(path))
|
||||
_logger.Debug("Creating archive {0}", path);
|
||||
|
||||
using var zipFile = ZipFile.Create(path);
|
||||
|
||||
zipFile.BeginUpdate();
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
zipFile.BeginUpdate();
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
zipFile.Add(file, Path.GetFileName(file));
|
||||
}
|
||||
|
||||
zipFile.CommitUpdate();
|
||||
zipFile.Add(file, Path.GetFileName(file));
|
||||
}
|
||||
|
||||
zipFile.CommitUpdate();
|
||||
}
|
||||
|
||||
private void ExtractZip(string compressedFile, string destination)
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace NzbDrone.Common.Instrumentation
|
|||
private static readonly Regex[] CleansingRules =
|
||||
{
|
||||
// Url
|
||||
new (@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|rsskey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?<=[?& ;])[^=]*?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"rss(24h)?\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
using System.Text;
|
||||
using NLog;
|
||||
using NLog.Layouts.ClefJsonLayout;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
|
||||
namespace NzbDrone.Common.Instrumentation;
|
||||
|
||||
public class CleansingClefLogLayout : CompactJsonLayout
|
||||
{
|
||||
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
|
||||
{
|
||||
base.RenderFormattedMessage(logEvent, target);
|
||||
|
||||
if (RuntimeInfo.IsProduction)
|
||||
{
|
||||
var result = CleanseLogMessage.Cleanse(target.ToString());
|
||||
target.Clear();
|
||||
target.Append(result);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
using System.Text;
|
||||
using NLog;
|
||||
using NLog.Layouts;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
|
||||
namespace NzbDrone.Common.Instrumentation;
|
||||
|
||||
public class CleansingConsoleLogLayout : SimpleLayout
|
||||
{
|
||||
public CleansingConsoleLogLayout(string format)
|
||||
: base(format)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
|
||||
{
|
||||
base.RenderFormattedMessage(logEvent, target);
|
||||
|
||||
if (RuntimeInfo.IsProduction)
|
||||
{
|
||||
var result = CleanseLogMessage.Cleanse(target.ToString());
|
||||
target.Clear();
|
||||
target.Append(result);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,7 +4,7 @@ using NLog.Targets;
|
|||
|
||||
namespace NzbDrone.Common.Instrumentation
|
||||
{
|
||||
public class NzbDroneFileTarget : FileTarget
|
||||
public class CleansingFileTarget : FileTarget
|
||||
{
|
||||
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
|
||||
{
|
|
@ -3,7 +3,6 @@ using System.Diagnostics;
|
|||
using System.IO;
|
||||
using NLog;
|
||||
using NLog.Config;
|
||||
using NLog.Layouts.ClefJsonLayout;
|
||||
using NLog.Targets;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Extensions;
|
||||
|
@ -13,9 +12,11 @@ namespace NzbDrone.Common.Instrumentation
|
|||
{
|
||||
public static class NzbDroneLogger
|
||||
{
|
||||
private const string FILE_LOG_LAYOUT = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
|
||||
public const string ConsoleLogLayout = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
|
||||
public static CompactJsonLayout ClefLogLayout = new CompactJsonLayout();
|
||||
private const string FileLogLayout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
|
||||
private const string ConsoleFormat = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
|
||||
|
||||
private static readonly CleansingConsoleLogLayout CleansingConsoleLayout = new (ConsoleFormat);
|
||||
private static readonly CleansingClefLogLayout ClefLogLayout = new ();
|
||||
|
||||
private static bool _isConfigured;
|
||||
|
||||
|
@ -119,11 +120,7 @@ namespace NzbDrone.Common.Instrumentation
|
|||
? formatEnumValue
|
||||
: ConsoleLogFormat.Standard;
|
||||
|
||||
coloredConsoleTarget.Layout = logFormat switch
|
||||
{
|
||||
ConsoleLogFormat.Clef => ClefLogLayout,
|
||||
_ => ConsoleLogLayout
|
||||
};
|
||||
ConfigureConsoleLayout(coloredConsoleTarget, logFormat);
|
||||
|
||||
var loggingRule = new LoggingRule("*", level, coloredConsoleTarget);
|
||||
|
||||
|
@ -140,7 +137,7 @@ namespace NzbDrone.Common.Instrumentation
|
|||
|
||||
private static void RegisterAppFile(IAppFolderInfo appFolderInfo, string name, string fileName, int maxArchiveFiles, LogLevel minLogLevel)
|
||||
{
|
||||
var fileTarget = new NzbDroneFileTarget();
|
||||
var fileTarget = new CleansingFileTarget();
|
||||
|
||||
fileTarget.Name = name;
|
||||
fileTarget.FileName = Path.Combine(appFolderInfo.GetLogFolder(), fileName);
|
||||
|
@ -153,7 +150,7 @@ namespace NzbDrone.Common.Instrumentation
|
|||
fileTarget.MaxArchiveFiles = maxArchiveFiles;
|
||||
fileTarget.EnableFileDelete = true;
|
||||
fileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling;
|
||||
fileTarget.Layout = FILE_LOG_LAYOUT;
|
||||
fileTarget.Layout = FileLogLayout;
|
||||
|
||||
var loggingRule = new LoggingRule("*", minLogLevel, fileTarget);
|
||||
|
||||
|
@ -172,7 +169,7 @@ namespace NzbDrone.Common.Instrumentation
|
|||
fileTarget.ConcurrentWrites = false;
|
||||
fileTarget.ConcurrentWriteAttemptDelay = 50;
|
||||
fileTarget.ConcurrentWriteAttempts = 100;
|
||||
fileTarget.Layout = FILE_LOG_LAYOUT;
|
||||
fileTarget.Layout = FileLogLayout;
|
||||
|
||||
var loggingRule = new LoggingRule("*", LogLevel.Trace, fileTarget);
|
||||
|
||||
|
@ -217,6 +214,15 @@ namespace NzbDrone.Common.Instrumentation
|
|||
{
|
||||
return GetLogger(obj.GetType());
|
||||
}
|
||||
|
||||
public static void ConfigureConsoleLayout(ColoredConsoleTarget target, ConsoleLogFormat format)
|
||||
{
|
||||
target.Layout = format switch
|
||||
{
|
||||
ConsoleLogFormat.Clef => NzbDroneLogger.ClefLogLayout,
|
||||
_ => NzbDroneLogger.CleansingConsoleLayout
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public enum ConsoleLogFormat
|
||||
|
|
|
@ -119,7 +119,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
|||
o.Environment = BuildInfo.Branch;
|
||||
|
||||
// Crash free run statistics (sends a ping for healthy and for crashes sessions)
|
||||
o.AutoSessionTracking = true;
|
||||
o.AutoSessionTracking = false;
|
||||
|
||||
// Caches files in the event device is offline
|
||||
// Sentry creates a 'sentry' sub directory, no need to concat here
|
||||
|
@ -148,7 +148,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
|||
_debounce = new SentryDebounce();
|
||||
|
||||
// initialize to true and reconfigure later
|
||||
// Otherwise it will default to false and any errors occuring
|
||||
// Otherwise it will default to false and any errors occurring
|
||||
// before config file gets read will not be filtered
|
||||
FilterEvents = true;
|
||||
SentryEnabled = true;
|
||||
|
@ -207,9 +207,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
|||
|
||||
private void OnError(Exception ex)
|
||||
{
|
||||
var webException = ex as WebException;
|
||||
|
||||
if (webException != null)
|
||||
if (ex is WebException webException)
|
||||
{
|
||||
var response = webException.Response as HttpWebResponse;
|
||||
var statusCode = response?.StatusCode;
|
||||
|
|
|
@ -6,6 +6,7 @@ using System.ComponentModel;
|
|||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Model;
|
||||
|
@ -117,7 +118,9 @@ namespace NzbDrone.Common.Processes
|
|||
UseShellExecute = false,
|
||||
RedirectStandardError = true,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardInput = true
|
||||
RedirectStandardInput = true,
|
||||
StandardOutputEncoding = Encoding.UTF8,
|
||||
StandardErrorEncoding = Encoding.UTF8
|
||||
};
|
||||
|
||||
if (environmentVariables != null)
|
||||
|
@ -313,7 +316,7 @@ namespace NzbDrone.Common.Processes
|
|||
processInfo = new ProcessInfo();
|
||||
processInfo.Id = process.Id;
|
||||
processInfo.Name = process.ProcessName;
|
||||
processInfo.StartPath = process.MainModule.FileName;
|
||||
processInfo.StartPath = process.MainModule?.FileName;
|
||||
|
||||
if (process.Id != GetCurrentProcessId() && process.HasExited)
|
||||
{
|
||||
|
|
|
@ -5,20 +5,21 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DryIoc.dll" Version="5.4.3" />
|
||||
<PackageReference Include="IPAddressRange" Version="6.1.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.2" />
|
||||
<PackageReference Include="IPAddressRange" Version="6.2.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.2" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.3" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="NLog" Version="5.3.3" />
|
||||
<PackageReference Include="NLog.Layouts.ClefJsonLayout" Version="1.0.0" />
|
||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.12" />
|
||||
<PackageReference Include="Npgsql" Version="7.0.9" />
|
||||
<PackageReference Include="NLog" Version="5.4.0" />
|
||||
<PackageReference Include="NLog.Layouts.ClefJsonLayout" Version="1.0.3" />
|
||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.4.0" />
|
||||
<PackageReference Include="Npgsql" Version="7.0.10" />
|
||||
<PackageReference Include="Sentry" Version="4.0.2" />
|
||||
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
|
||||
<PackageReference Include="SharpZipLib" Version="1.4.2" />
|
||||
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="6.0.11" />
|
||||
<PackageReference Include="System.ValueTuple" Version="4.6.1" />
|
||||
<PackageReference Include="System.Data.SQLite.Core.Servarr" Version="1.0.115.5-18" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.1" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.2" />
|
||||
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
|
||||
<PackageReference Include="System.Runtime.Loader" Version="4.3.0" />
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.1" />
|
||||
|
|
|
@ -122,7 +122,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AnimeBytesTests
|
|||
|
||||
var fifthTorrentInfo = releases.ElementAt(28) as TorrentInfo;
|
||||
|
||||
fifthTorrentInfo.Title.Should().Be("[-ZR-] Dr. STONE: STONE WARS S02 [Web][MKV][h264][1080p][AAC 2.0][Dual Audio][Softsubs (-ZR-)]");
|
||||
fifthTorrentInfo.Title.Should().Be("[-ZR-] Dr. STONE: STONE WARS 2021 S02 [Web][MKV][h264][1080p][AAC 2.0][Dual Audio][Softsubs (-ZR-)]");
|
||||
fifthTorrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
|
||||
fifthTorrentInfo.DownloadUrl.Should().Be("https://animebytes.tv/torrent/944509/download/somepass");
|
||||
fifthTorrentInfo.InfoUrl.Should().Be("https://animebytes.tv/torrent/944509/group");
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.IndexerTests.FileListTests
|
|||
torrentInfo.InfoUrl.Should().Be("https://filelist.io/details.php?id=665873");
|
||||
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
|
||||
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
|
||||
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 20:20:19"));
|
||||
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 19:20:19"));
|
||||
torrentInfo.Size.Should().Be(8300512414);
|
||||
torrentInfo.InfoHash.Should().Be(null);
|
||||
torrentInfo.MagnetUrl.Should().Be(null);
|
||||
|
|
|
@ -26,15 +26,15 @@ namespace NzbDrone.Core.Test.IndexerTests.HDBitsTests
|
|||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
Subject.Definition = new IndexerDefinition()
|
||||
Subject.Definition = new IndexerDefinition
|
||||
{
|
||||
Name = "HdBits",
|
||||
Settings = new HDBitsSettings() { ApiKey = "fakekey" }
|
||||
Settings = new HDBitsSettings { ApiKey = "fakekey" }
|
||||
};
|
||||
|
||||
_movieSearchCriteria = new MovieSearchCriteria
|
||||
{
|
||||
Categories = new int[] { 2000, 2010 },
|
||||
Categories = new[] { 2000, 2010 },
|
||||
ImdbId = "0076759"
|
||||
};
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.IndexerTests.HDBitsTests
|
|||
var torrents = (await Subject.Fetch(_movieSearchCriteria)).Releases;
|
||||
|
||||
torrents.Should().HaveCount(2);
|
||||
torrents.First().Should().BeOfType<HDBitsInfo>();
|
||||
torrents.First().Should().BeOfType<TorrentInfo>();
|
||||
|
||||
var first = torrents.First() as TorrentInfo;
|
||||
|
||||
|
|
|
@ -66,12 +66,19 @@ namespace NzbDrone.Core.Backup
|
|||
{
|
||||
_logger.ProgressInfo("Starting Backup");
|
||||
|
||||
var backupFolder = GetBackupFolder(backupType);
|
||||
|
||||
_diskProvider.EnsureFolder(_backupTempFolder);
|
||||
_diskProvider.EnsureFolder(GetBackupFolder(backupType));
|
||||
_diskProvider.EnsureFolder(backupFolder);
|
||||
|
||||
if (!_diskProvider.FolderWritable(backupFolder))
|
||||
{
|
||||
throw new UnauthorizedAccessException($"Backup folder {backupFolder} is not writable");
|
||||
}
|
||||
|
||||
var dateNow = DateTime.Now;
|
||||
var backupFilename = $"prowlarr_backup_v{BuildInfo.Version}_{dateNow:yyyy.MM.dd_HH.mm.ss}.zip";
|
||||
var backupPath = Path.Combine(GetBackupFolder(backupType), backupFilename);
|
||||
var backupPath = Path.Combine(backupFolder, backupFilename);
|
||||
|
||||
Cleanup();
|
||||
|
||||
|
|
|
@ -274,7 +274,7 @@ namespace NzbDrone.Core.Configuration
|
|||
{
|
||||
var instanceName = _appOptions.InstanceName ?? GetValue("InstanceName", BuildInfo.AppName);
|
||||
|
||||
if (instanceName.ContainsIgnoreCase(BuildInfo.AppName))
|
||||
if (instanceName.Contains(BuildInfo.AppName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return instanceName;
|
||||
}
|
||||
|
|
|
@ -254,7 +254,7 @@ namespace NzbDrone.Core.Datastore
|
|||
|
||||
protected void Delete(SqlBuilder builder)
|
||||
{
|
||||
var sql = builder.AddDeleteTemplate(typeof(TModel)).LogQuery();
|
||||
var sql = builder.AddDeleteTemplate(typeof(TModel));
|
||||
|
||||
using (var conn = _database.OpenConnection())
|
||||
{
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using Dapper;
|
||||
using FluentMigrator;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration
|
||||
{
|
||||
[Migration(042)]
|
||||
public class myanonamouse_freeleech_wedge_options : NzbDroneMigrationBase
|
||||
{
|
||||
protected override void MainDbUpgrade()
|
||||
{
|
||||
Execute.WithConnection(MigrateIndexersToWedgeOptions);
|
||||
}
|
||||
|
||||
private void MigrateIndexersToWedgeOptions(IDbConnection conn, IDbTransaction tran)
|
||||
{
|
||||
var updated = new List<object>();
|
||||
|
||||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
cmd.Transaction = tran;
|
||||
cmd.CommandText = "SELECT \"Id\", \"Settings\" FROM \"Indexers\" WHERE \"Implementation\" = 'MyAnonamouse'";
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
var id = reader.GetInt32(0);
|
||||
var settings = Json.Deserialize<JObject>(reader.GetString(1));
|
||||
|
||||
if (settings.ContainsKey("freeleech") && settings.Value<JToken>("freeleech").Type == JTokenType.Boolean)
|
||||
{
|
||||
var optionValue = settings.Value<bool>("freeleech") switch
|
||||
{
|
||||
true => 2, // Required
|
||||
_ => 0 // Never
|
||||
};
|
||||
|
||||
settings.Remove("freeleech");
|
||||
settings.Add("useFreeleechWedge", optionValue);
|
||||
}
|
||||
|
||||
updated.Add(new
|
||||
{
|
||||
Id = id,
|
||||
Settings = settings.ToJson()
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var updateSql = "UPDATE \"Indexers\" SET \"Settings\" = @Settings WHERE \"Id\" = @Id";
|
||||
conn.Execute(updateSql, updated, transaction: tran);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
|
@ -25,8 +26,9 @@ namespace NzbDrone.Core.Download.Clients.Aria2
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Blackhole
|
||||
|
@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Blackhole
|
||||
|
@ -16,8 +17,9 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
|
|||
public UsenetBlackhole(IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
|
@ -23,8 +24,9 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ using NzbDrone.Common.Extensions;
|
|||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.Clients.DownloadStation.Proxies;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
@ -33,8 +34,9 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_dsInfoProxy = dsInfoProxy;
|
||||
_dsTaskProxySelector = dsTaskProxySelector;
|
||||
|
|
|
@ -9,6 +9,7 @@ using NzbDrone.Common.Extensions;
|
|||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.Clients.DownloadStation.Proxies;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
@ -31,8 +32,9 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
|
|||
IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_dsInfoProxy = dsInfoProxy;
|
||||
_dsTaskProxySelector = dsTaskProxySelector;
|
||||
|
|
|
@ -8,6 +8,7 @@ using NzbDrone.Common.Extensions;
|
|||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.Clients.Flood.Models;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
|
||||
|
@ -22,8 +23,9 @@ namespace NzbDrone.Core.Download.Clients.Flood
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.FreeboxDownload
|
||||
|
@ -19,8 +20,9 @@ namespace NzbDrone.Core.Download.Clients.FreeboxDownload
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
|
@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Hadouken
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
|
@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.NzbVortex
|
|||
IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ using NzbDrone.Common.Extensions;
|
|||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Exceptions;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
|
@ -18,15 +19,14 @@ namespace NzbDrone.Core.Download.Clients.Nzbget
|
|||
public class Nzbget : UsenetClientBase<NzbgetSettings>
|
||||
{
|
||||
private readonly INzbgetProxy _proxy;
|
||||
private readonly string[] _successStatus = { "SUCCESS", "NONE" };
|
||||
private readonly string[] _deleteFailedStatus = { "HEALTH", "DUPE", "SCAN", "COPY", "BAD" };
|
||||
|
||||
public Nzbget(INzbgetProxy proxy,
|
||||
IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
|
@ -17,8 +18,9 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic
|
|||
{
|
||||
public Pneumatic(IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(configService, diskProvider, logger)
|
||||
: base(configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
|
@ -30,8 +31,9 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
|||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ICacheManager cacheManager,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxySelector = proxySelector;
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ using NzbDrone.Common.Extensions;
|
|||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Exceptions;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
|
@ -22,8 +23,9 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
|||
IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ using NLog;
|
|||
using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Transmission
|
||||
{
|
||||
|
@ -15,8 +16,9 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
|
@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ using System.Net;
|
|||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Cache;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
|
@ -208,7 +209,7 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
|||
|
||||
private void AuthenticateClient(HttpRequestBuilder requestBuilder, TransmissionSettings settings, bool reauthenticate = false)
|
||||
{
|
||||
var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password);
|
||||
var authKey = $"{requestBuilder.BaseUrl}:{settings.Password}";
|
||||
|
||||
var sessionId = _authSessionIDCache.Find(authKey);
|
||||
|
||||
|
@ -220,24 +221,26 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
|||
authLoginRequest.SuppressHttpError = true;
|
||||
|
||||
var response = _httpClient.Execute(authLoginRequest);
|
||||
if (response.StatusCode == HttpStatusCode.MovedPermanently)
|
||||
{
|
||||
var url = response.Headers.GetSingleValue("Location");
|
||||
|
||||
throw new DownloadClientException("Remote site redirected to " + url);
|
||||
}
|
||||
else if (response.StatusCode == HttpStatusCode.Conflict)
|
||||
switch (response.StatusCode)
|
||||
{
|
||||
sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
|
||||
case HttpStatusCode.MovedPermanently:
|
||||
var url = response.Headers.GetSingleValue("Location");
|
||||
|
||||
if (sessionId == null)
|
||||
{
|
||||
throw new DownloadClientException("Remote host did not return a Session Id.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
|
||||
throw new DownloadClientException("Remote site redirected to " + url);
|
||||
case HttpStatusCode.Forbidden:
|
||||
throw new DownloadClientException($"Failed to authenticate with Transmission. It may be necessary to add {BuildInfo.AppName}'s IP address to RPC whitelist.");
|
||||
case HttpStatusCode.Conflict:
|
||||
sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
|
||||
|
||||
if (sessionId == null)
|
||||
{
|
||||
throw new DownloadClientException("Remote host did not return a Session Id.");
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
|
||||
}
|
||||
|
||||
_logger.Debug("Transmission authentication succeeded.");
|
||||
|
|
|
@ -4,6 +4,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.Clients.Transmission;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Vuze
|
||||
{
|
||||
|
@ -16,8 +17,9 @@ namespace NzbDrone.Core.Download.Clients.Vuze
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ using NzbDrone.Core.Configuration;
|
|||
using NzbDrone.Core.Download.Clients.rTorrent;
|
||||
using NzbDrone.Core.Exceptions;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
@ -27,8 +28,9 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
|
|||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
IRTorrentDirectoryValidator rTorrentDirectoryValidator,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
_rTorrentDirectoryValidator = rTorrentDirectoryValidator;
|
||||
|
|
|
@ -7,7 +7,9 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.UTorrent
|
||||
|
@ -21,8 +23,9 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@ -72,6 +75,9 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
|
|||
}
|
||||
|
||||
public override string Name => "uTorrent";
|
||||
|
||||
public override ProviderMessage Message => new (_localizationService.GetLocalizedString("DownloadClientUTorrentProviderMessage"), ProviderMessageType.Warning);
|
||||
|
||||
public override bool SupportsCategories => true;
|
||||
|
||||
protected override void Test(List<ValidationFailure> failures)
|
||||
|
|
|
@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
@ -19,6 +20,7 @@ namespace NzbDrone.Core.Download
|
|||
{
|
||||
protected readonly IConfigService _configService;
|
||||
protected readonly IDiskProvider _diskProvider;
|
||||
protected readonly ILocalizationService _localizationService;
|
||||
protected readonly Logger _logger;
|
||||
|
||||
public abstract string Name { get; }
|
||||
|
@ -40,10 +42,12 @@ namespace NzbDrone.Core.Download
|
|||
|
||||
protected DownloadClientBase(IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
{
|
||||
_configService = configService;
|
||||
_diskProvider = diskProvider;
|
||||
_localizationService = localizationService;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ using NzbDrone.Common.Extensions;
|
|||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Exceptions;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
|
@ -24,8 +25,9 @@ namespace NzbDrone.Core.Download
|
|||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(configService, diskProvider, logger)
|
||||
: base(configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_torrentFileInfoReader = torrentFileInfoReader;
|
||||
_seedConfigProvider = seedConfigProvider;
|
||||
|
|
|
@ -5,6 +5,7 @@ using NzbDrone.Common.Disk;
|
|||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
|
@ -19,8 +20,9 @@ namespace NzbDrone.Core.Download
|
|||
protected UsenetClientBase(IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(configService, diskProvider, logger)
|
||||
: base(configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_httpClient = httpClient;
|
||||
}
|
||||
|
|
|
@ -224,7 +224,7 @@ namespace NzbDrone.Core.History
|
|||
|
||||
if (message.Release.PublishDate != DateTime.MinValue)
|
||||
{
|
||||
history.Data.Add("PublishedDate", message.Release.PublishDate.ToString("s") + "Z");
|
||||
history.Data.Add("PublishedDate", message.Release.PublishDate.ToUniversalTime().ToString("s") + "Z");
|
||||
}
|
||||
|
||||
_historyRepository.Insert(history);
|
||||
|
|
|
@ -232,7 +232,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
if (queryCats.Any() && searchCriteria is TvSearchCriteria { Season: > 0 })
|
||||
{
|
||||
// Avoid searching for specials if it's a non-zero season search
|
||||
queryCats.RemoveAll(cat => cat is "anime[tv_special]" or "anime[ova]" or "anime[ona]" or "anime[dvd_special]" or "anime[bd_special]");
|
||||
queryCats.RemoveAll(cat => cat is "anime[tv_special]" or "anime[ova]" or "anime[dvd_special]" or "anime[bd_special]");
|
||||
}
|
||||
|
||||
if (queryCats.Any())
|
||||
|
@ -301,6 +301,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
};
|
||||
private static readonly HashSet<string> ExcludedFileExtensions = new (StringComparer.OrdinalIgnoreCase) { ".mka", ".mds", ".md5", ".nfo", ".sfv", ".ass", ".mks", ".srt", ".ssa", ".sup", ".jpeg", ".jpg", ".png", ".otf", ".ttf" };
|
||||
|
||||
private static readonly string[] PropertiesSeparator = { " | ", " / " };
|
||||
|
||||
private readonly AnimeBytesSettings _settings;
|
||||
|
||||
public AnimeBytesParser(AnimeBytesSettings settings)
|
||||
|
@ -324,6 +326,11 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
var response = STJson.Deserialize<AnimeBytesResponse>(indexerResponse.Content);
|
||||
|
||||
if (response.Error.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
throw new IndexerException(indexerResponse, "Unexpected response from indexer request: {0}", response.Error);
|
||||
}
|
||||
|
||||
if (response.Matches == 0)
|
||||
{
|
||||
return releaseInfos.ToArray();
|
||||
|
@ -393,38 +400,48 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
var minimumSeedTime = 259200 + (int)(size / (int)Math.Pow(1024, 3) * 18000);
|
||||
|
||||
var propertyList = WebUtility.HtmlDecode(torrent.Property)
|
||||
.Split(new[] { " | ", " / " }, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)
|
||||
.Split(PropertiesSeparator, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)
|
||||
.ToList();
|
||||
|
||||
propertyList.RemoveAll(p => ExcludedProperties.Any(p.ContainsIgnoreCase));
|
||||
var properties = propertyList.ToHashSet();
|
||||
|
||||
if (torrent.Files.Any(f => f.FileName.ContainsIgnoreCase("Remux")))
|
||||
{
|
||||
var resolutionProperty = properties.FirstOrDefault(RemuxResolutions.ContainsIgnoreCase);
|
||||
|
||||
if (resolutionProperty.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
properties.Add($"{resolutionProperty} Remux");
|
||||
}
|
||||
}
|
||||
|
||||
if (properties.Any(p => p.StartsWithIgnoreCase("M2TS")))
|
||||
if (properties.Any(p => p.StartsWith("M2TS", StringComparison.Ordinal)))
|
||||
{
|
||||
properties.Add("BR-DISK");
|
||||
}
|
||||
|
||||
if (_settings.ExcludeRaw &&
|
||||
properties.Any(p => p.StartsWithIgnoreCase("RAW") || p.Contains("BR-DISK")))
|
||||
var isBluRayDisk = properties.Any(p => p.Equals("RAW", StringComparison.Ordinal) || p.StartsWith("M2TS", StringComparison.Ordinal) || p.StartsWith("ISO", StringComparison.Ordinal));
|
||||
|
||||
if (_settings.ExcludeRaw && isBluRayDisk)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
properties = properties
|
||||
.Select(property =>
|
||||
{
|
||||
if (isBluRayDisk)
|
||||
{
|
||||
property = Regex.Replace(property, @"\b(H\.?265)\b", "HEVC", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
property = Regex.Replace(property, @"\b(H\.?264)\b", "AVC", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
}
|
||||
|
||||
if (torrent.Files.Any(f => f.FileName.ContainsIgnoreCase("Remux"))
|
||||
&& RemuxResolutions.ContainsIgnoreCase(property))
|
||||
{
|
||||
property += " Remux";
|
||||
}
|
||||
|
||||
return property;
|
||||
})
|
||||
.ToHashSet();
|
||||
|
||||
int? season = null;
|
||||
int? episode = null;
|
||||
|
||||
var releaseInfo = _settings.EnableSonarrCompatibility && categoryName == "Anime" ? "S01" : "";
|
||||
var editionTitle = torrent.EditionData.EditionTitle;
|
||||
var editionTitle = torrent.EditionData?.EditionTitle;
|
||||
|
||||
if (editionTitle.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
|
@ -569,7 +586,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
if (_settings.UseFilenameForSingleEpisodes)
|
||||
{
|
||||
var files = torrent.Files;
|
||||
var files = torrent.Files.ToList();
|
||||
|
||||
if (files.Count > 1)
|
||||
{
|
||||
|
@ -607,11 +624,13 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
var useYearInTitle = year is > 0 && torrent.Files.Any(f => f.FileName.Contains(year.Value.ToString()));
|
||||
|
||||
foreach (var title in synonyms)
|
||||
{
|
||||
var releaseTitle = groupName is "Movie" or "Live Action Movie" ?
|
||||
$"{releaseGroup}{title} {year} {infoString}" :
|
||||
$"{releaseGroup}{title} {releaseInfo} {infoString}";
|
||||
$"{releaseGroup}{title}{(useYearInTitle ? $" {year}" : string.Empty)} {releaseInfo} {infoString}";
|
||||
|
||||
var guid = new Uri(details + "?nh=" + HashUtil.CalculateMd5(title));
|
||||
|
||||
|
@ -650,7 +669,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
{
|
||||
var advancedSeasonRegex = new Regex(@"\b(?:(?<season>\d+)(?:st|nd|rd|th) Season|Season (?<season>\d+))\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
var seasonCharactersRegex = new Regex(@"(I{2,})$", RegexOptions.Compiled);
|
||||
var seasonNumberRegex = new Regex(@"\b(?<!Part[- ._])(?:S)?(?<season>[2-9])$", RegexOptions.Compiled);
|
||||
var seasonNumberRegex = new Regex(@"\b(?<!Part[- ._])(?<!\d[/])(?:S)?(?<season>[2-9])$", RegexOptions.Compiled);
|
||||
|
||||
foreach (var title in titles)
|
||||
{
|
||||
|
@ -755,7 +774,9 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
public int Matches { get; set; }
|
||||
|
||||
[JsonPropertyName("Groups")]
|
||||
public AnimeBytesGroup[] Groups { get; set; }
|
||||
public IReadOnlyCollection<AnimeBytesGroup> Groups { get; set; }
|
||||
|
||||
public string Error { get; set; }
|
||||
}
|
||||
|
||||
public class AnimeBytesGroup
|
||||
|
@ -783,16 +804,16 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
public string Image { get; set; }
|
||||
|
||||
[JsonPropertyName("SynonymnsV2")]
|
||||
public Dictionary<string, string> Synonymns { get; set; }
|
||||
public IReadOnlyDictionary<string, string> Synonymns { get; set; }
|
||||
|
||||
[JsonPropertyName("Description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[JsonPropertyName("Tags")]
|
||||
public List<string> Tags { get; set; }
|
||||
public IReadOnlyCollection<string> Tags { get; set; }
|
||||
|
||||
[JsonPropertyName("Torrents")]
|
||||
public List<AnimeBytesTorrent> Torrents { get; set; }
|
||||
public IReadOnlyCollection<AnimeBytesTorrent> Torrents { get; set; }
|
||||
}
|
||||
|
||||
public class AnimeBytesTorrent
|
||||
|
@ -831,7 +852,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
public int FileCount { get; set; }
|
||||
|
||||
[JsonPropertyName("FileList")]
|
||||
public List<AnimeBytesFile> Files { get; set; }
|
||||
public IReadOnlyCollection<AnimeBytesFile> Files { get; set; }
|
||||
|
||||
[JsonPropertyName("UploadTime")]
|
||||
public string UploadTime { get; set; }
|
||||
|
|
|
@ -3,7 +3,6 @@ using System.Collections.Generic;
|
|||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Html.Parser;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Extensions;
|
||||
|
@ -44,46 +43,19 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
return new AnimeTorrentsParser(Settings, Capabilities.Categories);
|
||||
}
|
||||
|
||||
protected override async Task DoLogin()
|
||||
{
|
||||
UpdateCookies(null, null);
|
||||
|
||||
var loginUrl = Settings.BaseUrl + "login.php";
|
||||
|
||||
var loginPage = await ExecuteAuth(new HttpRequest(loginUrl));
|
||||
|
||||
var requestBuilder = new HttpRequestBuilder(loginUrl)
|
||||
{
|
||||
LogResponseContent = true,
|
||||
AllowAutoRedirect = true
|
||||
};
|
||||
|
||||
var authLoginRequest = requestBuilder
|
||||
.Post()
|
||||
.SetCookies(loginPage.GetCookies())
|
||||
.AddFormParameter("username", Settings.Username)
|
||||
.AddFormParameter("password", Settings.Password)
|
||||
.AddFormParameter("form", "login")
|
||||
.AddFormParameter("rememberme[]", "1")
|
||||
.SetHeader("Content-Type", "application/x-www-form-urlencoded")
|
||||
.SetHeader("Referer", loginUrl)
|
||||
.Build();
|
||||
|
||||
var response = await ExecuteAuth(authLoginRequest);
|
||||
|
||||
if (response.Content == null || !response.Content.Contains("logout.php"))
|
||||
{
|
||||
throw new IndexerAuthException("AnimeTorrents authentication failed");
|
||||
}
|
||||
|
||||
UpdateCookies(response.GetCookies(), DateTime.Now.AddDays(30));
|
||||
|
||||
_logger.Debug("AnimeTorrents authentication succeeded");
|
||||
}
|
||||
|
||||
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
|
||||
{
|
||||
return httpResponse.Content.Contains("Access Denied!") || httpResponse.Content.Contains("login.php");
|
||||
if (httpResponse.Content.Contains("Access Denied!") || httpResponse.Content.Contains("login.php"))
|
||||
{
|
||||
throw new IndexerAuthException("AnimeTorrents authentication with cookies failed.");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override IDictionary<string, string> GetCookies()
|
||||
{
|
||||
return CookieUtil.CookieHeaderToDictionary(Settings.Cookie);
|
||||
}
|
||||
|
||||
private IndexerCapabilities SetCapabilities()
|
||||
|
@ -119,6 +91,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
caps.Categories.AddCategoryMapping(17, NewznabStandardCategory.BooksComics, "Doujinshi");
|
||||
caps.Categories.AddCategoryMapping(18, NewznabStandardCategory.BooksComics, "Doujinshi 18+");
|
||||
caps.Categories.AddCategoryMapping(19, NewznabStandardCategory.Audio, "OST");
|
||||
caps.Categories.AddCategoryMapping(20, NewznabStandardCategory.AudioAudiobook, "Audiobooks");
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
@ -291,7 +264,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
var qTitleLink = row.QuerySelector("td:nth-of-type(2) a:nth-of-type(1)");
|
||||
var title = qTitleLink?.TextContent.Trim();
|
||||
|
||||
// If we search an get no results, we still get a table just with no info.
|
||||
// If we search and get no results, we still get a table just with no info.
|
||||
if (title.IsNullOrWhiteSpace())
|
||||
{
|
||||
break;
|
||||
|
@ -306,6 +279,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
var connections = row.QuerySelector("td:nth-of-type(8)").TextContent.Trim().Split('/', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
var seeders = ParseUtil.CoerceInt(connections[0]);
|
||||
var leechers = ParseUtil.CoerceInt(connections[1]);
|
||||
var grabs = ParseUtil.CoerceInt(connections[2]);
|
||||
|
||||
var categoryLink = row.QuerySelector("td:nth-of-type(1) a")?.GetAttribute("href") ?? string.Empty;
|
||||
var categoryId = ParseUtil.GetArgumentFromQueryString(categoryLink, "cat");
|
||||
|
@ -327,17 +302,17 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
PublishDate = publishedDate,
|
||||
Size = ParseUtil.GetBytes(row.QuerySelector("td:nth-of-type(6)").TextContent.Trim()),
|
||||
Seeders = seeders,
|
||||
Peers = ParseUtil.CoerceInt(connections[1]) + seeders,
|
||||
Grabs = ParseUtil.CoerceInt(connections[2]),
|
||||
Peers = leechers + seeders,
|
||||
Grabs = grabs,
|
||||
DownloadVolumeFactor = downloadVolumeFactor,
|
||||
UploadVolumeFactor = 1,
|
||||
Genres = row.QuerySelectorAll("td:nth-of-type(2) a.tortags").Select(t => t.TextContent.Trim()).ToList()
|
||||
};
|
||||
|
||||
var uLFactorImg = row.QuerySelector("img[alt*=\"x Multiplier Torrent\"]");
|
||||
if (uLFactorImg != null)
|
||||
var uploadFactor = row.QuerySelector("img[alt*=\"x Multiplier Torrent\"]")?.GetAttribute("alt");
|
||||
if (uploadFactor != null)
|
||||
{
|
||||
release.UploadVolumeFactor = ParseUtil.CoerceDouble(uLFactorImg.GetAttribute("alt").Split('x')[0]);
|
||||
release.UploadVolumeFactor = ParseUtil.CoerceDouble(uploadFactor.Split('x')[0]);
|
||||
}
|
||||
|
||||
releaseInfos.Add(release);
|
||||
|
@ -349,7 +324,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||
}
|
||||
|
||||
public class AnimeTorrentsSettings : UserPassTorrentBaseSettings
|
||||
public class AnimeTorrentsSettings : CookieTorrentBaseSettings
|
||||
{
|
||||
public AnimeTorrentsSettings()
|
||||
{
|
||||
|
@ -360,7 +335,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
[FieldDefinition(4, Label = "Freeleech Only", Type = FieldType.Checkbox, HelpText = "Show freeleech torrents only")]
|
||||
public bool FreeleechOnly { get; set; }
|
||||
|
||||
[FieldDefinition(5, Label = "Downloadable Only", Type = FieldType.Checkbox, HelpText = "Search downloadable torrents only (enable this only if your account class is Newbie)")]
|
||||
[FieldDefinition(5, Label = "Downloadable Only", Type = FieldType.Checkbox, HelpText = "Search downloadable torrents only (enable this only if your account class is Newbie)", Advanced = true)]
|
||||
public bool DownloadableOnly { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
return FilterReleasesByQuery(cleanReleases, searchCriteria).ToList();
|
||||
}
|
||||
|
||||
private IndexerCapabilities SetCapabilities()
|
||||
private static IndexerCapabilities SetCapabilities()
|
||||
{
|
||||
var caps = new IndexerCapabilities
|
||||
{
|
||||
|
@ -69,7 +69,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
},
|
||||
Flags = new List<IndexerFlag>
|
||||
{
|
||||
IndexerFlag.Internal
|
||||
IndexerFlag.Internal,
|
||||
IndexerFlag.Exclusive,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -91,7 +92,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
_capabilities = capabilities;
|
||||
}
|
||||
|
||||
private IEnumerable<IndexerRequest> GetPagedRequests(SearchCriteriaBase searchCriteria, string term, string imdbId = null, int tmdbId = 0)
|
||||
private IEnumerable<IndexerRequest> GetPagedRequests(SearchCriteriaBase searchCriteria, string searchTerm, string imdbId = null, int tmdbId = 0)
|
||||
{
|
||||
var body = new Dictionary<string, object>
|
||||
{
|
||||
|
@ -128,9 +129,9 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
body.Add("tmdb_id", tmdbId);
|
||||
}
|
||||
|
||||
if (term.IsNotNullOrWhiteSpace())
|
||||
if (searchTerm.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
body.Add("search", term);
|
||||
body.Add("search", searchTerm.Trim());
|
||||
}
|
||||
|
||||
var cats = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories);
|
||||
|
@ -198,7 +199,16 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
{
|
||||
var pageableRequests = new IndexerPageableRequestChain();
|
||||
|
||||
pageableRequests.Add(GetPagedRequests(searchCriteria, searchCriteria.SanitizedTvSearchString, searchCriteria.FullImdbId));
|
||||
var searchTerm = searchCriteria.SanitizedTvSearchString;
|
||||
|
||||
if (searchCriteria.Season is > 0 &&
|
||||
searchCriteria.Episode.IsNotNullOrWhiteSpace() &&
|
||||
DateTime.TryParseExact($"{searchCriteria.Season} {searchCriteria.Episode}", "yyyy MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var showDate))
|
||||
{
|
||||
searchTerm = $"{searchCriteria.SanitizedSearchTerm} {showDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)}";
|
||||
}
|
||||
|
||||
pageableRequests.Add(GetPagedRequests(searchCriteria, searchTerm, searchCriteria.FullImdbId));
|
||||
|
||||
return pageableRequests;
|
||||
}
|
||||
|
@ -275,13 +285,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
var details = row.InfoUrl;
|
||||
var link = row.DownloadLink;
|
||||
|
||||
var flags = new HashSet<IndexerFlag>();
|
||||
|
||||
if (row.Internal)
|
||||
{
|
||||
flags.Add(IndexerFlag.Internal);
|
||||
}
|
||||
|
||||
var release = new TorrentInfo
|
||||
{
|
||||
Title = row.Name,
|
||||
|
@ -291,7 +294,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
Guid = details,
|
||||
Categories = _categories.MapTrackerCatDescToNewznab(row.Category),
|
||||
PublishDate = DateTime.Parse(row.CreatedAt, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal),
|
||||
IndexerFlags = flags,
|
||||
IndexerFlags = GetIndexerFlags(row),
|
||||
Size = row.Size,
|
||||
Grabs = row.Grabs,
|
||||
Seeders = row.Seeders,
|
||||
|
@ -301,6 +304,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
UploadVolumeFactor = 1,
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 172800, // 120 hours
|
||||
Languages = row.Audios?.Split(",", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<string>(),
|
||||
Subs = row.Subtitles?.Split(",", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<string>(),
|
||||
};
|
||||
|
||||
// BHD can return crazy values for tmdb
|
||||
|
@ -319,6 +324,23 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
.ToArray();
|
||||
}
|
||||
|
||||
private static HashSet<IndexerFlag> GetIndexerFlags(BeyondHDTorrent item)
|
||||
{
|
||||
var flags = new HashSet<IndexerFlag>();
|
||||
|
||||
if (item.Internal)
|
||||
{
|
||||
flags.Add(IndexerFlag.Internal);
|
||||
}
|
||||
|
||||
if (item.Exclusive)
|
||||
{
|
||||
flags.Add(IndexerFlag.Exclusive);
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||
}
|
||||
|
||||
|
@ -450,9 +472,13 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
[JsonPropertyName("times_completed")]
|
||||
public int Grabs { get; set; }
|
||||
|
||||
public int Seeders { get; set; }
|
||||
public int Leechers { get; set; }
|
||||
|
||||
public string Audios { get; set; }
|
||||
public string Subtitles { get; set; }
|
||||
|
||||
[JsonPropertyName("created_at")]
|
||||
public string CreatedAt { get; set; }
|
||||
|
||||
|
@ -478,6 +504,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
public bool Limited { get; set; }
|
||||
|
||||
public bool Exclusive { get; set; }
|
||||
|
||||
public bool Internal { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -88,7 +88,7 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
|||
Guid = $"BTN-{torrent.TorrentID}",
|
||||
InfoUrl = $"{protocol}//broadcasthe.net/torrents.php?id={torrent.GroupID}&torrentid={torrent.TorrentID}",
|
||||
DownloadUrl = RegexProtocol.Replace(torrent.DownloadURL, protocol),
|
||||
Title = CleanReleaseName(torrent.ReleaseName),
|
||||
Title = GetTitle(torrent),
|
||||
Categories = _categories.MapTrackerCatToNewznab(torrent.Resolution),
|
||||
InfoHash = torrent.InfoHash,
|
||||
Size = torrent.Size,
|
||||
|
@ -136,9 +136,17 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
|||
return releaseInfos;
|
||||
}
|
||||
|
||||
private string CleanReleaseName(string releaseName)
|
||||
private static string GetTitle(BroadcastheNetTorrent torrent)
|
||||
{
|
||||
return releaseName.Replace("\\", "");
|
||||
var releaseName = torrent.ReleaseName.Replace("\\", "");
|
||||
|
||||
if (torrent.Container.ToUpperInvariant() is "M2TS" or "ISO")
|
||||
{
|
||||
releaseName = Regex.Replace(releaseName, @"\b(H\.?265)\b", "HEVC", RegexOptions.Compiled);
|
||||
releaseName = Regex.Replace(releaseName, @"\b(H\.?264)\b", "AVC", RegexOptions.Compiled);
|
||||
}
|
||||
|
||||
return releaseName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ using System.Text;
|
|||
using System.Text.RegularExpressions;
|
||||
using AngleSharp.Dom;
|
||||
using Microsoft.AspNetCore.WebUtilities;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Extensions;
|
||||
|
@ -214,19 +215,19 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
|
|||
if (selector.Selector != null)
|
||||
{
|
||||
var selectorSelector = ApplyGoTemplateText(selector.Selector.TrimStart('.'), variables);
|
||||
selectorSelector = JsonParseFieldSelector(parentObj, selectorSelector);
|
||||
var fieldSelector = JsonParseFieldSelector(parentObj, selectorSelector);
|
||||
|
||||
JToken selection = null;
|
||||
if (selectorSelector != null)
|
||||
if (fieldSelector != null)
|
||||
{
|
||||
selection = parentObj.SelectToken(selectorSelector);
|
||||
selection = parentObj.SelectToken(fieldSelector);
|
||||
}
|
||||
|
||||
if (selection == null)
|
||||
{
|
||||
if (required)
|
||||
{
|
||||
throw new Exception(string.Format("Selector \"{0}\" didn't match {1}", selectorSelector, parentObj.ToString()));
|
||||
throw new Exception($"Selector \"{selectorSelector}\" didn't match {parentObj.ToString(Formatting.None)}");
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -234,7 +235,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
|
|||
|
||||
if (selection.Type is JTokenType.Array)
|
||||
{
|
||||
// turn this json array into a comma delimited string
|
||||
// turn this json array into a comma-delimited string
|
||||
var valueArray = selection.Value<JArray>();
|
||||
value = string.Join(",", valueArray);
|
||||
}
|
||||
|
@ -259,7 +260,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
|
|||
{
|
||||
if (required)
|
||||
{
|
||||
throw new Exception($"None of the case selectors \"{string.Join(",", selector.Case)}\" matched {parentObj}");
|
||||
throw new Exception($"None of the case selectors \"{string.Join(",", selector.Case)}\" matched {parentObj.ToString(Formatting.None)}");
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -105,7 +105,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Trace(ex, "Failed to parse JSON rows count.");
|
||||
_logger.Debug(ex, "Failed to parse JSON rows count.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ public class FileListParser : IParseIndexerResponse
|
|||
InfoUrl = GetInfoUrl(id),
|
||||
Seeders = row.Seeders,
|
||||
Peers = row.Leechers + row.Seeders,
|
||||
PublishDate = DateTime.Parse(row.UploadDate + " +0200", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
|
||||
PublishDate = DateTime.Parse(row.UploadDate + " +0300", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
|
||||
Description = row.SmallDescription,
|
||||
Genres = row.SmallDescription.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList(),
|
||||
ImdbId = imdbId,
|
||||
|
@ -101,7 +101,7 @@ public class FileListParser : IParseIndexerResponse
|
|||
var url = new HttpUri(_settings.BaseUrl)
|
||||
.CombinePath("/download.php")
|
||||
.AddQueryParam("id", torrentId.ToString())
|
||||
.AddQueryParam("passkey", _settings.Passkey);
|
||||
.AddQueryParam("passkey", _settings.Passkey.Trim());
|
||||
|
||||
return url.FullUri;
|
||||
}
|
||||
|
|
|
@ -95,3 +95,8 @@ public class GazelleIndexResponse
|
|||
public string Authkey { get; set; }
|
||||
public string Passkey { get; set; }
|
||||
}
|
||||
|
||||
public class GazelleErrorResponse
|
||||
{
|
||||
public string Error { get; init; }
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ using System.Linq;
|
|||
using System.Net;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Indexers.Exceptions;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
@ -32,7 +33,9 @@ public class GazelleParser : IParseIndexerResponse
|
|||
// Remove cookie cache
|
||||
CookiesUpdater(null, null);
|
||||
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
|
||||
STJson.TryDeserialize<GazelleErrorResponse>(indexerResponse.Content, out var errorResponse);
|
||||
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
|
||||
}
|
||||
|
||||
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
|
||||
|
|
|
@ -7,6 +7,7 @@ using Newtonsoft.Json;
|
|||
using NLog;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Annotations;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers.Definitions.Gazelle;
|
||||
|
@ -148,7 +149,9 @@ public class GreatPosterWallParser : GazelleParser
|
|||
throw new IndexerException(indexerResponse, $"Redirected to {indexerResponse.HttpResponse.RedirectUrl} from indexer request");
|
||||
}
|
||||
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
|
||||
STJson.TryDeserialize<GazelleErrorResponse>(indexerResponse.Content, out var errorResponse);
|
||||
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
|
||||
}
|
||||
|
||||
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
|||
return new HDBitsParser(Settings, Capabilities.Categories);
|
||||
}
|
||||
|
||||
private IndexerCapabilities SetCapabilities()
|
||||
private static IndexerCapabilities SetCapabilities()
|
||||
{
|
||||
var caps = new IndexerCapabilities
|
||||
{
|
||||
|
@ -43,6 +43,11 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
|||
MovieSearchParams = new List<MovieSearchParam>
|
||||
{
|
||||
MovieSearchParam.Q, MovieSearchParam.ImdbId
|
||||
},
|
||||
Flags = new List<IndexerFlag>
|
||||
{
|
||||
IndexerFlag.Internal,
|
||||
IndexerFlag.Exclusive,
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -85,6 +85,9 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
|||
[JsonProperty(PropertyName = "type_origin")]
|
||||
public int TypeOrigin { get; set; }
|
||||
|
||||
[JsonProperty(PropertyName = "type_exclusive")]
|
||||
public int TypeExclusive { get; set; }
|
||||
|
||||
[JsonProperty(PropertyName = "imdb")]
|
||||
public ImdbInfo ImdbInfo { get; set; }
|
||||
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
||||
{
|
||||
public class HDBitsInfo : TorrentInfo
|
||||
{
|
||||
public bool? Internal { get; set; }
|
||||
}
|
||||
}
|
|
@ -62,16 +62,8 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
|||
}
|
||||
|
||||
var id = result.Id;
|
||||
var internalRelease = result.TypeOrigin == 1;
|
||||
|
||||
var flags = new HashSet<IndexerFlag>();
|
||||
|
||||
if (internalRelease)
|
||||
{
|
||||
flags.Add(IndexerFlag.Internal);
|
||||
}
|
||||
|
||||
releaseInfos.Add(new HDBitsInfo
|
||||
releaseInfos.Add(new TorrentInfo
|
||||
{
|
||||
Guid = $"HDBits-{id}",
|
||||
Title = GetTitle(result),
|
||||
|
@ -85,28 +77,43 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
|||
Files = (int)result.NumFiles,
|
||||
Peers = result.Leechers + result.Seeders,
|
||||
PublishDate = result.Added.ToUniversalTime(),
|
||||
Internal = internalRelease,
|
||||
Year = result.ImdbInfo?.Year ?? 0,
|
||||
ImdbId = result.ImdbInfo?.Id ?? 0,
|
||||
TvdbId = result.TvdbInfo?.Id ?? 0,
|
||||
DownloadVolumeFactor = GetDownloadVolumeFactor(result),
|
||||
UploadVolumeFactor = GetUploadVolumeFactor(result),
|
||||
IndexerFlags = flags
|
||||
IndexerFlags = GetIndexerFlags(result)
|
||||
});
|
||||
}
|
||||
|
||||
return releaseInfos.ToArray();
|
||||
}
|
||||
|
||||
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||
|
||||
private string GetTitle(TorrentQueryResponse item)
|
||||
{
|
||||
return _settings.UseFilenames && item.FileName.IsNotNullOrWhiteSpace()
|
||||
// Use release name for XXX content and full discs
|
||||
return item.TypeCategory != 7 && item.TypeMedium != 1 && _settings.UseFilenames && item.FileName.IsNotNullOrWhiteSpace()
|
||||
? item.FileName.Replace(".torrent", "", StringComparison.InvariantCultureIgnoreCase)
|
||||
: item.Name;
|
||||
}
|
||||
|
||||
private static HashSet<IndexerFlag> GetIndexerFlags(TorrentQueryResponse item)
|
||||
{
|
||||
var flags = new HashSet<IndexerFlag>();
|
||||
|
||||
if (item.TypeOrigin == 1)
|
||||
{
|
||||
flags.Add(IndexerFlag.Internal);
|
||||
}
|
||||
|
||||
if (item.TypeExclusive == 1)
|
||||
{
|
||||
flags.Add(IndexerFlag.Exclusive);
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
private double GetDownloadVolumeFactor(TorrentQueryResponse item)
|
||||
{
|
||||
if (item.FreeLeech == "yes")
|
||||
|
@ -153,5 +160,7 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
|||
|
||||
return url.FullUri;
|
||||
}
|
||||
|
||||
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -403,10 +403,13 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
private static string CleanTitle(string title)
|
||||
{
|
||||
// drop invalid chars that seems to have cropped up in some titles. #6582
|
||||
// Drop invalid chars that seems to have cropped up in some titles. #6582
|
||||
title = Regex.Replace(title, @"[\u0000-\u0008\u000A-\u001F\u0100-\uFFFF]", string.Empty, RegexOptions.Compiled);
|
||||
title = Regex.Replace(title, @"[\(\[\{]REQ(UEST(ED)?)?[\)\]\}]", string.Empty, RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
// Drop languages between brackets conflicting with anime release group parsing
|
||||
title = Regex.Replace(title, @"^\[[a-z0-9 ._-]+\][-._ ](?<title>.*-[a-z0-9]+)$", "${title}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
return title.Trim(' ', '-', ':');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
public class Knaben : TorrentIndexerBase<NoAuthTorrentBaseSettings>
|
||||
{
|
||||
public override string Name => "Knaben";
|
||||
public override string[] IndexerUrls => new[] { "https://knaben.eu/" };
|
||||
public override string[] IndexerUrls => new[] { "https://knaben.org/" };
|
||||
public override string[] LegacyUrls => new[] { "https://knaben.eu/" };
|
||||
public override string Description => "Knaben is a Public torrent meta-search engine";
|
||||
public override IndexerPrivacy Privacy => IndexerPrivacy.Public;
|
||||
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||
|
@ -145,7 +146,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
public class KnabenRequestGenerator : IIndexerRequestGenerator
|
||||
{
|
||||
private const string API_SEARCH_ENDPOINT = "https://api.knaben.eu/v1";
|
||||
private const string ApiSearchEndpoint = "https://api.knaben.org/v1";
|
||||
|
||||
private readonly IndexerCapabilities _capabilities;
|
||||
|
||||
|
@ -226,7 +227,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
body.Add("categories", categories.Select(int.Parse).Distinct().ToArray());
|
||||
}
|
||||
|
||||
var request = new HttpRequest(API_SEARCH_ENDPOINT, HttpAccept.Json)
|
||||
var request = new HttpRequest(ApiSearchEndpoint, HttpAccept.Json)
|
||||
{
|
||||
Headers =
|
||||
{
|
||||
|
|
|
@ -16,6 +16,7 @@ using NzbDrone.Common.Http;
|
|||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Annotations;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Exceptions;
|
||||
using NzbDrone.Core.Indexers.Exceptions;
|
||||
using NzbDrone.Core.Indexers.Settings;
|
||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||
|
@ -36,8 +37,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
public override bool SupportsPagination => true;
|
||||
public override int PageSize => 100;
|
||||
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||
|
||||
private readonly ICacheManager _cacheManager;
|
||||
private static readonly Regex TorrentIdRegex = new Regex(@"tor/download.php\?tid=(?<id>\d+)$");
|
||||
|
||||
public MyAnonamouse(IIndexerHttpClient httpClient, IEventAggregator eventAggregator, IIndexerStatusService indexerStatusService, IConfigService configService, Logger logger, ICacheManager cacheManager)
|
||||
: base(httpClient, eventAggregator, indexerStatusService, configService, logger)
|
||||
|
@ -59,39 +60,66 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
{
|
||||
var downloadLink = link.RemoveQueryParam("canUseToken");
|
||||
|
||||
if (Settings.Freeleech && bool.TryParse(link.GetQueryParam("canUseToken"), out var canUseToken) && canUseToken)
|
||||
if (Settings.UseFreeleechWedge is (int)MyAnonamouseFreeleechWedgeAction.Preferred or (int)MyAnonamouseFreeleechWedgeAction.Required &&
|
||||
bool.TryParse(link.GetQueryParam("canUseToken"), out var canUseToken) && canUseToken)
|
||||
{
|
||||
_logger.Debug("Attempting to use freeleech token for {0}", downloadLink.AbsoluteUri);
|
||||
_logger.Debug("Attempting to use freeleech wedge for {0}", downloadLink.AbsoluteUri);
|
||||
|
||||
var idMatch = TorrentIdRegex.Match(downloadLink.AbsoluteUri);
|
||||
if (idMatch.Success)
|
||||
if (int.TryParse(link.GetQueryParam("tid"), out var torrentId) && torrentId > 0)
|
||||
{
|
||||
var id = int.Parse(idMatch.Groups["id"].Value);
|
||||
var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds();
|
||||
var freeleechUrl = Settings.BaseUrl + $"json/bonusBuy.php/{timestamp}";
|
||||
|
||||
var freeleechRequest = new HttpRequestBuilder(freeleechUrl)
|
||||
var freeleechRequestBuilder = new HttpRequestBuilder(freeleechUrl)
|
||||
.Accept(HttpAccept.Json)
|
||||
.AddQueryParam("spendtype", "personalFL")
|
||||
.AddQueryParam("torrentid", id)
|
||||
.AddQueryParam("timestamp", timestamp.ToString())
|
||||
.Build();
|
||||
.AddQueryParam("torrentid", torrentId)
|
||||
.AddQueryParam("timestamp", timestamp.ToString());
|
||||
|
||||
var indexerReq = new IndexerRequest(freeleechRequest);
|
||||
var response = await FetchIndexerResponse(indexerReq).ConfigureAwait(false);
|
||||
var resource = Json.Deserialize<MyAnonamouseBuyPersonalFreeleechResponse>(response.Content);
|
||||
freeleechRequestBuilder.LogResponseContent = true;
|
||||
|
||||
var cookies = GetCookies();
|
||||
|
||||
if (cookies != null && cookies.Any())
|
||||
{
|
||||
freeleechRequestBuilder.SetCookies(cookies);
|
||||
}
|
||||
|
||||
var freeleechRequest = freeleechRequestBuilder.Build();
|
||||
|
||||
var freeleechResponse = await _httpClient.ExecuteProxiedAsync(freeleechRequest, Definition).ConfigureAwait(false);
|
||||
|
||||
var resource = Json.Deserialize<MyAnonamouseBuyPersonalFreeleechResponse>(freeleechResponse.Content);
|
||||
|
||||
if (resource.Success)
|
||||
{
|
||||
_logger.Debug("Successfully to used freeleech token for torrentid {0}", id);
|
||||
_logger.Debug("Successfully used freeleech wedge for torrentid {0}.", torrentId);
|
||||
}
|
||||
else if (resource.Error.IsNotNullOrWhiteSpace() && resource.Error.ContainsIgnoreCase("This Torrent is VIP"))
|
||||
{
|
||||
_logger.Debug("{0} is already VIP, continuing downloading: {1}", torrentId, resource.Error);
|
||||
}
|
||||
else if (resource.Error.IsNotNullOrWhiteSpace() && resource.Error.ContainsIgnoreCase("This is already a personal freeleech"))
|
||||
{
|
||||
_logger.Debug("{0} is already a personal freeleech, continuing downloading: {1}", torrentId, resource.Error);
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Debug("Failed to use freeleech token: {0}", resource.Error);
|
||||
_logger.Warn("Failed to purchase freeleech wedge for {0}: {1}", torrentId, resource.Error);
|
||||
|
||||
if (Settings.UseFreeleechWedge == (int)MyAnonamouseFreeleechWedgeAction.Preferred)
|
||||
{
|
||||
_logger.Debug("'Use Freeleech Wedge' option set to preferred, continuing downloading: '{0}'", downloadLink.AbsoluteUri);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ReleaseUnavailableException($"Failed to buy freeleech wedge and 'Use Freeleech Wedge' is set to required, aborting download: '{downloadLink.AbsoluteUri}'");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Debug("Could not get torrent id from link {0}, skipping freeleech", downloadLink.AbsoluteUri);
|
||||
_logger.Warn("Could not get torrent id from link {0}, skipping use of freeleech wedge.", downloadLink.AbsoluteUri);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -294,14 +322,21 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
parameters.Set("tor[srchIn][filenames]", "true");
|
||||
}
|
||||
|
||||
var catList = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories);
|
||||
if (_settings.SearchLanguages.Any())
|
||||
{
|
||||
foreach (var (language, index) in _settings.SearchLanguages.Select((value, index) => (value, index)))
|
||||
{
|
||||
parameters.Set($"tor[browse_lang][{index}]", language.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
var catList = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories).Distinct().ToList();
|
||||
|
||||
if (catList.Any())
|
||||
{
|
||||
var index = 0;
|
||||
foreach (var cat in catList)
|
||||
foreach (var (category, index) in catList.Select((value, index) => (value, index)))
|
||||
{
|
||||
parameters.Set("tor[cat][" + index + "]", cat);
|
||||
index++;
|
||||
parameters.Set($"tor[cat][{index}]", category);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -441,6 +476,11 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
return releaseInfos.ToArray();
|
||||
}
|
||||
|
||||
if (jsonResponse.Data == null)
|
||||
{
|
||||
throw new IndexerException(indexerResponse, "Unexpected response content from indexer request: {0}", jsonResponse.Message ?? "Check the logs for more information.");
|
||||
}
|
||||
|
||||
var hasUserVip = HasUserVip(httpResponse.GetCookies());
|
||||
|
||||
foreach (var item in jsonResponse.Data)
|
||||
|
@ -523,7 +563,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
.CombinePath("/tor/download.php")
|
||||
.AddQueryParam("tid", torrentId);
|
||||
|
||||
if (_settings.Freeleech && canUseToken)
|
||||
if (_settings.UseFreeleechWedge is (int)MyAnonamouseFreeleechWedgeAction.Preferred or (int)MyAnonamouseFreeleechWedgeAction.Required && canUseToken)
|
||||
{
|
||||
url = url.AddQueryParam("canUseToken", "true");
|
||||
}
|
||||
|
@ -548,8 +588,11 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
_logger.Debug("Fetching user data: {0}", request.Url.FullUri);
|
||||
|
||||
var response = _httpClient.ExecuteProxied(request, _definition);
|
||||
|
||||
var jsonResponse = JsonConvert.DeserializeObject<MyAnonamouseUserDataResponse>(response.Content);
|
||||
|
||||
_logger.Trace("Current user class: '{0}'", jsonResponse.UserClass);
|
||||
|
||||
return jsonResponse.UserClass?.Trim();
|
||||
},
|
||||
TimeSpan.FromHours(1));
|
||||
|
@ -579,6 +622,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
SearchInDescription = false;
|
||||
SearchInSeries = false;
|
||||
SearchInFilenames = false;
|
||||
SearchLanguages = Array.Empty<int>();
|
||||
UseFreeleechWedge = (int)MyAnonamouseFreeleechWedgeAction.Never;
|
||||
}
|
||||
|
||||
[FieldDefinition(2, Type = FieldType.Textbox, Label = "Mam Id", HelpText = "Mam Session Id (Created Under Preferences -> Security)")]
|
||||
|
@ -587,18 +632,21 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
[FieldDefinition(3, Type = FieldType.Select, Label = "Search Type", SelectOptions = typeof(MyAnonamouseSearchType), HelpText = "Specify the desired search type")]
|
||||
public int SearchType { get; set; }
|
||||
|
||||
[FieldDefinition(4, Type = FieldType.Checkbox, Label = "Use Freeleech Wedges", HelpText = "Use freeleech wedges to make grabbed torrents personal freeleech")]
|
||||
public bool Freeleech { get; set; }
|
||||
|
||||
[FieldDefinition(5, Type = FieldType.Checkbox, Label = "Search in description", HelpText = "Search text in the description")]
|
||||
[FieldDefinition(4, Type = FieldType.Checkbox, Label = "Search in description", HelpText = "Search text in the description")]
|
||||
public bool SearchInDescription { get; set; }
|
||||
|
||||
[FieldDefinition(6, Type = FieldType.Checkbox, Label = "Search in series", HelpText = "Search text in the series")]
|
||||
[FieldDefinition(5, Type = FieldType.Checkbox, Label = "Search in series", HelpText = "Search text in the series")]
|
||||
public bool SearchInSeries { get; set; }
|
||||
|
||||
[FieldDefinition(7, Type = FieldType.Checkbox, Label = "Search in filenames", HelpText = "Search text in the filenames")]
|
||||
[FieldDefinition(6, Type = FieldType.Checkbox, Label = "Search in filenames", HelpText = "Search text in the filenames")]
|
||||
public bool SearchInFilenames { get; set; }
|
||||
|
||||
[FieldDefinition(7, Type = FieldType.Select, Label = "Search Languages", SelectOptions = typeof(MyAnonamouseSearchLanguages), HelpText = "Specify the desired languages. If unspecified, all options are used.")]
|
||||
public IEnumerable<int> SearchLanguages { get; set; }
|
||||
|
||||
[FieldDefinition(8, Type = FieldType.Select, Label = "Use Freeleech Wedges", SelectOptions = typeof(MyAnonamouseFreeleechWedgeAction), HelpText = "Use freeleech wedges to make grabbed torrents personal freeleech")]
|
||||
public int UseFreeleechWedge { get; set; }
|
||||
|
||||
public override NzbDroneValidationResult Validate()
|
||||
{
|
||||
return new NzbDroneValidationResult(Validator.Validate(this));
|
||||
|
@ -626,6 +674,210 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
NotVip = 5,
|
||||
}
|
||||
|
||||
public enum MyAnonamouseSearchLanguages
|
||||
{
|
||||
[FieldOption(Label="English")]
|
||||
English = 1,
|
||||
|
||||
[FieldOption(Label="Afrikaans")]
|
||||
Afrikaans = 17,
|
||||
|
||||
[FieldOption(Label="Arabic")]
|
||||
Arabic = 32,
|
||||
|
||||
[FieldOption(Label="Bengali")]
|
||||
Bengali = 35,
|
||||
|
||||
[FieldOption(Label="Bosnian")]
|
||||
Bosnian = 51,
|
||||
|
||||
[FieldOption(Label="Bulgarian")]
|
||||
Bulgarian = 18,
|
||||
|
||||
[FieldOption(Label="Burmese")]
|
||||
Burmese = 6,
|
||||
|
||||
[FieldOption(Label="Cantonese")]
|
||||
Cantonese = 44,
|
||||
|
||||
[FieldOption(Label="Catalan")]
|
||||
Catalan = 19,
|
||||
|
||||
[FieldOption(Label="Chinese")]
|
||||
Chinese = 2,
|
||||
|
||||
[FieldOption(Label="Croatian")]
|
||||
Croatian = 49,
|
||||
|
||||
[FieldOption(Label="Czech")]
|
||||
Czech = 20,
|
||||
|
||||
[FieldOption(Label="Danish")]
|
||||
Danish = 21,
|
||||
|
||||
[FieldOption(Label="Dutch")]
|
||||
Dutch = 22,
|
||||
|
||||
[FieldOption(Label="Estonian")]
|
||||
Estonian = 61,
|
||||
|
||||
[FieldOption(Label="Farsi")]
|
||||
Farsi = 39,
|
||||
|
||||
[FieldOption(Label="Finnish")]
|
||||
Finnish = 23,
|
||||
|
||||
[FieldOption(Label="French")]
|
||||
French = 36,
|
||||
|
||||
[FieldOption(Label="German")]
|
||||
German = 37,
|
||||
|
||||
[FieldOption(Label="Greek")]
|
||||
Greek = 26,
|
||||
|
||||
[FieldOption(Label="Greek, Ancient")]
|
||||
GreekAncient = 59,
|
||||
|
||||
[FieldOption(Label="Gujarati")]
|
||||
Gujarati = 3,
|
||||
|
||||
[FieldOption(Label="Hebrew")]
|
||||
Hebrew = 27,
|
||||
|
||||
[FieldOption(Label="Hindi")]
|
||||
Hindi = 8,
|
||||
|
||||
[FieldOption(Label="Hungarian")]
|
||||
Hungarian = 28,
|
||||
|
||||
[FieldOption(Label="Icelandic")]
|
||||
Icelandic = 63,
|
||||
|
||||
[FieldOption(Label="Indonesian")]
|
||||
Indonesian = 53,
|
||||
|
||||
[FieldOption(Label="Irish")]
|
||||
Irish = 56,
|
||||
|
||||
[FieldOption(Label="Italian")]
|
||||
Italian = 43,
|
||||
|
||||
[FieldOption(Label="Japanese")]
|
||||
Japanese = 38,
|
||||
|
||||
[FieldOption(Label="Javanese")]
|
||||
Javanese = 12,
|
||||
|
||||
[FieldOption(Label="Kannada")]
|
||||
Kannada = 5,
|
||||
|
||||
[FieldOption(Label="Korean")]
|
||||
Korean = 41,
|
||||
|
||||
[FieldOption(Label="Lithuanian")]
|
||||
Lithuanian = 50,
|
||||
|
||||
[FieldOption(Label="Latin")]
|
||||
Latin = 46,
|
||||
|
||||
[FieldOption(Label="Latvian")]
|
||||
Latvian = 62,
|
||||
|
||||
[FieldOption(Label="Malay")]
|
||||
Malay = 33,
|
||||
|
||||
[FieldOption(Label="Malayalam")]
|
||||
Malayalam = 58,
|
||||
|
||||
[FieldOption(Label="Manx")]
|
||||
Manx = 57,
|
||||
|
||||
[FieldOption(Label="Marathi")]
|
||||
Marathi = 9,
|
||||
|
||||
[FieldOption(Label="Norwegian")]
|
||||
Norwegian = 48,
|
||||
|
||||
[FieldOption(Label="Polish")]
|
||||
Polish = 45,
|
||||
|
||||
[FieldOption(Label="Portuguese")]
|
||||
Portuguese = 34,
|
||||
|
||||
[FieldOption(Label="Brazilian Portuguese (BP)")]
|
||||
BrazilianPortuguese = 52,
|
||||
|
||||
[FieldOption(Label="Punjabi")]
|
||||
Punjabi = 14,
|
||||
|
||||
[FieldOption(Label="Romanian")]
|
||||
Romanian = 30,
|
||||
|
||||
[FieldOption(Label="Russian")]
|
||||
Russian = 16,
|
||||
|
||||
[FieldOption(Label="Scottish Gaelic")]
|
||||
ScottishGaelic = 24,
|
||||
|
||||
[FieldOption(Label="Sanskrit")]
|
||||
Sanskrit = 60,
|
||||
|
||||
[FieldOption(Label="Serbian")]
|
||||
Serbian = 31,
|
||||
|
||||
[FieldOption(Label="Slovenian")]
|
||||
Slovenian = 54,
|
||||
|
||||
[FieldOption(Label="Spanish")]
|
||||
Spanish = 4,
|
||||
|
||||
[FieldOption(Label="Castilian Spanish")]
|
||||
CastilianSpanish = 55,
|
||||
|
||||
[FieldOption(Label="Swedish")]
|
||||
Swedish = 40,
|
||||
|
||||
[FieldOption(Label="Tagalog")]
|
||||
Tagalog = 29,
|
||||
|
||||
[FieldOption(Label="Tamil")]
|
||||
Tamil = 11,
|
||||
|
||||
[FieldOption(Label="Telugu")]
|
||||
Telugu = 10,
|
||||
|
||||
[FieldOption(Label="Thai")]
|
||||
Thai = 7,
|
||||
|
||||
[FieldOption(Label="Turkish")]
|
||||
Turkish = 42,
|
||||
|
||||
[FieldOption(Label="Ukrainian")]
|
||||
Ukrainian = 25,
|
||||
|
||||
[FieldOption(Label="Urdu")]
|
||||
Urdu = 15,
|
||||
|
||||
[FieldOption(Label="Vietnamese")]
|
||||
Vietnamese = 13,
|
||||
|
||||
[FieldOption(Label="Other")]
|
||||
Other = 47,
|
||||
}
|
||||
|
||||
public enum MyAnonamouseFreeleechWedgeAction
|
||||
{
|
||||
[FieldOption(Label = "Never", Hint = "Do not buy as freeleech")]
|
||||
Never = 0,
|
||||
|
||||
[FieldOption(Label = "Preferred", Hint = "Buy and use wedge if possible")]
|
||||
Preferred = 1,
|
||||
|
||||
[FieldOption(Label = "Required", Hint = "Abort download if unable to buy wedge")]
|
||||
Required = 2,
|
||||
}
|
||||
|
||||
public class MyAnonamouseTorrent
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
@ -655,7 +907,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
public class MyAnonamouseResponse
|
||||
{
|
||||
public string Error { get; set; }
|
||||
public List<MyAnonamouseTorrent> Data { get; set; }
|
||||
public IReadOnlyCollection<MyAnonamouseTorrent> Data { get; set; }
|
||||
public string Message { get; set; }
|
||||
}
|
||||
|
||||
public class MyAnonamouseBuyPersonalFreeleechResponse
|
||||
|
@ -666,7 +919,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
public class MyAnonamouseUserDataResponse
|
||||
{
|
||||
[JsonProperty(PropertyName = "class")]
|
||||
[JsonProperty(PropertyName = "classname")]
|
||||
public string UserClass { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -322,7 +322,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
ApiKey = "";
|
||||
}
|
||||
|
||||
[FieldDefinition(4, Label = "ApiKey", HelpText = "IndexerNebulanceSettingsApiKeyHelpText")]
|
||||
[FieldDefinition(2, Label = "ApiKey", HelpText = "IndexerNebulanceSettingsApiKeyHelpText", Privacy = PrivacyLevel.ApiKey)]
|
||||
public string ApiKey { get; set; }
|
||||
}
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ namespace NzbDrone.Core.Indexers.Newznab
|
|||
parameters.Set("tvdbid", searchCriteria.TvdbId.Value.ToString());
|
||||
}
|
||||
|
||||
if (searchCriteria.TmdbId.HasValue && capabilities.TvSearchTvdbAvailable)
|
||||
if (searchCriteria.TmdbId.HasValue && capabilities.TvSearchTmdbAvailable)
|
||||
{
|
||||
parameters.Set("tmdbid", searchCriteria.TmdbId.Value.ToString());
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public class NorBits : TorrentIndexerBase<NorBitsSettings>
|
|||
public override string[] IndexerUrls => new[] { "https://norbits.net/" };
|
||||
public override string Description => "NorBits is a Norwegian Private site for MOVIES / TV / GENERAL";
|
||||
public override string Language => "nb-NO";
|
||||
public override Encoding Encoding => Encoding.GetEncoding("iso-8859-1");
|
||||
public override Encoding Encoding => Encoding.UTF8;
|
||||
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
||||
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||
|
||||
|
@ -129,26 +129,14 @@ public class NorBits : TorrentIndexerBase<NorBitsSettings>
|
|||
}
|
||||
};
|
||||
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=1&sub2_cat[]=49", NewznabStandardCategory.MoviesUHD, "Filmer - UHD-2160p");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=1&sub2_cat[]=19", NewznabStandardCategory.MoviesHD, "Filmer - HD-1080p/i");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=1&sub2_cat[]=20", NewznabStandardCategory.MoviesHD, "Filmer - HD-720p");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=1&sub2_cat[]=22", NewznabStandardCategory.MoviesSD, "Filmer - SD");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=2&sub2_cat[]=49", NewznabStandardCategory.TVUHD, "TV - UHD-2160p");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=2&sub2_cat[]=19", NewznabStandardCategory.TVHD, "TV - HD-1080p/i");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=2&sub2_cat[]=20", NewznabStandardCategory.TVHD, "TV - HD-720p");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=2&sub2_cat[]=22", NewznabStandardCategory.TVSD, "TV - SD");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=1", NewznabStandardCategory.Movies, "Filmer");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=2", NewznabStandardCategory.TV, "TV");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=3", NewznabStandardCategory.PC, "Programmer");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=4", NewznabStandardCategory.Console, "Spill");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=42", NewznabStandardCategory.AudioMP3, "Musikk - 192");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=43", NewznabStandardCategory.AudioMP3, "Musikk - 256");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=44", NewznabStandardCategory.AudioMP3, "Musikk - 320");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=45", NewznabStandardCategory.AudioMP3, "Musikk - VBR");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=46", NewznabStandardCategory.AudioLossless, "Musikk - Lossless");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=5", NewznabStandardCategory.Audio, "Musikk");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=6", NewznabStandardCategory.Books, "Tidsskrift");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=7", NewznabStandardCategory.AudioAudiobook, "Lydbøker");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=8&sub2_cat[]=19", NewznabStandardCategory.AudioVideo, "Musikkvideoer - HD-1080p/i");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=8&sub2_cat[]=20", NewznabStandardCategory.AudioVideo, "Musikkvideoer - HD-720p");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=8&sub2_cat[]=22", NewznabStandardCategory.AudioVideo, "Musikkvideoer - SD");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=8", NewznabStandardCategory.AudioVideo, "Musikkvideoer");
|
||||
caps.Categories.AddCategoryMapping("main_cat[]=40", NewznabStandardCategory.AudioOther, "Podcasts");
|
||||
|
||||
return caps;
|
||||
|
@ -190,7 +178,7 @@ public class NorBitsRequestGenerator : IIndexerRequestGenerator
|
|||
}
|
||||
else if (!string.IsNullOrWhiteSpace(term))
|
||||
{
|
||||
searchTerm = "search=" + term.UrlEncode(Encoding.GetEncoding(28591));
|
||||
searchTerm = "search=" + term.UrlEncode(Encoding.UTF8);
|
||||
}
|
||||
|
||||
searchUrl += "?" + searchTerm + "&" + parameters.GetQueryString();
|
||||
|
@ -277,20 +265,17 @@ public class NorBitsParser : IParseIndexerResponse
|
|||
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var link = _settings.BaseUrl + row.QuerySelector("td:nth-of-type(2) > a[href*=\"download.php?id=\"]")?.GetAttribute("href").TrimStart('/');
|
||||
var link = _settings.BaseUrl + row.QuerySelector("td:nth-of-type(2) > a[href*=\"download.php?id=\"]")?.GetAttribute("href")?.TrimStart('/');
|
||||
var qDetails = row.QuerySelector("td:nth-of-type(2) > a[href*=\"details.php?id=\"]");
|
||||
|
||||
var title = qDetails?.GetAttribute("title").Trim();
|
||||
var details = _settings.BaseUrl + qDetails?.GetAttribute("href").TrimStart('/');
|
||||
var title = qDetails?.GetAttribute("title")?.Trim();
|
||||
var details = _settings.BaseUrl + qDetails?.GetAttribute("href")?.TrimStart('/');
|
||||
|
||||
var mainCategory = row.QuerySelector("td:nth-of-type(1) > div > a[href*=\"main_cat[]\"]")?.GetAttribute("href")?.Split('?').Last();
|
||||
var secondCategory = row.QuerySelector("td:nth-of-type(1) > div > a[href*=\"sub2_cat[]\"]")?.GetAttribute("href")?.Split('?').Last();
|
||||
var catQuery = row.QuerySelector("td:nth-of-type(1) a[href*=\"main_cat[]\"]")?.GetAttribute("href")?.Split('?').Last().Split('&', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
var category = catQuery?.FirstOrDefault(x => x.StartsWith("main_cat[]=", StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
var categoryList = new[] { mainCategory, secondCategory };
|
||||
var cat = string.Join("&", categoryList.Where(c => !string.IsNullOrWhiteSpace(c)));
|
||||
|
||||
var seeders = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(9)").TextContent);
|
||||
var leechers = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(10)").TextContent);
|
||||
var seeders = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(9)")?.TextContent);
|
||||
var leechers = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(10)")?.TextContent);
|
||||
|
||||
var release = new TorrentInfo
|
||||
{
|
||||
|
@ -298,7 +283,7 @@ public class NorBitsParser : IParseIndexerResponse
|
|||
InfoUrl = details,
|
||||
DownloadUrl = link,
|
||||
Title = title,
|
||||
Categories = _categories.MapTrackerCatToNewznab(cat),
|
||||
Categories = _categories.MapTrackerCatToNewznab(category),
|
||||
Size = ParseUtil.GetBytes(row.QuerySelector("td:nth-of-type(7)")?.TextContent),
|
||||
Files = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(3) > a")?.TextContent.Trim()),
|
||||
Grabs = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(8)")?.FirstChild?.TextContent.Trim()),
|
||||
|
|
|
@ -8,6 +8,7 @@ using FluentValidation;
|
|||
using NLog;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Annotations;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers.Definitions.Gazelle;
|
||||
|
@ -252,7 +253,9 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
||||
{
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
|
||||
STJson.TryDeserialize<GazelleErrorResponse>(indexerResponse.Content, out var errorResponse);
|
||||
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
|
||||
}
|
||||
|
||||
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Configuration;
|
||||
|
@ -15,6 +16,7 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
|
|||
public override bool SupportsSearch => true;
|
||||
public override bool SupportsPagination => true;
|
||||
public override int PageSize => 50;
|
||||
public override TimeSpan RateLimit => TimeSpan.FromSeconds(4);
|
||||
|
||||
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||
|
||||
|
|
|
@ -56,6 +56,19 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
|
|||
{
|
||||
foreach (var torrent in result.Torrents)
|
||||
{
|
||||
// skip non-freeleech results when freeleech only is set
|
||||
var downloadVolumeFactor = torrent.FreeleechType?.ToUpperInvariant() switch
|
||||
{
|
||||
"FREELEECH" or "NEUTRAL LEECH" => 0,
|
||||
"HALF LEECH" => 0.5,
|
||||
_ => 1
|
||||
};
|
||||
|
||||
if (_settings.FreeleechOnly && downloadVolumeFactor != 0.0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var id = torrent.Id;
|
||||
var title = torrent.ReleaseName;
|
||||
|
||||
|
@ -78,6 +91,12 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
|
|||
categories.Add(NewznabStandardCategory.TV);
|
||||
}
|
||||
|
||||
var uploadVolumeFactor = torrent.FreeleechType?.ToUpperInvariant() switch
|
||||
{
|
||||
"NEUTRAL LEECH" => 0,
|
||||
_ => 1
|
||||
};
|
||||
|
||||
torrentInfos.Add(new TorrentInfo
|
||||
{
|
||||
Guid = $"PassThePopcorn-{id}",
|
||||
|
@ -94,13 +113,8 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
|
|||
ImdbId = result.ImdbId.IsNotNullOrWhiteSpace() ? int.Parse(result.ImdbId) : 0,
|
||||
Scene = torrent.Scene,
|
||||
IndexerFlags = flags,
|
||||
DownloadVolumeFactor = torrent.FreeleechType?.ToUpperInvariant() switch
|
||||
{
|
||||
"FREELEECH" => 0,
|
||||
"HALF LEECH" => 0.5,
|
||||
_ => 1
|
||||
},
|
||||
UploadVolumeFactor = 1,
|
||||
DownloadVolumeFactor = downloadVolumeFactor,
|
||||
UploadVolumeFactor = uploadVolumeFactor,
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 345600,
|
||||
Genres = result.Tags ?? new List<string>(),
|
||||
|
|
|
@ -8,6 +8,7 @@ using FluentValidation;
|
|||
using NLog;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Annotations;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers.Definitions.Gazelle;
|
||||
|
@ -252,7 +253,9 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
||||
{
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
|
||||
STJson.TryDeserialize<GazelleErrorResponse>(indexerResponse.Content, out var errorResponse);
|
||||
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
|
||||
}
|
||||
|
||||
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
"https://rutracker.net/",
|
||||
"https://rutracker.nl/"
|
||||
};
|
||||
public override string Description => "RuTracker.org is a Semi-Private Russian torrent site with a thriving file-sharing community";
|
||||
public override string Description => "RuTracker.org is a RUSSIAN Semi-Private site with a thriving file-sharing community";
|
||||
public override string Language => "ru-RU";
|
||||
public override Encoding Encoding => Encoding.GetEncoding("windows-1251");
|
||||
public override IndexerPrivacy Privacy => IndexerPrivacy.SemiPrivate;
|
||||
|
@ -144,6 +144,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
SupportsRawSearch = true
|
||||
};
|
||||
|
||||
// Note: When refreshing the categories use the tracker.php page and NOT the search.php page!
|
||||
caps.Categories.AddCategoryMapping(22, NewznabStandardCategory.Movies, "Наше кино");
|
||||
caps.Categories.AddCategoryMapping(941, NewznabStandardCategory.Movies, "|- Кино СССР");
|
||||
caps.Categories.AddCategoryMapping(1666, NewznabStandardCategory.Movies, "|- Детские отечественные фильмы");
|
||||
|
@ -933,6 +934,8 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
caps.Categories.AddCategoryMapping(1224, NewznabStandardCategory.AudioLossless, "|- Авторская песня (lossless)");
|
||||
caps.Categories.AddCategoryMapping(1225, NewznabStandardCategory.AudioMP3, "|- Авторская песня (lossy)");
|
||||
caps.Categories.AddCategoryMapping(1226, NewznabStandardCategory.Audio, "|- Менестрели и ролевики (lossy и lossless)");
|
||||
caps.Categories.AddCategoryMapping(782, NewznabStandardCategory.Audio, "Лейбл- и сцен-паки. Неофициальные сборники и ремастеринги. AI-музыка");
|
||||
caps.Categories.AddCategoryMapping(577, NewznabStandardCategory.Audio, "|- AI-Music - музыка ИИ, нейросетей (lossy и lossless)");
|
||||
caps.Categories.AddCategoryMapping(1842, NewznabStandardCategory.AudioLossless, "Label Packs (lossless)");
|
||||
caps.Categories.AddCategoryMapping(1648, NewznabStandardCategory.AudioMP3, "Label packs, Scene packs (lossy)");
|
||||
caps.Categories.AddCategoryMapping(134, NewznabStandardCategory.AudioLossless, "|- Неофициальные сборники и ремастеринги (lossless)");
|
||||
|
@ -1292,7 +1295,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
caps.Categories.AddCategoryMapping(650, NewznabStandardCategory.PCMobileOther, "Игры для мобильных устройств");
|
||||
caps.Categories.AddCategoryMapping(2149, NewznabStandardCategory.PCMobileAndroid, "|- Игры для Android");
|
||||
caps.Categories.AddCategoryMapping(2420, NewznabStandardCategory.ConsoleOther, "|- Игры для Oculus Quest");
|
||||
caps.Categories.AddCategoryMapping(1001, NewznabStandardCategory.PC, "|- Игры для Java");
|
||||
caps.Categories.AddCategoryMapping(1004, NewznabStandardCategory.PCMobileOther, "|- Игры для Symbian");
|
||||
caps.Categories.AddCategoryMapping(1002, NewznabStandardCategory.PCMobileOther, "|- Игры для Windows Mobile");
|
||||
caps.Categories.AddCategoryMapping(240, NewznabStandardCategory.OtherMisc, "Игровое видео");
|
||||
|
@ -1308,7 +1310,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
caps.Categories.AddCategoryMapping(1379, NewznabStandardCategory.PC, "|- Операционные системы (Linux, Unix)");
|
||||
caps.Categories.AddCategoryMapping(1381, NewznabStandardCategory.PC, "|- Программное обеспечение (Linux, Unix)");
|
||||
caps.Categories.AddCategoryMapping(1473, NewznabStandardCategory.PC, "|- Другие ОС и ПО под них");
|
||||
caps.Categories.AddCategoryMapping(1195, NewznabStandardCategory.PC, "Тестовые диски для настройки аудио/видео аппаратуры");
|
||||
caps.Categories.AddCategoryMapping(1013, NewznabStandardCategory.PC, "Системные программы");
|
||||
caps.Categories.AddCategoryMapping(1028, NewznabStandardCategory.PC, "|- Работа с жёстким диском");
|
||||
caps.Categories.AddCategoryMapping(1029, NewznabStandardCategory.PC, "|- Резервное копирование");
|
||||
|
@ -1350,6 +1351,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
caps.Categories.AddCategoryMapping(1018, NewznabStandardCategory.PC, "|- Шаблоны для сайтов и CMS");
|
||||
caps.Categories.AddCategoryMapping(1058, NewznabStandardCategory.PC, "|- Разное (Веб-разработка и программирование)");
|
||||
caps.Categories.AddCategoryMapping(1016, NewznabStandardCategory.PC, "Программы для работы с мультимедиа и 3D");
|
||||
caps.Categories.AddCategoryMapping(1195, NewznabStandardCategory.PC, "|- Тестовые диски для настройки аудио/видео аппаратуры");
|
||||
caps.Categories.AddCategoryMapping(1079, NewznabStandardCategory.PC, "|- Программные комплекты");
|
||||
caps.Categories.AddCategoryMapping(1080, NewznabStandardCategory.PC, "|- Плагины для программ компании Adobe");
|
||||
caps.Categories.AddCategoryMapping(1081, NewznabStandardCategory.PC, "|- Графические редакторы");
|
||||
|
@ -1750,7 +1752,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
title = Regex.Replace(title, @"(\([\p{IsCyrillic}\W]+)\s/\s(.+?)\)", string.Empty, RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
// Remove VO, MVO and DVO from titles
|
||||
var vo = new Regex(@".VO\s\(.+?\)");
|
||||
var vo = new Regex(@"((?:\dx\s)?(?:[A-Z])?VO\s\(.+?\))");
|
||||
title = vo.Replace(title, string.Empty);
|
||||
|
||||
// Remove R5 and (R5) from release names
|
||||
|
@ -1758,7 +1760,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
title = r5.Replace(title, "$1");
|
||||
|
||||
// Remove Sub languages from release names
|
||||
title = Regex.Replace(title, @"(\bSub\b.*$|\b[\+]*Sub[\+]*\b)", string.Empty);
|
||||
title = Regex.Replace(title, @"(\bSub\b[^+]*\b|\b[\+]*Sub[\+]*\b)", string.Empty);
|
||||
}
|
||||
|
||||
// language fix: all rutracker releases contains russian track
|
||||
|
|
|
@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
|
|||
using NLog;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers.Definitions.Gazelle;
|
||||
using NzbDrone.Core.Indexers.Exceptions;
|
||||
|
@ -19,7 +20,7 @@ public class SecretCinema : GazelleBase<GazelleSettings>
|
|||
{
|
||||
public override string Name => "Secret Cinema";
|
||||
public override string[] IndexerUrls => new[] { "https://secret-cinema.pw/" };
|
||||
public override string Description => "A tracker for rare movies.";
|
||||
public override string Description => "Secret Cinema is a Private ratioless site for rare MOVIES.";
|
||||
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
||||
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||
|
||||
|
@ -78,7 +79,9 @@ public class SecretCinemaParser : IParseIndexerResponse
|
|||
// Remove cookie cache
|
||||
CookiesUpdater(null, null);
|
||||
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
|
||||
STJson.TryDeserialize<GazelleErrorResponse>(indexerResponse.Content, out var errorResponse);
|
||||
|
||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
|
||||
}
|
||||
|
||||
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
|
||||
|
@ -148,7 +151,7 @@ public class SecretCinemaParser : IParseIndexerResponse
|
|||
|
||||
if (torrent.RemasterTitle.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
release.Title += $" [{torrent.RemasterTitle.Trim()}]";
|
||||
release.Title += $" [{WebUtility.HtmlDecode(torrent.RemasterTitle).Trim()}]";
|
||||
}
|
||||
|
||||
// Replace media formats with standards
|
||||
|
|
|
@ -262,7 +262,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
return jsonResponse.Resource.Select(torrent => new TorrentInfo
|
||||
{
|
||||
Guid = torrent.Id.ToString(),
|
||||
Guid = torrent.Url,
|
||||
Title = CleanTitle(torrent.Name),
|
||||
Description = torrent.ShortDescription,
|
||||
Size = torrent.Size,
|
||||
|
|
|
@ -7,6 +7,7 @@ using NzbDrone.Common.Extensions;
|
|||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Annotations;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers.Exceptions;
|
||||
using NzbDrone.Core.Indexers.Settings;
|
||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
|
@ -52,7 +53,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
public override IParseIndexerResponse GetParser()
|
||||
{
|
||||
return new TorrentDayParser(Settings, Capabilities.Categories);
|
||||
return new TorrentDayParser(Settings, Capabilities.Categories, _logger);
|
||||
}
|
||||
|
||||
protected override IDictionary<string, string> GetCookies()
|
||||
|
@ -228,15 +229,29 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
{
|
||||
private readonly TorrentDaySettings _settings;
|
||||
private readonly IndexerCapabilitiesCategories _categories;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public TorrentDayParser(TorrentDaySettings settings, IndexerCapabilitiesCategories categories)
|
||||
public TorrentDayParser(TorrentDaySettings settings, IndexerCapabilitiesCategories categories, Logger logger)
|
||||
{
|
||||
_settings = settings;
|
||||
_categories = categories;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
||||
{
|
||||
if (indexerResponse.HttpResponse.HasHttpRedirect)
|
||||
{
|
||||
_logger.Warn("Redirected to {0} from indexer request", indexerResponse.HttpResponse.RedirectUrl);
|
||||
|
||||
if (indexerResponse.HttpResponse.RedirectUrl.ContainsIgnoreCase("/login.php"))
|
||||
{
|
||||
throw new IndexerException(indexerResponse, "We are being redirected to the login page. Most likely your session expired or was killed. Recheck your cookie and try testing the indexer.");
|
||||
}
|
||||
|
||||
throw new IndexerException(indexerResponse, "Redirected to {0} from indexer request", indexerResponse.HttpResponse.RedirectUrl);
|
||||
}
|
||||
|
||||
var torrentInfos = new List<TorrentInfo>();
|
||||
|
||||
var rows = JsonConvert.DeserializeObject<dynamic>(indexerResponse.Content);
|
||||
|
|
|
@ -121,8 +121,15 @@ public class XSpeeds : TorrentIndexerBase<XSpeedsSettings>
|
|||
caps.Categories.AddCategoryMapping(112, NewznabStandardCategory.MoviesOther, "Anime Movies");
|
||||
caps.Categories.AddCategoryMapping(111, NewznabStandardCategory.MoviesOther, "Anime TV");
|
||||
caps.Categories.AddCategoryMapping(150, NewznabStandardCategory.PC, "Apps");
|
||||
caps.Categories.AddCategoryMapping(80, NewznabStandardCategory.AudioAudiobook, "Audiobooks");
|
||||
caps.Categories.AddCategoryMapping(48, NewznabStandardCategory.Books, "Books Magazines");
|
||||
caps.Categories.AddCategoryMapping(156, NewznabStandardCategory.TV, "AV1");
|
||||
caps.Categories.AddCategoryMapping(156, NewznabStandardCategory.Movies, "AV1");
|
||||
caps.Categories.AddCategoryMapping(159, NewznabStandardCategory.Movies, "Movie Boxsets AV1");
|
||||
caps.Categories.AddCategoryMapping(158, NewznabStandardCategory.Movies, "Movies AV1");
|
||||
caps.Categories.AddCategoryMapping(157, NewznabStandardCategory.TV, "TV AV1");
|
||||
caps.Categories.AddCategoryMapping(160, NewznabStandardCategory.TV, "TV Boxsets AV1");
|
||||
caps.Categories.AddCategoryMapping(153, NewznabStandardCategory.Books, "Books");
|
||||
caps.Categories.AddCategoryMapping(154, NewznabStandardCategory.AudioAudiobook, "Audiobooks");
|
||||
caps.Categories.AddCategoryMapping(155, NewznabStandardCategory.Books, "Books & Magazines");
|
||||
caps.Categories.AddCategoryMapping(68, NewznabStandardCategory.MoviesOther, "Cams/TS");
|
||||
caps.Categories.AddCategoryMapping(140, NewznabStandardCategory.TVDocumentary, "Documentary");
|
||||
caps.Categories.AddCategoryMapping(10, NewznabStandardCategory.MoviesDVD, "DVDR");
|
||||
|
@ -154,6 +161,7 @@ public class XSpeeds : TorrentIndexerBase<XSpeedsSettings>
|
|||
caps.Categories.AddCategoryMapping(146, NewznabStandardCategory.MoviesSD, "Movies SD");
|
||||
caps.Categories.AddCategoryMapping(13, NewznabStandardCategory.Audio, "Music");
|
||||
caps.Categories.AddCategoryMapping(135, NewznabStandardCategory.AudioLossless, "Music/FLAC");
|
||||
caps.Categories.AddCategoryMapping(151, NewznabStandardCategory.Audio, "Karaoke");
|
||||
caps.Categories.AddCategoryMapping(136, NewznabStandardCategory.Audio, "Music Boxset");
|
||||
caps.Categories.AddCategoryMapping(148, NewznabStandardCategory.AudioVideo, "Music Videos");
|
||||
caps.Categories.AddCategoryMapping(9, NewznabStandardCategory.Other, "Other");
|
||||
|
|
|
@ -250,7 +250,11 @@ namespace NzbDrone.Core.Indexers
|
|||
{
|
||||
var response = await _httpClient.ExecuteProxiedAsync(request, Definition);
|
||||
|
||||
if (response.StatusCode is HttpStatusCode.MovedPermanently or HttpStatusCode.Found or HttpStatusCode.SeeOther)
|
||||
if (response.StatusCode is HttpStatusCode.MovedPermanently
|
||||
or HttpStatusCode.Found
|
||||
or HttpStatusCode.SeeOther
|
||||
or HttpStatusCode.TemporaryRedirect
|
||||
or HttpStatusCode.PermanentRedirect)
|
||||
{
|
||||
var autoRedirectChain = new List<string> { request.Url.ToString() };
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@ namespace NzbDrone.Core.Indexers
|
|||
}
|
||||
|
||||
public static IndexerFlag Internal => new ("internal", "Uploader is an internal release group");
|
||||
public static IndexerFlag Exclusive => new ("exclusive", "An exclusive release that must not be uploaded anywhere else");
|
||||
public static IndexerFlag FreeLeech => new ("freeleech", "Download doesn't count toward ratio");
|
||||
public static IndexerFlag NeutralLeech => new ("neutralleech", "Download and upload doesn't count toward ratio");
|
||||
public static IndexerFlag HalfLeech => new ("halfleech", "Release counts 50% to ratio");
|
||||
|
|
|
@ -95,7 +95,7 @@ namespace NzbDrone.Core.Instrumentation
|
|||
|
||||
private void ReconfigureFile()
|
||||
{
|
||||
foreach (var target in LogManager.Configuration.AllTargets.OfType<NzbDroneFileTarget>())
|
||||
foreach (var target in LogManager.Configuration.AllTargets.OfType<CleansingFileTarget>())
|
||||
{
|
||||
target.MaxArchiveFiles = _configFileProvider.LogRotate;
|
||||
target.ArchiveAboveSize = _configFileProvider.LogSizeLimit.Megabytes();
|
||||
|
@ -120,11 +120,7 @@ namespace NzbDrone.Core.Instrumentation
|
|||
{
|
||||
var format = _configFileProvider.ConsoleLogFormat;
|
||||
|
||||
consoleTarget.Layout = format switch
|
||||
{
|
||||
ConsoleLogFormat.Clef => NzbDroneLogger.ClefLogLayout,
|
||||
_ => NzbDroneLogger.ConsoleLogLayout
|
||||
};
|
||||
NzbDroneLogger.ConfigureConsoleLayout(consoleTarget, format);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -376,5 +376,46 @@
|
|||
"ActiveIndexers": "Активни индиксатори",
|
||||
"AddApplication": "добави приложение",
|
||||
"Season": "Причина",
|
||||
"CurrentlyInstalled": "Понастоящем инсталиран"
|
||||
"CurrentlyInstalled": "Понастоящем инсталиран",
|
||||
"DownloadClientSettingsAddPaused": "Добави на пауза",
|
||||
"Encoding": "Кодиране",
|
||||
"Episode": "епизод",
|
||||
"Applications": "Приложения",
|
||||
"Publisher": "Издател",
|
||||
"Id": "ИН",
|
||||
"Theme": "Тема",
|
||||
"Label": "Етикет",
|
||||
"Categories": "Категории",
|
||||
"Album": "албум",
|
||||
"Artist": "изпълнител",
|
||||
"AddConnection": "Добави връзка",
|
||||
"AddConnectionImplementation": "Добави връзка - {implementationName}",
|
||||
"AddDownloadClientImplementation": "Добави клиент за изтегляне - {implementationName}",
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Потвърдете новата парола",
|
||||
"Default": "Подразбиране",
|
||||
"Any": "Всеки",
|
||||
"ApplicationUrlHelpText": "Външният URL адрес на това приложение, включително http(s)://, порт и основно URL",
|
||||
"Database": "База данни",
|
||||
"Destination": "Дестинация",
|
||||
"DownloadClientAriaSettingsDirectoryHelpText": "Незадължително локация за изтеглянията, оставете празно, за да използвате локацията по подразбиране на Aria2",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Добавя префикс към url адреса на deluge json, вижте {url}",
|
||||
"Directory": "Директория",
|
||||
"AddIndexerImplementation": "Добави индексатор - {implementationName}",
|
||||
"AuthenticationRequiredHelpText": "Променете за кои заявки се изисква удостоверяване. Не променяйте, освен ако не разбирате рисковете.",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Въведете нова парола",
|
||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Незадължителна споделена папка, в която да се поставят изтеглянията, оставете празно, за да използвате местоположението по подразбиране на Download Station",
|
||||
"DownloadClientFloodSettingsAdditionalTags": "Допълнителни тагове",
|
||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Добавя свойствата на медията като тагове. Напътствията са примери.",
|
||||
"DownloadClientFloodSettingsTagsHelpText": "Първоначални тагове на изтегляне. За да бъде разпознато едно изтегляне, то трябва да има всички начални тагове. По този начин се избягват конфликти с необвързани с приложение изтегляния.",
|
||||
"ApplicationURL": "URL адрес на приложението",
|
||||
"AuthenticationRequired": "Изисква се удостоверяване",
|
||||
"ApplyChanges": "Прилагане на промените",
|
||||
"ApiKeyValidationHealthCheckMessage": "Моля, актуализирайте API ключа си така, че да съдържа поне {length} знака. Можете да направите това чрез настройките или конфигурационния файл",
|
||||
"AppUpdated": "{appName} Актуализиран",
|
||||
"AppUpdatedVersion": "{appName} е актуализиранa до версия `{version}`, за да получите най-новите промени, ще трябва да презаредите {appName}",
|
||||
"Donate": "Дарете",
|
||||
"AddCustomFilter": "Добави персонализиран филтър",
|
||||
"AuthenticationMethod": "Метод за удостоверяване",
|
||||
"AuthenticationMethodHelpTextWarning": "Моля, изберете валиден метод за удостоверяване",
|
||||
"BlackholeFolderHelpText": "Папка, в която {appName} ще съхранява файла {extension}"
|
||||
}
|
||||
|
|
|
@ -484,7 +484,7 @@
|
|||
"InfoUrl": "URL d'informació",
|
||||
"PublishedDate": "Data de publicació",
|
||||
"Redirected": "Redirecció",
|
||||
"AllSearchResultsHiddenByFilter": "Tots els resultats estan ocults pel filtre aplicat",
|
||||
"AllSearchResultsHiddenByFilter": "Tots els resultats estan ocults pel filtre aplicat.",
|
||||
"HealthMessagesInfoBox": "Podeu trobar més informació sobre la causa d'aquests missatges de comprovació de salut fent clic a l'enllaç wiki (icona del llibre) al final de la fila o consultant els vostres [registres]({link}). Si teniu problemes per a interpretar aquests missatges, podeu posar-vos en contacte amb el nostre suport als enllaços següents.",
|
||||
"AptUpdater": "Utilitzeu apt per a instal·lar l'actualització",
|
||||
"DockerUpdater": "actualitzeu el contenidor Docker per a rebre l'actualització",
|
||||
|
@ -500,5 +500,245 @@
|
|||
"UpdateAppDirectlyLoadError": "No es pot actualitzar {appName} directament,",
|
||||
"WouldYouLikeToRestoreBackup": "Voleu restaurar la còpia de seguretat '{name}'?",
|
||||
"InstallLatest": "Instal·la l'últim",
|
||||
"CurrentlyInstalled": "Instal·lat actualment"
|
||||
"CurrentlyInstalled": "Instal·lat actualment",
|
||||
"DownloadClientSettingsAddPaused": "Afegeix pausats",
|
||||
"Install": "Instal·la",
|
||||
"DownloadClientFloodSettingsAdditionalTags": "Etiquetes addicionals",
|
||||
"DownloadClientFreeboxSettingsApiUrl": "URL de l'API",
|
||||
"DownloadClientFreeboxSettingsAppId": "Identificador de l'aplicació",
|
||||
"PreviouslyInstalled": "Instal·lat anteriorment",
|
||||
"PasswordConfirmation": "Confirmeu la contrasenya",
|
||||
"IndexerHDBitsSettingsOriginsHelpText": "Si no s'especifica, s'utilitzen totes les opcions.",
|
||||
"MinimumSeeders": "Seeders mínims",
|
||||
"SeedRatio": "Ràtio de la llavor",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Si un torrent està bloquejat per un hash, pot ser que no es rebutgi correctament durant el RSS/Search per a alguns indexadors, habilitant això permetrà que es rebutgi després que s'agafi el torrent, però abans que s'enviï al client.",
|
||||
"SeedTime": "Temps de la llavor",
|
||||
"DefaultCategory": "Categoria predeterminada",
|
||||
"IndexerVipExpiredHealthCheckMessage": "Els beneficis VIP de l'indexador han caducat: {indexerNames}",
|
||||
"MassEditor": "Editor de masses",
|
||||
"NoSearchResultsFound": "No s'han trobat resultats de cerca, proveu de realitzar una nova cerca a continuació.",
|
||||
"NotSupported": "No suportat",
|
||||
"OverrideAndAddToDownloadClient": "Sobreescriu i afegeix al client de baixada",
|
||||
"PackSeedTime": "Temps de la llavor del paquet",
|
||||
"SearchAllIndexers": "Cerca tots els indexadors",
|
||||
"SearchIndexers": "Cerca indexadors",
|
||||
"SeedTimeHelpText": "L'hora en què un torrent s'ha de sembrar abans d'aturar-se, buit és el predeterminat de l'aplicació",
|
||||
"SettingsIndexerLogging": "Registre de l'indexador millorat",
|
||||
"TotalIndexerSuccessfulGrabs": "Indexador total correcte",
|
||||
"BookSearch": "Cerca de llibres",
|
||||
"ClearHistoryMessageText": "Esteu segur que voleu netejar tot l'historial de {appName}?",
|
||||
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
|
||||
"ClearHistory": "Neteja l'historial",
|
||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Clau de l'API del lloc",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
|
||||
"IndexerBeyondHDSettingsRssKeyHelpText": "Clau RSS del lloc (trobada a Seguretat => Clau RSS)",
|
||||
"ApplicationsLoadError": "No s'ha pogut carregar la llista d'aplicacions",
|
||||
"BookSearchTypes": "Tipus de cerca de llibres",
|
||||
"DownloadClientCategory": "Baixa la categoria del client",
|
||||
"IndexerAuth": "Autor de l'indexador",
|
||||
"IndexerBeyondHDSettingsLimitedOnly": "Només limitat",
|
||||
"IndexerBeyondHDSettingsRefundOnly": "Només el reemborsament",
|
||||
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Cerca només el reemborsament",
|
||||
"IndexerBeyondHDSettingsRewindOnlyHelpText": "Cerca només el rebobinat",
|
||||
"IndexerBeyondHDSettingsSearchTypes": "Tipus de cerca",
|
||||
"IndexerBeyondHDSettingsSearchTypesHelpText": "Seleccioneu els tipus de llançaments que us interessin. Si no hi ha cap seleccionat, s'utilitzen totes les opcions.",
|
||||
"IndexerDownloadClientHelpText": "Especifiqueu quin client de baixada s'utilitza per a les captures fetes a {appName} des d'aquest indexador",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Ha de tenir permisos d'usuari i torrents",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNames": "Cerca noms de grup",
|
||||
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Mostra només els llançaments de freeleech",
|
||||
"IndexerHDBitsSettingsUseFilenames": "Utilitza els noms de fitxer",
|
||||
"IndexerHDBitsSettingsUseFilenamesHelpText": "Marqueu aquesta opció si voleu utilitzar noms de fitxer torrent com a títols de llançament",
|
||||
"IndexerHDBitsSettingsUsernameHelpText": "Nom d'usuari del lloc",
|
||||
"IndexerHealthCheckNoIndexers": "No hi ha indexadors activats, {appName} no retornarà els resultats de la cerca",
|
||||
"IndexerHistoryLoadError": "Error en carregar l'historial de l'indexador",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Agent d'usuari de la galeta",
|
||||
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
|
||||
"IndexerInfo": "Informació de l'indexador",
|
||||
"IndexerNebulanceSettingsApiKeyHelpText": "Clau API de la Configuració de l'usuari . Claus Api. La clau ha de tenir permisos de llista i baixada",
|
||||
"IndexerNewznabSettingsVipExpirationHelpText": "Data d'entrada (yyyy-mm-dd) per a la caducitat VIP o en blanc, {appName} notificarà 1 setmana des de la caducitat de VIP",
|
||||
"IndexerNoDefinitionCheckHealthCheckMessage": "Els indexadors no tenen definició i no funcionaran: {indexerNames}. Suprimiu i (o torneu a afegir) a {appName}.",
|
||||
"IndexerObsoleteCheckMessage": "Els indexadors estan obsolets o s'han actualitzat: {0}. Suprimiu i (o torneu a afegir) a {appName}",
|
||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "Clau de l'API del lloc",
|
||||
"IndexerRss": "Indexador RSS",
|
||||
"IndexerSettingsGrabLimitHelpText": "El nombre màxim de captures especificat per la unitat respectiva que {appName} permetrà al lloc",
|
||||
"IndexerSettingsPackSeedTimeIndexerHelpText": "L'hora en què un paquet (temporada o discografia) s'ha de sembrar el torrent abans d'aturar-se, buit és el valor predeterminat de l'aplicació",
|
||||
"IndexerSettingsPreferMagnetUrl": "Prefereix l'URL de l'imant",
|
||||
"IndexerSettingsPreferMagnetUrlHelpText": "Quan està activat, aquest indexador preferirà l'ús d'URLs magnet per a les captures amb enllaços de reserva a torrents",
|
||||
"IndexerSettingsQueryLimitHelpText": "El nombre màxim de consultes especificat per la unitat respectiva que {appName} permetrà al lloc",
|
||||
"InitialFailure": "Fallada inicial",
|
||||
"NoIndexerCategories": "No s'ha trobat cap categoria per a aquest indexador",
|
||||
"RepeatSearch": "Cerca repetida",
|
||||
"SettingsLogRotateHelpText": "Nombre màxim de fitxers de registre a mantenir desats a la carpeta de registres",
|
||||
"SyncProfile": "Perfil de sincronització",
|
||||
"TotalUserAgentGrabs": "Total d'agents d'usuari",
|
||||
"UnableToLoadAppProfiles": "No s'han pogut carregar els perfils de l'aplicació",
|
||||
"VipExpiration": "Caducitat VIP",
|
||||
"IndexerOrpheusSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
|
||||
"IndexerRedactedSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
|
||||
"ProwlarrSupportsAnyIndexer": "{appName} admet molts indexadors, a més de qualsevol indexador que utilitzi l'estàndard Newznab/Torznab utilitzant 'Generic Newznab' (per usenet) o 'Generic Torznab' (per torrents). Cerca i selecciona el teu indexador des de sota.",
|
||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Categoria alternativa predeterminada si no hi ha cap categoria assignada per a un llançament. Afegir una categoria específica a {appName} evita conflictes amb baixades no relacionades amb {appName}. L'ús d'una categoria és opcional, però molt recomanable.",
|
||||
"AppProfileSelectHelpText": "Els perfils d'aplicació s'utilitzen per controlar RSS, la cerca automàtica i la configuració de cerca interactiva en sincronitzar aplicacions",
|
||||
"AudioSearch": "Cerca d'àudio",
|
||||
"IndexerSettingsAppsMinimumSeeders": "Aplicacions de cercadors mínims",
|
||||
"DeleteApplication": "Suprimeix l'aplicació",
|
||||
"DownloadClientSettingsPriorityItemHelpText": "Prioritat a usar en capturar elements",
|
||||
"DownloadClientSettingsDefaultCategoryHelpText": "Categoria alternativa predeterminada si no hi ha cap categoria assignada per a un llançament. Afegir una categoria específica a {appName} evita conflictes amb baixades no relacionades amb {appName}. L'ús d'una categoria és opcional, però molt recomanable.",
|
||||
"EditCategory": "Edita la categoria",
|
||||
"IndexerQuery": "Consulta de l'indexador",
|
||||
"IndexerSettingsBaseUrl": "Url base",
|
||||
"IndexerSettingsCookieHelpText": "Cookie del lloc",
|
||||
"IndexerSettingsLimitsUnitHelpText": "La unitat de temps per comptar els límits per indexador",
|
||||
"IndexerSettingsPackSeedTime": "Temps de la llavor del paquet",
|
||||
"IndexerSite": "Lloc indexador",
|
||||
"IndexerTagsHelpTextWarning": "Les etiquetes s'han d'utilitzar amb precaució, poden tenir efectes no desitjats. Un indexador amb una etiqueta només sincronitzarà amb aplicacions amb la mateixa etiqueta.",
|
||||
"IndexerSettingsSummary": "Configura diversos paràmetres globals de l'indexador.",
|
||||
"ManageApplications": "Gestiona les aplicacions",
|
||||
"PackSeedTimeHelpText": "L'hora en què un paquet (temporada o discografia) s'ha de sembrar el torrent abans d'aturar-se, buit és el valor predeterminat de l'aplicació",
|
||||
"PreferMagnetUrl": "Prefereix l'URL de l'imant",
|
||||
"PreferMagnetUrlHelpText": "Quan està activat, aquest indexador preferirà l'ús d'URLs magnet per a les captures amb enllaços de reserva a torrents",
|
||||
"ProwlarrDownloadClientsInAppOnlyAlert": "Els clients de baixada només són per a les cerques a l'aplicació {appName} i no sincronitzen amb les aplicacions. No hi ha plans per afegir aquesta funcionalitat.",
|
||||
"IndexerBeyondHDSettingsRewindOnly": "Només rebobina",
|
||||
"ProxyValidationUnableToConnect": "No s'ha pogut connectar al servidor intermediari: {exceptionMessage}. Comprova els detalls del registre que envolta aquest error",
|
||||
"QueryOptions": "Opcions de la consulta",
|
||||
"TestAllApps": "Prova totes les aplicacions",
|
||||
"TotalHostQueries": "Total de consultes de l'amfitrió",
|
||||
"AverageGrabs": "Mitjana d'herba",
|
||||
"AverageQueries": "Mitjana de consultes",
|
||||
"FilterPlaceHolder": "Cerca indexadors",
|
||||
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Cerca només freeleech (Limited UL)",
|
||||
"IndexerBeyondHDSettingsApiKeyHelpText": "Clau API del lloc (trobada a Seguretat => Clau API)",
|
||||
"IndexerSettingsVipExpiration": "Caducitat VIP",
|
||||
"IndexerVipExpiringHealthCheckMessage": "Els beneficis VIP de l'indexador expiraran aviat: {indexerNames}",
|
||||
"LastFailure": "Darrera fallada",
|
||||
"MovieSearch": "Cerca de pel·lícules",
|
||||
"MovieSearchTypes": "Tipus de cerca de pel·lícules",
|
||||
"MusicSearchTypes": "Tipus de cerca de música",
|
||||
"QueryType": "Tipus de consulta",
|
||||
"RssQueries": "Consultes RSS",
|
||||
"SyncLevelFull": "Sincronització completa: mantindrà els indexadors d'aquesta aplicació completament sincronitzats. Els canvis fets als indexadors a {appName} se sincronitzen amb aquesta aplicació. Qualsevol canvi fet a indexadors remotament dins d'aquesta aplicació serà anul·lat per {appName} en la següent sincronització.",
|
||||
"TotalHostGrabs": "Total d'amfitrions",
|
||||
"TotalQueries": "Total de consultes",
|
||||
"NoApplicationsFound": "No s'ha trobat cap aplicació",
|
||||
"SyncProfiles": "Sincronitza els perfils",
|
||||
"TorznabUrl": "Url Torznab",
|
||||
"TvSearch": "Cerca de TV",
|
||||
"DeleteIndexerProxy": "Suprimeix el servidor intermediari de l'indexador",
|
||||
"DisabledUntil": "Desactivat fins",
|
||||
"GrabTitle": "Captura el títol",
|
||||
"SettingsIndexerLoggingHelpText": "Registra dades addicionals de l'indexador",
|
||||
"SyncLevel": "Nivell de sincronització",
|
||||
"AdvancedSettingsHiddenClickToShow": "Configuració avançada oculta, feu clic per mostrar",
|
||||
"AdvancedSettingsShownClickToHide": "Configuració avançada mostrada, feu clic per amagar",
|
||||
"AppsMinimumSeeders": "Aplicacions de cercadors mínims",
|
||||
"AppsMinimumSeedersHelpText": "«Mínims filtradors requerits per les Aplicacions perquè l'indexador s'agafi",
|
||||
"CountIndexersAvailable": "{count} indexador(s) disponible",
|
||||
"HistoryCleanup": "Neteja de l'historial",
|
||||
"HistoryDetails": "Detalls de l'historial",
|
||||
"SettingsFilterSentryEventsHelpText": "Filtra els esdeveniments d'error d'usuari coneguts perquè s'enviïn com a Analytics",
|
||||
"MappedCategories": "Categories assignades",
|
||||
"AppSettingsSummary": "Aplicacions i paràmetres per configurar com {appName} interactua amb els vostres programes PVR",
|
||||
"ConnectSettingsSummary": "Notificacions i scripts personalitzats",
|
||||
"DeleteClientCategory": "Suprimeix la categoria del client de baixada",
|
||||
"FullSync": "Sincronització completa",
|
||||
"IndexerAlreadySetup": "Almenys una instància de l'indexador ja està configurada",
|
||||
"RawSearchSupported": "S'admet la cerca RAW",
|
||||
"RssFeed": "Canal RSS",
|
||||
"SearchTypes": "Tipus de cerca",
|
||||
"SeedRatioHelpText": "La relació a la qual ha d'arribar un torrent abans d'aturar-se, buida és la predeterminada de l'aplicació",
|
||||
"SemiPrivate": "Semi-Privada",
|
||||
"TotalIndexerQueries": "Total de consultes de l'indexador",
|
||||
"TotalUserAgentQueries": "Total de consultes d'agents d'usuari",
|
||||
"GoToApplication": "Ves a l'aplicació",
|
||||
"Url": "Url",
|
||||
"AreYouSureYouWantToDeleteIndexer": "Esteu segur que voleu suprimir '{name}' de {appName}?",
|
||||
"AverageResponseTimesMs": "Temps mitjà de resposta de l'indexador (ms)",
|
||||
"FoundCountReleases": "S'han trobat {itemCount} versions",
|
||||
"AuthQueries": "Consultes d'Autorització",
|
||||
"BasicSearch": "Cerca bàsica",
|
||||
"IndexerName": "Nom de l'indexador",
|
||||
"IndexerStatus": "Estat de l'indexador",
|
||||
"IndexerTagsHelpText": "Utilitzeu etiquetes per especificar els intermediaris de l'indexador o a quines aplicacions se sincronitza l'indexador.",
|
||||
"NewznabUrl": "Url Newznab",
|
||||
"SearchCountIndexers": "Cerca {count} indexador",
|
||||
"UnableToLoadDevelopmentSettings": "No s'han pogut carregar els paràmetres de desenvolupament",
|
||||
"SettingsFilterSentryEvents": "Filtra els esdeveniments d'anàlisi",
|
||||
"ApplicationTagsHelpText": "Sincronitza els indexadors d'aquesta aplicació que tenen una o més etiquetes coincidents. Si no es llisten etiquetes aquí, llavors no s'impedirà la sincronització d'indexadors a causa de les seves etiquetes.",
|
||||
"ApplicationTagsHelpTextWarning": "Les etiquetes s'han d'utilitzar amb precaució, poden tenir efectes no desitjats. Una aplicació amb una etiqueta només sincronitzarà amb els indexadors que tinguin la mateixa etiqueta.",
|
||||
"DeleteSelectedApplications": "Suprimeix les aplicacions seleccionades",
|
||||
"DownloadClientsSettingsSummary": "Baixa la configuració dels clients per a la integració a la cerca de la interfície d'usuari {appName}",
|
||||
"ElapsedTime": "Temps transcorregut",
|
||||
"EnableIndexer": "Habilita l'indexador",
|
||||
"EnableRssHelpText": "Habilita el canal RSS per a l'indexador",
|
||||
"IncludeManualGrabsHelpText": "Inclou les notes manuals fetes a {appName}",
|
||||
"IndexerFailureRate": "Taxa de fallada de l'indexador",
|
||||
"ProwlarrSupportsAnyDownloadClient": "{appName} admet qualsevol dels clients de baixada que es llisten a continuació.",
|
||||
"TotalGrabs": "Grabs totals",
|
||||
"IndexerDetails": "Detalls de l'indexador",
|
||||
"IndexerPriorityHelpText": "Prioritat de l'indexador des de l'1 (el més alt) fins al 50 (el més oest). Per defecte: 25.",
|
||||
"IndexerProxy": "Servidor intermediari de l'indexador",
|
||||
"UISettingsSummary": "Opcions de data, idioma i color defectuoses",
|
||||
"IndexerCategories": "Categories de l'indexador",
|
||||
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
|
||||
"SearchCapabilities": "Capacitats de cerca",
|
||||
"SearchType": "Tipus de cerca",
|
||||
"SettingsLogSql": "Registre Sql",
|
||||
"SyncLevelAddRemove": "Afegeix i elimina només: quan s'afegeixen o s'eliminen els indexadors de {appName}, s'actualitzarà aquesta aplicació remota.",
|
||||
"IndexerProxies": "Propis de l'indexador",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Sincronitza les fulles del torrent de la llista de blocs en bloc mentre s'agafa",
|
||||
"CertificateValidationHelpText": "Canvia l'estricta validació de la certificació HTTPS",
|
||||
"IndexerDisabled": "Indexador desactivat",
|
||||
"IndexerFileListSettingsPasskeyHelpText": "Contrasenya del lloc (Aquesta és la cadena alfanumèrica a l'URL del seguidor que es mostra al client de baixada)",
|
||||
"IndexerSettingsQueryLimit": "Límit de consulta",
|
||||
"IndexerHDBitsSettingsPasskeyHelpText": "Contrasenya dels detalls de l'usuari",
|
||||
"IndexerSettingsPasskey": "Clau de pas",
|
||||
"ClickToChangeQueryOptions": "Feu clic per a canviar les opcions de consulta",
|
||||
"EnabledRedirected": "Activat, redirigit",
|
||||
"Parameters": "Paràmetres",
|
||||
"QueryResults": "Resultats de la consulta",
|
||||
"RedirectHelpText": "Redirigeix la sol·licitud de baixada entrant per a l'indexador i passa la captura directament en lloc de intermediaris a través de {appName}",
|
||||
"UnableToLoadIndexerProxies": "No s'han pogut carregar els intermediaris de l'indexador",
|
||||
"IndexerId": "ID de l'indexador",
|
||||
"IndexerAlphaRatioSettingsExcludeScene": "Exclou l'escena",
|
||||
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "Exclou els llançaments d'escenes dels resultats",
|
||||
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
|
||||
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
|
||||
"IndexerFileListSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
|
||||
"IndexerFileListSettingsUsernameHelpText": "Nom d'usuari del lloc",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Cerca publicacions per noms de grup",
|
||||
"IndexerHDBitsSettingsOrigins": "Orígens",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Agent d'usuari associat a la cookie utilitzada des del navegador",
|
||||
"IndexerNewznabSettingsApiKeyHelpText": "Clau de l'API del lloc",
|
||||
"IndexerNzbIndexSettingsApiKeyHelpText": "Clau de l'API del lloc",
|
||||
"IndexerSettingsAppsMinimumSeedersHelpText": "«Mínims filtradors requerits per les Aplicacions perquè l'indexador s'agafi",
|
||||
"IndexerSettingsFreeleechOnly": "Només Freeleech",
|
||||
"IndexerSettingsGrabLimit": "Límit de captura",
|
||||
"IndexerSettingsLimitsUnit": "Unitats de límits",
|
||||
"IndexerSettingsRssKey": "Clau RSS",
|
||||
"SelectIndexers": "Selecciona els indexadors",
|
||||
"SettingsSqlLoggingHelpText": "Registra totes les consultes SQL de {appName}",
|
||||
"SyncAppIndexers": "Sincronitza els indexadors d'aplicacions",
|
||||
"AppProfileInUse": "Perfil d'aplicació en ús",
|
||||
"DeleteAppProfile": "Suprimeix el perfil de l'aplicació",
|
||||
"TVSearchTypes": "Tipus de cerca de TV",
|
||||
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
|
||||
"IndexerMTeamTpSettingsApiKeyHelpText": "Clau API del Lloc (trobada a Tauler de control de l'usuari => Seguretat => Laboratori)",
|
||||
"MinimumSeedersHelpText": "Visors mínims requerits per l'aplicació perquè l'indexador s'agafi",
|
||||
"NoIndexerHistory": "No s'ha trobat cap historial per a aquest indexador",
|
||||
"SearchQueries": "Cerca consultes",
|
||||
"SettingsConsoleLogLevel": "Nivell de registre de la consola",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Només blat de moro daurat",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Cerca només els llançaments Golden Popcorn",
|
||||
"Open": "Obre",
|
||||
"ProwlarrDownloadClientsAlert": "Si voleu fer cerques directament dins de {appName}, heu d'afegir Clients de Baixades. En cas contrari, no cal afegir-les aquí. Per a les cerques des de les teves Apps, els clients de descàrrega configurats s'utilitzen en el seu lloc.",
|
||||
"Website": "Lloc web",
|
||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Utilitza una connexió segura. Vegeu Opcions -> Interfície web -> 'Utilitza HTTPS en comptes d'HTTP' a qBittorrent.",
|
||||
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
|
||||
"IndexerAvistazSettingsPasswordHelpText": "Contrasenya del lloc",
|
||||
"IndexerAvistazSettingsPidHelpText": "PID de la pàgina del meu compte o del meu perfil",
|
||||
"IndexerAvistazSettingsUsernameHelpText": "Nom d'usuari del lloc",
|
||||
"IndexerAvistazSettingsUsernameHelpTextWarning": "Només el rang de membre i superior pot utilitzar l'API en aquest indexador.",
|
||||
"SelectedCountOfCountReleases": "S'han seleccionat {selectedCount} de les versions {itemCount}",
|
||||
"SettingsLogRotate": "Rotació del registre",
|
||||
"AreYouSureYouWantToDeleteCategory": "Esteu segur que voleu suprimir la categoria assignada?",
|
||||
"Book": "Llibre"
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"Add": "Přidat",
|
||||
"CertificateValidation": "Ověření certifikátu",
|
||||
"DeleteBackupMessageText": "Opravdu chcete odstranit zálohu '{name}'?",
|
||||
"CertificateValidation": "Ověřování certifikátu",
|
||||
"DeleteBackupMessageText": "Opravdu chcete odstranit zálohu ‚{name}‘?",
|
||||
"YesCancel": "Ano, zrušit",
|
||||
"About": "O aplikaci",
|
||||
"Component": "Komponenta",
|
||||
|
@ -18,12 +18,12 @@
|
|||
"Usenet": "Usenet",
|
||||
"AddDownloadClient": "Přidat klienta pro stahování",
|
||||
"Backups": "Zálohy",
|
||||
"CancelPendingTask": "Opravdu chcete zrušit tento nevyřízený úkol?",
|
||||
"CancelPendingTask": "Opravdu chcete zrušit tento úkol čekající na vyřízení?",
|
||||
"MovieIndexScrollBottom": "Rejstřík filmů: Posun dolů",
|
||||
"ProxyType": "Typ serveru proxy",
|
||||
"Reddit": "Reddit",
|
||||
"ErrorLoadingContents": "Chyba při načítání obsahu",
|
||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Všechny indexery nejsou k dispozici z důvodu selhání po dobu delší než 6 hodin",
|
||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Všechny indexery jsou nedostupné z důvodu selhání déle než 6 hodin",
|
||||
"RemovedFromTaskQueue": "Odebráno z fronty úkolů",
|
||||
"ResetAPIKey": "Resetovat klíč API",
|
||||
"SSLCertPassword": "Heslo SSL Cert",
|
||||
|
@ -35,27 +35,27 @@
|
|||
"Warn": "Varovat",
|
||||
"Wiki": "Wiki",
|
||||
"Connections": "Připojení",
|
||||
"DeleteDownloadClientMessageText": "Opravdu chcete odstranit klienta pro stahování '{name}'?",
|
||||
"Details": "Detaily",
|
||||
"DeleteDownloadClientMessageText": "Opravdu chcete odstranit klienta pro stahování ‚{name}‘?",
|
||||
"Details": "Podrobnosti",
|
||||
"Disabled": "Zakázáno",
|
||||
"Docker": "Přístavní dělník",
|
||||
"Docker": "Docker",
|
||||
"Donations": "Dary",
|
||||
"DownloadClientSettings": "Stáhněte si nastavení klienta",
|
||||
"DownloadClientStatusAllClientHealthCheckMessage": "Všichni klienti pro stahování nejsou kvůli chybám k dispozici",
|
||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Stahování klientů není k dispozici z důvodu selhání: {downloadClientNames}",
|
||||
"DownloadClientSettings": "Nastavení klienta pro stahování",
|
||||
"DownloadClientStatusAllClientHealthCheckMessage": "Všichni klienti pro stahování jsou nedostupní z důvodu selhání",
|
||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Klienti pro stahování jsou nedostupní z důvodu selhání: {downloadClientNames}",
|
||||
"Folder": "Složka",
|
||||
"Grabs": "Urvat",
|
||||
"Grabs": "Získané",
|
||||
"NoIssuesWithYourConfiguration": "Žádné problémy s vaší konfigurací",
|
||||
"HideAdvanced": "Skrýt pokročilé",
|
||||
"Host": "Hostitel",
|
||||
"Hostname": "Název hostitele",
|
||||
"IncludeHealthWarningsHelpText": "Zahrnout zdravotní varování",
|
||||
"IncludeHealthWarningsHelpText": "Včetně varování ohledně zdraví",
|
||||
"Indexer": "Indexer",
|
||||
"IndexerFlags": "Příznaky indexeru",
|
||||
"IndexerPriority": "Priorita indexování",
|
||||
"IndexerPriorityHelpText": "Priorita indexování od 1 (nejvyšší) do 50 (nejnižší). Výchozí: 25.",
|
||||
"IndexerPriority": "Priorita indexeru",
|
||||
"IndexerPriorityHelpText": "Priorita indexeru od 1 (Nejvyšší) do 50 (Nejnižší). Výchozí: 25.",
|
||||
"Indexers": "Indexery",
|
||||
"IndexerStatusAllUnavailableHealthCheckMessage": "Všechny indexery nejsou k dispozici z důvodu selhání",
|
||||
"IndexerStatusAllUnavailableHealthCheckMessage": "Všechny indexery jsou nedostupné z důvodu selhání",
|
||||
"LastWriteTime": "Čas posledního zápisu",
|
||||
"Level": "Úroveň",
|
||||
"LogLevel": "Úroveň protokolu",
|
||||
|
@ -69,23 +69,23 @@
|
|||
"UnselectAll": "Odznačit vše",
|
||||
"UpdateStartupNotWritableHealthCheckMessage": "Aktualizaci nelze nainstalovat, protože spouštěcí složku „{startupFolder}“ nelze zapisovat uživatelem „{userName}“.",
|
||||
"Version": "Verze",
|
||||
"AnalyticsEnabledHelpText": "Odesílejte anonymní informace o použití a chybách na servery {appName}u. To zahrnuje informace o vašem prohlížeči, které stránky {appName} WebUI používáte, hlášení chyb a také verzi operačního systému a běhového prostředí. Tyto informace použijeme k upřednostnění funkcí a oprav chyb.",
|
||||
"AnalyticsEnabledHelpText": "Odesílejte anonymní informace o použití a chybách na servery {appName}u. To zahrnuje informace o vašem prohlížeči, které stránky webového rozhraní {appName}u používáte, hlášení chyb a také verzi operačního systému a běhového prostředí. Tyto informace použijeme k určení priorit funkcí a oprav chyb.",
|
||||
"ApiKey": "Klíč API",
|
||||
"AppDataDirectory": "Adresář AppData",
|
||||
"AppDataLocationHealthCheckMessage": "Aktualizace nebude možná, aby se zabránilo odstranění AppData při aktualizaci",
|
||||
"ApplicationStatusCheckAllClientMessage": "Všechny seznamy nejsou k dispozici z důvodu selhání",
|
||||
"ApplicationStatusCheckSingleClientMessage": "Seznamy nejsou k dispozici z důvodu selhání: {0}",
|
||||
"ApplicationStatusCheckAllClientMessage": "Všechny aplikace jsou nedostupné z důvodu selhání",
|
||||
"ApplicationStatusCheckSingleClientMessage": "Aplikace nedostupné z důvodu selhání: {0}",
|
||||
"Apply": "Použít",
|
||||
"Branch": "Větev",
|
||||
"BranchUpdate": "Pobočka, která se má použít k aktualizaci {appName}",
|
||||
"EditIndexer": "Upravit indexátor",
|
||||
"BranchUpdate": "Větev použitá k aktualizaci {appName}u",
|
||||
"EditIndexer": "Upravit indexer",
|
||||
"ForMoreInformationOnTheIndividualDownloadClients": "Další informace o jednotlivých klientech pro stahování získáte kliknutím na informační tlačítka.",
|
||||
"General": "Všeobecné",
|
||||
"CloseCurrentModal": "Zavřít aktuální modální",
|
||||
"General": "Obecné",
|
||||
"CloseCurrentModal": "Zavřít aktuální modální okno",
|
||||
"Columns": "Sloupce",
|
||||
"ConnectionLost": "Spojení ztraceno",
|
||||
"ConnectionLost": "Ztráta spojení",
|
||||
"ConnectSettings": "Nastavení připojení",
|
||||
"Custom": "Zvyk",
|
||||
"Custom": "Vlastní",
|
||||
"Error": "Chyba",
|
||||
"Failed": "Selhalo",
|
||||
"FeatureRequests": "Žádosti o funkce",
|
||||
|
@ -93,9 +93,9 @@
|
|||
"Files": "Soubory",
|
||||
"Filter": "Filtr",
|
||||
"Fixed": "Pevný",
|
||||
"FocusSearchBox": "Zaostřovací vyhledávací pole",
|
||||
"FocusSearchBox": "Zaměřit vyhledávací pole",
|
||||
"GeneralSettingsSummary": "Port, SSL, uživatelské jméno / heslo, proxy, analytika a aktualizace",
|
||||
"History": "Dějiny",
|
||||
"History": "Historie",
|
||||
"HomePage": "Domovská stránka",
|
||||
"SettingsEnableColorImpairedModeHelpText": "Upravený styl umožňující uživatelům s barevným postižením lépe rozlišovat barevně kódované informace",
|
||||
"SettingsLongDateFormat": "Long Date Format",
|
||||
|
@ -105,8 +105,8 @@
|
|||
"Tasks": "Úkoly",
|
||||
"Test": "Test",
|
||||
"UnableToLoadTags": "Značky nelze načíst",
|
||||
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Všechny indexery nejsou k dispozici z důvodu selhání",
|
||||
"ApplyTags": "Použít značky",
|
||||
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Všechny proxy indexerů jsou nedostupné z důvodu selhání",
|
||||
"ApplyTags": "Použít štítky",
|
||||
"MoreInfo": "Více informací",
|
||||
"System": "Systém",
|
||||
"Enabled": "Povoleno",
|
||||
|
@ -121,7 +121,7 @@
|
|||
"NoLinks": "Žádné odkazy",
|
||||
"Presets": "Předvolby",
|
||||
"Priority": "Přednost",
|
||||
"Grabbed": "Popadl",
|
||||
"Grabbed": "Získáno",
|
||||
"Health": "Zdraví",
|
||||
"LogLevelTraceHelpTextWarning": "Trasování protokolování by mělo být povoleno pouze dočasně",
|
||||
"ProxyBadRequestHealthCheckMessage": "Nepodařilo se otestovat proxy. StatusCode: {statusCode}",
|
||||
|
@ -171,19 +171,19 @@
|
|||
"UseProxy": "Použij proxy",
|
||||
"Username": "Uživatelské jméno",
|
||||
"Yesterday": "Včera",
|
||||
"AutomaticSearch": "Vyhledat automaticky",
|
||||
"BackupFolderHelpText": "Relativní cesty budou v adresáři AppData společnosti {appName}",
|
||||
"AutomaticSearch": "Automatické vyhledávání",
|
||||
"BackupFolderHelpText": "Relativní cesty budou v adresáři AppData {appName}u",
|
||||
"BackupIntervalHelpText": "Interval mezi automatickými zálohami",
|
||||
"BackupNow": "Ihned zálohovat",
|
||||
"BackupNow": "Zálohovat nyní",
|
||||
"BackupRetentionHelpText": "Automatické zálohy starší než doba uchovávání budou automaticky vyčištěny",
|
||||
"BeforeUpdate": "Před zálohováním",
|
||||
"BeforeUpdate": "Před aktualizací",
|
||||
"BindAddress": "Vázat adresu",
|
||||
"BindAddressHelpText": "Platná IP adresa, localhost nebo '*' pro všechna rozhraní",
|
||||
"BranchUpdateMechanism": "Větev používaná externím aktualizačním mechanismem",
|
||||
"BindAddressHelpText": "Platná IP adresa, localhost nebo ‚*‘ pro všechna rozhraní",
|
||||
"BranchUpdateMechanism": "Větev použitá externím aktualizačním mechanismem",
|
||||
"BypassProxyForLocalAddresses": "Obcházení proxy serveru pro místní adresy",
|
||||
"DeleteIndexerProxyMessageText": "Opravdu chcete smazat značku „{0}“?",
|
||||
"DeleteTag": "Smazat značku",
|
||||
"IndexerProxyStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání: {indexerProxyNames}",
|
||||
"DeleteIndexerProxyMessageText": "Opravdu chcete odstranit proxy indexeru ‚{name}‘?",
|
||||
"DeleteTag": "Odstranit štítek",
|
||||
"IndexerProxyStatusUnavailableHealthCheckMessage": "Proxy indexerů nedostupné z důvodu selhání: {indexerProxyNames}",
|
||||
"Name": "název",
|
||||
"New": "Nový",
|
||||
"Protocol": "Protokol",
|
||||
|
@ -201,9 +201,9 @@
|
|||
"BackupsLoadError": "Nelze načíst zálohy",
|
||||
"DownloadClientsLoadError": "Nelze načíst klienty pro stahování",
|
||||
"UnableToLoadGeneralSettings": "Nelze načíst obecná nastavení",
|
||||
"DeleteNotification": "Smazat oznámení",
|
||||
"DeleteNotification": "Odstranit oznámení",
|
||||
"EnableAutomaticSearch": "Povolit automatické vyhledávání",
|
||||
"EnableInteractiveSearchHelpText": "Bude použito při použití interaktivního vyhledávání",
|
||||
"EnableInteractiveSearchHelpText": "Použije se při interaktivním vyhledávání",
|
||||
"GeneralSettings": "Obecné nastavení",
|
||||
"InteractiveSearch": "Interaktivní vyhledávání",
|
||||
"Interval": "Interval",
|
||||
|
@ -222,50 +222,50 @@
|
|||
"SettingsShowRelativeDates": "Zobrazit relativní data",
|
||||
"SettingsShowRelativeDatesHelpText": "Zobrazit relativní (dnes / včera / atd.) Nebo absolutní data",
|
||||
"SystemTimeHealthCheckMessage": "Systémový čas je vypnutý o více než 1 den. Naplánované úlohy nemusí fungovat správně, dokud nebude čas opraven",
|
||||
"AddingTag": "Přidání značky",
|
||||
"AddingTag": "Přidávání štítku",
|
||||
"Age": "Stáří",
|
||||
"All": "Vše",
|
||||
"AllIndexersHiddenDueToFilter": "Všechny filmy jsou skryty kvůli použitému filtru.",
|
||||
"AllIndexersHiddenDueToFilter": "Všechny indexery jsou skryty kvůli použitému filtru.",
|
||||
"Analytics": "Analýzy",
|
||||
"EnableRss": "Povolit RSS",
|
||||
"NoChange": "Žádná změna",
|
||||
"Authentication": "Ověřování",
|
||||
"AuthenticationMethodHelpText": "Vyžadovat uživatelské jméno a heslo pro přístup k {appName}",
|
||||
"AuthenticationMethodHelpText": "Vyžadovat uživatelské jméno a heslo pro přístup k {appName}u",
|
||||
"Automatic": "Automatický",
|
||||
"Backup": "Záloha",
|
||||
"Cancel": "Zrušit",
|
||||
"CertificateValidationHelpText": "Změňte, jak přísné je ověření certifikace HTTPS",
|
||||
"CertificateValidationHelpText": "Změňte přísnost ověřování certifikace HTTPS",
|
||||
"ChangeHasNotBeenSavedYet": "Změna ještě nebyla uložena",
|
||||
"Clear": "Vyčistit",
|
||||
"Clear": "Vymazat",
|
||||
"ClientPriority": "Priorita klienta",
|
||||
"CloneProfile": "Klonovat profil",
|
||||
"Close": "Zavřít",
|
||||
"CouldNotConnectSignalR": "Nelze se připojit k SignalR, uživatelské rozhraní se neaktualizuje",
|
||||
"CustomFilters": "Vlastní filtry",
|
||||
"Date": "datum",
|
||||
"Dates": "Termíny",
|
||||
"Date": "Datum",
|
||||
"Dates": "Data",
|
||||
"DatabaseMigration": "Migrace databáze",
|
||||
"Delete": "Vymazat",
|
||||
"DeleteApplicationMessageText": "Opravdu chcete smazat oznámení „{0}“?",
|
||||
"Delete": "Odstranit",
|
||||
"DeleteApplicationMessageText": "Opravdu chcete odstranit aplikaci ‚{name}‘?",
|
||||
"DeleteBackup": "Odstranit zálohu",
|
||||
"DeleteDownloadClient": "Odstranit staženého klienta",
|
||||
"DeleteNotificationMessageText": "Opravdu chcete smazat oznámení '{name}'?",
|
||||
"DeleteTagMessageText": "Opravdu chcete smazat značku „{0}“?",
|
||||
"Discord": "Svár",
|
||||
"DownloadClient": "Stáhnout klienta",
|
||||
"DownloadClients": "Stáhnout klienty",
|
||||
"DeleteDownloadClient": "Odstranit klienta pro stahování",
|
||||
"DeleteNotificationMessageText": "Opravdu chcete odstranit oznámení ‚{name}‘?",
|
||||
"DeleteTagMessageText": "Opravdu chcete odstranit štítek ‚{label}‘?",
|
||||
"Discord": "Discord",
|
||||
"DownloadClient": "Klient pro stahování",
|
||||
"DownloadClients": "Klienti pro stahování",
|
||||
"Edit": "Upravit",
|
||||
"Enable": "Umožnit",
|
||||
"EnableAutomaticSearchHelpText": "Použije se, když se automatické vyhledávání provádí pomocí uživatelského rozhraní nebo {appName}",
|
||||
"Enable": "Povolit",
|
||||
"EnableAutomaticSearchHelpText": "Použije se při automatickém vyhledávání prostřednictvím uživatelského rozhraní nebo pomocí {appName}",
|
||||
"EnableInteractiveSearch": "Povolit interaktivní vyhledávání",
|
||||
"EnableSSL": "Povolit SSL",
|
||||
"EnableSslHelpText": " Vyžaduje restartování spuštěné jako správce, aby se projevilo",
|
||||
"Events": "Události",
|
||||
"EventType": "Typ události",
|
||||
"Exception": "Výjimka",
|
||||
"ExistingTag": "Stávající značka",
|
||||
"ExistingTag": "Stávající štítek",
|
||||
"IllRestartLater": "Restartuji později",
|
||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání po dobu delší než 6 hodin: {indexerNames}",
|
||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání déle než 6 hodin: {indexerNames}",
|
||||
"IndexerStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání: {indexerNames}",
|
||||
"SettingsTimeFormat": "Časový formát",
|
||||
"ShowAdvanced": "Zobrazit pokročilé",
|
||||
|
@ -307,9 +307,9 @@
|
|||
"UnsavedChanges": "Neuložené změny",
|
||||
"UpdateAutomaticallyHelpText": "Automaticky stahovat a instalovat aktualizace. Stále budete moci instalovat ze systému: Aktualizace",
|
||||
"NetCore": ".NET Core",
|
||||
"Filters": "Filtr",
|
||||
"HistoryCleanupDaysHelpText": "Nastavením na 0 zakážete automatické čištění",
|
||||
"HistoryCleanupDaysHelpTextWarning": "Soubory v koši starší než vybraný počet dní budou automaticky vyčištěny",
|
||||
"Filters": "Filtry",
|
||||
"HistoryCleanupDaysHelpText": "Nastavte na 0 pro zakázání automatického čištění",
|
||||
"HistoryCleanupDaysHelpTextWarning": "Položky historie starší než vybraný počet dní se vyčistí automaticky",
|
||||
"MaintenanceRelease": "Údržbové vydání: opravy chyb a další vylepšení. Další podrobnosti najdete v GitHub Commit History",
|
||||
"OnGrab": "Chyť",
|
||||
"OnHealthIssue": "K otázce zdraví",
|
||||
|
@ -319,10 +319,10 @@
|
|||
"No": "Ne",
|
||||
"UnableToLoadIndexers": "Nelze načíst indexery",
|
||||
"Yes": "Ano",
|
||||
"GrabReleases": "Uchopte uvolnění",
|
||||
"ApplicationLongTermStatusCheckSingleClientMessage": "Indexery nedostupné z důvodu selhání po dobu delší než 6 hodin: {0}",
|
||||
"ApplicationLongTermStatusCheckAllClientMessage": "Všechny indexery nejsou k dispozici z důvodu selhání po dobu delší než 6 hodin",
|
||||
"Ended": "Skončil",
|
||||
"GrabReleases": "Získat vydání",
|
||||
"ApplicationLongTermStatusCheckSingleClientMessage": "Aplikace nedostupné z důvodu selhání déle než 6 hodin: {0}",
|
||||
"ApplicationLongTermStatusCheckAllClientMessage": "Všechny aplikace jsou nedostupné z důvodu selhání déle než 6 hodin",
|
||||
"Ended": "Ukončeno",
|
||||
"LastDuration": "lastDuration",
|
||||
"LastExecution": "Poslední poprava",
|
||||
"NextExecution": "Další spuštění",
|
||||
|
@ -331,47 +331,47 @@
|
|||
"Replace": "Nahradit",
|
||||
"OnLatestVersion": "Nejnovější verze aplikace {appName} je již nainstalována",
|
||||
"More": "Více",
|
||||
"ApplyTagsHelpTextAdd": "Přidat: Přidá značky k již existujícímu seznamu",
|
||||
"ApplyTagsHelpTextHowToApplyApplications": "Jak použít značky na vybrané filmy",
|
||||
"DeleteSelectedDownloadClients": "Odstranit klienta pro stahování",
|
||||
"DeleteSelectedIndexersMessageText": "Opravdu chcete smazat {count} vybraný(ch) indexer(ů)?",
|
||||
"DeleteSelectedApplicationsMessageText": "Opravdu chcete odstranit indexer „{0}“?",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Opravdu chcete smazat {count} vybraných klientů pro stahování?",
|
||||
"ApplyTagsHelpTextAdd": "Přidat: Přidat štítky do existujícího seznamu štítků",
|
||||
"ApplyTagsHelpTextHowToApplyApplications": "Jak použít štítky na vybrané aplikace",
|
||||
"DeleteSelectedDownloadClients": "Odstranit klienty pro stahování",
|
||||
"DeleteSelectedIndexersMessageText": "Opravdu chcete odstranit {count} vybraných indexerů?",
|
||||
"DeleteSelectedApplicationsMessageText": "Opravdu chcete odstranit {count} vybraných aplikací?",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Opravdu chcete odstranit {count} vybraných klientů pro stahování?",
|
||||
"Year": "Rok",
|
||||
"ApplyTagsHelpTextRemove": "Odebrat: Odebrat zadané značky",
|
||||
"DownloadClientPriorityHelpText": "Upřednostněte více klientů pro stahování. Round-Robin se používá pro klienty se stejnou prioritou.",
|
||||
"ApplyTagsHelpTextHowToApplyIndexers": "Jak použít značky na vybrané indexery",
|
||||
"ApplyTagsHelpTextReplace": "Nahradit: Nahradit značky zadanými značkami (prázdné pole vymaže všechny značky)",
|
||||
"ApplyTagsHelpTextRemove": "Odebrat: Odebrat zadané štítky",
|
||||
"DownloadClientPriorityHelpText": "Upřednostněte více klientů pro stahování. Pro klienty se stejnou prioritou se používá funkce Round-Robin.",
|
||||
"ApplyTagsHelpTextHowToApplyIndexers": "Jak použít štítky na vybrané indexery",
|
||||
"ApplyTagsHelpTextReplace": "Nahradit: Nahradit štítky zadanými štítky (prázdné pole vymaže všechny štítky)",
|
||||
"Track": "Stopa",
|
||||
"Genre": "Žánry",
|
||||
"Genre": "Žánr",
|
||||
"ConnectionLostReconnect": "{appName} se pokusí připojit automaticky, nebo můžete kliknout na tlačítko znovunačtení níže.",
|
||||
"RecentChanges": "Nedávné změny",
|
||||
"WhatsNew": "Co je nového?",
|
||||
"DeleteAppProfileMessageText": "Opravdu chcete smazat kvalitní profil {0}",
|
||||
"ConnectionLostToBackend": "{appName} ztratil spojení s backendem a pro obnovení funkčnosti bude třebaho znovu načíst.",
|
||||
"DeleteAppProfileMessageText": "Opravdu chcete odstranit profil aplikace ‚{name}‘?",
|
||||
"ConnectionLostToBackend": "{appName} ztratil spojení s backendem a pro obnovení funkčnosti bude potřeba ho znovu načíst.",
|
||||
"minutes": "Minut",
|
||||
"ApplicationURL": "URL aplikace",
|
||||
"ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základní adresy URL",
|
||||
"ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základu URL",
|
||||
"ApplyChanges": "Použít změny",
|
||||
"ApiKeyValidationHealthCheckMessage": "Aktualizujte svůj klíč API tak, aby měl alespoň {length} znaků. Můžete to provést prostřednictvím nastavení nebo konfiguračního souboru",
|
||||
"AppUpdated": "{appName} aktualizován",
|
||||
"AddDownloadClientImplementation": "Přidat klienta pro stahování - {implementationName}",
|
||||
"AuthenticationRequired": "Vyžadované ověření",
|
||||
"AuthenticationRequiredHelpText": "Změnit, pro které požadavky je vyžadováno ověření. Pokud nerozumíte rizikům, neměňte je.",
|
||||
"AddDownloadClientImplementation": "Přidat klienta pro stahování – {implementationName}",
|
||||
"AuthenticationRequired": "Vyžadováno ověření",
|
||||
"AuthenticationRequiredHelpText": "Změnit, pro které požadavky je vyžadováno ověření. Neměňte, pokud nerozumíte rizikům.",
|
||||
"AddCustomFilter": "Přidat vlastní filtr",
|
||||
"AddConnection": "Přidat spojení",
|
||||
"AddConnectionImplementation": "Přidat spojení - {implementationName}",
|
||||
"AddIndexerImplementation": "Přidat indexer - {implementationName}",
|
||||
"AddConnectionImplementation": "Přidat spojení – {implementationName}",
|
||||
"AddIndexerImplementation": "Přidat indexer – {implementationName}",
|
||||
"Publisher": "Vydavatel",
|
||||
"Categories": "Kategorie",
|
||||
"Notification": "Oznámení",
|
||||
"AddApplicationImplementation": "Přidat spojení - {implementationName}",
|
||||
"AddIndexerProxyImplementation": "Přidat indexátor - {implementationName}",
|
||||
"AddApplicationImplementation": "Přidat aplikaci – {implementationName}",
|
||||
"AddIndexerProxyImplementation": "Přidat proxy server indexeru – {implementationName}",
|
||||
"Artist": "Umělec",
|
||||
"EditIndexerImplementation": "Upravit indexer - {implementationName}",
|
||||
"Episode": "epizoda",
|
||||
"NotificationStatusAllClientHealthCheckMessage": "Všechny seznamy nejsou k dispozici z důvodu selhání",
|
||||
"NotificationStatusSingleClientHealthCheckMessage": "Seznamy nejsou k dispozici z důvodu selhání: {notificationNames}",
|
||||
"Episode": "Epizoda",
|
||||
"NotificationStatusAllClientHealthCheckMessage": "Všechna oznámení jsou nedostupná z důvodu selhání",
|
||||
"NotificationStatusSingleClientHealthCheckMessage": "Oznámení nedostupná z důvodu selhání: {notificationNames}",
|
||||
"Application": "Aplikace",
|
||||
"AppUpdatedVersion": "{appName} byl aktualizován na verzi `{version}`, abyste získali nejnovější změny, musíte znovu načíst {appName}",
|
||||
"Encoding": "Kódování",
|
||||
|
@ -382,49 +382,49 @@
|
|||
"Album": "Album",
|
||||
"Applications": "Aplikace",
|
||||
"Connect": "Oznámení",
|
||||
"EditConnectionImplementation": "Přidat spojení - {implementationName}",
|
||||
"EditConnectionImplementation": "Upravit připojení - {implementationName}",
|
||||
"EditDownloadClientImplementation": "Upravit klienta pro stahování - {implementationName}",
|
||||
"AuthForm": "Formuláře (přihlašovací stránka)",
|
||||
"Clone": "Klonovat",
|
||||
"DefaultNameCopiedProfile": "{name} - Kopírovat",
|
||||
"DisabledForLocalAddresses": "Zakázáno pro místní adresy",
|
||||
"EditApplicationImplementation": "Přidat spojení - {implementationName}",
|
||||
"EditApplicationImplementation": "Upravit aplikaci - {implementationName}",
|
||||
"None": "Žádný",
|
||||
"ResetAPIKeyMessageText": "Opravdu chcete resetovat klíč API?",
|
||||
"Database": "Databáze",
|
||||
"CountDownloadClientsSelected": "{count} vybraných klientů ke stahování",
|
||||
"CountDownloadClientsSelected": "{count} vybraných klientů pro stahování",
|
||||
"CountIndexersSelected": "{count} vybraných indexerů",
|
||||
"EditIndexerProxyImplementation": "Přidat indexátor - {implementationName}",
|
||||
"EditIndexerProxyImplementation": "Upravit proxy indexeru - {implementationName}",
|
||||
"AuthBasic": "Základní (vyskakovací okno prohlížeče)",
|
||||
"AuthenticationRequiredWarning": "Aby se zabránilo vzdálenému přístupu bez ověření, vyžaduje nyní {appName} povolení ověření. Ověřování z místních adres můžete volitelně zakázat.",
|
||||
"AuthenticationRequiredWarning": "Aby se zabránilo vzdálenému přístupu bez ověření, vyžaduje nyní {appName}, aby bylo povoleno ověřování. Volitelně můžete zakázat ověřování z místních adres.",
|
||||
"RestartProwlarr": "Restartujte {appName}",
|
||||
"Duration": "Trvání",
|
||||
"EditSelectedDownloadClients": "Upravit vybrané klienty pro stahování",
|
||||
"EditSelectedIndexers": "Upravit vybrané indexery",
|
||||
"AuthenticationMethod": "Metoda ověřování",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Vložte nové heslo",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "Vložte nové uživatelské jméno",
|
||||
"AuthenticationMethodHelpTextWarning": "Prosím vyberte platnou metodu ověřování",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Zadejte nové heslo",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "Zadejte nové uživatelské jméno",
|
||||
"AuthenticationMethodHelpTextWarning": "Vyberte platnou metodu ověřování",
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Potvrďte nové heslo",
|
||||
"days": "dnů",
|
||||
"Id": "ID",
|
||||
"CountApplicationsSelected": "Vybráno {0} kolekcí",
|
||||
"IndexerHDBitsSettingsCodecs": "Kodek",
|
||||
"CountApplicationsSelected": "{count} vybraných aplikací",
|
||||
"IndexerHDBitsSettingsCodecs": "Kodeky",
|
||||
"IndexerHDBitsSettingsMediums": "Střední",
|
||||
"Directory": "Adresář",
|
||||
"CustomFilter": "Vlastní filtry",
|
||||
"CustomFilter": "Vlastní filtr",
|
||||
"ProxyValidationBadRequest": "Nepodařilo se otestovat proxy. StatusCode: {statusCode}",
|
||||
"Default": "Výchozí",
|
||||
"GrabRelease": "Uchopte uvolnění",
|
||||
"GrabRelease": "Získat vydání",
|
||||
"Category": "Kategorie",
|
||||
"BlackholeFolderHelpText": "Složka do které {appName} uloží {extension} soubor",
|
||||
"DownloadClientSettingsUrlBaseHelpText": "Přidá předponu do {connectionName} url, jako např. {url}",
|
||||
"BlackholeFolderHelpText": "Složka, do které {appName} uloží soubor {extension}",
|
||||
"DownloadClientSettingsUrlBaseHelpText": "Přidá předponu k url {clientName}, například {url}",
|
||||
"Any": "Jakákoliv",
|
||||
"BuiltIn": "Vestavěný",
|
||||
"Script": "Skript",
|
||||
"PublishedDate": "Datum zveřejnění",
|
||||
"AllSearchResultsHiddenByFilter": "Všechny výsledky jsou schovány použitým filtrem",
|
||||
"DockerUpdater": "aktualizujte kontejner dockeru, abyste aktualizaci obdrželi",
|
||||
"AllSearchResultsHiddenByFilter": "Všechny výsledky vyhledávání jsou skryty použitým filtrem.",
|
||||
"DockerUpdater": "Aktualizujte kontejner dockeru, abyste získali aktualizaci",
|
||||
"Download": "Stažení",
|
||||
"ErrorRestoringBackup": "Chyba při obnovování zálohy",
|
||||
"ExternalUpdater": "{appName} je nakonfigurován pro použití externího aktualizačního mechanismu",
|
||||
|
@ -432,9 +432,212 @@
|
|||
"NoEventsFound": "Nebyly nalezeny žádné události",
|
||||
"RestartReloadNote": "Poznámka: {appName} se během procesu obnovy automaticky restartuje a znovu načte uživatelské rozhraní.",
|
||||
"UpdateAppDirectlyLoadError": "{appName} nelze aktualizovat přímo,",
|
||||
"AptUpdater": "K instalaci aktualizace použijte apt",
|
||||
"AptUpdater": "K instalaci aktualizace používat apt",
|
||||
"InstallLatest": "Nainstalujte nejnovější",
|
||||
"Stats": "Postavení",
|
||||
"CurrentlyInstalled": "Aktuálně nainstalováno",
|
||||
"Mixed": "Pevný"
|
||||
"Mixed": "Pevný",
|
||||
"ActiveIndexers": "Aktivní indexery",
|
||||
"ActiveApps": "Aktivní aplikace",
|
||||
"AppSettingsSummary": "Aplikace a nastavení pro konfiguraci interakce {appName}u s vašimi programy PVR",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Pokud je torrent blokován pomocí hash, nemusí být u některých indexerů správně odmítnut během RSS/vyhledávání. Povolení této funkce umožní jeho odmítnutí po zachycení torrentu, ale před jeho odesláním klientovi.",
|
||||
"ApplicationsLoadError": "Nelze načíst seznam aplikací",
|
||||
"AppProfileInUse": "Používaný profil aplikace",
|
||||
"AppsMinimumSeedersHelpText": "Minimální počet seederů požadovaných aplikacemi pro indexer, výchozí hodnota synchronizačního profilu je prázdná",
|
||||
"AverageGrabs": "Průměrné získání",
|
||||
"AverageQueries": "Průměrné dotazy",
|
||||
"AdvancedSettingsShownClickToHide": "Rozšířená nastavení jsou zobrazená, klikněte pro skrytí",
|
||||
"AdvancedSettingsHiddenClickToShow": "Rozšířená nastavení jsou skrytá, klikněte pro zobrazení",
|
||||
"AppsMinimumSeeders": "Minimální počet seederů aplikací",
|
||||
"AddNewIndexer": "Přidat nový indexer",
|
||||
"AddToDownloadClient": "Přidat vydání do klienta pro stahování",
|
||||
"AddIndexerProxy": "Přidat proxy server indexeru",
|
||||
"AppProfileSelectHelpText": "Profily aplikace slouží k ovládání nastavení RSS, automatického vyhledávání a interaktivního vyhledávání při synchronizaci aplikace",
|
||||
"BookSearch": "Vyhledávání knihy",
|
||||
"ClearHistory": "Vymazat historii",
|
||||
"Auth": "Ověřování",
|
||||
"ConnectSettingsSummary": "Oznámení a vlastní skripty",
|
||||
"AreYouSureYouWantToDeleteIndexer": "Opravdu chcete odstranit ‚{name}‘ z {appName}u?",
|
||||
"AuthQueries": "Ověřovací dotazy",
|
||||
"CountIndexersAvailable": "{count} dostupných indexerů",
|
||||
"ApplicationTagsHelpText": "Synchronizovat s touto aplikací indexery, které mají jeden nebo více shodných štítků. Pokud zde nejsou uvedeny žádné štítky, nebude synchronizace žádných indexerů znemožněna kvůli jejich štítkům.",
|
||||
"ApplicationTagsHelpTextWarning": "Štítky je potřeba používat opatrně, mohou mít nechtěné účinky. Aplikace se štítkem se bude synchronizovat pouze s indexery se stejným štítkem.",
|
||||
"BasicSearch": "Základní vyhledávání",
|
||||
"ClearHistoryMessageText": "Opravdu chcete vymazat celou historii {appName}u?",
|
||||
"AddDownloadClientToProwlarr": "Přidání klienta pro stahování umožňuje {appName} odesílat vydání přímo z uživatelského rozhraní při ručním vyhledávání.",
|
||||
"AddRemoveOnly": "Pouze přidat a odebrat",
|
||||
"AudioSearch": "Vyhledávání audia",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Synchronizovat odmítnuté blokované hashe torrentů při získávání",
|
||||
"Apps": "Aplikace",
|
||||
"ClickToChangeQueryOptions": "Kliknutím změníte možnosti dotazu",
|
||||
"Author": "Autor",
|
||||
"AverageResponseTimesMs": "Průměrné doby odezvy indexerů (ms)",
|
||||
"Book": "Kniha",
|
||||
"BookSearchTypes": "Typy vyhledávání knihy",
|
||||
"AddApplication": "Přidat aplikaci",
|
||||
"AddSyncProfile": "Přidat synchronizační profil",
|
||||
"AddedToDownloadClient": "Vydání přidáno do klienta",
|
||||
"AddCategory": "Přidat kategorii",
|
||||
"AreYouSureYouWantToDeleteCategory": "Opravdu chcete odstranit namapovanou kategorii?",
|
||||
"DownloadClientRTorrentSettingsUrlPath": "Cesta URL",
|
||||
"DefaultCategory": "Výchozí kategorie",
|
||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Přidá předponu do Flood API, například {url}",
|
||||
"DownloadClientFreeboxSettingsApiUrl": "URL API",
|
||||
"DownloadClientSettingsInitialState": "Počáteční stav",
|
||||
"DownloadClientSettingsPriorityItemHelpText": "Priorita použitá při získávání položek",
|
||||
"FailedToFetchSettings": "Nepodařilo se načíst nastavení",
|
||||
"GrabTitle": "Získat název",
|
||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Tato volba vyžaduje NzbGet verze alespoň 16.0",
|
||||
"EnableRssHelpText": "Povolit kanál RSS pro indexer",
|
||||
"DeleteApplication": "Odstranit aplikaci",
|
||||
"DeleteSelectedApplications": "Odstranit vybrané aplikace",
|
||||
"DeleteSelectedIndexers": "Odstranit vybrané indexery",
|
||||
"DevelopmentSettings": "Nastavení pro vývoj",
|
||||
"DisabledUntil": "Zakázáno do",
|
||||
"DownloadClientCategory": "Kategorie klienta pro stahování",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Přidá předponu do url adresy json deluge, viz {url}",
|
||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Volitelná sdílená složka pro stahování, ponechte prázdné pro použití výchozího umístění Download Station",
|
||||
"DownloadClientFloodSettingsAdditionalTags": "Další štítky",
|
||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Přidá vlastnosti médií jako štítky. Nápovědy jsou příklady.",
|
||||
"DownloadClientFloodSettingsTagsHelpText": "Počáteční štítky stahování. Aby bylo stahování rozpoznáno, musí mít všechny počáteční štítky. Tím se zabrání konfliktům s nesouvisejícími stahováními.",
|
||||
"DownloadClientFreeboxSettingsAppId": "ID aplikace",
|
||||
"DownloadClientFreeboxSettingsAppToken": "Token aplikace",
|
||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "Token aplikace získaný při vytváření přístupu k Freebox API (tj. ‚app_token‘)",
|
||||
"DownloadClientFreeboxSettingsHostHelpText": "Název hostitele nebo IP adresa hostitele Freeboxu, výchozí hodnota je ‚{url}‘ (funguje pouze ve stejné síti)",
|
||||
"DownloadClientFreeboxSettingsPortHelpText": "Port použitý pro přístup k rozhraní Freeboxu, výchozí hodnota je ‚{port}‘",
|
||||
"DownloadClientPneumaticSettingsNzbFolder": "Složka Nzb",
|
||||
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Tato složka bude muset být dostupná z XBMC",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "Rozvržení obsahu",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Stahovat v postupném pořadí (qBittorrent 4.1.0+)",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Postupné pořadí",
|
||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Povolení přidá torrenty a magnety do rTorrentu v zastaveném stavu. To může způsobit poškození souborů magnet.",
|
||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "Volitelné umístění pro stahování, ponechte prázdné pro použití výchozího umístění rTorrentu",
|
||||
"DownloadClientSettingsAddPaused": "Přidat pozastavené",
|
||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Výchozí záložní kategorie, pokud pro vydání neexistuje žádná namapovaná kategorie. Přidáním kategorie specifické pro {appName} se zabrání konfliktům s nesouvisejícími stahováními, která nejsou {appName}. Použití kategorie je nepovinné, ale důrazně se doporučuje. Vytvoří podadresář [kategorie] ve výstupním adresáři.",
|
||||
"DownloadClientSettingsUseSslHelpText": "Při připojení k {clientName} použít zabezpečené připojení",
|
||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Volitelné umístění pro stahování, ponechte prázdné pro použití výchozího umístění Transmission",
|
||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Přidá předponu k url {clientName} rpc, např. {url}, výchozí hodnota je ‚{defaultUrl}‘",
|
||||
"DownloadClientsSettingsSummary": "Konfigurace klientů pro stahování pro integraci do vyhledávání v uživatelském rozhraní {appName}",
|
||||
"ElapsedTime": "Uplynulý čas",
|
||||
"EnableIndexer": "Povolit indexer",
|
||||
"External": "Externí",
|
||||
"FullSync": "Úplná synchronizace",
|
||||
"HealthMessagesInfoBox": "Další informace o příčině těchto zpráv o kontrole zdraví najdete kliknutím na odkaz wiki (ikona knihy) na konci řádku nebo kontrolou [logů]({link}). Pokud máte potíže s interpretací těchto zpráv, můžete se obrátit na naši podporu, a to na níže uvedených odkazech.",
|
||||
"Implementation": "Implementace",
|
||||
"DeleteClientCategory": "Odstranit kategorii klienta pro stahování",
|
||||
"DownloadClientRTorrentSettingsAddStopped": "Přidat zastavené",
|
||||
"DeleteIndexerProxy": "Odstranit proxy indexerů",
|
||||
"Description": "Popis",
|
||||
"IncludeManualGrabsHelpText": "Včetně ručních získání provedených v {appName}",
|
||||
"GoToApplication": "Přejít na aplikaci",
|
||||
"DownloadClientAriaSettingsDirectoryHelpText": "Volitelné umístění pro stahování, ponechte prázdné pro použití výchozího umístění Aria2",
|
||||
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Soubory .strm v této složce budou importovány pomocí drone",
|
||||
"Destination": "Cíl",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Stahovat nejprve první a poslední kusy (qBittorrent 4.1.0+)",
|
||||
"DeleteSelectedIndexer": "Odstranit vybraný indexer",
|
||||
"DownloadClientPneumaticSettingsStrmFolder": "Složka Strm",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Nejprve první a poslední",
|
||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "Definujte základní adresu URL Freebox API s verzí API, např. ‚{url}‘, výchozí hodnota je ‚{defaultApiUrl}‘",
|
||||
"HistoryCleanup": "Vyčištění historie",
|
||||
"DownloadClientFreeboxSettingsAppIdHelpText": "ID aplikace zadané při vytváření přístupu k Freebox API (tj. ‚app_id‘)",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Zda použít rozvržení obsahu nakonfigurované v qBittorrentu, původní rozvržení z torrentu nebo vždy vytvořit podsložku (qBittorrent 4.3.2+)",
|
||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Počáteční stav torrentů přidaných do qBittorrentu. Pamatujte, že vynucené torrenty nedodržují omezení týkající se seedů",
|
||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Používat zabezpečené připojení. Viz Možnosti -> WebUI -> Webové uživatelské rozhraní -> ‚Použít HTTPS místo HTTP‘ v qBittorrentu.",
|
||||
"FilterPlaceHolder": "Hledat indexery",
|
||||
"FoundCountReleases": "Nalezeno {itemCount} vydání",
|
||||
"DownloadClientRTorrentSettingsUrlPathHelpText": "Cesta ke koncovému bodu XMLRPC, viz {url}. Při použití ruTorrentu je to obvykle RPC2 nebo [cesta k ruTorrentu]{url2}.",
|
||||
"DownloadClientSettingsDefaultCategoryHelpText": "Výchozí záložní kategorie, pokud pro vydání neexistuje žádná namapovaná kategorie. Přidáním kategorie specifické pro {appName} se zabrání konfliktům s nesouvisejícími stahováními, která nejsou {appName}. Použití kategorie je nepovinné, ale důrazně se doporučuje.",
|
||||
"DownloadClientSettingsInitialStateHelpText": "Počáteční stav pro torrenty přidané do {clientName}",
|
||||
"EditCategory": "Upravit kategorii",
|
||||
"HistoryDetails": "Podrobnosti o historii",
|
||||
"Donate": "Darovat",
|
||||
"DownloadClientSettingsDestinationHelpText": "Ručně určuje cíl stahování, pro použití výchozího nastavení nechte prázdné",
|
||||
"EnabledRedirected": "Povoleno, Přesměrováno",
|
||||
"EditSyncProfile": "Upravit profil synchronizace",
|
||||
"DeleteAppProfile": "Odstranit profil aplikace",
|
||||
"IndexerSettingsAppsMinimumSeeders": "Minimální počet seederů aplikací",
|
||||
"UsenetBlackholeNzbFolder": "Složka Nzb",
|
||||
"SearchIndexers": "Hledat indexery",
|
||||
"IndexerSettingsAppsMinimumSeedersHelpText": "Minimální počet seederů požadovaných aplikacemi pro indexer, výchozí hodnota synchronizačního profilu je prázdná",
|
||||
"IndexerProxy": "Proxy indexeru",
|
||||
"IndexerBeyondHDSettingsRssKeyHelpText": "Klíč RSS ze stránky (Naleznete v Moje zabezpečení => Klíč RSS)",
|
||||
"IndexerHDBitsSettingsCodecsHelpText": "Pokud není zadáno, použijí se všechny možnosti.",
|
||||
"IndexerHDBitsSettingsUsernameHelpText": "Uživatelské jméno stránky",
|
||||
"IndexerAvistazSettingsUsernameHelpTextWarning": "Rozhraní API v tomto indexeru mohou používat pouze hodnosti člen a vyšší.",
|
||||
"IndexerBeyondHDSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Moje zabezpečení => Klíč API)",
|
||||
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
|
||||
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
|
||||
"IndexerProxies": "Proxy indexeru",
|
||||
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
|
||||
"IndexerHistoryLoadError": "Chyba při načítání historie indexeru",
|
||||
"IndexerId": "ID indexeru",
|
||||
"IndexerNoDefinitionCheckHealthCheckMessage": "Indexery nemají žádnou definici a nebudou fungovat: {indexerNames}. Odeberte je a (nebo) znovu přidejte do {appName}.",
|
||||
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "Vyloučit vydání SCENE z výsledků",
|
||||
"IndexerAlreadySetup": "Alespoň jedna instance indexeru je již nastavena",
|
||||
"IndexerAvistazSettingsPasswordHelpText": "Heslo stránky",
|
||||
"IndexerAvistazSettingsPidHelpText": "PID ze stránky Můj účet nebo Můj profil",
|
||||
"IndexerAvistazSettingsUsernameHelpText": "Uživatelské jméno stránky",
|
||||
"IndexerBeyondHDSettingsLimitedOnly": "Pouze omezené",
|
||||
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Hledat pouze freeleech (Omezené nahrávání)",
|
||||
"IndexerCategories": "Kategorie indexeru",
|
||||
"IndexerDisabled": "Indexer zakázán",
|
||||
"IndexerDownloadClientHealthCheckMessage": "Indexery s neplatnými klienty pro stahování: {indexerNames}.",
|
||||
"IndexerDownloadClientHelpText": "Určete, který klient pro stahování se použije pro grabování v rámci {appName} z tohoto indexeru",
|
||||
"IndexerFailureRate": "Míra selhání indexeru",
|
||||
"IndexerFileListSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
|
||||
"IndexerFileListSettingsPasskeyHelpText": "Přístupový klíč stránky (Jedná se o alfanumerický řetězec v url adrese trackeru zobrazené v klientovi pro stahování)",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Nastavení => Nastavení přístupu)",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNames": "Hledat názvy skupin",
|
||||
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Zobrazit pouze freeleech vydání",
|
||||
"IndexerHDBitsSettingsOriginsHelpText": "Pokud není zadáno, použijí se všechny možnosti.",
|
||||
"IndexerHDBitsSettingsUseFilenames": "Použít názvy souborů",
|
||||
"IndexerHealthCheckNoIndexers": "Nejsou povoleny žádné indexery, {appName} nevrátí výsledky vyhledávání",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Uživatelský agent cookie",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Uživatelský agent přidružený cookie použitý z prohlížeče",
|
||||
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
|
||||
"IndexerNebulanceSettingsApiKeyHelpText": "Klíč API z Nastavení uživatele > Klíče API. Klíč musí mít oprávnění Seznam a Stáhnout",
|
||||
"IndexerNewznabSettingsAdditionalParametersHelpText": "Dodatečné parametry Newznab",
|
||||
"IndexerNewznabSettingsApiKeyHelpText": "Klíč API stránky",
|
||||
"IndexerObsoleteCheckMessage": "Indexery jsou zastaralé nebo byly aktualizovány: {0}. Odeberte je a (nebo) znovu přidejte do {appName}",
|
||||
"IndexerOrpheusSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Nastavení => Nastavení přístupu)",
|
||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Tato nastavení naleznete v nastavení zabezpečení PassThePopcorn (Upravit profil > Zabezpečení).",
|
||||
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
|
||||
"IndexerRedactedSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Nastavení => Nastavení přístupu)",
|
||||
"IndexerRss": "RSS indexeru",
|
||||
"LastFailure": "Poslední selhání",
|
||||
"IndexerSettingsAdditionalParameters": "Dodatečné parametry",
|
||||
"IndexerSettingsApiPath": "Cesta k API",
|
||||
"IndexerSettingsApiUser": "Uživatel API",
|
||||
"IndexerAuth": "Ověření indexeru",
|
||||
"IndexerInfo": "Informace o indexeru",
|
||||
"IndexerName": "Název indexeru",
|
||||
"IndexerDetails": "Podrobnosti indexeru",
|
||||
"IndexerHDBitsSettingsPasskeyHelpText": "Přístupový klíč z Podrobnosti o uživateli",
|
||||
"IndexerQuery": "Dotaz na indexer",
|
||||
"IndexerAlphaRatioSettingsExcludeScene": "Vyloučit SCENE",
|
||||
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
|
||||
"IndexerBeyondHDSettingsSearchTypes": "Hledat typy",
|
||||
"IndexerBeyondHDSettingsSearchTypesHelpText": "Vyberte typy vydání, které vás zajímají. Pokud není vybrán žádný, použijí se všechny možnosti.",
|
||||
"IndexerFileListSettingsUsernameHelpText": "Uživatelské jméno stránky",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Musí mít oprávnění Uživatel a Torrenty",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Hledat vydání podle názvů skupin",
|
||||
"IndexerHDBitsSettingsMediumsHelpText": "Pokud není zadáno, použijí se všechny možnosti.",
|
||||
"IndexerHDBitsSettingsUseFilenamesHelpText": "Zaškrtněte tuto možnost, pokud chcete používat názvy souborů torrentů jako názvy vydání",
|
||||
"IndexerNewznabSettingsVipExpirationHelpText": "Zadejte datum (rrrr-mm-dd) pro vypršení VIP nebo prázdné, {appName} bude upozorňovat 1 týden před vypršením VIP",
|
||||
"IndexerNzbIndexSettingsApiKeyHelpText": "Klíč API stránky",
|
||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "Klíč API stránky",
|
||||
"IndexerMTeamTpSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Uživatelský ovládací panel => Zabezpečení => Laboratoř)",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Pouze Golden Popcorn",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Hledat pouze vydání Golden Popcorn",
|
||||
"IndexerSettingsApiPathHelpText": "Cesta k api, obvykle {url}",
|
||||
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
|
||||
"InitialFailure": "Úvodní selhání",
|
||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Klíč API stránky",
|
||||
"SearchTypes": "Hledat typy",
|
||||
"NotificationTriggersHelpText": "Vyber, které události mají vyvolat toto upozornění",
|
||||
"IndexerSettingsBaseUrl": "Základní URL",
|
||||
"DownloadClientUTorrentProviderMessage": "uTorrent má historii zahrnování kryptoměnových těžařů, malwaru a reklam, důrazně vám doporučujeme zvolit jiného klienta.",
|
||||
"IndexerSettingsBaseUrlHelpText": "Vyberte, jakou základní URL bude {appName} používat pro požadavky na web",
|
||||
"IndexerSettingsPackSeedTimeIndexerHelpText": "Doba, po kterou by měl být balíček (sezóna nebo diskografie) torrentu seedován před zastavením, prázdné pole znamená výchozí nastavení aplikace",
|
||||
"PackSeedTimeHelpText": "Doba, po kterou by měl být balíček (sezóna nebo diskografie) torrentu seedován před zastavením, prázdné pole znamená výchozí nastavení aplikace"
|
||||
}
|
||||
|
|
|
@ -424,5 +424,9 @@
|
|||
"AdvancedSettingsHiddenClickToShow": "Avancerede indstillinger er skjult. Klik for at vise",
|
||||
"AdvancedSettingsShownClickToHide": "Avancerede indstillinger vises. Klik for at skjule",
|
||||
"ApiKeyValidationHealthCheckMessage": "Opdater din API-nøgle til at være på mindste {length} karakterer. Dette kan gøres i indstillingerne eller i konfigurationsfilen",
|
||||
"AppProfileInUse": "App-profil i brug"
|
||||
"AppProfileInUse": "App-profil i brug",
|
||||
"Episode": "afsnit",
|
||||
"Artist": "kunstner",
|
||||
"Id": "ID",
|
||||
"Encoding": "Indkodning"
|
||||
}
|
||||
|
|
|
@ -87,13 +87,13 @@
|
|||
"Delete": "Löschen",
|
||||
"DeleteAppProfile": "App-Profil löschen",
|
||||
"DeleteApplication": "Applikation löschen",
|
||||
"DeleteApplicationMessageText": "Wirklich die Applikation '{0}' löschen?",
|
||||
"DeleteApplicationMessageText": "Bist du sicher, dass du die Anwendung „{name}“ löschen möchtest?",
|
||||
"DeleteBackup": "Sicherung löschen",
|
||||
"DeleteBackupMessageText": "Soll das Backup '{name}' wirklich gelöscht werden?",
|
||||
"DeleteDownloadClient": "Download-Client löschen",
|
||||
"DeleteDownloadClientMessageText": "Bist du sicher, dass du den Download Client '{name}' wirklich löschen willst?",
|
||||
"DeleteIndexerProxy": "Indexer Proxy löschen",
|
||||
"DeleteIndexerProxyMessageText": "Tag '{0}' wirklich löschen?",
|
||||
"DeleteIndexerProxyMessageText": "Bist du sicher, dass du den Indexer-Proxy „{name}“ löschen möchtest?",
|
||||
"DeleteNotification": "Benachrichtigung löschen",
|
||||
"DeleteNotificationMessageText": "Bist du sicher, dass du die Benachrichtigung '{name}' wirklich löschen willst?",
|
||||
"DeleteTag": "Tag löschen",
|
||||
|
@ -165,7 +165,7 @@
|
|||
"HomePage": "Hauptseite",
|
||||
"Host": "Host",
|
||||
"Hostname": "Hostname",
|
||||
"Id": "Id",
|
||||
"Id": "ID",
|
||||
"IgnoredAddresses": "Ignorierte Adressen",
|
||||
"IllRestartLater": "Später neustarten",
|
||||
"IncludeHealthWarningsHelpText": "Zustandswarnung",
|
||||
|
@ -193,7 +193,7 @@
|
|||
"IndexerSite": "Indexer-Seite",
|
||||
"IndexerStatusAllUnavailableHealthCheckMessage": "Alle Indexer sind aufgrund von Fehlern nicht verfügbar",
|
||||
"IndexerStatusUnavailableHealthCheckMessage": "Indexer nicht verfügbar aufgrund von Fehlern: {indexerNames}",
|
||||
"IndexerTagsHelpText": "Benutze Tags, um Indexer-Proxies zu spezifizieren, mit welchen Apps der Indexer synchronisiert oder um Indexer zu organisieren.",
|
||||
"IndexerTagsHelpText": "Verwende Tags, um Indexer-Proxys oder die Apps, mit denen der Indexer synchronisiert wird, anzugeben.",
|
||||
"IndexerVipExpiredHealthCheckMessage": "Die VIP Indexer Vorteile sind abgelaufen: {indexerNames}",
|
||||
"IndexerVipExpiringHealthCheckMessage": "Die Indexer VIP Vorteile verfallen bald: {indexerNames}",
|
||||
"Indexers": "Indexer",
|
||||
|
@ -254,7 +254,7 @@
|
|||
"Ok": "Ok",
|
||||
"OnApplicationUpdate": "Bei Anwendungsaktualisierung",
|
||||
"OnApplicationUpdateHelpText": "Bei Anwendungsaktualisierung",
|
||||
"OnGrab": "Bei Erfassung",
|
||||
"OnGrab": "Bei Release-Grabs",
|
||||
"OnHealthIssue": "Bei Gesundheitsproblem",
|
||||
"OnHealthIssueHelpText": "Zustandsproblem",
|
||||
"OpenBrowserOnStart": "Browser beim Start öffnen",
|
||||
|
@ -276,7 +276,7 @@
|
|||
"Privacy": "Privatsphäre",
|
||||
"Private": "Privat",
|
||||
"Protocol": "Protokoll",
|
||||
"ProwlarrSupportsAnyDownloadClient": "Jeder Downloader der den Newznab-Standard verwendet oder unten aufgelistet ist wird untertützt.",
|
||||
"ProwlarrSupportsAnyDownloadClient": "{appName} unterstützt jeden der unten aufgeführten Download-Clients.",
|
||||
"ProwlarrSupportsAnyIndexer": "{appName} unterstützt alle Indexer, welcher den Newznab/Torznab Standard implementiert (verwende 'Generic Newznab' (für Usenet) oder 'Generic Torznab' (für Torrents)) und darüber hinaus viele weitere Indexer. Wählen Sie im Folgenden Ihren Indexer aus der Liste.",
|
||||
"Proxies": "Proxies",
|
||||
"Proxy": "Proxy",
|
||||
|
@ -395,7 +395,7 @@
|
|||
"TestAllClients": "Prüfe alle Clients",
|
||||
"TestAllIndexers": "Prüfe alle Indexer",
|
||||
"OnLatestVersion": "Die neueste Version von {appName} ist bereits installiert",
|
||||
"ThemeHelpText": "Ändere das UI-Theme der Anwendung. Das 'Auto'-Theme verwendet dein Betriebssystem-Theme, um den hellen oder dunklen Modus einzustellen. Inspiriert von {0}",
|
||||
"ThemeHelpText": "Ändere das UI-Design der Anwendung, das 'Auto'-Design verwendet das Betriebssystem-Design, um den Hell- oder Dunkelmodus festzulegen. Inspiriert von {inspiredBy}.",
|
||||
"Time": "Zeit",
|
||||
"Title": "Titel",
|
||||
"Today": "Heute",
|
||||
|
@ -406,7 +406,7 @@
|
|||
"Type": "Typ",
|
||||
"UI": "Oberfläche",
|
||||
"UILanguage": "Oberflächen Sprache ( UI Language )",
|
||||
"UILanguageHelpText": "Sprache für die gesamte Oberfläche",
|
||||
"UILanguageHelpText": "Sprache, die {appName} für die Benutzeroberfläche verwenden wird",
|
||||
"UILanguageHelpTextWarning": "Webseite muss neu geladen werden",
|
||||
"UISettings": "Benutzeroberflächen Einstellungen",
|
||||
"UISettingsSummary": "Optionen für Datum, Sprache und Farbbeinträchtigungen",
|
||||
|
@ -461,7 +461,7 @@
|
|||
"ApplyChanges": "Änderungen anwenden",
|
||||
"CountIndexersSelected": "{count} Indexer ausgewählt",
|
||||
"DeleteSelectedDownloadClients": "Lösche Download Client(s)",
|
||||
"DeleteSelectedApplicationsMessageText": "Indexer '{0}' wirklich löschen?",
|
||||
"DeleteSelectedApplicationsMessageText": "Bist du sicher, dass du {count} ausgewählte Anwendung(en) löschen möchtest?",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Sind Sie sicher, dass Sie {count} ausgewählte Download-Clients löschen möchten?",
|
||||
"DeleteSelectedIndexersMessageText": "Sind Sie sicher, dass Sie {count} ausgewählte(n) Indexer löschen möchten?",
|
||||
"EditSelectedDownloadClients": "Ausgewählte Download Clienten bearbeiten",
|
||||
|
@ -518,7 +518,7 @@
|
|||
"ActiveApps": "Aktive Apps",
|
||||
"ActiveIndexers": "Aktive Indexer",
|
||||
"AppsMinimumSeeders": "Apps Mindestanzahl von Seedern",
|
||||
"ApplicationTagsHelpText": "Synchronisiere Indexer für diese Anwendung die keine passenden Tags oder mindestens 1 passendes Tag haben",
|
||||
"ApplicationTagsHelpText": "Indexer mit dieser Anwendung synchronisieren, die mindestens einen übereinstimmenden Tag haben. Wenn hier keine Tags aufgeführt sind, wird kein Indexer aufgrund seiner Tags von der Synchronisierung ausgeschlossen.",
|
||||
"ApplicationTagsHelpTextWarning": "Tags sollten mit Vorsicht verwendet werden, da sie ungewollte Effekte haben können. Eine Anwendung mit einem Tag synchronisiert nur Indexer die den Gleichen Tag haben.",
|
||||
"AddApplicationImplementation": "Anwendung hinzufügen - {implementationName}",
|
||||
"AddConnectionImplementation": "Verbindung hinzufügen - {implementationName}",
|
||||
|
@ -670,5 +670,141 @@
|
|||
"SeedRatio": "Seed-Verhältnis",
|
||||
"SeedTime": "Seed-Zeit",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Wenn ein Torrent durch einen Hash blockiert wird, wird er möglicherweise nicht korrekt abgelehnt während RSS/Recherche für einige Indexer. Diese Option aktiviert die Ablehnung des Torrents nach dem Abrufen, aber bevor er an den Client gesendet wird.",
|
||||
"IndexerHDBitsSettingsOriginsHelpText": "Wenn nicht angegeben, werden alle Optionen verwendet."
|
||||
"IndexerHDBitsSettingsOriginsHelpText": "Wenn nicht angegeben, werden alle Optionen verwendet.",
|
||||
"IndexerSettingsGrabLimit": "Grab-Limit",
|
||||
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Nur nach Freeleech suchen (Begrenztes UL)",
|
||||
"IndexerFileListSettingsPasskeyHelpText": "Site Passkey (Dies ist die alphanumerische Zeichenfolge in der Tracker-URL, die in deinem Download-Client angezeigt wird)",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Cookie-Benutzer-Agent",
|
||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Standard-Fallback-Kategorie, wenn für eine Veröffentlichung keine zugeordnete Kategorie existiert. Das Hinzufügen einer für {appName} spezifischen Kategorie vermeidet Konflikte mit nicht verwandten {appName}-Downloads. Die Verwendung einer Kategorie ist optional, aber dringend empfohlen. Eine [Kategorie]-Unterverzeichnis wird im Ausgabeverzeichnis erstellt.",
|
||||
"IndexerBeyondHDSettingsRssKeyHelpText": "RSS-Schlüssel von der Website (zu finden unter Mein Sicherheitsbereich => RSS-Schlüssel)",
|
||||
"IndexerHDBitsSettingsUseFilenamesHelpText": "Aktiviere diese Option, wenn du Torrent-Dateinamen als Releasetitel verwenden möchtest",
|
||||
"IndexerSettingsAppsMinimumSeedersHelpText": "Minimale benötigte Seeder von den Anwendungen, damit der Indexer greifen kann; leer ist die Standardeinstellung des Sync-Profils",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpText": "API-Schlüssel von der Seite (Zu finden unter Einstellungen => Zugriffseinstellungen)",
|
||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Diese Einstellungen findest du in deinen PassThePopcorn-Sicherheitseinstellungen (Profil bearbeiten > Sicherheit).",
|
||||
"IndexerSettingsQueryLimitHelpText": "Die maximale Anzahl an Queries, die {appName} der Seite gemäß der jeweiligen Einheit erlauben wird",
|
||||
"IndexerRedactedSettingsApiKeyHelpText": "API-Schlüssel von der Seite (Zu finden unter Einstellungen => Zugriffseinstellungen)",
|
||||
"IndexerSettingsQueryLimit": "Query Limit",
|
||||
"PackSeedTimeHelpText": "Die Zeit, die ein Pack (Season oder Diskographie)-Torrent gesät werden soll, bevor er gestoppt wird. Leer ist die Standardeinstellung der App",
|
||||
"TotalIndexerSuccessfulGrabs": "Gesamtanzahl erfolgreicher Indexer-Suchanfragen",
|
||||
"ProwlarrDownloadClientsInAppOnlyAlert": "Download-Clients sind nur für In-App-Suchen in {appName} und synchronisieren sich nicht mit Apps. Es sind keine Pläne vorgesehen, eine solche Funktionalität hinzuzufügen.",
|
||||
"TotalUserAgentGrabs": "Gesamtanzahl der User-Agent-Grabs",
|
||||
"DefaultCategory": "Standardkategorie",
|
||||
"IndexerDownloadClientHelpText": "Gib an, welcher Download-Client für Grab-Vorgänge, die innerhalb von {appName} von diesem Indexer durchgeführt werden, verwendet wird",
|
||||
"IndexerHistoryLoadError": "Fehler beim Laden der Indexer-Historie",
|
||||
"IndexerNzbIndexSettingsApiKeyHelpText": "Website-API-Key",
|
||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "Website-API-Key",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Sucher nur Golden Popcorn Releases",
|
||||
"IndexerSettingsCookieHelpText": "Website Cookie",
|
||||
"IndexerSettingsPackSeedTimeIndexerHelpText": "Die Zeit, die ein Pack (Season oder Diskographie)-Torrent gesät werden soll, bevor er gestoppt wird. Leer ist die Standardeinstellung der App",
|
||||
"SearchAllIndexers": "Alle Indexer durchsuchen",
|
||||
"SearchCountIndexers": "Suche {count} Indexer(s)",
|
||||
"SeedTimeHelpText": "Die Zeit, die ein Torrent gesät werden soll, bevor er gestoppt wird. Leer ist die Standardeinstellung der App",
|
||||
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
|
||||
"IndexerNewznabSettingsVipExpirationHelpText": "Gib das Datum (yyyy-mm-dd) für das VIP-Ablaufdatum ein oder lasse es leer, {appName} benachrichtigt eine Woche vor Ablauf des VIP",
|
||||
"ProxyValidationUnableToConnect": "Kann nicht mit dem Proxy verbunden werden: {exceptionMessage}. Überprüfe das Protokoll rund um diesen Fehler für Details",
|
||||
"IndexerId": "Indexer ID",
|
||||
"OnGrabHelpText": "Bei Release Grab",
|
||||
"AuthQueries": "Authentifizierungsanfragen",
|
||||
"PackSeedTime": "Pack-Seed-Zeit",
|
||||
"DeleteSelectedApplications": "Ausgewählte Anwendungen löschen",
|
||||
"DownloadClientSettingsDefaultCategoryHelpText": "Standard-Fallback-Kategorie, wenn für eine Veröffentlichung keine zugeordnete Kategorie existiert. Das Hinzufügen einer für {appName} spezifischen Kategorie vermeidet Konflikte mit nicht verwandten {appName}-Downloads. Die Verwendung einer Kategorie ist optional, aber dringend empfohlen.",
|
||||
"FoundCountReleases": "{itemCount} Veröffentlichungen gefunden",
|
||||
"IncludeManualGrabsHelpText": "Manuelle Abrufe, die innerhalb von {appName} gemacht wurden, einbeziehen",
|
||||
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Nur nach Freeleech-Veröffentlichungen suchen",
|
||||
"IndexerBeyondHDSettingsApiKeyHelpText": "API-Schlüssel von der Website (zu finden in „Meine Sicherheit“ => „API-Schlüssel“)",
|
||||
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Nur nach Freeleech-Releases suchen",
|
||||
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Nur nach Rückerstattungen suchen",
|
||||
"IndexerDisabled": "Indexer deaktiviert",
|
||||
"IndexerFileListSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Suche Veröffentlichungen nach Gruppennamen",
|
||||
"IndexerNebulanceSettingsApiKeyHelpText": "API-Schlüssel aus den Benutzereinstellungen > API-Schlüssel. Der Schlüssel muss List- und Download-Berechtigungen haben",
|
||||
"IndexerSettingsGrabLimitHelpText": "Die maximale Anzahl an Grabs, die {appName} der Seite erlauben wird, wie von der jeweiligen Einheit festgelegt",
|
||||
"IndexerSettingsLimitsUnit": "Limits-Einheit",
|
||||
"IndexerSettingsLimitsUnitHelpText": "Die Zeiteinheit zur Berechnung der Limits pro Indexer",
|
||||
"IndexerStatus": "Indexer Status",
|
||||
"LastFailure": "Letzter Fehler",
|
||||
"ManageApplications": "Applikationen verwalten",
|
||||
"NoApplicationsFound": "Keine Applikationen gefunden",
|
||||
"NoIndexerCategories": "Keine Kategorien für diesen Indexer gefunden",
|
||||
"NoIndexerHistory": "Keine Historie für diesen Indexer gefunden",
|
||||
"Open": "Offen",
|
||||
"OverrideAndAddToDownloadClient": "Überschreiben und zum Download-Client hinzufügen",
|
||||
"PreferMagnetUrl": "Magnet URL bevorzugen",
|
||||
"PreferMagnetUrlHelpText": "Wenn aktiviert, wird dieser Indexer die Verwendung von Magnet-URLs für Grabs bevorzugen, mit Rückfall auf Torrent-Links",
|
||||
"RssQueries": "RSS Anfragen",
|
||||
"TotalHostGrabs": "Gesamtanzahl der Host-Grabs",
|
||||
"TotalHostQueries": "Gesamtanzahl der Host-Suchanfragen",
|
||||
"SeedRatioHelpText": "Das Verhältnis, das ein Torrent erreichen sollte, bevor er gestoppt wird. Leer ist die Standardeinstellung der App",
|
||||
"AverageGrabs": "Durchschnittliche Abrufe",
|
||||
"AverageQueries": "Durchschnittliche Anfragen",
|
||||
"SelectedCountOfCountReleases": "Ausgewählt {selectedCount} von {itemCount} Releases",
|
||||
"NewznabUrl": "Newznab Url",
|
||||
"QueryType": "Abfragetyp",
|
||||
"DisabledUntil": "Deaktiviert bis",
|
||||
"MappedCategories": "Zuordnete Kategorien",
|
||||
"AreYouSureYouWantToDeleteIndexer": "Bist du sicher, dass du „{name}“ aus {appName} löschen möchtest?",
|
||||
"TotalIndexerQueries": "Gesamtanzahl der Indexer-Suchanfragen",
|
||||
"ProwlarrDownloadClientsAlert": "Wenn du beabsichtigst, direkt innerhalb von {appName} zu suchen, musst du Download-Clients hinzufügen. Andernfalls musst du sie hier nicht hinzufügen. Für Suchen aus deinen Apps werden stattdessen die dort konfigurierten Download-Clients verwendet.",
|
||||
"AppsMinimumSeedersHelpText": "Mindestanzahl an Seedern, die von der Anwendung für den Indexer erforderlich ist, um herunterzuladen. Leer bedeutet, dass das Standardprofil der Synchronisierung verwendet wird",
|
||||
"CountIndexersAvailable": "{count} Indexer verfügbar",
|
||||
"DeleteClientCategory": "Download-Client-Kategorie löschen",
|
||||
"DeleteSelectedIndexer": "Ausgewählten Indexer löschen",
|
||||
"TotalGrabs": "Gesamtanzahl der Grabs",
|
||||
"DownloadClientCategory": "Download-Client-Kategorie",
|
||||
"EditCategory": "Kategorie bearbeiten",
|
||||
"IndexerSettingsApiUser": "API Benutzer",
|
||||
"RssFeed": "RSS Feed",
|
||||
"InitialFailure": "Initialer Fehler",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Blockierte Torrent-Hashes beim Abrufen synchron ablehnen",
|
||||
"DeleteSelectedIndexers": "Ausgewählte Indexer löschen",
|
||||
"IndexerHDBitsSettingsPasskeyHelpText": "Passkey aus den Benutzerdetails",
|
||||
"IndexerSettingsPasskey": "Pass Key",
|
||||
"ClickToChangeQueryOptions": "Klicken, um Abfrageoptionen zu ändern",
|
||||
"IndexerCategories": "Indexer-Kategorien",
|
||||
"SearchQueries": "Suchanfragen",
|
||||
"IndexerAlphaRatioSettingsExcludeScene": "SCENE ausschließen",
|
||||
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "SCENE-Veröffentlichungen aus den Ergebnissen ausschließen",
|
||||
"IndexerBeyondHDSettingsRefundOnly": "Nur Rückerstattung",
|
||||
"IndexerFileListSettingsUsernameHelpText": "Website-Benutzername",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Muss Benutzer- und Torrents-Berechtigungen haben",
|
||||
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Zeige nur Freeleech-Releases",
|
||||
"IndexerHDBitsSettingsUsernameHelpText": "Webseite-Benutzername",
|
||||
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
|
||||
"IndexerNewznabSettingsApiKeyHelpText": "Website API Key",
|
||||
"IndexerOrpheusSettingsApiKeyHelpText": "API-Schlüssel von der Seite (Zu finden unter Einstellungen => Zugriffseinstellungen)",
|
||||
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
|
||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Website-API-Schlüssel",
|
||||
"AreYouSureYouWantToDeleteCategory": "Bist du sicher, dass du die zugeordnete Kategorie löschen möchtest?",
|
||||
"DownloadClientSettingsPriorityItemHelpText": "Priorität, die beim Abrufen von Elementen verwendet werden soll",
|
||||
"GoToApplication": "Zur Anwendung gehen",
|
||||
"HistoryDetails": "Historie-Details",
|
||||
"IndexerBeyondHDSettingsLimitedOnly": "Nur begrenzt",
|
||||
"IndexerHDBitsSettingsOrigins": "Ursprünge",
|
||||
"IndexerHDBitsSettingsUseFilenames": "Verwende Dateinamen",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "User-Agent, der mit dem Cookie aus dem Browser verwendet wird",
|
||||
"IndexerNewznabSettingsAdditionalParametersHelpText": "Zusätzliche Newznab-Parameter",
|
||||
"IndexerSettingsPackSeedTime": "Pack-Seed-Zeit",
|
||||
"IndexerSettingsRssKey": "RSS Schlüssel",
|
||||
"IndexerMTeamTpSettingsApiKeyHelpText": "API-Schlüssel von der Seite (Zu finden im Benutzersteuerungsfeld => Sicherheit => Labor)",
|
||||
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
|
||||
"IndexerSettingsFreeleechOnly": "Nur Freeleech",
|
||||
"IndexerSettingsPreferMagnetUrl": "Magnet-URL bevorzugen",
|
||||
"IndexerSettingsPreferMagnetUrlHelpText": "Wenn aktiviert, bevorzugt dieser Indexer die Verwendung von Magnet-URLs für Grabs mit Rückfall auf Torrent-Links",
|
||||
"TorznabUrl": "Torznab Url",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Nur Golden Popcorn",
|
||||
"IndexerSettingsBaseUrl": "Basis Url",
|
||||
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Nur nach Freeleech-Veröffentlichungen suchen",
|
||||
"IndexerAvistazSettingsPasswordHelpText": "Website-Passwort",
|
||||
"IndexerAvistazSettingsPidHelpText": "PID aus der „Mein Konto“- oder „Mein Profil“-Seite",
|
||||
"IndexerAvistazSettingsUsernameHelpText": "Website-Benutzername",
|
||||
"IndexerAvistazSettingsUsernameHelpTextWarning": "Nur Mitglieder mit Rang „Mitglied“ und höher können die API auf diesem Indexer nutzen.",
|
||||
"IndexerBeyondHDSettingsRewindOnly": "Nur zurückspulen",
|
||||
"IndexerBeyondHDSettingsRewindOnlyHelpText": "Nur Rückwärtssuche",
|
||||
"IndexerBeyondHDSettingsSearchTypesHelpText": "Wähle die Arten von Veröffentlichungen aus, die dich interessieren. Wenn keine ausgewählt sind, werden alle Optionen verwendet.",
|
||||
"IndexerFailureRate": "Indexer-Fehlerrate",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNames": "Suche Gruppennamen",
|
||||
"IndexerSettingsBaseUrlHelpText": "Wähle die Basis-Url aus, die {appName} für Anfragen an die Seite verwenden soll",
|
||||
"RepeatSearch": "Suche wiederholen",
|
||||
"AverageResponseTimesMs": "Durchschnittliche Indexer-Antwortzeiten (ms)",
|
||||
"BasicSearch": "Einfache Suche"
|
||||
}
|
||||
|
|
|
@ -241,6 +241,7 @@
|
|||
"DownloadClientStatusSingleClientHealthCheckMessage": "Download clients unavailable due to failures: {downloadClientNames}",
|
||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Optional location to put downloads in, leave blank to use the default Transmission location",
|
||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Adds a prefix to the {clientName} rpc url, eg {url}, defaults to '{defaultUrl}'",
|
||||
"DownloadClientUTorrentProviderMessage": "uTorrent has a history of including cryptominers, malware and ads, we strongly encourage you to choose a different client.",
|
||||
"DownloadClients": "Download Clients",
|
||||
"DownloadClientsLoadError": "Unable to load download clients",
|
||||
"DownloadClientsSettingsSummary": "Download clients configuration for integration into {appName} UI search",
|
||||
|
|
|
@ -806,5 +806,6 @@
|
|||
"InstallMajorVersionUpdateMessageLink": "Por favor revisa [{domain}]({url}) para más información.",
|
||||
"FailedToFetchSettings": "Error al recuperar la configuración",
|
||||
"CurrentlyInstalled": "Actualmente instalado",
|
||||
"PreviouslyInstalled": "Previamente instalado"
|
||||
"PreviouslyInstalled": "Previamente instalado",
|
||||
"DownloadClientUTorrentProviderMessage": "uTorrent tiene un amplio historial de incluir criptomineros, malware y publicidad, por lo que recomendamos encarecidamente que elijas un cliente diferente."
|
||||
}
|
||||
|
|
|
@ -1 +1,13 @@
|
|||
{}
|
||||
{
|
||||
"ApiKey": "کلید API",
|
||||
"NetCore": ".NET",
|
||||
"Add": "افزودن",
|
||||
"About": "درباره",
|
||||
"Actions": "اقدامات",
|
||||
"Docker": "Docker",
|
||||
"AddConnection": "افزودن پیوند",
|
||||
"AddConnectionImplementation": "افزودن پیوند - {implementationName}",
|
||||
"AddDownloadClientImplementation": "افزودن کلاینت دانلود - {implementationName}",
|
||||
"Torrents": "تورنت ها",
|
||||
"Usenet": "Usenet"
|
||||
}
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
"LogLevel": "Lokikirjauksen laajuus",
|
||||
"MovieIndexScrollTop": "Elokuvakirjasto: vieritä ylös",
|
||||
"Apply": "Käytä",
|
||||
"ClientPriority": "Lataustyökalun painotus",
|
||||
"IndexerPriorityHelpText": "Tietolähteen painotus, 1– 50 (korkein-alin). Oletusarvo on 25. Käytetään muutoin tasaveroisten julkaisujen kaappauspäätökseen. Kaikkia käytössä olevia tietolähteitä käytetään edelleen RSS-synkronointiin ja hakuun.",
|
||||
"ClientPriority": "Latauspalvelun painotus",
|
||||
"IndexerPriorityHelpText": "Hakupalvelun painotus, 1– 50 (korkein-alin). Oletusarvo on 25.",
|
||||
"Manual": "Manuaalinen",
|
||||
"Add": "Lisää",
|
||||
"Reload": "Lataa uudelleen",
|
||||
"Indexers": "Tietolähteet",
|
||||
"Indexers": "Hakupalvelut",
|
||||
"MovieIndexScrollBottom": "Elokuvakirjasto: vieritä alas",
|
||||
"SSLCertPassword": "SSL-varmenteen salasana",
|
||||
"Style": "Ulkoasu",
|
||||
|
@ -25,16 +25,16 @@
|
|||
"SettingsTimeFormat": "Kellonajan esitys",
|
||||
"Message": "Viesti",
|
||||
"Seeders": "Jakajat",
|
||||
"TestAll": "Kaikkien testaus",
|
||||
"AddDownloadClient": "Lisää lataustyökalu",
|
||||
"TestAll": "Koesta kaikki",
|
||||
"AddDownloadClient": "Lisää latauspalvelu",
|
||||
"CustomFilters": "Omat suodattimet",
|
||||
"DeleteTag": "Poista tunniste",
|
||||
"EnableRss": "Käytä RSS-syötettä",
|
||||
"Filter": "Suodatus",
|
||||
"Fixed": "Korjattu",
|
||||
"FocusSearchBox": "Kohdista hakukenttä",
|
||||
"ForMoreInformationOnTheIndividualDownloadClients": "Saat yksittäisestä lataustyökalusta lisätietoja painamalla sen ohessa olevaa \"Lisätietoja\"-painiketta.",
|
||||
"HideAdvanced": "Piilota lisäasetukset",
|
||||
"ForMoreInformationOnTheIndividualDownloadClients": "Saat lisätietoja yksittäisistä latauspalveluista painamalla niiden ohessa olevia lisätietopainikkeita.",
|
||||
"HideAdvanced": "Laajenna asetukset",
|
||||
"History": "Historia",
|
||||
"MIA": "Puuttuu",
|
||||
"New": "Uutta",
|
||||
|
@ -45,21 +45,21 @@
|
|||
"Refresh": "Päivitä",
|
||||
"RefreshMovie": "Päivitä elokuva",
|
||||
"ReleaseBranchCheckOfficialBranchMessage": "\"{0}\" ei ole kelvollinen {appName}-julkaisuhaara ja tämän vuoksi et saa päivityksiä.",
|
||||
"RestartRequiredHelpTextWarning": "Käyttöönotto vaatii in uudelleenkäynnistyksen.",
|
||||
"RestartRequiredHelpTextWarning": "Käyttöönotto vaatii sovelluksen uudelleenkäynnistyksen.",
|
||||
"Result": "Tulos",
|
||||
"Settings": "Asetukset",
|
||||
"SettingsLongDateFormat": "Pitkän päiväyksen esitys",
|
||||
"SettingsShortDateFormat": "Lyhyen päiväyksen esitys",
|
||||
"UnselectAll": "Tyhjennä valinnat",
|
||||
"UpdateStartupTranslocationHealthCheckMessage": "Päivitystä ei voida asentaa, koska käynnistyskansio \"{startupFolder}\" sijaitsee \"App Translocation\" -kansiossa.",
|
||||
"UpdateUiNotWritableHealthCheckMessage": "Päivityksen asennus ei onnistu, koska käyttäjällä \"{userName}\" ei ole kirjoitusoikeutta käyttöliittymäkansioon \"{uiFolder}\".",
|
||||
"UpdateUiNotWritableHealthCheckMessage": "Päivityksen asennus ei onnistu, koska käyttäjällä {userName} ei ole kirjoitusoikeutta käyttöliittymäkansioon \"{uiFolder}\".",
|
||||
"UpdateMechanismHelpText": "Käytä {appName}in sisäänrakennettua päivitystoimintoa tai komentosarjaa.",
|
||||
"Enable": "Käytä",
|
||||
"UI": "Käyttöliittymä",
|
||||
"Usenet": "Usenet",
|
||||
"BackupNow": "Varmuuskopioi nyt",
|
||||
"NoBackupsAreAvailable": "Varmuuskopioita ei ole käytettävissä",
|
||||
"UpdateStartupNotWritableHealthCheckMessage": "Päivitystä ei voida asentaa, koska käyttäjällä \"{userName}\" ei ole kirjoitusoikeutta käynnistyskansioon \"{startupFolder}\".",
|
||||
"UpdateStartupNotWritableHealthCheckMessage": "Päivitystä ei voida asentaa, koska käyttäjällä {userName} ei ole kirjoitusoikeutta käynnistyskansioon \"{startupFolder}\".",
|
||||
"Updates": "Päivitykset",
|
||||
"UpdateScriptPathHelpText": "Polku komentosarjaan, joka käsittelee puretun päivitystiedoston ja hoitaa asennuksen loppuosuuden.",
|
||||
"Uptime": "Käyttöaika",
|
||||
|
@ -70,12 +70,12 @@
|
|||
"NoTagsHaveBeenAddedYet": "Tunnisteita ei ole vielä lisätty.",
|
||||
"ApplyTags": "Tunnistetoimenpide",
|
||||
"Authentication": "Tunnistautuminen",
|
||||
"AuthenticationMethodHelpText": "Vaadi {appName}in käyttöön käyttäjätunnus ja salasana",
|
||||
"AuthenticationMethodHelpText": "Vaadi {appName}in käyttöön käyttäjätunnus ja salasana.",
|
||||
"BindAddressHelpText": "Toimiva IP-osoite, localhost tai * (tähti) kaikille verkkoliitännöille.",
|
||||
"Close": "Sulje",
|
||||
"DeleteNotification": "Poista ilmoitus",
|
||||
"DeleteNotification": "Poista ilmoituspalvelu",
|
||||
"Docker": "Docker",
|
||||
"DownloadClient": "Lataustyökalu",
|
||||
"DownloadClient": "Latauspalvelu",
|
||||
"Language": "Kieli",
|
||||
"Search": "Haku",
|
||||
"Details": "Tiedot",
|
||||
|
@ -88,14 +88,14 @@
|
|||
"Logs": "Lokitiedot",
|
||||
"Mechanism": "Mekanismi",
|
||||
"Name": "Nimi",
|
||||
"NoLinks": "Ei linkkejä",
|
||||
"NoLinks": "Kytköksiä ei ole",
|
||||
"Peers": "Vertaiset",
|
||||
"Presets": "Esiasetukset",
|
||||
"Priority": "Painotus",
|
||||
"Protocol": "Protokolla",
|
||||
"ProxyBadRequestHealthCheckMessage": "Välityspalvelintesti epäonnistui. Tilakoodi: {statusCode}.",
|
||||
"ProxyFailedToTestHealthCheckMessage": "Välityspalvelintesti epäonnistui: {url}",
|
||||
"ProxyResolveIpHealthCheckMessage": "Määritetyn välityspalvelimen \"{0}\" IP-osoitteen selvitys epäonnistui.",
|
||||
"ProxyResolveIpHealthCheckMessage": "Määritetyn välityspalvelimen \"{proxyHostName}\" IP-osoitteen selvitys epäonnistui.",
|
||||
"ProxyPasswordHelpText": "Käyttäjätunnus ja salasana tulee täyttää vain tarvittaessa. Mikäli näitä ei ole, tulee kentät jättää tyhjiksi.",
|
||||
"ProxyType": "Välityspalvelimen tyyppi",
|
||||
"ProxyUsernameHelpText": "Käyttäjätunnus ja salasana tulee täyttää vain tarvittaessa. Mikäli näitä ei ole, tulee kentät jättää tyhjiksi.",
|
||||
|
@ -111,18 +111,18 @@
|
|||
"RestartNow": "Käynnistä uudelleen nyt",
|
||||
"Restore": "Palauta",
|
||||
"Rss": "RSS",
|
||||
"RssIsNotSupportedWithThisIndexer": "RSS-syötettä ei ole käytettävissä tälle tietolähteelle",
|
||||
"RssIsNotSupportedWithThisIndexer": "Tämän hakupalvelun kanssa ei voida käyttää RSS-syötettä.",
|
||||
"ScriptPath": "Komentosarjan sijainti",
|
||||
"Security": "Suojaus",
|
||||
"SuggestTranslationChange": "Ehdota käännösmuutosta",
|
||||
"System": "Järjestelmä",
|
||||
"SystemTimeHealthCheckMessage": "Järjestelmän ajassa on ainakin vuorokauden heitto eivätkä ajoitetut tehtävät tämän vuoksi toimi oikein ennen kuin se on korjattu.",
|
||||
"TagCannotBeDeletedWhileInUse": "Tunnistetta ei voi poistaa, koska se on käytössä",
|
||||
"TagIsNotUsedAndCanBeDeleted": "Tunnistetta ei ole määritetty millekään kohteelle, joten sen voi poistaa.",
|
||||
"SystemTimeHealthCheckMessage": "Järjestelmän aika on ainakin vuorokauden pielessä, eivätkä ajoitetut tehtävät toimi oikein ennen kuin se on korjattu.",
|
||||
"TagCannotBeDeletedWhileInUse": "Tunnistetta ei voida poistaa kun se on käytössä.",
|
||||
"TagIsNotUsedAndCanBeDeleted": "Tunniste ei ole käytössä ja voidaan poistaa.",
|
||||
"TagsSettingsSummary": "Täältä näet kaikki tunnisteet käyttökohteineen ja voit poistaa käyttämättömät tunnisteet.",
|
||||
"Tasks": "Tehtävät",
|
||||
"Test": "Testaa",
|
||||
"TestAllClients": "Lataustyökalujen testaus",
|
||||
"Test": "Koesta",
|
||||
"TestAllClients": "Koesta palvelut",
|
||||
"Time": "Aika",
|
||||
"Title": "Nimike",
|
||||
"Tomorrow": "Huomenna",
|
||||
|
@ -130,52 +130,52 @@
|
|||
"Torrents": "Torrentit",
|
||||
"Type": "Tyyppi",
|
||||
"UILanguage": "Käyttöliittymän kieli",
|
||||
"UnableToAddANewApplicationPleaseTryAgain": "Uuden sovelluksen lisäys epäonnistui. Yritä uudelleen.",
|
||||
"UnableToAddANewIndexerPleaseTryAgain": "Uuden tietolähteen lisäys epäonnistui. Yritä uudelleen.",
|
||||
"UnableToAddANewIndexerProxyPleaseTryAgain": "Uuden tiedonhaun välityspalvelimen lisäys epäonnistui. Yritä uudelleen.",
|
||||
"BackupsLoadError": "Varmuuskopioiden lataus epäonnistui",
|
||||
"DownloadClientsLoadError": "Lataustyökalujen lataus ei onistu",
|
||||
"UnableToLoadGeneralSettings": "Virhe ladattaessa yleisiä asetuksia",
|
||||
"UnableToAddANewApplicationPleaseTryAgain": "Virhe lisättäessä sovellusta. Yritä uudelleen.",
|
||||
"UnableToAddANewIndexerPleaseTryAgain": "Uuden hakupalvelun lisääminen epäonnistui. Yritä uudelleen.",
|
||||
"UnableToAddANewIndexerProxyPleaseTryAgain": "Virhe lisättäessä tiedonhaun välityspalvelinta. Yritä uudelleen.",
|
||||
"BackupsLoadError": "Virhe ladattaessa varmuuskopioita.",
|
||||
"DownloadClientsLoadError": "Virhe ladattaessa latauspalveluita.",
|
||||
"UnableToLoadGeneralSettings": "Yleisasetusten lataus epäonnistui",
|
||||
"UpdateAutomaticallyHelpText": "Lataa ja asenna päivitykset automaattisesti. Voit myös edelleen suorittaa asennuksen järjestelmäasetusten päivitykset-osiosta.",
|
||||
"Added": "Lisäysaika",
|
||||
"AddIndexer": "Lisää tietolähde",
|
||||
"AddIndexer": "Lisää hakupalvelu",
|
||||
"AddingTag": "Tunniste lisätään",
|
||||
"Age": "Ikä",
|
||||
"All": "Kaikki",
|
||||
"AllIndexersHiddenDueToFilter": "Aktiivinen suodatin on piilottanut kaikki tietolähteet.",
|
||||
"AllIndexersHiddenDueToFilter": "Aktiivinen suodatin on piilottanut kaikki hakupalvelut.",
|
||||
"Analytics": "Analytiikka",
|
||||
"AnalyticsEnabledHelpText": "Lähetä nimettömiä käyttö- ja virhetietoja {appName}in palvelimille. Tämä sisältää tietoja selaimestasi, käyttöliittymän sivujen käytöstä, virheraportoinnista, käyttöjärjestelmästä ja suoritusalustasta. Käytämme näitä tietoja ominaisuuksien ja vikakorjausten painotukseen.",
|
||||
"ApiKey": "Rajapinnan avain",
|
||||
"AppDataDirectory": "AppData-kansio",
|
||||
"DatabaseMigration": "Tietokannan siirto",
|
||||
"Delete": "Poista",
|
||||
"DeleteIndexerProxyMessageText": "Haluatko varmasti poistaa tietolähdevälityspalvelimen \"{name}\"?",
|
||||
"DeleteIndexerProxyMessageText": "Haluatko varmasti poistaa hakupalveluvälityspalvelimen \"{name}\"?",
|
||||
"DeleteNotificationMessageText": "Haluatko varmasti poistaa ilmoituspalvelun \"{name}\"?",
|
||||
"Disabled": "Ei käytössä",
|
||||
"DownloadClients": "Lataustyökalut",
|
||||
"DownloadClientSettings": "Lataustyökalujen asetukset",
|
||||
"DownloadClientStatusAllClientHealthCheckMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä",
|
||||
"DownloadClients": "Latauspalvelut",
|
||||
"DownloadClientSettings": "Latauspalveluasetukset",
|
||||
"DownloadClientStatusAllClientHealthCheckMessage": "Latauspalveluita ei ole ongelmien vuoksi käytettävissä",
|
||||
"Mode": "Tila",
|
||||
"MoreInfo": "Lisätietoja",
|
||||
"SelectAll": "Valitse kaikki",
|
||||
"SendAnonymousUsageData": "Lähetä nimettömiä käyttötietoja",
|
||||
"SetTags": "Tunnisteiden määritys",
|
||||
"SettingsEnableColorImpairedMode": "Heikentyneen värinäön tila",
|
||||
"ShowAdvanced": "Näytä lisäasetukset",
|
||||
"ShowAdvanced": "Supista asetukset",
|
||||
"ShowSearchHelpText": "Näytä hakupainike osoitettaessa.",
|
||||
"Shutdown": "Sammuta",
|
||||
"Size": "Koko",
|
||||
"Sort": "Järjestys",
|
||||
"UnableToAddANewDownloadClientPleaseTryAgain": "Uuden lataustyökalun lisäys epäonnistui. Yitä uudelleen.",
|
||||
"UnableToAddANewDownloadClientPleaseTryAgain": "Latauspalvelun lisääminen epäonnistui. Yritä uudelleen.",
|
||||
"AppDataLocationHealthCheckMessage": "Päivityksiä ei sallita, jotta AppData-kansion poistaminen päivityksen yhteydessä voidaan estää",
|
||||
"UnableToLoadHistory": "Historian lataus epäonnistui.",
|
||||
"UnableToLoadNotifications": "Virhe ladattaessa kytköksiä",
|
||||
"UnableToLoadTags": "Tunnisteiden lataus ei onnistu",
|
||||
"UnableToLoadUISettings": "Virhe ladattaesssa käyttöliittymän asetuksia",
|
||||
"UnableToLoadHistory": "Virhe ladattaessa historiaa.",
|
||||
"UnableToLoadNotifications": "Virhe ladattaessa ilmoituspalveluita.",
|
||||
"UnableToLoadTags": "Virhe ladattaessa tunnisteita.",
|
||||
"UnableToLoadUISettings": "Virhe ladattaessa käyttöliittymäasetuksia.",
|
||||
"UnsavedChanges": "Muutoksia ei ole tallennettu",
|
||||
"Yesterday": "Eilen",
|
||||
"ConnectionLost": "Ei yhteyttä",
|
||||
"DeleteDownloadClientMessageText": "Haluatko varmasti poistaa lataustyökalun \"{name}\"?",
|
||||
"ConnectionLost": "Yhteys menetettiin",
|
||||
"DeleteDownloadClientMessageText": "Haluatko varmasti poistaa latauspalvelun \"{name}\"?",
|
||||
"DeleteTagMessageText": "Haluatko varmasti poistaa tunnisteen \"{label}\"?",
|
||||
"Discord": "Discord",
|
||||
"Donations": "Lahjoitukset",
|
||||
|
@ -202,18 +202,18 @@
|
|||
"SettingsShowRelativeDates": "Suhteellisten päiväysten esitys",
|
||||
"SettingsShowRelativeDatesHelpText": "Korvaa absoluuttiset päiväykset suhteellisilla päiväyksillä (tänään/eilen/yms.).",
|
||||
"ShowSearch": "Näytä haku",
|
||||
"Source": "Lähdekoodi",
|
||||
"Source": "Lähde",
|
||||
"SSLPort": "SSL-portti",
|
||||
"StartTypingOrSelectAPathBelow": "Aloita kirjoitus tai valitse sijainti alta",
|
||||
"StartupDirectory": "Käynnistyskansio",
|
||||
"TableOptions": "Taulukkonäkymän asetukset",
|
||||
"TableOptionsColumnsMessage": "Valitse näytettävät sarakkeet ja niiden järjestys",
|
||||
"TagsHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille tietolähteille. Käytä kaikille jättämällä tyhjäksi.",
|
||||
"UnableToAddANewAppProfilePleaseTryAgain": "Uuden sovellusprofiilin lisäys epäonnistui. Yritä uudelleen.",
|
||||
"UnableToAddANewNotificationPleaseTryAgain": "Kytköksen lisäys epäonnistui. Yritä uudelleen.",
|
||||
"TableOptionsColumnsMessage": "Valitse näytettävät sarakkeet ja niiden järjestys.",
|
||||
"TagsHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille hakupalveluille.",
|
||||
"UnableToAddANewAppProfilePleaseTryAgain": "Virhe lisättäessä sovellusprofiilia. Yritä uudelleen.",
|
||||
"UnableToAddANewNotificationPleaseTryAgain": "Ilmoituspalvelun lisääminen epäonnistui. Yritä uudelleen.",
|
||||
"Version": "Versio",
|
||||
"View": "Näkymä",
|
||||
"Warn": "Varoitus",
|
||||
"Warn": "Varoita",
|
||||
"Wiki": "Wiki",
|
||||
"Port": "Portti",
|
||||
"Automatic": "Automaattinen",
|
||||
|
@ -221,39 +221,39 @@
|
|||
"Backup": "Varmuuskopiointi",
|
||||
"BackupFolderHelpText": "Suhteelliset tiedostosijainnit ovat {appName}in AppData-kansiossa.",
|
||||
"BackupIntervalHelpText": "Tietokannan ja asetusten automaattisen varmuuskopioinnin ajoitus.",
|
||||
"BackupRetentionHelpText": "Säilytysjaksoa vanhemmat varmuuskopiot siivotaan automaattisesti.",
|
||||
"BackupRetentionHelpText": "Säilytysaikaa vanhemmat varmuuskopiot siivotaan automaattisesti.",
|
||||
"Backups": "Varmuuskopiot",
|
||||
"BeforeUpdate": "Ennen päivitystä",
|
||||
"BindAddress": "Sidososoite",
|
||||
"Branch": "Haara",
|
||||
"BranchUpdate": "{appName}in versiopäivityksiin käytettävä kehityshaara",
|
||||
"BranchUpdate": "{appName}in versiopäivityksiin käytettävä kehityshaara.",
|
||||
"BranchUpdateMechanism": "Ulkoisen päivitysratkaisun käyttämä kehityshaara.",
|
||||
"BypassProxyForLocalAddresses": "Ohjaa paikalliset osoitteet välityspalvelimen ohi",
|
||||
"Cancel": "Peruuta",
|
||||
"CancelPendingTask": "Haluatko varmasti perua tämän odottavan tehtävän?",
|
||||
"CancelPendingTask": "Haluatko varmasti perua odottavan tehtävän?",
|
||||
"CertificateValidation": "Varmenteen vahvistus",
|
||||
"CertificateValidationHelpText": "Muuta HTTPS-varmennevahvistuksen tarkkuutta. Älä muuta, jollet ymmärrä tähän liittyviä riskejä.",
|
||||
"CertificateValidationHelpText": "Määritä HTTPS-varmennevahvistuksen tiukkuus. Älä muuta, jos et ymmärrä riskejä.",
|
||||
"ChangeHasNotBeenSavedYet": "Muutosta ei ole vielä tallennettu",
|
||||
"Clear": "Tyhjennä",
|
||||
"CloneProfile": "Monista profiili",
|
||||
"CloseCurrentModal": "Sulje nykyinen ikkuna",
|
||||
"Columns": "Sarakkeet",
|
||||
"Component": "Komponentti",
|
||||
"Connections": "Yhteydet",
|
||||
"ConnectSettings": "Kytkösasetukset",
|
||||
"CouldNotConnectSignalR": "SignalR-kirjastoa ei tavoitettu, eikä käyttöliittymää päivitetä",
|
||||
"Connections": "Ilmoituspalvelut",
|
||||
"ConnectSettings": "Ilmoituspavelun asetukset",
|
||||
"CouldNotConnectSignalR": "SignalR-kirjastoa ei tavoitettu, eikä käyttöliittymä päivity.",
|
||||
"Custom": "Mukautettu",
|
||||
"DeleteApplicationMessageText": "Haluatko varmasti poistaa sovelluksen \"{name}\"?",
|
||||
"DeleteBackup": "Poista varmuuskopio",
|
||||
"DeleteBackupMessageText": "Haluatko varmasti poistaa varmuuskopion \"{name}\"?",
|
||||
"DeleteDownloadClient": "Poista lataustyökalu",
|
||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä: {downloadClientNames}",
|
||||
"EditIndexer": "Muokkaa tietolähdettä",
|
||||
"DeleteDownloadClient": "Poista latauspalvelu",
|
||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Latauspalveluita ei ole ongelmien vuoksi käytettävissä: {downloadClientNames}",
|
||||
"EditIndexer": "Muokkaa hakupalvelua",
|
||||
"EnableAutomaticSearch": "Käytä automaattihakua",
|
||||
"EnableInteractiveSearch": "Käytä manuaalihakuun",
|
||||
"EnableInteractiveSearchHelpText": "Profiilia käytetään manuaalihakuun.",
|
||||
"EnableSSL": "SSL-salaus",
|
||||
"EnableSslHelpText": " Käyttöönotto vaatii uudelleenkäynnistyksen järjestelmänvavojan oikeuksilla.",
|
||||
"EnableSslHelpText": " Käyttöönotto vaatii uudelleenkäynnistyksen järjestelmänvalvojan oikeuksilla.",
|
||||
"Error": "Virhe",
|
||||
"ErrorLoadingContents": "Virhe ladattaessa sisältöjä",
|
||||
"Events": "Tapahtumat",
|
||||
|
@ -268,26 +268,26 @@
|
|||
"Grabs": "Kaappaukset",
|
||||
"Health": "Terveys",
|
||||
"Level": "Taso",
|
||||
"NoIssuesWithYourConfiguration": "Kokoonpanossasi ei ole ongelmia",
|
||||
"NoIssuesWithYourConfiguration": "Kokoonpanossasi ei ole ongelmia.",
|
||||
"HomePage": "Verkkosivusto",
|
||||
"Host": "Osoite",
|
||||
"Hostname": "Osoite",
|
||||
"IncludeHealthWarningsHelpText": "Sisällytä kuntovaroitukset",
|
||||
"Indexer": "Tietolähde",
|
||||
"IndexerFlags": "Tietolähteen liput",
|
||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Mikään tietolähde ei ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi.",
|
||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi: {indexerNames}",
|
||||
"IndexerPriority": "Tietolähteiden painotus",
|
||||
"Indexer": "Hakupalvelu",
|
||||
"IndexerFlags": "Hakupalvelun liput",
|
||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Mikään hakupalvelu ei ole käytettävissä yli kuusi tuntia kestäneiden virheiden vuoksi.",
|
||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Hakupalvelut eivät ole käytettävissä yli kuusi tuntia kestäneiden virheiden vuoksi: {indexerNames}.",
|
||||
"IndexerPriority": "Hakupalveluiden painotus",
|
||||
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Välityspalvelimet eivät ole käytettävissä virheiden vuoksi",
|
||||
"IndexerStatusAllUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi",
|
||||
"IndexerStatusUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi: {indexerNames}",
|
||||
"IndexerStatusAllUnavailableHealthCheckMessage": "Hakupalvelut eivät ole virheiden vuoksi käytettävissä.",
|
||||
"IndexerStatusUnavailableHealthCheckMessage": "Hakupalvelut eivät ole virheiden vuoksi käytettävissä: {indexerNames}.",
|
||||
"NoChange": "Ei muutosta",
|
||||
"NoLogFiles": "Lokitiedostoja ei ole",
|
||||
"SSLCertPasswordHelpText": "PFX-tiedoston salasana",
|
||||
"SSLCertPath": "SSL-varmenteen sijainti",
|
||||
"SSLCertPathHelpText": "PFX-tiedoston sijainti",
|
||||
"Status": "Tila",
|
||||
"NotificationTriggers": "Laukaisimet",
|
||||
"NotificationTriggers": "Ilmoituksen laukaisijat",
|
||||
"NoUpdatesAreAvailable": "Päivityksiä ei ole saatavilla",
|
||||
"OAuthPopupMessage": "Selaimesi estää ponnahdukset",
|
||||
"Ok": "Ok",
|
||||
|
@ -303,46 +303,46 @@
|
|||
"RestoreBackup": "Palauta varmuuskopio",
|
||||
"Retention": "Säilytys",
|
||||
"UILanguageHelpText": "{appName}in käyttöliittymän kieli.",
|
||||
"UILanguageHelpTextWarning": "Selaimen sivupäivitys vaaditaan",
|
||||
"UILanguageHelpTextWarning": "Vaatii selaimen sivupäivityksen (F5).",
|
||||
"UISettings": "Käyttöliittymän asetukset",
|
||||
"DownloadClientsSettingsSummary": "{appName}in käyttöliittymästä suoritettavien hakujen yhteydessä käytettävät lataustyökalumääritykset.",
|
||||
"ProwlarrSupportsAnyDownloadClient": "{appName} tukee alla listatuja lataustyökaluja.",
|
||||
"AddDownloadClientToProwlarr": "Lisäämällä lataustyökalun {appName} voi käynnistää lataukset suoraan käyttöliittymästä manuaalisen haun yhteydessä.",
|
||||
"RedirectHelpText": "Uudelleenohjaa tietolähteeltä saapuvat latauspyynnöt ja välitä kaappaus suoraan välittämättä sitä {appName}in välityksellä.",
|
||||
"DownloadClientsSettingsSummary": "{appName}in käyttöliittymästä suoritettavien hakujen yhteydessä käytettävät latauspalvelut.",
|
||||
"ProwlarrSupportsAnyDownloadClient": "{appName} tukee kaikkia alla listatuja latauspalveluita.",
|
||||
"AddDownloadClientToProwlarr": "Lisäämällä latauspalvelun {appName} voi lähettää julkaisut suoraan käyttöliittymästä manuaalihaun tuloksista.",
|
||||
"RedirectHelpText": "Uudelleenohjaa hakupalvelulta saapuvat latauspyynnöt ja välitä kaappaus suoraan välittämättä sitä {appName}in kautta.",
|
||||
"FullSync": "Täysi synkronointi",
|
||||
"SyncLevelFull": "Täysi synkronointi: Pitää sovelluksen tietolähteet täysin synkronoituna. Tietolähteisiin {appName}issa tehdyt muutokset synkronoidaan etäsovelluksen kanssa ja kaikki etäsovelluksessa tehdyt muutokset korvataan seuraavan synkronoinnin yhteydessä.",
|
||||
"EnableIndexer": "Tietolähteen tila",
|
||||
"FilterPlaceHolder": "Suodata tietolähteitä",
|
||||
"IndexerHealthCheckNoIndexers": "Yhtään tietolähdettä ei ole käytössä, eikä {appName} tämän vuoksi löydä tuloksia.",
|
||||
"IndexerObsoleteCheckMessage": "Tietolähteet ovat poistuneet tai ne ovat muuttuneet: {0}. Poista ja/tai lisää ne {appName}iin uudelleen.",
|
||||
"SyncLevelFull": "Täysi synkronointi: Pitää sovelluksen hakupalvelut täysin synkronoituna. Hakupalveluihin {appName}issa tehdyt muutokset synkronoidaan etäsovelluksen kanssa ja kaikki etäsovelluksessa tehdyt muutokset korvataan seuraavan synkronoinnin yhteydessä.",
|
||||
"EnableIndexer": "Ota hakupalvelu käyttöön",
|
||||
"FilterPlaceHolder": "Suodata palveluita",
|
||||
"IndexerHealthCheckNoIndexers": "Yhtään hakupalvelua ei ole käytössä, eikä {appName} tämän vuoksi löydä tuloksia.",
|
||||
"IndexerObsoleteCheckMessage": "Hakupalvelut ovat poistuneet tai ne ovat muuttuneet: {0}. Poista tai lisää ne {appName}iin uudelleen.",
|
||||
"IndexerProxy": "Tiedonhaun välityspalvelin",
|
||||
"IndexerSettingsSummary": "Määritä useita globaaleita tietolähdeasetuksia, kuten välityspalvelimia.",
|
||||
"IndexerVipExpiringHealthCheckMessage": "Tietolähteen VIP-edut erääntyvät pian: {indexerNames}",
|
||||
"ProwlarrSupportsAnyIndexer": "{appName} tukee Newznab- ja Torznab-yhteensopivien tietolähteiden ohella myös useita muita lähteitä vaihtoehdoilla \"Yleinen Newznab\" (Usenetille) ja 'Yleinen Torznab' (torrenteille).",
|
||||
"SettingsIndexerLogging": "Tehostettu tietolähteiden valvonta",
|
||||
"IndexerSettingsSummary": "Määritä useita globaaleita hakupalveluasetuksia, kuten välityspalvelimia.",
|
||||
"IndexerVipExpiringHealthCheckMessage": "Hakupalvelun VIP-edut päättyvät pian: {indexerNames}.",
|
||||
"ProwlarrSupportsAnyIndexer": "{appName} tukee Newznab- ja Torznab-yhteensopivien hakupalveluiden ohella myös useita muita palveluita vaihtoehdoilla \"Yleinen Newznab\" (Usenetille) ja 'Yleinen Torznab' (torrenteille).",
|
||||
"SettingsIndexerLogging": "Tehostettu hakupalveluiden valvonta",
|
||||
"AddIndexerProxy": "Lisää tiedonhaun välityspalvelin",
|
||||
"UISettingsSummary": "Kalenterin, päiväyksen ja kellonajan sekä kielen ja heikentyneelle värinäölle sopivan tilan asetukset.",
|
||||
"SettingsIndexerLoggingHelpText": "Kirjaa tarkempia tietoja tietolähteiden toiminnasta, mukaanlukien vastaukset",
|
||||
"SettingsIndexerLoggingHelpText": "Kirjaa tarkempia tietoja hakupalveluiden toiminnasta, mukaanlukien vastaukset",
|
||||
"IndexerTagsHelpText": "Tunnisteilla voit kohdistaa tiedonhaun välityspalvelimia ja määrittää mihin sovelluksiin ne synkronoidaan.",
|
||||
"UnableToLoadAppProfiles": "Sovellusprofiilien lataus epäonnistui",
|
||||
"AppProfileSelectHelpText": "Sovellusprofiilieilla määritetään tietolähteelle sovellussynkronoinnin yhteydessä aktivoitavat hakutavat (RSS/automaatti/manuaali).",
|
||||
"IndexerQuery": "Tietolähteen kysely",
|
||||
"IndexerRss": "Tietolähteen RSS",
|
||||
"SearchIndexers": "Etsi tietolähteistä",
|
||||
"UnableToLoadAppProfiles": "Virhe ladattaessa sovellusprofiileja.",
|
||||
"AppProfileSelectHelpText": "Sovellusprofiilieilla määritetään hakupalvelulle sovellussynkronoinnin yhteydessä aktivoitavat hakutavat (RSS/automaatti/manuaali).",
|
||||
"IndexerQuery": "Hakupalvelukysely",
|
||||
"IndexerRss": "Hakupalvelun RSS",
|
||||
"SearchIndexers": "Etsi hakupalveluista",
|
||||
"AddRemoveOnly": "Ainoastaan lisää/poista",
|
||||
"IndexerVipExpiredHealthCheckMessage": "Tietolähteen VIP-edut ovat erääntyneet: {indexerNames}",
|
||||
"IndexerVipExpiredHealthCheckMessage": "Hakupalvelun VIP-edut ovat päättyneet: {indexerNames}.",
|
||||
"MaintenanceRelease": "Huoltojulkaisu: korjauksia ja muita parannuksia. Lue lisää Githubin muutoshistoriasta.",
|
||||
"Query": "Kysely",
|
||||
"Redirect": "Uudelleenohjaus",
|
||||
"RestartProwlarr": "Käynnistä {appName} uudelleen",
|
||||
"SyncLevel": "Synkronoinnin laajuus",
|
||||
"SyncLevelAddRemove": "Vain lisäys/poisto: Kun {appName}in tietolähteitä lisätään tai poistetaan, päivittyy myös etäsovellus.",
|
||||
"SyncAppIndexers": "Synkronoi tietolähteet",
|
||||
"TestAllApps": "Testaa kaikki sovellukset",
|
||||
"UnableToLoadIndexerProxies": "Tiedonhaun välityspalvelimia ei voitu ladata",
|
||||
"AddedToDownloadClient": "Julkaisu lisättiin lataustyökaluun",
|
||||
"AddNewIndexer": "Lisää uusi tietolähde",
|
||||
"AddToDownloadClient": "Lisää julkaisu lataustyökaluun",
|
||||
"SyncLevelAddRemove": "Vain lisäys/poisto: Kun {appName}in hakupalveluita lisätään tai poistetaan, päivittyy myös tämä etäsovellus.",
|
||||
"SyncAppIndexers": "Synkronoi sovelluksiin",
|
||||
"TestAllApps": "Koesta sovellukset",
|
||||
"UnableToLoadIndexerProxies": "Virhe ladattaessa tiedonhaun välityspalvelimia.",
|
||||
"AddedToDownloadClient": "Julkaisu lisättiin latauspalveluun",
|
||||
"AddNewIndexer": "Lisää uusi hakupalvelu",
|
||||
"AddToDownloadClient": "Lisää julkaisu latauspalveluun",
|
||||
"NoSearchResultsFound": "Tuloksia ei löytynyt. Yritä uutta hakua alta.",
|
||||
"Notification": "Ilmoitus",
|
||||
"DeleteIndexerProxy": "Poista tiedonhaun välityspalvelin",
|
||||
|
@ -351,7 +351,7 @@
|
|||
"SettingsLogRotate": "Lokitiedostojen kierrätys",
|
||||
"SettingsLogSql": "Kirjaa SQL",
|
||||
"SettingsSqlLoggingHelpText": "Kirjaa kaikki {appName}in SQL-kyselyt",
|
||||
"ConnectSettingsSummary": "Ilmoitukset, kuten viestintä mediapalvelimille ja soittimille, sekä omat komentosarjat.",
|
||||
"ConnectSettingsSummary": "Yhteydet ilmoituspalveluihin ja mukautetut komentosarjat.",
|
||||
"DevelopmentSettings": "Kehittäjäasetukset",
|
||||
"Description": "Kuvaus",
|
||||
"Id": "ID",
|
||||
|
@ -365,16 +365,16 @@
|
|||
"Category": "Kategoria",
|
||||
"ClearHistory": "Tyhjennä historia",
|
||||
"ClearHistoryMessageText": "Haluatko varmasti tyhjentää kaiken {appName}-historian?",
|
||||
"Connect": "Kytkökset",
|
||||
"EnableRssHelpText": "Käytä tietolähteelle RSS-syötettä.",
|
||||
"Connect": "Ilmoituspalvelut",
|
||||
"EnableRssHelpText": "Käytä hakupalvelulle RSS-syötettä.",
|
||||
"DeleteApplication": "Poista sovellus",
|
||||
"DeleteAppProfile": "Poista sovellusprofiili",
|
||||
"IndexerProxies": "Tiedonhaun välityspalvelimet",
|
||||
"IndexerAuth": "Tietolähteen todennus",
|
||||
"Notifications": "Kytkökset",
|
||||
"NotificationTriggersHelpText": "Valitse tämän ilmoituksen laukaisevat tapahtumat.",
|
||||
"IndexerProxies": "Hakupalveluiden välityspalvelimet",
|
||||
"IndexerAuth": "Hakupalvelun todennus",
|
||||
"Notifications": "Ilmoituspalvelut",
|
||||
"NotificationTriggersHelpText": "Valitse ilmoituksen laukaisevat tapahtumat.",
|
||||
"Stats": "Tilastot",
|
||||
"UnableToLoadDevelopmentSettings": "Kehittäjäasetusten lataus epäonnistui",
|
||||
"UnableToLoadDevelopmentSettings": "Virhe ladattaessa kehittäjäasetuksia.",
|
||||
"AppSettingsSummary": "Sovellukset ja asetukset, joilla määritetään miten {appName} viestii PVR-sovellustesi kanssa.",
|
||||
"Privacy": "Yksityisyys",
|
||||
"NetCore": ".NET",
|
||||
|
@ -387,54 +387,54 @@
|
|||
"Filters": "Suodattimet",
|
||||
"OnGrab": "Kun julkaisu kaapataan",
|
||||
"OnHealthIssue": "Vakausongelmat",
|
||||
"HistoryCleanupDaysHelpText": "Arvo \"0\" (nolla) poistaa automaattisen tyhjennyksen käytöstä.",
|
||||
"HistoryCleanupDaysHelpText": "Poista automaattinen tyhjennys käytöstä asettamalla arvoksi 0.",
|
||||
"HistoryCleanupDaysHelpTextWarning": "Tässä määritettyä aikaa vanhemmat tiedostot poistetaan automaattisesti roskakorista pysyvästi.",
|
||||
"TestAllIndexers": "Tietolähteiden testaus",
|
||||
"TestAllIndexers": "Koesta palvelut",
|
||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent-tiedon ilmoitti rajapinnan kanssa viestinyt sovellus.",
|
||||
"Categories": "Kategoriat",
|
||||
"Database": "Tietokanta",
|
||||
"HistoryCleanup": "Historian siivous",
|
||||
"IndexerAlreadySetup": "Tietolähteestä on määritetty jo ainakin yksi instanssi",
|
||||
"IndexerInfo": "Tietolähteen tiedot",
|
||||
"MassEditor": "Joukkoeditori",
|
||||
"IndexerAlreadySetup": "Hakupalvelusta on määritetty jo ainakin yksi instanssi.",
|
||||
"IndexerInfo": "Hakupalvelun tiedot",
|
||||
"MassEditor": "Massamuokkaus",
|
||||
"OnApplicationUpdate": "Kun sovellus päivitetään",
|
||||
"OnApplicationUpdateHelpText": "Kun sovellus päivitetään",
|
||||
"Proxies": "Välityspalvelimet",
|
||||
"Public": "Julkinen",
|
||||
"SemiPrivate": "Osittain yksityinen",
|
||||
"ApplicationsLoadError": "Sovelluslistausta ei voitu ladata",
|
||||
"ApplicationsLoadError": "Virhe ladattaessa sovelluslistaa.",
|
||||
"Url": "URL",
|
||||
"Website": "Verkkosivusto",
|
||||
"IndexerNoDefinitionCheckHealthCheckMessage": "Tietolähteillä ei ole määritystä, eivätkä ne toimi: {indexerNames}. Poista ja/tai lisää {appName}iin uudelleen",
|
||||
"IndexerNoDefinitionCheckHealthCheckMessage": "Hakupalveluiden määritykset puuttuvat, eivätkä ne toimi: {indexerNames}. Poista tai lisää ne {appName}iin uudelleen.",
|
||||
"Private": "Yksityinen",
|
||||
"QueryResults": "Kyselyn tulokset",
|
||||
"Application": "Sovellus",
|
||||
"GrabReleases": "Kaappaa julkaisu(t)",
|
||||
"Link": "Linkki",
|
||||
"SearchTypes": "Mitä etsitään",
|
||||
"UnableToLoadIndexers": "Tietolähteiden lataus epäonnistui",
|
||||
"SearchTypes": "Etsittävät tyypit",
|
||||
"UnableToLoadIndexers": "Virhe ladattaessa hakupalveluita.",
|
||||
"Yes": "Kyllä",
|
||||
"MappedDrivesRunningAsService": "Yhdistetyt verkkoasemat eivät ole käytettävissä kun sovellus suoritetaan Windows-palveluna. Saat lisätietoja UKK:sta.",
|
||||
"No": "Ei",
|
||||
"BookSearchTypes": "Kirjojen hakutyypit",
|
||||
"IndexerDetails": "Tietolähteen tiedot",
|
||||
"IndexerName": "Tietolähteen nimi",
|
||||
"IndexerSite": "Tietolähteen sivusto",
|
||||
"MovieSearchTypes": "Elokuvien hakutyypit",
|
||||
"MusicSearchTypes": "Musiikin hakutyypit",
|
||||
"BookSearchTypes": "Etsittävät kirjatyypit",
|
||||
"IndexerDetails": "Hakupalvelun tiedot",
|
||||
"IndexerName": "Hakupalvelun nimi",
|
||||
"IndexerSite": "Hakupalvelun sivusto",
|
||||
"MovieSearchTypes": "Etsittävät elokuvatyypit",
|
||||
"MusicSearchTypes": "Etsittävät musiikkityypit",
|
||||
"NotSupported": "Ei tuettu",
|
||||
"RawSearchSupported": "Raakahaku tuettu",
|
||||
"SearchCapabilities": "Hakuominaisuudet",
|
||||
"TVSearchTypes": "Televisiosarjojen hakutyypit",
|
||||
"TVSearchTypes": "Etsittävät sarja-/jaksotyypit",
|
||||
"MinimumSeeders": "Jakajien vähimmäismäärä",
|
||||
"MinimumSeedersHelpText": "Sovelluksen edellyttämä jakajien vähimmäismäärä tietolähteestä kaappaukseen.",
|
||||
"MinimumSeedersHelpText": "Sovelluksen edellyttämä hakupalvelusta kaapattavien kohteiden jakajien (seed) vähimmäismäärä.",
|
||||
"SyncProfile": "Synkronointiprofiili",
|
||||
"SyncProfiles": "Synkronointiprofiilit",
|
||||
"AddSyncProfile": "Lisää synkronointiprofiili",
|
||||
"EditSyncProfile": "Muokkaa synkronointiprofiilia",
|
||||
"InstanceName": "Instanssin nimi",
|
||||
"InstanceNameHelpText": "Instanssin nimi välilehdellä ja järjestelmälokissa.",
|
||||
"ThemeHelpText": "Vaihda sovelluksen käyttöliittymän ulkoasua. \"Automaattinen\" vaihtaa vaalean ja tumman tilan välillä käyttöjärjestelmän teeman mukaan. Innoittanut Theme.Park.",
|
||||
"ThemeHelpText": "Vaihda sovelluksen käyttöliittymän ulkoasua. \"Automaattinen\" vaihtaa vaalean ja tumman tilan välillä käyttöjärjestelmän teeman mukaan. Innoittanut {inspiredBy}.",
|
||||
"Duration": "Kesto",
|
||||
"ElapsedTime": "Kulunut aika",
|
||||
"EnabledRedirected": "Kulunut, uudelleenohjattu",
|
||||
|
@ -449,38 +449,38 @@
|
|||
"ApplicationLongTermStatusCheckAllClientMessage": "Sovellukset eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi.",
|
||||
"ApplicationLongTermStatusCheckSingleClientMessage": "Sovellukset eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi: {0}",
|
||||
"AreYouSureYouWantToDeleteCategory": "Haluatko varmasti poistaa kohdistetun kategorian?",
|
||||
"DeleteClientCategory": "Poista lataustyökalukategoria",
|
||||
"DownloadClientCategory": "Lataustyökalukategoria",
|
||||
"DeleteClientCategory": "Poista latauspalvelukategoria",
|
||||
"DownloadClientCategory": "Latauspalvelukategoria",
|
||||
"MappedCategories": "Kohdistetut kategoriat",
|
||||
"AuthenticationRequired": "Vaadi tunnistautuminen",
|
||||
"Remove": "Poista",
|
||||
"Replace": "Korvaa",
|
||||
"OnLatestVersion": "{appName}in uusin versio on jo asennettu",
|
||||
"OnLatestVersion": "Uusin {appName}-versio on jo asennettu",
|
||||
"ApplicationURL": "Sovelluksen URL",
|
||||
"ApplicationUrlHelpText": "Tämän sovelluksen ulkoinen URL-osoite, johon sisältyy http(s)://, portti ja URL-perusta.",
|
||||
"Track": "Valvo",
|
||||
"CountIndexersSelected": "{count} tietolähde(ttä) on valittu",
|
||||
"DeleteSelectedDownloadClients": "Poista lataustyökalu(t)",
|
||||
"CountIndexersSelected": "{count} hakupalvelu(a) on valittu",
|
||||
"DeleteSelectedDownloadClients": "Poista valitut latauspalvelu(t)",
|
||||
"DeleteSelectedApplicationsMessageText": "Haluatko varmasti poistaa {count} valit(un/tua) sovellu(sta/ksen)?",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Haluatko varmasti poistaa {count} valit(n/tua) lataustyökalu(n/a)?",
|
||||
"DeleteSelectedIndexersMessageText": "Haluatko varmasti poistaa {count} valit(un/tua) tietoläh(teen/dettä)?",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Haluatko varmasti poistaa {count} valittua latauspalvelua?",
|
||||
"DeleteSelectedIndexersMessageText": "Haluatko varmasti poistaa {count} valit(un/tua) hakupalvelu(n/a)?",
|
||||
"Publisher": "Julkasija",
|
||||
"SelectIndexers": "Valitse tietolähteet",
|
||||
"SelectIndexers": "Palveluiden monivalinta",
|
||||
"Year": "Vuosi",
|
||||
"Genre": "Lajityyppi",
|
||||
"More": "Lisää",
|
||||
"Season": "Kausi",
|
||||
"ApplyTagsHelpTextAdd": "– \"Lisää\" syötetyt tunnisteet aiempiin tunnisteisiin",
|
||||
"ApplyTagsHelpTextHowToApplyApplications": "Tunnisteiden käyttäminen valituille sovelluksille",
|
||||
"ApplyTagsHelpTextHowToApplyIndexers": "Tunnisteiden käyttö valituissa tietolähteissä",
|
||||
"ApplyTagsHelpTextHowToApplyApplications": "Tunnisteiden käyttö valituille sovelluksille:",
|
||||
"ApplyTagsHelpTextHowToApplyIndexers": "Tunnisteiden käyttö valituille hakupalveluille:",
|
||||
"ApplyTagsHelpTextRemove": "- \"Poista\" tyhjentää syötetyt tunnisteet",
|
||||
"ApplyTagsHelpTextReplace": "- \"Korvaa\" nykyiset tunnisteet syötetyillä tai tyhjennä kaikki tunnisteet jättämällä tyhjäksi",
|
||||
"DownloadClientPriorityHelpText": "Lautaustyökalujen painotus, 1– 50 (korkein-alin). Oletusarvo on 1 ja tasaveroiset erotetaan Round-Robin-tekniikalla.",
|
||||
"ApplyTagsHelpTextReplace": "– \"Korvaa\" nykyiset tunnisteet syötetyillä tai tyhjennä kaikki tunnisteet jättämällä tyhjäksi.",
|
||||
"DownloadClientPriorityHelpText": "Useiden latauspalveluiden painotus, 1–50 (korkein-alin). Oletusarvo on 1 ja tasaveroiset erotetaan Round-Robin-tekniikalla.",
|
||||
"Album": "Albumi",
|
||||
"Artist": "Esittäjä",
|
||||
"Author": "Kirjailija",
|
||||
"Book": "Kirja",
|
||||
"UpdateAvailableHealthCheckMessage": "Uusi päivitys on saatavilla",
|
||||
"UpdateAvailableHealthCheckMessage": "Uusi päivitys on saatavilla: {version}",
|
||||
"Episode": "Jakso",
|
||||
"Label": "Nimi",
|
||||
"Theme": "Teema",
|
||||
|
@ -490,44 +490,44 @@
|
|||
"WhatsNew": "Mikä on uutta?",
|
||||
"ConnectionLostToBackend": "{appName} kadotti yhteyden taustajärjestelmään ja se on käynnistettävä uudelleen.",
|
||||
"minutes": "minuuttia",
|
||||
"AddConnection": "Lisää yhteys",
|
||||
"NotificationStatusAllClientHealthCheckMessage": "Mikään ilmoituspavelu ei ole ongelmien vuoksi käytettävissä.",
|
||||
"NotificationStatusSingleClientHealthCheckMessage": "Ilmoitukset eivät ole ongelmien vuoksi käytettävissä: {notificationNames}",
|
||||
"AuthBasic": "Perus (ponnahdusikkuna)",
|
||||
"AddConnection": "Lisää ilmoituspavelu",
|
||||
"NotificationStatusAllClientHealthCheckMessage": "Ilmoituspalvelut eivät ole ongelmien vuoksi käytettävissä.",
|
||||
"NotificationStatusSingleClientHealthCheckMessage": "Ilmoituspalvelut eivät ole ongelmien vuoksi käytettävissä: {notificationNames}.",
|
||||
"AuthBasic": "Perus (selaimen ponnahdus)",
|
||||
"AuthForm": "Lomake (kirjautumissivu)",
|
||||
"DisabledForLocalAddresses": "Ei käytössä paikallisille osoitteille",
|
||||
"DisabledForLocalAddresses": "Ei käytössä paikallisissa osoitteissa",
|
||||
"None": "Ei mitään",
|
||||
"ResetAPIKeyMessageText": "Haluatko varmasti korvata rajapinnan avaimen uudella?",
|
||||
"TotalIndexerSuccessfulGrabs": "Onnistuneiden tietolähdekaappausten kokonaismäärä",
|
||||
"TotalIndexerSuccessfulGrabs": "Onnistuneiden hakupalvelukaappausten kokonaismäärä",
|
||||
"AppUpdated": "{appName} on päivitetty",
|
||||
"AppUpdatedVersion": "{appName} on päivitetty versioon {version} ja muutosten käyttöönottamiseksi se on käynnistettävä uudelleen.",
|
||||
"IndexerDownloadClientHelpText": "Määritä tämän tietolähteen kanssa käytettävä lataustyökalu.",
|
||||
"AuthenticationRequiredWarning": "Etäkäytön estämiseksi ilman tunnistautumista {appName} vaatii nyt todennuksen käyttöönoton. Todennus voidaan poistaa käytöstä paikallisille osoitteille.",
|
||||
"IndexerDownloadClientHelpText": "Määritä {appName}in käyttöliittymässä tästä hakupalvelusta kaapattaessa käytettävä latauspalvelu.",
|
||||
"AuthenticationRequiredWarning": "Etäkäytön estämiseksi ilman tunnistautumista {appName} vaatii nyt tunnistautumisen käyttöönoton. Paikallisilta osoitteilta se voidaan valinnaisesti poistaa käytöstä.",
|
||||
"TotalGrabs": "Kaappausten kokonaismäärä",
|
||||
"AddDownloadClientImplementation": "Lisäätään lataustyökalua - {implementationName}",
|
||||
"AddIndexerImplementation": "Lisätään tietolähdettä - {implementationName}",
|
||||
"AddDownloadClientImplementation": "Lisätään latauspalvelua – {implementationName}",
|
||||
"AddIndexerImplementation": "Lisätään hakupalvelua – {implementationName}",
|
||||
"OnGrabHelpText": "Kun julkaisu kaapataan",
|
||||
"ManageDownloadClients": "Hallitse lataustyökaluja",
|
||||
"NoDownloadClientsFound": "Lataustyökaluja ei löytynyt",
|
||||
"CountDownloadClientsSelected": "{count} lataustyökalu(a) on valittu",
|
||||
"EditSelectedDownloadClients": "Muokkaa valittuja lataustyökaluja",
|
||||
"IndexerDownloadClientHealthCheckMessage": "Tietolähteet virheellisillä lataustyökaluilla: {indexerNames}.",
|
||||
"AddIndexerProxyImplementation": "Lisää tiedonhaun välityspalvelin - {implementationName}",
|
||||
"EditIndexerProxyImplementation": "Muokkaa tiedonhaun välityspalvelinta - {implementationName}",
|
||||
"EditDownloadClientImplementation": "Muokataan lataustyökalua - {implementationName}",
|
||||
"ManageDownloadClients": "Hallitse palveluita",
|
||||
"NoDownloadClientsFound": "Latauspalveluita ei löytynyt",
|
||||
"CountDownloadClientsSelected": "{count} latauspalvelu(a) on valittu",
|
||||
"EditSelectedDownloadClients": "Muokkaa valittuja latauspalveluita",
|
||||
"IndexerDownloadClientHealthCheckMessage": "Hakupalvelut virheellisillä latauspalveluilla: {indexerNames}.",
|
||||
"AddIndexerProxyImplementation": "Lisätään tiedonhaun välityspalvelinta – {implementationName}",
|
||||
"EditIndexerProxyImplementation": "Muokataan tiedonhaun välityspalvelinta – {implementationName}",
|
||||
"EditDownloadClientImplementation": "Muokataan latauspalvelua – {implementationName}",
|
||||
"AddCustomFilter": "Lisää oma suodatin",
|
||||
"ApplyChanges": "Toteuta muutokset",
|
||||
"EditSelectedIndexers": "Muokkaa valittuja sisältölähteitä",
|
||||
"NoHistoryFound": "Historiaa ei löytynyt",
|
||||
"NoIndexersFound": "Tietolähteitä ei löytynyt",
|
||||
"NoIndexersFound": "Palveluita ei löytynyt",
|
||||
"StopSelecting": "Lopeta valitseminen",
|
||||
"EditConnectionImplementation": "Muokataan kytköstä - {implementationName}",
|
||||
"AddConnectionImplementation": "Lisätään kytköstä - {implementationName}",
|
||||
"EditConnectionImplementation": "Muokataan ilmoituspalvelua – {implementationName}",
|
||||
"AddConnectionImplementation": "Lisätään ilmoituspavelua – {implementationName}",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "Sisällön rakenne",
|
||||
"EditIndexerImplementation": "Muokataan tietolähdettä - {implementationName}",
|
||||
"EditIndexerImplementation": "Muokataan hakupalvelua – {implementationName}",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "Syötä uusi käyttäjätunnus",
|
||||
"DefaultNameCopiedProfile": "{name} - Kopioi",
|
||||
"AppsMinimumSeedersHelpText": "Sovellusten edellyttämä tietolähteestä kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
|
||||
"DefaultNameCopiedProfile": "{name} (kopio)",
|
||||
"AppsMinimumSeedersHelpText": "Sovellusten edellyttämä hakupalvelusta kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
|
||||
"TotalHostGrabs": "Isännän kaappausten kokonaismäärä",
|
||||
"IncludeManualGrabsHelpText": "Sisällytä {appName}in käyttöliittymästä tehdyt manuaalikaappaukset.",
|
||||
"AuthenticationRequiredHelpText": "Valitse mitkä pyynnöt vaativat tunnistautumisen. Älä muuta, jos et ymmärrä riskejä.",
|
||||
|
@ -537,47 +537,47 @@
|
|||
"AuthenticationMethod": "Tunnistautumistapa",
|
||||
"Clone": "Monista",
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Vahvista uusi salasana",
|
||||
"EditApplicationImplementation": "Muokataan sovellusta - {implementationName}",
|
||||
"AddApplicationImplementation": "Lisätään sovellusta - {implementationName}",
|
||||
"EditApplicationImplementation": "Muokataan sovellusta – {implementationName}",
|
||||
"AddApplicationImplementation": "Lisätään sovellusta – {implementationName}",
|
||||
"InvalidUILanguage": "Käytöliittymän kielivalinta on virheellinen. Korjaa se ja tallenna asetukset.",
|
||||
"SeedRatio": "Jakosuhde",
|
||||
"SeedTime": "Jakoaika",
|
||||
"days": "päivää",
|
||||
"HistoryDetails": "Historiatiedot",
|
||||
"IndexerDisabled": "Tietolähde ei ole käytössä",
|
||||
"IndexerDisabled": "Hakupalvelu ei ole käytössä",
|
||||
"AdvancedSettingsShownClickToHide": "Lisäasetukset näytetään, piilota painamalla tästä.",
|
||||
"AdvancedSettingsHiddenClickToShow": "Lisäasetukset on piilotettu, näytä painamalla tästä.",
|
||||
"AppsMinimumSeeders": "Sovellusten vähimmäisjakajat",
|
||||
"AppsMinimumSeeders": "Jakajien vähimmäismäärä",
|
||||
"BasicSearch": "Perushaku",
|
||||
"CountApplicationsSelected": "{count} sovellus(ta) on valittu",
|
||||
"DeleteSelectedApplications": "Poista valitut sovellukset",
|
||||
"DeleteSelectedIndexer": "Poista valittu tietolähde",
|
||||
"DeleteSelectedIndexers": "Poista valitut tietolähteet",
|
||||
"DeleteSelectedIndexer": "Poista valittu hakupalvelu",
|
||||
"DeleteSelectedIndexers": "Poista valitut hakupalvelut",
|
||||
"Implementation": "Toteutus",
|
||||
"IndexerCategories": "Tietolähdekategoriat",
|
||||
"IndexerStatus": "Tietolähteen tila",
|
||||
"IndexerCategories": "Hakupalvelukategoriat",
|
||||
"IndexerStatus": "Hakupalvelun tila",
|
||||
"ManageApplications": "Hallitse sovelluksia",
|
||||
"NewznabUrl": "Newznab URL",
|
||||
"PackSeedTime": "Koosteen jakoaika",
|
||||
"PackSeedTime": "Paketin jakoaika",
|
||||
"PackSeedTimeHelpText": "Aika, joka koostepaketin (kuten sarjan tuotantokauden tai esittäjän diskografian) sisältävää torrentia tulee jakaa. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
|
||||
"QueryType": "Kyselyn tyyppi",
|
||||
"SearchAllIndexers": "Etsi kaikista tietolähteistä",
|
||||
"SearchAllIndexers": "Etsi kaikista hakupalveluista",
|
||||
"SeedRatioHelpText": "Jakosuhde, joka torrentin tulee saavuttaa ennen sen pysäytystä. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
|
||||
"TorznabUrl": "Torznab URL",
|
||||
"ApiKeyValidationHealthCheckMessage": "Muuta rajapinnan (API) avain ainakin {length} merkin pituiseksi. Voit tehdä tämän asetuksista tai muokkaamalla asetustiedostoa.",
|
||||
"OnHealthRestored": "Terveystilan vakautuessa",
|
||||
"OnHealthRestoredHelpText": "Terveystilan vakautuessa",
|
||||
"TotalHostQueries": "Isännän kyselyiden kokonaismäärä",
|
||||
"TotalIndexerQueries": "Tietolähteen kyselyiden kokonaismäärä",
|
||||
"TotalIndexerQueries": "Hakupalvelun kyselyiden kokonaismäärä",
|
||||
"GoToApplication": "Siirry sovellukseen",
|
||||
"AreYouSureYouWantToDeleteIndexer": "Haluatko varmasti poistaa tietolähteen \"{name}\" sovelluksesta {appName}?",
|
||||
"AreYouSureYouWantToDeleteIndexer": "Haluatko varmasti poistaa hakupalvelun \"{name}\" sovelluksesta {appName}?",
|
||||
"AuthQueries": "Todennuskyselyt",
|
||||
"ApplicationTagsHelpText": "Sovellukseen synkronoidaan yhdellä tai useammalla vastaavalla tunnisteella merkityt tietolähteet. Jos tässä ei ole tunnisteita, ei tietolähteitä synkronoida niiden tunnisteiden vuoksi.",
|
||||
"ApplicationTagsHelpTextWarning": "Tunnisteita tulee käyttää harkiten, koska niillä voi olla odottamattomia vaikutuksia. Tunnisteella merkittyyn sovellukseen synkronoidaan vain samalla tunnisteella merkityt tietolähteet.",
|
||||
"AverageResponseTimesMs": "Tietolähteiden keskimääräiset vasteajat (ms)",
|
||||
"CountIndexersAvailable": "{count} tietolähde(ttä) on käytettävissä",
|
||||
"FoundCountReleases": "Löytyi {itemCount} julkaisua",
|
||||
"IndexerTagsHelpTextWarning": "Tunnisteita tulee käyttää harkiten, koska niillä voi olla odottamattomia vaikutuksia. Tunnisteella merkitty tietolähde synkronoidaan vain samalla tunnisteella merkittyyn sovellukseen.",
|
||||
"ApplicationTagsHelpText": "Sovellukseen synkronoidaan yhdellä tai useammalla vastaavalla tunnisteella merkityt hakupalvelut. Jos tässä ei ole tunnisteita, ei palveluiden synkronointia estetä tunnisteiden perusteella.",
|
||||
"ApplicationTagsHelpTextWarning": "Tunnisteita tulee käyttää harkiten, koska niillä voi olla odottamattomia vaikutuksia. Tunnisteella merkittyyn sovellukseen synkronoidaan vain samalla tunnisteella merkityt hakupalvelut.",
|
||||
"AverageResponseTimesMs": "hakupalveluiden keskimääräiset vasteajat (ms)",
|
||||
"CountIndexersAvailable": "{count} hakupalvelu(a) on käytettävissä",
|
||||
"FoundCountReleases": "Löydettiin {itemCount} julkaisua",
|
||||
"IndexerTagsHelpTextWarning": "Tunnisteita tulee käyttää harkiten, koska niillä voi olla odottamattomia vaikutuksia. Tunnisteella merkitty hakupalvelu synkronoidaan vain samalla tunnisteella merkittyihin sovelluksiin.",
|
||||
"LastFailure": "Edellinen virhe",
|
||||
"SelectedCountOfCountReleases": "Valittu {selectedCount}/{itemCount} julkaisua",
|
||||
"TotalQueries": "Kyselyiden kokonaismäärä",
|
||||
|
@ -587,118 +587,118 @@
|
|||
"AddApplication": "Lisää sovellus",
|
||||
"AddCategory": "Lisää kategoria",
|
||||
"EditCategory": "Muokkaa kategoriaa",
|
||||
"IndexerId": "Tietolähteen ID",
|
||||
"ActiveIndexers": "Aktiiviset tietolähteet",
|
||||
"NoIndexerCategories": "Tietolähteelle ei löytynyt kategorioita",
|
||||
"IndexerId": "Hakupalvelun ID",
|
||||
"ActiveIndexers": "Aktiiviset hakupalvelut",
|
||||
"NoIndexerCategories": "Hakupalvelulle ei löytynyt kategorioita",
|
||||
"ActiveApps": "Aktiiviset sovellukset",
|
||||
"NoIndexerHistory": "Tietolähteelle ei löytynyt historiaa",
|
||||
"NoIndexerHistory": "Hakupalvelulle ei löytynyt historiaa",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Määrittää käytetäänkö qBittorrentista määritettyä rakennetta, torrentin alkuperäistä rakennetta vai luodaanko uusi alikansio (qBittorrent 4.3.2+).",
|
||||
"External": "Ulkoinen",
|
||||
"IndexerFailureRate": "Tietolähteen virhetaajuus",
|
||||
"IndexerHistoryLoadError": "Virhe ladattaessa tietolähteen historiaa",
|
||||
"IndexerFailureRate": "Hakupalvelun virhetaajuus",
|
||||
"IndexerHistoryLoadError": "Virhe ladattaessa hakupalvelun historiaa",
|
||||
"InitialFailure": "Alkuperäinen virhe",
|
||||
"PasswordConfirmation": "Salasanan vahvistus",
|
||||
"RepeatSearch": "Toista haku",
|
||||
"SearchCountIndexers": "Etsi {count} tietolähteestä",
|
||||
"SearchCountIndexers": "Etsi {count} hakupalvelusta",
|
||||
"SearchQueries": "Hakukyselyt",
|
||||
"SeedTimeHelpText": "Aika, joka torrentia tulee jakaa ennen sen pysäytystä. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
|
||||
"RssQueries": "RSS-kyselyt",
|
||||
"TotalUserAgentQueries": "Käyttäjäagentin kyselyiden kokonaismäärä",
|
||||
"NotificationsEmailSettingsUseEncryption": "Käytä salausta",
|
||||
"NotificationsEmailSettingsUseEncryptionHelpText": "Määrittää suositaanko salausta, jos se on määritetty palvelimelle, käytetäänkö aina SSL- (vain portti 465) tai StartTLS-salausta (kaikki muut portit), voi käytetäänkö salausta lainkaan.",
|
||||
"ManageClients": "Hallitse työkaluja",
|
||||
"ManageClients": "Hallitse palveluita",
|
||||
"NoApplicationsFound": "Sovelluksia ei löytynyt",
|
||||
"DownloadClientAriaSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi.",
|
||||
"UrlBaseHelpText": "Lisää {appName}in URL-osoitteeseen jälkiliitteen, esim. \"http://[osoite]:[portti]/[URL-perusta]\". Oletusarvo on tyhjä.",
|
||||
"DownloadClientAriaSettingsDirectoryHelpText": "Vaihtoehtoinen latausten tallennussijainti. Käytä Aria2:n oletusta jättämällä tyhjäksi.",
|
||||
"UrlBaseHelpText": "Käänteisen välityspalvelimen tukea varten. Oletusarvo on tyhjä.",
|
||||
"Donate": "Lahjoita",
|
||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Lisää median ominaisuuksia tunnisteina. Vihjeet ovat esimerkkejä.",
|
||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi.",
|
||||
"DownloadClientSettingsUseSslHelpText": "Muodosta {clientName} -yhteys käyttäen salattua yhteyttä.",
|
||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Vaihtoehtoinen latauskansio. Käytä Transmissionin oletusta jättämällä tyhjäksi.",
|
||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Lisää etuliite lataustyökalun {clientName} RPC-URL-osoitteeseen. Esimerkiksi {url}. Oletus on \"{defaultUrl}\".",
|
||||
"IndexerSettingsAppsMinimumSeedersHelpText": "Sovellusten edellyttämä tietolähteestä kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
|
||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "Vaihtoehtoinen latausten tallennussijainti. Käytä rTorrentin oletusta jättämällä tyhjäksi.",
|
||||
"DownloadClientSettingsUseSslHelpText": "Muodosta {clientName}-yhteys käyttäen salattua yhteyttä.",
|
||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Vaihtoehtoinen latausten tallennussijainti. Käytä Transmissionin oletusta jättämällä tyhjäksi.",
|
||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Lisää latauspalvelun {clientName} RPC-URL-osoitteeseen etuliitteen, esim. \"{url}\". Oletus on \"{defaultUrl}\".",
|
||||
"IndexerSettingsAppsMinimumSeedersHelpText": "Sovellusten edellyttämä hakupalvelusta kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
|
||||
"Menu": "Valikko",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Hylkää estetyt torrent-hajautusarvot kaapattaessa",
|
||||
"IndexerBeyondHDSettingsSearchTypes": "Mitä etsitään",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Synkronoi estetyt torrent-hajautusarvot kaapattaessa",
|
||||
"IndexerBeyondHDSettingsSearchTypes": "Etsittävät tyypit",
|
||||
"IndexerSettingsSeedRatio": "Jakosuhde",
|
||||
"IndexerSettingsSeedTime": "Jakoaika",
|
||||
"IndexerSettingsSeedTimeHelpText": "Aika, joka torrentia tulee jakaa ennen sen pysäytystä. Käytä lataustyökalun oletusta jättämällä tyhjäksi.",
|
||||
"IndexerSettingsSeedTimeHelpText": "Aika, joka torrentia tulee jakaa ennen sen pysäytystä. Käytä latauspalvelun oletusta jättämällä tyhjäksi.",
|
||||
"IndexerSettingsVipExpiration": "VIP-erääntyy",
|
||||
"Destination": "Kohde",
|
||||
"Directory": "Kansio",
|
||||
"DownloadClientFloodSettingsTagsHelpText": "Latauksen alkuperäiset tunnisteet. Jotta se voidaa tunnistaa, on latauksella oltava sen alkuperäiset tunnisteet. Tämä välttää ristiriidat muiden latausten kanssa.",
|
||||
"DownloadClientFreeboxSettingsApiUrl": "Rajapinnan URL-osoite",
|
||||
"DownloadClientFloodSettingsTagsHelpText": "Latauksen alkuperäiset tunnisteet, jotka tarvitaan sen tunnistamiseen. Tämä välttää ristiriidat muiden latausten kanssa.",
|
||||
"DownloadClientFreeboxSettingsApiUrl": "Rajapinnan URL",
|
||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "Freebox-rajapinnan käyttöoikeutta määritettäessä saatu app_token-tietue.",
|
||||
"DownloadClientFreeboxSettingsHostHelpText": "Freeboxin isäntänimi tai IP-osoite. Oletus on \"{url}\" (toimii vain samassa verkossa).",
|
||||
"DownloadClientPneumaticSettingsStrmFolder": "Strm-kansio",
|
||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Tila, jossa torrentit lisätään qBittorrentiin. Huomioi, että pakotetut torrentit eivät noudata nopeusrajoituksia.",
|
||||
"DownloadClientSettingsAddPaused": "Lisää pysäytettynä",
|
||||
"DownloadClientSettingsAddPaused": "Lisää keskeytettynä",
|
||||
"DownloadClientSettingsDestinationHelpText": "Määrittää manuaalisen tallennuskohteen. Käytä oletusta jättämällä tyhjäksi.",
|
||||
"DownloadClientSettingsInitialState": "Virheellinen tila",
|
||||
"DownloadClientSettingsInitialStateHelpText": "Lataustyökaluun {clientName} lisättyjen torrentien aloitustila.",
|
||||
"DownloadClientSettingsInitialState": "Aloitustila",
|
||||
"DownloadClientSettingsInitialStateHelpText": "Latauspalveluun {clientName} lisättyjen torrentien aloitustila.",
|
||||
"IndexerHDBitsSettingsCodecs": "Koodekit",
|
||||
"IndexerHDBitsSettingsCodecsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
|
||||
"IndexerHDBitsSettingsMediums": "Mediatyypit",
|
||||
"IndexerHDBitsSettingsMediums": "Muodot",
|
||||
"IndexerHDBitsSettingsMediumsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
|
||||
"IndexerHDBitsSettingsOriginsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
|
||||
"IndexerSettingsAdditionalParameters": "Muut parametrit",
|
||||
"IndexerSettingsApiPath": "API:n polku",
|
||||
"IndexerSettingsApiPathHelpText": "Polku API:in (yleensä {url}).",
|
||||
"IndexerSettingsApiPath": "Rajapinnan sijainti",
|
||||
"IndexerSettingsApiPathHelpText": "Rajapinnan sijainti, yleensä \"{url}\".",
|
||||
"IndexerSettingsCookie": "Eväste",
|
||||
"IndexerSettingsPackSeedTime": "Koosteen jakoaika",
|
||||
"IndexerSettingsPackSeedTime": "Paketin jakoaika",
|
||||
"IndexerSettingsPackSeedTimeIndexerHelpText": "Aika, joka koostepaketin (kuten sarjan tuotantokauden tai esittäjän diskografian) sisältävää torrentia tulee jakaa. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
|
||||
"IndexerSettingsSeedRatioHelpText": "Suhde, joka torrentin tulee saavuttaa ennen sen pysäytystä. Käytä lataustyökalun oletusta jättämällä tyhjäksi. Suhteen tulisi olla ainakin 1.0 ja noudattaa tietolähteen sääntöjä.",
|
||||
"IndexerSettingsSeedRatioHelpText": "Suhde, joka torrentin tulee saavuttaa ennen sen pysäytystä. Käytä latauspalvelun oletusta jättämällä tyhjäksi. Suhteen tulisi olla ainakin 1.0 ja noudattaa hakupalvelun sääntöjä.",
|
||||
"SecretToken": "Salainen tunniste",
|
||||
"TorrentBlackholeSaveMagnetFiles": "Tallenna magnet-tiedostot",
|
||||
"UseSsl": "Käytä SSL-salausta",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Jos torrent on estetty hajautusarvon perusteella sitä ei välttämättä hylätä oikein etsittäessä joiltakin tietolähteiltä RSS-syötteen tai haun välityksellä. Tämä mahdollistaa tällaisten torrentien hylkäämisen kaappauksen jälkeen, mutta ennen välitystä lataustyökalulle.",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Jos torrent on estetty hajautusarvon perusteella sitä ei välttämättä hylätä oikein joidenkin hakupalveluiden RSS-syötteestä tai hausta. Tämän käyttöönotto mahdollistaa tällaisten torrentien hylkäämisen kaappauksen jälkeen, kuitenkin ennen kuin niitä välitetään latauspalvelulle.",
|
||||
"BlackholeFolderHelpText": "Kansio, jonne {appName} tallentaa {extension}-tiedoston.",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Lisää etuliitteen Delugen JSON-URL-osoitteeseen (ks. {url}).",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Lisää Delugen JSON-URL-osoitteeseen etuliitteen, ks. \"{url})\".",
|
||||
"DownloadClientFloodSettingsAdditionalTags": "Lisätunnisteet",
|
||||
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Tämän kansion .strm-tiedostot tuodaan droonilla.",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Lataa tiedostot järjestyksessä (qBittorrent 4.1.0+).",
|
||||
"UsenetBlackholeNzbFolder": "NZB-kansio",
|
||||
"XmlRpcPath": "XML RPC -sijainti",
|
||||
"DownloadClientSettingsUrlBaseHelpText": "Lisää etuliite lataustuökalun {clientName} URL-osoitteeseen, kuten {url}.",
|
||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Lisää etuliitteen Flood-rajapintaan (esim. {url}).",
|
||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Valinnainen jaettu kansio latauksille. Download Stationin oletussijaintia jättämällä tyhjäksi.",
|
||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "Määritä Freebox-rajapinnan perus-URL rajapinnan versiolla. Esimerkiksi \"{url}\". Oletus on \"{defaultApiUrl}\".",
|
||||
"DownloadClientSettingsUrlBaseHelpText": "Lisää lataustuökalun {clientName} URL-osoitteeseen etuliitteen, esim. \"{url}\".",
|
||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Lisää Flood-rajapintaan etuliitteen, esim. \"{url}\".",
|
||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Vaihtoehtoinen jaettu kansio latauksille. Käytä Download Stationin oletussijaintia jättämällä tyhjäksi.",
|
||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "Määritä Freebox-rajapinnan perus-URL rajapinnan versiolla, esim. \"{url}\". Oletus on \"{defaultApiUrl}\".",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Ensimmäinen ja viimeinen ensin",
|
||||
"DownloadClientFreeboxSettingsAppId": "Sovellustunniste",
|
||||
"DownloadClientFreeboxSettingsPortHelpText": "Freebox-liittymän portti. Oletus on \"{port}\".",
|
||||
"DownloadClientFreeboxSettingsAppId": "Sovelluksen ID",
|
||||
"DownloadClientFreeboxSettingsPortHelpText": "Freebox-liittymän portti. Oletus on {port}.",
|
||||
"DownloadClientPneumaticSettingsNzbFolder": "NZB-kansio",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Peräkkäinen järjestys",
|
||||
"CustomFilter": "Oma suodatin",
|
||||
"DownloadClientFreeboxSettingsAppIdHelpText": "Freebox-rajapinnan käyttöoikeutta määritettäessä käytettävä App ID -sovellustunniste.",
|
||||
"DownloadClientFreeboxSettingsAppToken": "Sovellustietue",
|
||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Tämä vaatii vähintään NzbGet-version 16.0.",
|
||||
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Tämän kansion on oltava tavoitettavissa XBMC:stä.",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Aloita lataamalla ensimmäinen ja viimeinen osa (qBittorrent 4.1.0+).",
|
||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Tämä vaatii vähintään NzbGetin version 16.0.",
|
||||
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Tämän kansion on oltava Kodin tavoitettavissa.",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Lataa ensimmäinen ja viimeinen osa ensin (qBittorrent 4.1.0+).",
|
||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Käytä suojattua yhteyttä. Katso qBittorentin asetusten \"Selainkäyttö\"-osion \"Käytä HTTPS:ää HTTP:n sijaan\" -asetus.",
|
||||
"DownloadClientRTorrentSettingsAddStopped": "Lisää pysäytettynä",
|
||||
"DownloadClientRTorrentSettingsUrlPath": "URL-sijainti",
|
||||
"TorrentBlackholeSaveMagnetFilesHelpText": "Tallenna magnet-linkki, jos .torrent-tiedostoa ei ole käytettävissä (hyödyllinen vain lataustyökalun tukiessa tiedostoon tallennettuja magnet-linkkejä).",
|
||||
"TorrentBlackholeSaveMagnetFilesHelpText": "Tallenna magnet-linkki, jos .torrent-tiedostoa ei ole käytettävissä (hyödyllinen vain latauspalvelun tukiessa tiedostoon tallennettuja magnet-linkkejä).",
|
||||
"TorrentBlackholeTorrentFolder": "Torrent-kansio",
|
||||
"TorrentBlackholeSaveMagnetFilesExtension": "Tallennettujen magnet-tiedostojen pääte",
|
||||
"TorrentBlackholeSaveMagnetFilesExtension": "Tallenna magnet-tiedostojen pääte",
|
||||
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "Magnet-linkeille käytettävä tiedostopääte. Oletus on \".magnet\".",
|
||||
"LabelIsRequired": "Nimi on pakollinen",
|
||||
"Default": "Oletus",
|
||||
"GrabRelease": "Kaappaa julkaisu",
|
||||
"OverrideGrabModalTitle": "Ohita ja sieppaa - {title}",
|
||||
"OverrideGrabModalTitle": "Ohitetaan ja kaapataan – {title}",
|
||||
"PrioritySettings": "Painotus: {priority}",
|
||||
"SelectDownloadClientModalTitle": "{modalTitle} - Valitse lataustyökalu",
|
||||
"SelectDownloadClientModalTitle": "{modalTitle} – Valitse latauspalvelu",
|
||||
"ProxyValidationBadRequest": "Välityspalvelintesti epäonnistui. Tilakoodi: {statusCode}.",
|
||||
"ProxyValidationUnableToConnect": "Tietolähdettä ei tavoiteta: {exceptionMessage}. Etsi tietoja tämän virheen lähellä olevista lokimerkinnöistä.",
|
||||
"ManualGrab": "Manuaalinen kaappaus",
|
||||
"OverrideAndAddToDownloadClient": "Ohita ja lisää latausjonoon",
|
||||
"ProxyValidationUnableToConnect": "Välityspalvelinta ei tavoiteta: {exceptionMessage}. Saat lisätietoja virheen lähellä olevista lokimerkinnöistä.",
|
||||
"ManualGrab": "Manuaalikaappaus",
|
||||
"OverrideAndAddToDownloadClient": "Ohita ja lisää etälatauspalveluun",
|
||||
"BuiltIn": "Sisäänrakennettu",
|
||||
"Any": "Mikä vain",
|
||||
"Script": "Skripti",
|
||||
"Any": "Mikä tahansa",
|
||||
"Script": "Komentosarja",
|
||||
"InfoUrl": "Tietojen URL",
|
||||
"PublishedDate": "Julkaisupäivä",
|
||||
"Redirected": "Uudelleenohjaus",
|
||||
"Redirected": "Uudelleenohjattu",
|
||||
"AllSearchResultsHiddenByFilter": "Aktiivinen suodatin piilottaa kaikki tulokset.",
|
||||
"HealthMessagesInfoBox": "Saat lisätietoja näiden vakausviestien syistä painamalla rivin lopussa olevaa wikilinkkiä (kirjakuvake) tai tarkastelemalla [lokitietoja]({link}). Mikäli kohtaat ongelmia näiden viestien tulkinnassa, tavoitat tukemme alla olevilla linkkeillä.",
|
||||
"HealthMessagesInfoBox": "Saat lisätietoja näiden vakausviestien syistä painamalla rivin lopussa olevaa wikilinkkiä (kirjakuvake) tai tarkastelemalla [lokitietoja]({link}). Mikäli et osaa tulkita näitä viestejä, tavoitat tukemme alla olevilla linkeillä.",
|
||||
"PackageVersionInfo": "{packageVersion} julkaisijalta {packageAuthor}",
|
||||
"ErrorRestoringBackup": "Virhe palautettaessa varmuuskopiota",
|
||||
"ExternalUpdater": "{appName} on määritetty käyttämään ulkoista päivitysratkaisua.",
|
||||
|
@ -715,7 +715,96 @@
|
|||
"UpdaterLogFiles": "Päivittäjän lokitiedostot",
|
||||
"WouldYouLikeToRestoreBackup": "Haluatko palauttaa varmuuskopion \"{name}\"?",
|
||||
"InstallLatest": "Asenna uusin",
|
||||
"CurrentlyInstalled": "Nykyinen asennettu versio",
|
||||
"PreviouslyInstalled": "Edellinen asennettu versio",
|
||||
"Mixed": "Korjattu"
|
||||
"CurrentlyInstalled": "Käytössä oleva versio",
|
||||
"PreviouslyInstalled": "Aiemmin käytössä ollut versio",
|
||||
"Mixed": "Sekoitettu",
|
||||
"IndexerSettingsAppsMinimumSeeders": "Jakajien vähimmäismäärä",
|
||||
"FailedToFetchSettings": "Asetusten nouto epäonnistui",
|
||||
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "Älä huomioi tulosten SCENE-julkaisuja.",
|
||||
"DownloadClientRTorrentSettingsUrlPathHelpText": "Polku XMLRPC-päätteeseen, ks. \"{url}\". Käytettäessä ruTorrentia tämä on yleensä RPC2 tai [ruTorrentin sijainti]{url2}.",
|
||||
"InstallMajorVersionUpdateMessageLink": "Saat lisätietoja osoitteesta [{domain}]({url}).",
|
||||
"Install": "Asenna",
|
||||
"NotificationsTelegramSettingsIncludeAppName": "Sisällytä {appName} otsikkoon",
|
||||
"InstallMajorVersionUpdate": "Asenna päivitys",
|
||||
"InstallMajorVersionUpdateMessage": "Tämä päivitys asentaa uuden pääversion, joka ei välttämättä ole yhteensopiva laitteistosi kanssa. Haluatko varmasti asentaa päivityksen?",
|
||||
"NotificationsTelegramSettingsIncludeAppNameHelpText": "Ilmoitukset voidaan tarvittaessa erottaa muista sovelluksista lisäämällä niiden eteen \"{appName}\".",
|
||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Tämä lisää torrentit ja magnet-linkit rTorentiin pysäytetyssä tilassa. Tämä saattaa rikkoa margnet-tiedostot.",
|
||||
"DownloadClientSettingsPriorityItemHelpText": "Kaapatuille kohteille käytettävä painotus.",
|
||||
"LogSizeLimit": "Lokin kokorajoitus",
|
||||
"LogSizeLimitHelpText": "Lokitiedoston enimmäiskoko ennen pakkausta. Oletusarvo on 1 Mt.",
|
||||
"IndexerAlphaRatioSettingsExcludeScene": "Ohita SCENE-julkaisut",
|
||||
"AverageGrabs": "Kaappausten keskiarvo",
|
||||
"AverageQueries": "Kyselyiden keskiarvo",
|
||||
"IndexerNewznabSettingsAdditionalParametersHelpText": "Muut Newznab-parametrit",
|
||||
"IndexerNewznabSettingsVipExpirationHelpText": "Syötä VIP-tilan päättymispäivä (yyyy-mm-dd) tai jätä tyhjäksi. {appName} ilmoittaa viikko ennen VIP-tilan päättymistä.",
|
||||
"IndexerSettingsQueryLimitHelpText": "Kyselyiden enimmäismäärä, jonka {appName} sallii hakupalvelulle.",
|
||||
"IndexerHDBitsSettingsPasskeyHelpText": "Pääsyavain käyttäjätiedoista",
|
||||
"DefaultCategory": "Oletuskategoria",
|
||||
"ClickToChangeQueryOptions": "Muuta kyselyasetuksia painamalla tästä.",
|
||||
"IndexerSettingsQueryLimit": "Kyselyrajoitus",
|
||||
"IndexerAvistazSettingsPidHelpText": "PID \"My Account\" tai \"My Profile\" -sivulta.",
|
||||
"IndexerAvistazSettingsUsernameHelpTextWarning": "Vain vähintään jäsen-tasoinen käyttäjä voi käyttää tämän hakupalvelun rajapintaa.",
|
||||
"IndexerBeyondHDSettingsLimitedOnly": "Vain rajoitetut",
|
||||
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Etsi vain Freeleech-julkaisuja.",
|
||||
"IndexerFileListSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Avaimella on oltava \"User\" ja \"Torrents\" oikeudet.",
|
||||
"IndexerHDBitsSettingsUseFilenames": "Käytä tiedostonimiä",
|
||||
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Evästeen käyttäjäagentti",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Evästeeseen liitetty selaimen käyttäjäagentti.",
|
||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "Sivuston rajapinnan avain",
|
||||
"IndexerOrpheusSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"Settings\" > \"Access Settings\".",
|
||||
"Open": "Avaa",
|
||||
"PreferMagnetUrl": "Suosi magnet-URL:eja",
|
||||
"ProwlarrDownloadClientsAlert": "Latauspalvelut on määritettävä tässä vain, jos hakuja aiotaan tehdä suoraan {appName}ista. Sovelluksien hauille käytetään niiden omien asetusten latauspalvelumäärityksiä.",
|
||||
"IndexerSettingsLimitsUnitHelpText": "Hakupalveluiden aikarajoituksiin käytettävä yksikkö.",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNames": "Etsi ryhmien nimillä",
|
||||
"DownloadClientSettingsDefaultCategoryHelpText": "Oletusarvoinen varakategoria julkaisuille, joilla ei ole kategoriaa. {appName}-kategorian lisääminen välttää ristiriidat ei-{appName} latausten kanssa. Kategoria on valinnainen, mutta erittäin suositeltava.",
|
||||
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
|
||||
"PreferMagnetUrlHelpText": "Hakupalvelu käyttää kaappaukseen ensisijaisesti magnet-linkkejä ja varmistuksena torrent-linkkejä.",
|
||||
"ProwlarrDownloadClientsInAppOnlyAlert": "Latauspalvelut ovat vain {appName}in sisäisiä hakuja varten, eikä niitä synkronoida muihin sovelluksiin (ominaisuutta ole myöskään suunnitteilla).",
|
||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Oletusarvoinen varakategoria julkaisuille, joilla ei ole kategoriaa. {appName}-kategorian lisääminen välttää ristiriidat ei-{appName} latausten kanssa. Kategoria on valinnainen, mutta erittäin suositeltava. Luo kohdekansioon [kategoria]-alikansion.",
|
||||
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
|
||||
"IndexerAvistazSettingsUsernameHelpText": "Sivuston käyttäjätunnus",
|
||||
"IndexerBeyondHDSettingsRefundOnly": "Vain \"Refund\"",
|
||||
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Etsi vain Refund-julkaisuja.",
|
||||
"IndexerBeyondHDSettingsRewindOnly": "Vain \"Rewind\"",
|
||||
"IndexerBeyondHDSettingsRewindOnlyHelpText": "Etsi vain Rewind-julkaisuja.",
|
||||
"IndexerBeyondHDSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"My Security\" > \"API Key\".",
|
||||
"IndexerBeyondHDSettingsSearchTypesHelpText": "Valitse halutut julkaisutyypit. Jos mitään ei ole valittu käytetään kaikkia.",
|
||||
"IndexerFileListSettingsPasskeyHelpText": "Sivuston pääsyavain. Tämä on latauspalvelussasi näkyvä trakkerin URL-osoitteen aakkosnumeerinen osa.",
|
||||
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"Settings\" > \"Access Settings\".",
|
||||
"IndexerFileListSettingsUsernameHelpText": "Sivuston käyttäjätunnus",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Etsi julkaisuja ryhmien nimillä.",
|
||||
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Näytä vain Freeleech-julkaisut.",
|
||||
"IndexerNzbIndexSettingsApiKeyHelpText": "Sivuston rajapinnan avain",
|
||||
"IndexerHDBitsSettingsOrigins": "Alkuperä",
|
||||
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
|
||||
"IndexerHDBitsSettingsUseFilenamesHelpText": "Käsittele torrentien tiedostonimiä julkaisujen nimikkeinä.",
|
||||
"IndexerHDBitsSettingsUsernameHelpText": "Sivuston käyttäjätunnus",
|
||||
"IndexerSettingsGrabLimitHelpText": "Kaappausten enimmäismäärä, jonka {appName} sallii hakupalvelulle.",
|
||||
"IndexerRedactedSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"Settings\" > \"Access Settings\".",
|
||||
"IndexerSettingsApiUser": "Rajapinnan käyttäjä",
|
||||
"IndexerSettingsBaseUrl": "Perus-URL",
|
||||
"IndexerSettingsBaseUrlHelpText": "Määritä verkkotunnus, jota {appName} käyttää sivustolle lähetettäville pyynnöille.",
|
||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Nämä löytyvät PassThePopcorn-tilin asetuksista, kohdasta \"Edit Profile\" > \"Security\".",
|
||||
"IndexerSettingsPasskey": "Pääsyavain",
|
||||
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Etsi vain Freeleech-julkaisuja (rajoitettu UL).",
|
||||
"IndexerBeyondHDSettingsRssKeyHelpText": "Sivuston RSS-avain. Löytyy kohdasta \"My Security\" > \"RSS-avain\".",
|
||||
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
|
||||
"IndexerNewznabSettingsApiKeyHelpText": "Sivuston rajapinnan avain",
|
||||
"IndexerNebulanceSettingsApiKeyHelpText": "Rajapinnan avain kohdasta \"Settings\" > \"Api Keys\".\nAvaimella on oltava \"List\" ja \"Download\" oikeudet.",
|
||||
"IndexerSettingsGrabLimit": "Kaappausrajoitus",
|
||||
"IndexerSettingsLimitsUnit": "Rajoitusten yksikkö",
|
||||
"IndexerSettingsRssKey": "RSS-avain",
|
||||
"IndexerMTeamTpSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"Control Panel\" > \"Security\" > \"Laboratory\".",
|
||||
"IndexerSettingsPreferMagnetUrlHelpText": "Hakupalvelu käyttää kaappaukseen ensisijaisesti magnet-linkkejä ja varmistuksena torrent-linkkejä.",
|
||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Sivuston rajapinnan avain",
|
||||
"IndexerSettingsPreferMagnetUrl": "Suosi magnet-URL:eja",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Vain \"Golden Popcorn\"",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Etsi vain ns. kultaisella pocornilla merkittyjä julkaisuja.",
|
||||
"IndexerSettingsFreeleechOnly": "Vain \"Freeleech\"",
|
||||
"IndexerSettingsCookieHelpText": "Jos sivusto vaatii kirjautumisevästeen, on se noudettava selaimen avulla.",
|
||||
"IndexerAvistazSettingsPasswordHelpText": "Sivuston salasana"
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@
|
|||
"SystemTimeHealthCheckMessage": "L'heure du système est décalée de plus d'un jour. Les tâches planifiées peuvent ne pas s'exécuter correctement tant que l'heure ne sera pas corrigée",
|
||||
"SettingsShowRelativeDates": "Afficher les dates relatives",
|
||||
"UnsavedChanges": "Modifications non enregistrées",
|
||||
"ShowSearchHelpText": "Afficher le bouton de recherche au survol",
|
||||
"ShowSearchHelpText": "Affiche le bouton de recherche au survol",
|
||||
"ShowSearch": "Afficher la recherche",
|
||||
"SettingsTimeFormat": "Format de l'heure",
|
||||
"SettingsShowRelativeDatesHelpText": "Afficher les dates relatives (aujourd'hui, hier, etc.) ou absolues",
|
||||
|
@ -384,7 +384,7 @@
|
|||
"HistoryCleanupDaysHelpTextWarning": "Les fichiers dans la corbeille plus anciens que le nombre de jours sélectionné seront nettoyés automatiquement",
|
||||
"OnGrab": "Récupéré à la sortie",
|
||||
"OnHealthIssue": "Lors de problème de santé",
|
||||
"TestAllIndexers": "Testez tous les indexeurs",
|
||||
"TestAllIndexers": "Tester tous les indexeurs",
|
||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent fourni par l'application qui a appelé l'API",
|
||||
"Database": "Base de données",
|
||||
"HistoryCleanup": "Nettoyage de l'historique",
|
||||
|
@ -802,5 +802,10 @@
|
|||
"IndexerAvistazSettingsPasswordHelpText": "Mot de passe du site",
|
||||
"PreferMagnetUrlHelpText": "Si activé, cet indexeur privilégiera si possible l'usage de liens de type magnet aux liens torrent",
|
||||
"PreviouslyInstalled": "Installé précédemment",
|
||||
"CurrentlyInstalled": "Actuellement installé"
|
||||
"CurrentlyInstalled": "Actuellement installé",
|
||||
"IndexerSettingsPreferMagnetUrl": "URL de préférence Magnet",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Popcorn doré uniquement",
|
||||
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Rechercher uniquement les versions Golden Popcorn",
|
||||
"IndexerAvistazSettingsUsernameHelpTextWarning": "Seuls les membres de rang et supérieur peuvent utiliser l'API sur cet indexeur.",
|
||||
"DownloadClientUTorrentProviderMessage": "uTorrent a un historique d'inclusion de cryptomineurs, de logiciels malveillants et de publicités. Nous vous recommandons fortement de choisir un autre client."
|
||||
}
|
||||
|
|
|
@ -417,5 +417,94 @@
|
|||
"UsenetBlackholeNzbFolder": "Nzb 폴더",
|
||||
"UseSsl": "SSL 사용",
|
||||
"TorrentBlackholeTorrentFolder": "토렌트 폴더",
|
||||
"DownloadClientPneumaticSettingsNzbFolder": "Nzb 폴더"
|
||||
"DownloadClientPneumaticSettingsNzbFolder": "Nzb 폴더",
|
||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "API를 호출한 앱에서 제공하는 사용자 에이전트",
|
||||
"days": "일",
|
||||
"minutes": "분",
|
||||
"Author": "저작자",
|
||||
"Categories": "카테고리",
|
||||
"SeedRatio": "종자 비율",
|
||||
"AuthenticationRequiredHelpText": "필수 인증을 요청하는 변경 사항. 위험을 이해하지 못한다면 변경하지 마세요.",
|
||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "미디어의 속성을 태그로 추가합니다. 힌트는 예시입니다.",
|
||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "활성화하면 rTorrent에 정지된 상태에서 토런트와 마그넷이 추가됩니다. 마그넷 파일이 손상될 수 있습니다.",
|
||||
"HealthMessagesInfoBox": "행 끝에 있는 위키 링크(책 아이콘)를 클릭하거나 [로그]({link})를 확인하면 이러한 상태 점검 메시지의 원인에 대한 상세 정보를 찾을 수 있습니다. 이러한 메시지를 해석하는 데 어려움이 있는 경우 아래 링크에서 지원팀에 문의할 수 있습니다.",
|
||||
"DownloadClientSettingsDestinationHelpText": "다운로드 대상을 수동으로 지정하고 기본값을 사용하려면 비워두세요.",
|
||||
"DownloadClientSettingsInitialStateHelpText": "{clientName}에 추가된 토런트의 초기 상태",
|
||||
"IndexerSettingsAdditionalParameters": "매개 변수 추가",
|
||||
"NoEventsFound": "이벤트가 없음",
|
||||
"BlackholeFolderHelpText": "{appName}가 {extension} 파일을 저장할 폴더",
|
||||
"DownloadClientSettingsUrlBaseHelpText": "{clientName} url에 {url}과 같은 접두사를 추가합니다.",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "콘텐츠 레이아웃",
|
||||
"Install": "설치",
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "새 비밀번호 확인",
|
||||
"FailedToFetchSettings": "설정을 가져오는데 실패함",
|
||||
"Default": "기본값",
|
||||
"Episode": "에피소드",
|
||||
"AuthenticationMethod": "인증 방법",
|
||||
"IndexerSettingsSeedRatio": "시드 비율",
|
||||
"Destination": "대상",
|
||||
"DownloadClientFreeboxSettingsAppToken": "앱 토큰",
|
||||
"Logout": "로그아웃",
|
||||
"DownloadClientFreeboxSettingsApiUrl": "API 주소",
|
||||
"IndexerHDBitsSettingsCodecs": "코덱",
|
||||
"WhatsNew": "새로운 소식?",
|
||||
"DownloadClientFreeboxSettingsPortHelpText": "Freebox 인터페이스에 액세스하는 데 사용되는 포트, 기본값은 '{port}'",
|
||||
"DownloadClientPneumaticSettingsStrmFolderHelpText": "이 폴더의 .strm 파일은 드론으로 가져옵니다.",
|
||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "qBittorrent에 추가된 토렌트의 초기 상태입니다. 강제 토렌트는 시드 제한을 따르지 않는다는 점에 유의하세요.",
|
||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "다운로드를 넣을 선택 위치, 기본 rTorrent 위치를 사용하려면 비워두세요.",
|
||||
"DownloadClientSettingsUseSslHelpText": "{clientName}에 연결할 때 보안 연결을 사용",
|
||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "{clientName} rpc URL에 접두사를 추가합니다(예: {url}, 기본값은 '{defaultUrl}')",
|
||||
"InstallMajorVersionUpdateMessageLink": "상세 내용은 [{domain}]({url})을 확인하세요.",
|
||||
"ApplicationUrlHelpText": "이 애플리케이션의 외부 URL - http(s)://, port 및 URL 기반 포함",
|
||||
"Theme": "테마",
|
||||
"ApplicationURL": "애플리케이션 URL",
|
||||
"Directory": "디렉토리",
|
||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "다운로드를 넣을 공유 폴더(선택 사항). 기본 다운로드 스테이션 위치를 사용하려면 비워두세요.",
|
||||
"DownloadClientFloodSettingsAdditionalTags": "추가 태그",
|
||||
"DownloadClientFloodSettingsUrlBaseHelpText": "{url}와 같은 Flood API에 접두사를 추가합니다",
|
||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "API 버전을 사용하여 Freebox API 기본 URL을 정의하세요, 예를 들어 '{url}', 기본값은 '{defaultApiUrl}')",
|
||||
"DownloadClientFreeboxSettingsAppId": "앱 ID",
|
||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "이 옵션을 사용하려면 최소한 NzbGet 버전 16.0이 필요합니다",
|
||||
"DownloadClientPneumaticSettingsNzbFolderHelpText": "이 폴더는 XBMC에서 접근할 수 있어야 합니다.",
|
||||
"DownloadClientRTorrentSettingsAddStopped": "중지됨 추가",
|
||||
"Category": "카테고리",
|
||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "다운로드를 넣을 위치 (선택 사항), 기본 전송 위치를 사용하려면 비워두세요",
|
||||
"External": "외부",
|
||||
"IndexerSettingsSeedRatioHelpText": "토렌드가 멈추기 전에 도달해야 하는 비율, 비어 있을 경우 다운로드 클라이언트의 기본값을 사용합니다. 비율은 최소 1.0이어야 하며 인덱서 규칙을 따라야 합니다",
|
||||
"IndexerSettingsSeedTimeHelpText": "토렌드가 중지되기 전에 시드되어야 하는 시간, 비어 있을 경우 다운로드 클라이언트의 기본값을 사용합니다",
|
||||
"InvalidUILanguage": "UI가 잘못된 언어로 설정되어 있습니다, 수정하고 설정을 저장하세요",
|
||||
"AuthenticationRequired": "인증 필요",
|
||||
"NotificationsTelegramSettingsIncludeAppNameHelpText": "다른 애플리케이션의 알림을 구분하기 위해 메시지 제목 앞에 {appName}를 접두사로 사용 (선택 사항)",
|
||||
"PackageVersionInfo": "{packageVersion} by {packageAuthor}",
|
||||
"Duration": "기간",
|
||||
"Script": "스크립트",
|
||||
"SelectDownloadClientModalTitle": "{modalTitle} - 다운로드 클라이언트 선택",
|
||||
"TheLogLevelDefault": "로그 수준의 기본값은 '정보'이며 [일반 설정](/settings/general)에서 변경할 수 있습니다",
|
||||
"UpdaterLogFiles": "업데이트 도구 로그 파일",
|
||||
"CountDownloadClientsSelected": "{count}개의 다운로드 클라이언트를 선택함",
|
||||
"DefaultNameCopiedProfile": "{name} - 복사",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "deluge json url에 접두사를 추가합니다. {url}을(를) 참조하세요",
|
||||
"FailedToFetchUpdates": "업데이트를 가져오는데 실패함",
|
||||
"ApplyChanges": "변경 사항 적용",
|
||||
"Started": "시작됨",
|
||||
"Database": "데이터베이스",
|
||||
"PasswordConfirmation": "비밀번호 확인",
|
||||
"TorrentBlackholeSaveMagnetFiles": "마그넷 파일 저장",
|
||||
"TorrentBlackholeSaveMagnetFilesExtension": "마그넷 파일 확장자 저장",
|
||||
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "마그넷 링크에 사용할 확장자, 기본값은 '.magnet'입니다",
|
||||
"TorrentBlackholeSaveMagnetFilesHelpText": ".torrent 파일을 사용할 수 없는 경우 마그넷 링크를 저장합니다 (다운로드 클라이언트가 파일에 저장된 마그넷을 지원하는 경우에만 유용함)",
|
||||
"AuthenticationMethodHelpTextWarning": "유효한 인증 방법을 선택해주세요",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "새로운 비밀번호를 입력하세요",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "새로운 사용자이름을 입력하세요",
|
||||
"AuthenticationRequiredWarning": "인증 없이 원격 액세스를 방지하기 위해 {appName}은(는) 이제 인증을 활성화해야 합니다. 선택적으로 로컬 주소에서 인증을 비활성화할 수 있습니다.",
|
||||
"CountIndexersSelected": "{count}개의 인덱서를 선택함",
|
||||
"Label": "라벨",
|
||||
"More": "더 보기",
|
||||
"Donate": "기부하기",
|
||||
"Menu": "메뉴",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "qBittorrent의 구성된 콘텐츠 레이아웃을 사용할지, 토런트의 원래 레이아웃을 사용할지, 항상 하위 폴더를 생성할지(qBittorrent 4.3.2+)",
|
||||
"DownloadClientSettingsAddPaused": "일시 중지 추가",
|
||||
"SecretToken": "비밀 토큰",
|
||||
"NoDownloadClientsFound": "다운로드 클라이언트를 찾을 수 없음",
|
||||
"PrioritySettings": "우선 순위: {0}"
|
||||
}
|
||||
|
|
|
@ -160,5 +160,6 @@
|
|||
"AptUpdater": "Bruk apt til å installere oppdateringen",
|
||||
"Discord": "Discord",
|
||||
"AddCustomFilter": "Legg til eget filter",
|
||||
"Clone": "Lukk"
|
||||
"Clone": "Lukk",
|
||||
"AddDownloadClientImplementation": "Ny Nedlastingsklient - {implementationName}"
|
||||
}
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
"DownloadClientStatusAllClientHealthCheckMessage": "Todos os clientes de download estão indisponíveis devido a falhas",
|
||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Clientes de download indisponíveis devido a falhas: {downloadClientNames}",
|
||||
"DownloadClients": "Clientes de download",
|
||||
"DownloadClientsSettingsSummary": "Configuração de clientes de download para integração com a pesquisa da interface do usuário do {appName}",
|
||||
"DownloadClientsSettingsSummary": "Configuração de clientes de download para integração com a pesquisa da interface do {appName}",
|
||||
"Duration": "Duração",
|
||||
"Edit": "Editar",
|
||||
"EditIndexer": "Editar Indexador",
|
||||
|
@ -204,7 +204,7 @@
|
|||
"IndexerNoDefinitionCheckHealthCheckMessage": "Os indexadores não têm definição e não funcionarão: {indexerNames}. Remova e (ou) adicione novamente ao {appName}.",
|
||||
"IndexerObsoleteCheckMessage": "Os seguintes indexadores são obsoletos ou foram atualizados: {0}. Remova-os e/ou adicione-os novamente ao {appName}",
|
||||
"IndexerPriority": "Prioridade do indexador",
|
||||
"IndexerPriorityHelpText": "Prioridade do Indexador de 1 (mais alta) a 50 (mais baixa). Padrão: 25.",
|
||||
"IndexerPriorityHelpText": "Prioridade do indexador, de 1 (mais alta) a 50 (mais baixa). Padrão: 25.",
|
||||
"IndexerProxies": "Proxies do Indexador",
|
||||
"IndexerProxy": "Proxy do Indexador",
|
||||
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Todos os proxies estão indisponíveis devido a falhas",
|
||||
|
@ -248,7 +248,7 @@
|
|||
"MassEditor": "Editor em Massa",
|
||||
"Mechanism": "Mecanismo",
|
||||
"Message": "Mensagem",
|
||||
"MinimumSeeders": "Mínimo de Seeders",
|
||||
"MinimumSeeders": "Mínimo de semeadores",
|
||||
"MinimumSeedersHelpText": "Semeadores mínimos exigidos pelo aplicativo para o indexador baixar",
|
||||
"Mode": "Modo",
|
||||
"More": "Mais",
|
||||
|
@ -513,7 +513,7 @@
|
|||
"DeleteSelectedDownloadClients": "Excluir cliente(s) de download",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Tem certeza de que deseja excluir o(s) {count} cliente(s) de download selecionado(s)?",
|
||||
"DeleteSelectedIndexersMessageText": "Tem certeza de que deseja excluir o(s) {count} indexador(es) selecionado(s)?",
|
||||
"DownloadClientPriorityHelpText": "Priorizar vários clientes de download. Usamos um rodízio para clientes com a mesma prioridade.",
|
||||
"DownloadClientPriorityHelpText": "Priorizar vários clientes de download. Usamos uma distribuição equilibrada para clientes com a mesma prioridade.",
|
||||
"EditSelectedDownloadClients": "Editar clientes de download selecionados",
|
||||
"EditSelectedIndexers": "Editar indexadores selecionados",
|
||||
"ManageDownloadClients": "Gerenciar clientes de download",
|
||||
|
@ -538,10 +538,10 @@
|
|||
"PackSeedTime": "Tempo de Semente do Pacote",
|
||||
"PackSeedTimeHelpText": "A hora em que um torrent de pacote (temporada ou discografia) deve ser propagado antes de parar, vazio é o padrão do aplicativo",
|
||||
"QueryType": "Tipo de consulta",
|
||||
"SeedTime": "Tempo de Semeação",
|
||||
"SeedTime": "Tempo de semeadura",
|
||||
"SearchAllIndexers": "Pesquisar todos os indexadores",
|
||||
"SearchCountIndexers": "Pesquisar {count} indexador(es)",
|
||||
"SeedRatio": "Proporção de sementes",
|
||||
"SeedRatio": "Proporção de semeadura",
|
||||
"SeedRatioHelpText": "A proporção que um torrent deve atingir antes de parar, vazio é o padrão do aplicativo",
|
||||
"SeedTimeHelpText": "O tempo que um torrent deve ser propagado antes de parar, vazio é o padrão do aplicativo",
|
||||
"SelectedCountOfCountReleases": "{selectedCount} de {itemCount} lançamentos selecionados",
|
||||
|
@ -611,7 +611,7 @@
|
|||
"NotificationsEmailSettingsUseEncryptionHelpText": "Se preferir usar criptografia se configurado no servidor, usar sempre criptografia via SSL (somente porta 465) ou StartTLS (qualquer outra porta) ou nunca usar criptografia",
|
||||
"NotificationsEmailSettingsUseEncryption": "Usar Criptografia",
|
||||
"IndexerHDBitsSettingsPasskeyHelpText": "Chave de Acesso dos Detalhes do Usuário",
|
||||
"IndexerSettingsPasskey": "Chave de Acesso",
|
||||
"IndexerSettingsPasskey": "Chave de acesso",
|
||||
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "Excluir lançamentos SCENE dos resultados",
|
||||
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Pesquisar lançamentos freeleech somente",
|
||||
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Pesquisar lançamentos freeleech somente",
|
||||
|
@ -632,7 +632,7 @@
|
|||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Pesquisar lançamentos por nomes de grupos",
|
||||
"IndexerHDBitsSettingsCodecs": "Codecs",
|
||||
"IndexerHDBitsSettingsMediumsHelpText": "se não for especificado, todas as opções serão usadas.",
|
||||
"IndexerHDBitsSettingsOriginsHelpText": "se não for especificado, todas as opções serão usadas.",
|
||||
"IndexerHDBitsSettingsOriginsHelpText": "Se não for especificado, todas as opções serão usadas.",
|
||||
"IndexerHDBitsSettingsUseFilenames": "Usar nomes de arquivos",
|
||||
"IndexerHDBitsSettingsUsernameHelpText": "Nome de Usuário do Site",
|
||||
"IndexerHDBitsSettingsMediums": "Meios",
|
||||
|
@ -652,7 +652,7 @@
|
|||
"IndexerSettingsApiUser": "Usuário da API",
|
||||
"IndexerSettingsBaseUrl": "URL Base",
|
||||
"IndexerSettingsCookie": "Cookie",
|
||||
"IndexerSettingsCookieHelpText": "Cookie do Site",
|
||||
"IndexerSettingsCookieHelpText": "Cookie do site",
|
||||
"IndexerSettingsFreeleechOnly": "Só Freeleech",
|
||||
"IndexerSettingsGrabLimit": "Limite de Captura",
|
||||
"IndexerSettingsGrabLimitHelpText": "O número máximo de capturas conforme especificado pela respectiva unidade que {appName} permitirá ao site",
|
||||
|
@ -744,7 +744,7 @@
|
|||
"Mixed": "Misturado",
|
||||
"Donate": "Doar",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Sincronizar Lista de Bloqueio de Hashes de Torrents Rejeitados Enquanto Baixando",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Se um torrent for bloqueado por hash, pode não ser rejeitado corretamente durante o RSS/Pesquisa de alguns indexadores. Ativar isso permitirá que ele seja rejeitado após o torrent ser capturado, mas antes de ser enviado ao cliente.",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Se um torrent for bloqueado por hash, pode não ser rejeitado corretamente durante a Sincronização RSS/Pesquisa em alguns indexadores. Ativar isso permitirá que ele seja rejeitado após obter o torrent, mas antes de enviar ao cliente.",
|
||||
"ClickToChangeQueryOptions": "Clique para alterar as opções de consulta",
|
||||
"IndexerMTeamTpSettingsApiKeyHelpText": "Chave API do Site (Encontrada no Painel de Controle do Usuário => Segurança => Laboratório)",
|
||||
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Pesquise apenas lançamentos freeleech",
|
||||
|
@ -806,5 +806,6 @@
|
|||
"InstallMajorVersionUpdateMessageLink": "Verifique [{domain}]({url}) para obter mais informações.",
|
||||
"FailedToFetchSettings": "Falha ao obter configurações",
|
||||
"CurrentlyInstalled": "Atualmente instalado",
|
||||
"PreviouslyInstalled": "Instalado anteriormente"
|
||||
"PreviouslyInstalled": "Instalado anteriormente",
|
||||
"DownloadClientUTorrentProviderMessage": "O uTorrent tem um histórico de incluir criptomineradores, malware e anúncios, recomendamos que você escolha outro cliente de download."
|
||||
}
|
||||
|
|
|
@ -444,7 +444,7 @@
|
|||
"DisabledForLocalAddresses": "Dezactivat pentru adresele locale",
|
||||
"None": "Nici unul",
|
||||
"ResetAPIKeyMessageText": "Sigur doriți să vă resetați cheia API?",
|
||||
"AddApplicationImplementation": "Adăugați aplicație - {implementareName}",
|
||||
"AddApplicationImplementation": "Adăugați aplicație - {implementationName}",
|
||||
"AddCategory": "Adăugați categorie",
|
||||
"AddConnection": "Adăugați conexiune",
|
||||
"AddConnectionImplementation": "Adăugați conexiune - {implementationName}",
|
||||
|
@ -491,5 +491,13 @@
|
|||
"Stats": "Status",
|
||||
"CurrentlyInstalled": "În prezent instalat",
|
||||
"Mixed": "Fix",
|
||||
"Season": "Motiv"
|
||||
"Season": "Motiv",
|
||||
"ActiveIndexers": "Indexatorii activi",
|
||||
"Any": "Oricare",
|
||||
"AdvancedSettingsShownClickToHide": "Setări avansate afișate, click pentru a le ascunde",
|
||||
"AdvancedSettingsHiddenClickToShow": "Setări avansate ascunse, click pentru afișare",
|
||||
"ApiKeyValidationHealthCheckMessage": "Te rugăm să actualizezi cheia API astfel încât să aibă cel puțin {length} caractere. Poți face acest lucru din setări sau din fișierul de configurare",
|
||||
"AddToDownloadClient": "Adaugă versiunea în clientul de descărcare",
|
||||
"AddSyncProfile": "Adaugă profil de sincronizare",
|
||||
"AddedToDownloadClient": "Versiune adăugată în client"
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue