mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2026-04-18 21:55:12 -04:00
Compare commits
1 Commits
master
..
su-to-life
| Author | SHA1 | Date | |
|---|---|---|---|
| 1318ff0cb4 |
@@ -4,18 +4,11 @@ labels: ['Type: Bug', 'Status: Needs Triage']
|
|||||||
body:
|
body:
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
attributes:
|
attributes:
|
||||||
label: I attest that there is not an existing issue for this?
|
label: Is there an existing issue for this?
|
||||||
description: Please search to see if an open or closed issue already exists for the bug you encountered. If a bug exists and is closed note that it may only be fixed in an unstable branch.
|
description: Please search to see if an open or closed issue already exists for the bug you encountered. If a bug exists and is closed note that it may only be fixed in an unstable branch.
|
||||||
options:
|
options:
|
||||||
- label: I have searched the existing open and closed issues
|
- label: I have searched the existing open and closed issues
|
||||||
required: true
|
required: true
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: I attest this is not related to a Cardigann YML Indexer.
|
|
||||||
description: Please search to see if this is for a tracker [that is yml-based (Cardigann)](https://github.com/Prowlarr/indexers) these are synced to Prowlarr/Indexers from Jackett/Jackett.
|
|
||||||
options:
|
|
||||||
- label: I confirm this is not related to a Cardigann YML Indexer
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: Current Behavior
|
label: Current Behavior
|
||||||
@@ -80,8 +73,8 @@ body:
|
|||||||
required: true
|
required: true
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
attributes:
|
attributes:
|
||||||
label: I attest that Trace Logs have been provided as applicable. Reports will be closed if the required logs are not provided.
|
label: Trace Logs have been provided as applicable. Reports may be closed if the required logs are not provided.
|
||||||
description: Trace logs are generally required for all bug reports and contain `trace`. Info logs are invalid for bug reports and do not contain `debug` nor `trace`
|
description: Trace logs are generally required for all bug reports and contain `trace`. Info logs are invalid for bug reports and do not contain `debug` nor `trace`
|
||||||
options:
|
options:
|
||||||
- label: I attest that I have read and followed the steps in the wiki link above and provided the required trace logs - the logs contain `trace` - that are relevant and show this issue.
|
- label: I have read and followed the steps in the wiki link above and provided the required trace logs - the logs contain `trace` - that are relevant and show this issue.
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
name: Close issues without labels
|
|
||||||
|
|
||||||
on:
|
|
||||||
issues:
|
|
||||||
types:
|
|
||||||
- opened
|
|
||||||
- reopened
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
close-issue:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
with:
|
|
||||||
sparse-checkout: |
|
|
||||||
.github
|
|
||||||
- name: Close issue if no labels found
|
|
||||||
if: join(github.event.issue.labels) == ''
|
|
||||||
run: |
|
|
||||||
gh issue comment ${{ github.event.issue.number }} --body ":wave: @${{ github.event.issue.user.login }}, this issue was closed automatically because it was created without following an issue template. Please update the issue following the correct template for this issue. Once updated please reply to this issue so we can review and re-open. In the future, use the [issue templates](https://github.com/${{ github.repository }}/issues/new/choose) instead of creating your own."
|
|
||||||
gh issue close ${{ github.event.issue.number }} --reason "not planned"
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ github.token }}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
|
||||||
|
|
||||||
Please report (suspected) security vulnerabilities on Discord (preferred) to
|
|
||||||
any of the Servarr Dev role holders (red names) or via email: development@servarr.com. You will receive a response from
|
|
||||||
us within 72 hours. If the issue is confirmed, we will release a patch as soon
|
|
||||||
as possible depending on complexity/severity.
|
|
||||||
+7
-8
@@ -9,7 +9,7 @@ variables:
|
|||||||
testsFolder: './_tests'
|
testsFolder: './_tests'
|
||||||
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
||||||
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
||||||
majorVersion: '2.3.5'
|
majorVersion: '2.1.0'
|
||||||
minorVersion: $[counter('minorVersion', 1)]
|
minorVersion: $[counter('minorVersion', 1)]
|
||||||
prowlarrVersion: '$(majorVersion).$(minorVersion)'
|
prowlarrVersion: '$(majorVersion).$(minorVersion)'
|
||||||
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
|
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
|
||||||
@@ -17,10 +17,10 @@ variables:
|
|||||||
sentryUrl: 'https://sentry.servarr.com'
|
sentryUrl: 'https://sentry.servarr.com'
|
||||||
dotnetVersion: '8.0.405'
|
dotnetVersion: '8.0.405'
|
||||||
nodeVersion: '20.X'
|
nodeVersion: '20.X'
|
||||||
innoVersion: '6.7.1'
|
innoVersion: '6.2.2'
|
||||||
windowsImage: 'windows-2025'
|
windowsImage: 'windows-2022'
|
||||||
linuxImage: 'ubuntu-24.04'
|
linuxImage: 'ubuntu-22.04'
|
||||||
macImage: 'macOS-15'
|
macImage: 'macOS-13'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
branches:
|
branches:
|
||||||
@@ -1158,7 +1158,7 @@ stages:
|
|||||||
extraProperties: |
|
extraProperties: |
|
||||||
sonar.exclusions=**/obj/**,**/*.dll,**/NzbDrone.Core.Test/Files/**/*,./frontend/**,**/ExternalModules/**,./src/Libraries/**
|
sonar.exclusions=**/obj/**,**/*.dll,**/NzbDrone.Core.Test/Files/**/*,./frontend/**,**/ExternalModules/**,./src/Libraries/**
|
||||||
sonar.coverage.exclusions=**/Prowlarr.Api.V1/**/*
|
sonar.coverage.exclusions=**/Prowlarr.Api.V1/**/*
|
||||||
sonar.cs.cobertura.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.cobertura.xml
|
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml
|
||||||
sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml
|
sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml
|
||||||
- bash: |
|
- bash: |
|
||||||
./build.sh --backend -f net8.0 -r win-x64
|
./build.sh --backend -f net8.0 -r win-x64
|
||||||
@@ -1170,11 +1170,10 @@ stages:
|
|||||||
- task: reportgenerator@5
|
- task: reportgenerator@5
|
||||||
displayName: Generate Coverage Report
|
displayName: Generate Coverage Report
|
||||||
inputs:
|
inputs:
|
||||||
reports: '$(Build.SourcesDirectory)/CoverageResults/**/coverage.cobertura.xml'
|
reports: '$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml'
|
||||||
targetdir: '$(Build.SourcesDirectory)/CoverageResults/combined'
|
targetdir: '$(Build.SourcesDirectory)/CoverageResults/combined'
|
||||||
reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges'
|
reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges'
|
||||||
publishCodeCoverageResults: true
|
publishCodeCoverageResults: true
|
||||||
sourcedirs: src
|
|
||||||
|
|
||||||
- stage: Report_Out
|
- stage: Report_Out
|
||||||
dependsOn:
|
dependsOn:
|
||||||
|
|||||||
@@ -253,10 +253,8 @@ InstallInno()
|
|||||||
{
|
{
|
||||||
ProgressStart "Installing portable Inno Setup"
|
ProgressStart "Installing portable Inno Setup"
|
||||||
|
|
||||||
INNOVERSION=${INNOVERSION:-6.7.1}
|
|
||||||
|
|
||||||
rm -rf _inno
|
rm -rf _inno
|
||||||
curl -s -L --output innosetup.exe "https://github.com/jrsoftware/issrc/releases/download/is-${INNOVERSION//./_}/innosetup-${INNOVERSION}.exe"
|
curl -s --output innosetup.exe "https://files.jrsoftware.org/is/6/innosetup-${INNOVERSION:-6.2.2}.exe"
|
||||||
mkdir _inno
|
mkdir _inno
|
||||||
./innosetup.exe //portable=1 //silent //currentuser //dir=.\\_inno
|
./innosetup.exe //portable=1 //silent //currentuser //dir=.\\_inno
|
||||||
rm innosetup.exe
|
rm innosetup.exe
|
||||||
|
|||||||
@@ -133,12 +133,6 @@ module.exports = (env) => {
|
|||||||
{
|
{
|
||||||
source: 'frontend/src/Content/robots.txt',
|
source: 'frontend/src/Content/robots.txt',
|
||||||
destination: path.join(distFolder, 'Content/robots.txt')
|
destination: path.join(distFolder, 'Content/robots.txt')
|
||||||
},
|
|
||||||
|
|
||||||
// manifest.json and browserconfig.xml
|
|
||||||
{
|
|
||||||
source: 'frontend/src/Content/*.(json|xml)',
|
|
||||||
destination: path.join(distFolder, 'Content')
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
.modal {
|
.modal {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
max-width: 90%;
|
|
||||||
max-height: 90%;
|
max-height: 90%;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig>
|
||||||
|
<msapplication>
|
||||||
|
<tile>
|
||||||
|
<square150x150logo src="/Content/Images/Icons/mstile-150x150.png"/>
|
||||||
|
<TileColor>#00ccff</TileColor>
|
||||||
|
</tile>
|
||||||
|
</msapplication>
|
||||||
|
</browserconfig>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "Prowlarr",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start_url": "../../../../",
|
||||||
|
"theme_color": "#3a3f51",
|
||||||
|
"background_color": "#3a3f51",
|
||||||
|
"display": "standalone"
|
||||||
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<browserconfig>
|
|
||||||
<msapplication>
|
|
||||||
<tile>
|
|
||||||
<square150x150logo src="__URL_BASE__/Content/Images/Icons/mstile-150x150.png" />
|
|
||||||
<TileColor>
|
|
||||||
#00ccff
|
|
||||||
</TileColor>
|
|
||||||
</tile>
|
|
||||||
</msapplication>
|
|
||||||
</browserconfig>
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "__INSTANCE_NAME__",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "android-chrome-192x192.png",
|
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "android-chrome-512x512.png",
|
|
||||||
"sizes": "512x512",
|
|
||||||
"type": "image/png"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"start_url": "__URL_BASE__/",
|
|
||||||
"theme_color": "#3a3f51",
|
|
||||||
"background_color": "#3a3f51",
|
|
||||||
"display": "standalone"
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
import { useEffect, useState } from 'react';
|
|
||||||
import { useSelector } from 'react-redux';
|
|
||||||
import { createSelector } from 'reselect';
|
|
||||||
import AppState from 'App/State/AppState';
|
|
||||||
import themes from 'Styles/Themes';
|
|
||||||
|
|
||||||
function createThemeSelector() {
|
|
||||||
return createSelector(
|
|
||||||
(state: AppState) => state.settings.ui.item.theme || window.Prowlarr.theme,
|
|
||||||
(theme) => theme
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const useTheme = () => {
|
|
||||||
const selectedTheme = useSelector(createThemeSelector());
|
|
||||||
const [resolvedTheme, setResolvedTheme] = useState(selectedTheme);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (selectedTheme !== 'auto') {
|
|
||||||
setResolvedTheme(selectedTheme);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const applySystemTheme = () => {
|
|
||||||
setResolvedTheme(
|
|
||||||
window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
||||||
? 'dark'
|
|
||||||
: 'light'
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
applySystemTheme();
|
|
||||||
|
|
||||||
window
|
|
||||||
.matchMedia('(prefers-color-scheme: dark)')
|
|
||||||
.addEventListener('change', applySystemTheme);
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
window
|
|
||||||
.matchMedia('(prefers-color-scheme: dark)')
|
|
||||||
.removeEventListener('change', applySystemTheme);
|
|
||||||
};
|
|
||||||
}, [selectedTheme]);
|
|
||||||
|
|
||||||
return resolvedTheme;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default useTheme;
|
|
||||||
|
|
||||||
export const useThemeColor = (color: string) => {
|
|
||||||
const theme = useTheme();
|
|
||||||
const themeVariables = themes[theme];
|
|
||||||
|
|
||||||
// @ts-expect-error - themeVariables is a string indexable type
|
|
||||||
return themeVariables[color];
|
|
||||||
};
|
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
sizes="16x16"
|
sizes="16x16"
|
||||||
href="/Content/Images/Icons/favicon-16x16.png"
|
href="/Content/Images/Icons/favicon-16x16.png"
|
||||||
/>
|
/>
|
||||||
<link rel="manifest" href="/Content/manifest.json" crossorigin="use-credentials" />
|
<link rel="manifest" href="/Content/Images/Icons/manifest.json" crossorigin="use-credentials" />
|
||||||
<link
|
<link
|
||||||
rel="mask-icon"
|
rel="mask-icon"
|
||||||
href="/Content/Images/Icons/safari-pinned-tab.svg"
|
href="/Content/Images/Icons/safari-pinned-tab.svg"
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
/>
|
/>
|
||||||
<meta
|
<meta
|
||||||
name="msapplication-config"
|
name="msapplication-config"
|
||||||
content="/Content/browserconfig.xml"
|
content="/Content/Images/Icons/browserconfig.xml"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="/Content/Fonts/fonts.css">
|
<link rel="stylesheet" type="text/css" href="/Content/Fonts/fonts.css">
|
||||||
|
|||||||
+31
-28
@@ -11,11 +11,8 @@
|
|||||||
<!-- Android/Apple Phone -->
|
<!-- Android/Apple Phone -->
|
||||||
<meta name="mobile-web-app-capable" content="yes" />
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
<meta
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
name="apple-mobile-web-app-status-bar-style"
|
<meta name="format-detection" content="telephone=no">
|
||||||
content="black-translucent"
|
|
||||||
/>
|
|
||||||
<meta name="format-detection" content="telephone=no" />
|
|
||||||
|
|
||||||
<meta name="description" content="Prowlarr" />
|
<meta name="description" content="Prowlarr" />
|
||||||
|
|
||||||
@@ -36,11 +33,7 @@
|
|||||||
sizes="16x16"
|
sizes="16x16"
|
||||||
href="/Content/Images/Icons/favicon-16x16.png"
|
href="/Content/Images/Icons/favicon-16x16.png"
|
||||||
/>
|
/>
|
||||||
<link
|
<link rel="manifest" href="/Content/Images/Icons/manifest.json" crossorigin="use-credentials" />
|
||||||
rel="manifest"
|
|
||||||
href="/Content/manifest.json"
|
|
||||||
crossorigin="use-credentials"
|
|
||||||
/>
|
|
||||||
<link
|
<link
|
||||||
rel="mask-icon"
|
rel="mask-icon"
|
||||||
href="/Content/Images/Icons/safari-pinned-tab.svg"
|
href="/Content/Images/Icons/safari-pinned-tab.svg"
|
||||||
@@ -52,7 +45,10 @@
|
|||||||
href="/favicon.ico"
|
href="/favicon.ico"
|
||||||
data-no-hash
|
data-no-hash
|
||||||
/>
|
/>
|
||||||
<meta name="msapplication-config" content="/Content/browserconfig.xml" />
|
<meta
|
||||||
|
name="msapplication-config"
|
||||||
|
content="/Content/Images/Icons/browserconfig.xml"
|
||||||
|
/>
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="/Content/styles.css" />
|
<link rel="stylesheet" type="text/css" href="/Content/styles.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="/Content/Fonts/fonts.css" />
|
<link rel="stylesheet" type="text/css" href="/Content/Fonts/fonts.css" />
|
||||||
@@ -63,7 +59,7 @@
|
|||||||
body {
|
body {
|
||||||
background-color: var(--pageBackground);
|
background-color: var(--pageBackground);
|
||||||
color: var(--textColor);
|
color: var(--textColor);
|
||||||
font-family: 'Roboto', 'open sans', 'Helvetica Neue', Helvetica, Arial,
|
font-family: "Roboto", "open sans", "Helvetica Neue", Helvetica, Arial,
|
||||||
sans-serif;
|
sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,7 +209,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="sign-in">SIGN IN TO CONTINUE</div>
|
<div class="sign-in">
|
||||||
|
SIGN IN TO CONTINUE
|
||||||
|
</div>
|
||||||
|
|
||||||
<form
|
<form
|
||||||
role="form"
|
role="form"
|
||||||
@@ -232,8 +230,8 @@
|
|||||||
pattern=".{1,}"
|
pattern=".{1,}"
|
||||||
required
|
required
|
||||||
title="User name is required"
|
title="User name is required"
|
||||||
autofocus="true"
|
autoFocus="true"
|
||||||
autocapitalize="false"
|
autoCapitalize="false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -284,16 +282,16 @@
|
|||||||
</body>
|
</body>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var yearSpan = document.getElementById('year');
|
var yearSpan = document.getElementById("year");
|
||||||
yearSpan.innerHTML = '2010-' + new Date().getFullYear();
|
yearSpan.innerHTML = "2010-" + new Date().getFullYear();
|
||||||
|
|
||||||
var copyDiv = document.getElementById('copy');
|
var copyDiv = document.getElementById("copy");
|
||||||
copyDiv.classList.remove('hidden');
|
copyDiv.classList.remove("hidden");
|
||||||
|
|
||||||
if (window.location.search.indexOf('loginFailed=true') > -1) {
|
if (window.location.search.indexOf("loginFailed=true") > -1) {
|
||||||
var loginFailedDiv = document.getElementById('login-failed');
|
var loginFailedDiv = document.getElementById("login-failed");
|
||||||
|
|
||||||
loginFailedDiv.classList.remove('hidden');
|
loginFailedDiv.classList.remove("hidden");
|
||||||
}
|
}
|
||||||
|
|
||||||
var light = {
|
var light = {
|
||||||
@@ -313,7 +311,7 @@
|
|||||||
primaryHoverBorderColor: '#3483e7',
|
primaryHoverBorderColor: '#3483e7',
|
||||||
failedColor: '#f05050',
|
failedColor: '#f05050',
|
||||||
forgotPasswordColor: '#909fa7',
|
forgotPasswordColor: '#909fa7',
|
||||||
forgotPasswordAltColor: '#748690',
|
forgotPasswordAltColor: '#748690'
|
||||||
};
|
};
|
||||||
|
|
||||||
var dark = {
|
var dark = {
|
||||||
@@ -333,16 +331,21 @@
|
|||||||
primaryHoverBorderColor: '#3483e7',
|
primaryHoverBorderColor: '#3483e7',
|
||||||
failedColor: '#f05050',
|
failedColor: '#f05050',
|
||||||
forgotPasswordColor: '#737d83',
|
forgotPasswordColor: '#737d83',
|
||||||
forgotPasswordAltColor: '#546067',
|
forgotPasswordAltColor: '#546067'
|
||||||
};
|
};
|
||||||
|
|
||||||
var theme = '_THEME_';
|
var theme = "_THEME_";
|
||||||
var defaultDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
var defaultDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||||
var finalTheme =
|
var finalTheme = theme === 'dark' || (theme === 'auto' && defaultDark) ?
|
||||||
theme === 'dark' || (theme === 'auto' && defaultDark) ? dark : light;
|
dark :
|
||||||
|
light;
|
||||||
|
|
||||||
Object.entries(finalTheme).forEach(([key, value]) => {
|
Object.entries(finalTheme).forEach(([key, value]) => {
|
||||||
document.documentElement.style.setProperty(`--${key}`, value);
|
document.documentElement.style.setProperty(
|
||||||
|
`--${key}`,
|
||||||
|
value
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -84,7 +84,7 @@
|
|||||||
|
|
||||||
<Deterministic Condition="$(AssemblyVersion.EndsWith('*'))">False</Deterministic>
|
<Deterministic Condition="$(AssemblyVersion.EndsWith('*'))">False</Deterministic>
|
||||||
|
|
||||||
<PathMap>$(MSBuildThisFileDirectory)=./</PathMap>
|
<PathMap>$(MSBuildProjectDirectory)=./$(MSBuildProjectName)/</PathMap>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- Set the AssemblyConfiguration attribute for projects -->
|
<!-- Set the AssemblyConfiguration attribute for projects -->
|
||||||
@@ -123,11 +123,14 @@
|
|||||||
|
|
||||||
<!-- Standard testing packages -->
|
<!-- Standard testing packages -->
|
||||||
<ItemGroup Condition="'$(TestProject)'=='true'">
|
<ItemGroup Condition="'$(TestProject)'=='true'">
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.4" />
|
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
|
||||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="5.1.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
|
||||||
<PackageReference Include="NunitXml.TestLogger" Version="3.1.20" />
|
<PackageReference Include="NunitXml.TestLogger" Version="3.0.131" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition="'$(TestProject)'=='true' and '$(TargetFramework)'=='net8.0'">
|
||||||
|
<PackageReference Include="coverlet.collector" Version="3.0.4-preview.27.ge7cb7c3b40" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(ProwlarrProject)'=='true' and '$(EnableAnalyzers)'=='false'">
|
<PropertyGroup Condition="'$(ProwlarrProject)'=='true' and '$(EnableAnalyzers)'=='false'">
|
||||||
|
|||||||
@@ -5,5 +5,8 @@
|
|||||||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
|
||||||
<add key="dotnet-bsd-crossbuild" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/dotnet-bsd-crossbuild/nuget/v3/index.json" />
|
<add key="dotnet-bsd-crossbuild" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/dotnet-bsd-crossbuild/nuget/v3/index.json" />
|
||||||
<add key="Mono.Posix.NETStandard" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/Mono.Posix.NETStandard/nuget/v3/index.json" />
|
<add key="Mono.Posix.NETStandard" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/Mono.Posix.NETStandard/nuget/v3/index.json" />
|
||||||
|
<add key="SQLite" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/SQLite/nuget/v3/index.json" />
|
||||||
|
<add key="coverlet-nightly" value="https://pkgs.dev.azure.com/Servarr/coverlet/_packaging/coverlet-nightly/nuget/v3/index.json" />
|
||||||
|
<add key="FluentMigrator" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/FluentMigrator/nuget/v3/index.json" />
|
||||||
</packageSources>
|
</packageSources>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Text;
|
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
@@ -10,12 +9,6 @@ namespace NzbDrone.Common.Test.Http
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class HttpRequestBuilderFixture : TestBase
|
public class HttpRequestBuilderFixture : TestBase
|
||||||
{
|
{
|
||||||
[OneTimeSetUp]
|
|
||||||
public void RegisterEncodingProvider()
|
|
||||||
{
|
|
||||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase("http://host/{seg}/some", "http://host/dir/some")]
|
[TestCase("http://host/{seg}/some", "http://host/dir/some")]
|
||||||
[TestCase("http://host/some/{seg}", "http://host/some/dir")]
|
[TestCase("http://host/some/{seg}", "http://host/some/dir")]
|
||||||
public void should_add_single_segment_url_segments(string url, string result)
|
public void should_add_single_segment_url_segments(string url, string result)
|
||||||
@@ -43,70 +36,5 @@ namespace NzbDrone.Common.Test.Http
|
|||||||
|
|
||||||
request.Url.FullUri.Should().Be("http://domain/v1/");
|
request.Url.FullUri.Should().Be("http://domain/v1/");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void should_encode_form_parameters_with_utf8_by_default()
|
|
||||||
{
|
|
||||||
var builder = new HttpRequestBuilder("http://domain/login")
|
|
||||||
.Post()
|
|
||||||
.AddFormParameter("username", "Привет");
|
|
||||||
|
|
||||||
var request = builder.Build();
|
|
||||||
var body = Encoding.UTF8.GetString(request.ContentData);
|
|
||||||
|
|
||||||
// UTF-8 encoding: Привет = %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82
|
|
||||||
body.Should().Contain("username=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82");
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void should_encode_form_parameters_with_windows_1251_for_cyrillic()
|
|
||||||
{
|
|
||||||
var windows1251 = Encoding.GetEncoding("windows-1251");
|
|
||||||
|
|
||||||
var builder = new HttpRequestBuilder("http://domain/login")
|
|
||||||
.Post()
|
|
||||||
.SetEncoding(windows1251)
|
|
||||||
.AddFormParameter("username", "Привет");
|
|
||||||
|
|
||||||
var request = builder.Build();
|
|
||||||
var body = windows1251.GetString(request.ContentData);
|
|
||||||
|
|
||||||
// Windows-1251 encoding: Привет = %CF%F0%E8%E2%E5%F2
|
|
||||||
body.Should().Contain("username=%CF%F0%E8%E2%E5%F2");
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void should_encode_form_parameters_with_iso_8859_1_for_extended_latin()
|
|
||||||
{
|
|
||||||
var iso88591 = Encoding.GetEncoding("iso-8859-1");
|
|
||||||
|
|
||||||
var builder = new HttpRequestBuilder("http://domain/login")
|
|
||||||
.Post()
|
|
||||||
.SetEncoding(iso88591)
|
|
||||||
.AddFormParameter("username", "café");
|
|
||||||
|
|
||||||
var request = builder.Build();
|
|
||||||
var body = iso88591.GetString(request.ContentData);
|
|
||||||
|
|
||||||
// ISO-8859-1 encoding: é = %E9
|
|
||||||
body.Should().Contain("username=caf%E9");
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void should_encode_form_parameters_ascii_same_regardless_of_encoding()
|
|
||||||
{
|
|
||||||
var windows1251 = Encoding.GetEncoding("windows-1251");
|
|
||||||
|
|
||||||
var builder = new HttpRequestBuilder("http://domain/login")
|
|
||||||
.Post()
|
|
||||||
.SetEncoding(windows1251)
|
|
||||||
.AddFormParameter("username", "testuser")
|
|
||||||
.AddFormParameter("password", "pass123");
|
|
||||||
|
|
||||||
var request = builder.Build();
|
|
||||||
var body = windows1251.GetString(request.ContentData);
|
|
||||||
|
|
||||||
body.Should().Be("username=testuser&password=pass123");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ namespace NzbDrone.Common.Composition
|
|||||||
static AssemblyLoader()
|
static AssemblyLoader()
|
||||||
{
|
{
|
||||||
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ContainerResolveEventHandler);
|
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ContainerResolveEventHandler);
|
||||||
|
RegisterSQLiteResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IList<Assembly> Load(IList<string> assemblyNames)
|
public static IList<Assembly> Load(IList<string> assemblyNames)
|
||||||
@@ -22,10 +23,6 @@ namespace NzbDrone.Common.Composition
|
|||||||
toLoad.Add("Prowlarr.Common");
|
toLoad.Add("Prowlarr.Common");
|
||||||
toLoad.Add(OsInfo.IsWindows ? "Prowlarr.Windows" : "Prowlarr.Mono");
|
toLoad.Add(OsInfo.IsWindows ? "Prowlarr.Windows" : "Prowlarr.Mono");
|
||||||
|
|
||||||
var toRegisterResolver = new List<string> { "System.Data.SQLite" };
|
|
||||||
toRegisterResolver.AddRange(assemblyNames.Intersect(new[] { "Prowlarr.Core" }));
|
|
||||||
RegisterNativeResolver(toRegisterResolver);
|
|
||||||
|
|
||||||
var startupPath = AppDomain.CurrentDomain.BaseDirectory;
|
var startupPath = AppDomain.CurrentDomain.BaseDirectory;
|
||||||
|
|
||||||
return toLoad
|
return toLoad
|
||||||
@@ -46,46 +43,27 @@ namespace NzbDrone.Common.Composition
|
|||||||
return AssemblyLoadContext.Default.LoadFromAssemblyPath(assemblyPath);
|
return AssemblyLoadContext.Default.LoadFromAssemblyPath(assemblyPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RegisterNativeResolver(IEnumerable<string> assemblyNames)
|
public static void RegisterSQLiteResolver()
|
||||||
{
|
{
|
||||||
foreach (var name in assemblyNames)
|
// This ensures we look for sqlite3 using libsqlite3.so.0 on Linux and not libsqlite3.so which
|
||||||
{
|
// is less likely to exist.
|
||||||
// This ensures we look for sqlite3 using libsqlite3.so.0 on Linux and not libsqlite3.so which
|
var sqliteAssembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(
|
||||||
// is less likely to exist.
|
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "System.Data.SQLite.dll"));
|
||||||
var assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(
|
|
||||||
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"{name}.dll"));
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
NativeLibrary.SetDllImportResolver(assembly, LoadNativeLib);
|
NativeLibrary.SetDllImportResolver(sqliteAssembly, LoadSqliteNativeLib);
|
||||||
}
|
}
|
||||||
catch (InvalidOperationException)
|
catch (InvalidOperationException)
|
||||||
{
|
{
|
||||||
// This can only be set once per assembly
|
// This can only be set once per assembly
|
||||||
// Catch required for NzbDrone.Host tests
|
// Catch required for NzbDrone.Host tests
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IntPtr LoadNativeLib(string libraryName, Assembly assembly, DllImportSearchPath? dllImportSearchPath)
|
private static IntPtr LoadSqliteNativeLib(string libraryName, Assembly assembly, DllImportSearchPath? dllImportSearchPath)
|
||||||
{
|
{
|
||||||
ArgumentException.ThrowIfNullOrWhiteSpace(libraryName);
|
var mappedName = OsInfo.IsLinux && libraryName == "sqlite3" ? "libsqlite3.so.0" : libraryName;
|
||||||
|
|
||||||
var mappedName = libraryName;
|
|
||||||
|
|
||||||
if (libraryName is "sqlite3" or "e_sqlite3")
|
|
||||||
{
|
|
||||||
if (OsInfo.IsLinux)
|
|
||||||
{
|
|
||||||
if (NativeLibrary.TryLoad(libraryName, assembly, dllImportSearchPath, out var libHandle))
|
|
||||||
{
|
|
||||||
return libHandle;
|
|
||||||
}
|
|
||||||
|
|
||||||
mappedName = "libsqlite3.so.0";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NativeLibrary.Load(mappedName, assembly, dllImportSearchPath);
|
return NativeLibrary.Load(mappedName, assembly, dllImportSearchPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ namespace NzbDrone.Common.Http
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var parameters = FormData.Select(v => string.Format("{0}={1}", v.Name, Encoding.GetString(v.ContentData).UrlEncode(Encoding)));
|
var parameters = FormData.Select(v => string.Format("{0}={1}", v.Name, Uri.EscapeDataString(Encoding.GetString(v.ContentData))));
|
||||||
var urlencoded = string.Join("&", parameters);
|
var urlencoded = string.Join("&", parameters);
|
||||||
var body = Encoding.GetBytes(urlencoded);
|
var body = Encoding.GetBytes(urlencoded);
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,13 @@ using NzbDrone.Common.Extensions;
|
|||||||
|
|
||||||
namespace NzbDrone.Common.Http
|
namespace NzbDrone.Common.Http
|
||||||
{
|
{
|
||||||
public partial class HttpUri : IEquatable<HttpUri>
|
public class HttpUri : IEquatable<HttpUri>
|
||||||
{
|
{
|
||||||
|
private static readonly Regex RegexUri = new Regex(@"^(?:(?<scheme>[a-z]+):)?(?://(?<host>[-_A-Z0-9.]+|\[[[A-F0-9:]+\])(?::(?<port>[0-9]{1,5}))?)?(?<path>(?:(?:(?<=^)|/+)[^/?#\r\n]+)+/*|/+)?(?:\?(?<query>[^#\r\n]*))?(?:\#(?<fragment>.*))?$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
private readonly string _uri;
|
private readonly string _uri;
|
||||||
public string FullUri => _uri;
|
public string FullUri => _uri;
|
||||||
|
|
||||||
[GeneratedRegex(@"^(?:(?<scheme>[a-z]+):)?(?://(?<host>[-_A-Z0-9.]+|\[[[A-F0-9:]+\])(?::(?<port>[0-9]{1,5}))?)?(?<path>(?:(?:(?<=^)|/+)[^/?#\r\n]+)+/*|/+)?(?:\?(?<query>[^#\r\n]*))?(?:\#(?<fragment>.*))?$", RegexOptions.IgnoreCase | RegexOptions.Compiled)]
|
|
||||||
private static partial Regex UriRegex();
|
|
||||||
|
|
||||||
public HttpUri(string uri)
|
public HttpUri(string uri)
|
||||||
{
|
{
|
||||||
_uri = uri ?? string.Empty;
|
_uri = uri ?? string.Empty;
|
||||||
@@ -71,9 +70,9 @@ namespace NzbDrone.Common.Http
|
|||||||
|
|
||||||
private void Parse()
|
private void Parse()
|
||||||
{
|
{
|
||||||
var parseSuccess = Uri.TryCreate(_uri, UriKind.RelativeOrAbsolute, out _);
|
var parseSuccess = Uri.TryCreate(_uri, UriKind.RelativeOrAbsolute, out var uri);
|
||||||
|
|
||||||
var match = UriRegex().Match(_uri);
|
var match = RegexUri.Match(_uri);
|
||||||
|
|
||||||
var scheme = match.Groups["scheme"];
|
var scheme = match.Groups["scheme"];
|
||||||
var host = match.Groups["host"];
|
var host = match.Groups["host"];
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<PackageReference Include="IPAddressRange" Version="6.2.0" />
|
<PackageReference Include="IPAddressRange" Version="6.2.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.1" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="NLog" Version="5.4.0" />
|
<PackageReference Include="NLog" Version="5.4.0" />
|
||||||
<PackageReference Include="NLog.Layouts.ClefJsonLayout" Version="1.0.3" />
|
<PackageReference Include="NLog.Layouts.ClefJsonLayout" Version="1.0.3" />
|
||||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.4.0" />
|
<PackageReference Include="NLog.Extensions.Logging" Version="5.4.0" />
|
||||||
@@ -16,11 +16,9 @@
|
|||||||
<PackageReference Include="Sentry" Version="4.0.2" />
|
<PackageReference Include="Sentry" Version="4.0.2" />
|
||||||
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
|
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
|
||||||
<PackageReference Include="SharpZipLib" Version="1.4.2" />
|
<PackageReference Include="SharpZipLib" Version="1.4.2" />
|
||||||
<PackageReference Include="SourceGear.sqlite3" Version="3.50.4.2" />
|
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
||||||
<PackageReference Include="System.Data.SQLite" Version="2.0.2" />
|
|
||||||
<PackageReference Include="System.Private.Uri" Version="4.3.2" />
|
|
||||||
<PackageReference Include="System.Text.Json" Version="8.0.6" />
|
|
||||||
<PackageReference Include="System.ValueTuple" Version="4.6.1" />
|
<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="8.0.1" />
|
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.1" />
|
||||||
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
|
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
|
||||||
<PackageReference Include="System.Runtime.Loader" Version="4.3.0" />
|
<PackageReference Include="System.Runtime.Loader" Version="4.3.0" />
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using FluentAssertions;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Common.Serializer;
|
||||||
|
using NzbDrone.Core.Datastore.Migration;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.Datastore.Migration
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class nzb_su_url_to_nzb_lifeFixture : MigrationTest<nzb_su_url_to_nzb_life>
|
||||||
|
{
|
||||||
|
[TestCase("Newznab", "https://api.nzb.su")]
|
||||||
|
[TestCase("Newznab", "http://api.nzb.su")]
|
||||||
|
public void should_replace_old_url(string impl, string baseUrl)
|
||||||
|
{
|
||||||
|
var db = WithMigrationTestDb(c =>
|
||||||
|
{
|
||||||
|
c.Insert.IntoTable("Indexers").Row(new
|
||||||
|
{
|
||||||
|
Name = "Nzb.su",
|
||||||
|
Implementation = impl,
|
||||||
|
Settings = new NewznabSettings044
|
||||||
|
{
|
||||||
|
BaseUrl = baseUrl,
|
||||||
|
ApiPath = "/api"
|
||||||
|
}.ToJson(),
|
||||||
|
ConfigContract = impl + "Settings",
|
||||||
|
EnableInteractiveSearch = false
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var items = db.Query<IndexerDefinition044>("SELECT * FROM \"Indexers\"");
|
||||||
|
|
||||||
|
items.Should().HaveCount(1);
|
||||||
|
items.First().Settings.ToObject<NewznabSettings044>().BaseUrl.Should().Be(baseUrl.Replace("su", "life"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase("Newznab", "https://api.indexer.com")]
|
||||||
|
public void should_not_replace_different_url(string impl, string baseUrl)
|
||||||
|
{
|
||||||
|
var db = WithMigrationTestDb(c =>
|
||||||
|
{
|
||||||
|
c.Insert.IntoTable("Indexers").Row(new
|
||||||
|
{
|
||||||
|
Name = "Indexer.com",
|
||||||
|
Implementation = impl,
|
||||||
|
Settings = new NewznabSettings044
|
||||||
|
{
|
||||||
|
BaseUrl = baseUrl,
|
||||||
|
ApiPath = "/api"
|
||||||
|
}.ToJson(),
|
||||||
|
ConfigContract = impl + "Settings",
|
||||||
|
EnableInteractiveSearch = false
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var items = db.Query<IndexerDefinition044>("SELECT * FROM \"Indexers\"");
|
||||||
|
|
||||||
|
items.Should().HaveCount(1);
|
||||||
|
items.First().Settings.ToObject<NewznabSettings044>().BaseUrl.Should().Be(baseUrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class IndexerDefinition044
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public JObject Settings { get; set; }
|
||||||
|
public int Priority { get; set; }
|
||||||
|
public string Implementation { get; set; }
|
||||||
|
public string ConfigContract { get; set; }
|
||||||
|
public bool EnableRss { get; set; }
|
||||||
|
public bool EnableAutomaticSearch { get; set; }
|
||||||
|
public bool EnableInteractiveSearch { get; set; }
|
||||||
|
public HashSet<int> Tags { get; set; }
|
||||||
|
public int DownloadClientId { get; set; }
|
||||||
|
public int SeasonSearchMaximumSingleEpisodeAge { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class NewznabSettings044
|
||||||
|
{
|
||||||
|
public string BaseUrl { get; set; }
|
||||||
|
public string ApiPath { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,24 +15,24 @@ namespace NzbDrone.Core.Test.Http
|
|||||||
return new HttpProxySettings(ProxyType.Socks5, "localhost", 8080, "*.httpbin.org,google.com,172.16.0.0/12", true, null, null);
|
return new HttpProxySettings(ProxyType.Socks5, "localhost", 8080, "*.httpbin.org,google.com,172.16.0.0/12", true, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase("http://eu.httpbin.org/get")]
|
[Test]
|
||||||
[TestCase("http://google.com/get")]
|
public void should_bypass_proxy()
|
||||||
[TestCase("http://localhost:8654/get")]
|
|
||||||
[TestCase("http://172.21.0.1:8989/api/v3/indexer/schema")]
|
|
||||||
public void should_bypass_proxy(string url)
|
|
||||||
{
|
{
|
||||||
var settings = GetProxySettings();
|
var settings = GetProxySettings();
|
||||||
|
|
||||||
Subject.ShouldProxyBeBypassed(settings, new HttpUri(url)).Should().BeTrue();
|
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://eu.httpbin.org/get")).Should().BeTrue();
|
||||||
|
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://google.com/get")).Should().BeTrue();
|
||||||
|
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://localhost:8654/get")).Should().BeTrue();
|
||||||
|
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://172.21.0.1:8989/api/v3/indexer/schema")).Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase("http://bing.com/get")]
|
[Test]
|
||||||
[TestCase("http://172.3.0.1:8989/api/v3/indexer/schema")]
|
public void should_not_bypass_proxy()
|
||||||
public void should_not_bypass_proxy(string url)
|
|
||||||
{
|
{
|
||||||
var settings = GetProxySettings();
|
var settings = GetProxySettings();
|
||||||
|
|
||||||
Subject.ShouldProxyBeBypassed(settings, new HttpUri(url)).Should().BeFalse();
|
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://bing.com/get")).Should().BeFalse();
|
||||||
|
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://172.3.0.1:8989/api/v3/indexer/schema")).Should().BeFalse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -140,7 +140,7 @@ namespace NzbDrone.Core.Test.IndexerTests.BroadcastheNetTests
|
|||||||
query.Tvrage.Should().BeNull();
|
query.Tvrage.Should().BeNull();
|
||||||
query.Search.Should().BeNull();
|
query.Search.Should().BeNull();
|
||||||
query.Category.Should().Be("Episode");
|
query.Category.Should().Be("Episode");
|
||||||
query.Name.Should().Be("2023.01.03%");
|
query.Name.Should().Be("2023.01.03");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@@ -275,7 +275,7 @@ namespace NzbDrone.Core.Test.IndexerTests.BroadcastheNetTests
|
|||||||
query.Tvrage.Should().BeNull();
|
query.Tvrage.Should().BeNull();
|
||||||
query.Search.Should().Be("The%Late%Show%with%Stephen%Colbert");
|
query.Search.Should().Be("The%Late%Show%with%Stephen%Colbert");
|
||||||
query.Category.Should().Be("Episode");
|
query.Category.Should().Be("Episode");
|
||||||
query.Name.Should().Be("2023.01.03%");
|
query.Name.Should().Be("2023.01.03");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BroadcastheNetTorrentQuery ParseTorrentQueryFromRequest(HttpRequest httpRequest)
|
private static BroadcastheNetTorrentQuery ParseTorrentQueryFromRequest(HttpRequest httpRequest)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Dapper" Version="2.1.66" />
|
<PackageReference Include="Dapper" Version="2.1.66" />
|
||||||
<PackageReference Include="NBuilder" Version="6.1.0" />
|
<PackageReference Include="NBuilder" Version="6.1.0" />
|
||||||
|
<PackageReference Include="System.Data.SQLite.Core.Servarr" Version="1.0.115.5-18" />
|
||||||
<PackageReference Include="YamlDotNet" Version="16.3.0" />
|
<PackageReference Include="YamlDotNet" Version="16.3.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -1,18 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.SQLite;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Dapper;
|
using Dapper;
|
||||||
using NLog;
|
|
||||||
using NzbDrone.Common.Instrumentation;
|
|
||||||
using NzbDrone.Core.Datastore.Events;
|
using NzbDrone.Core.Datastore.Events;
|
||||||
using NzbDrone.Core.Messaging.Events;
|
using NzbDrone.Core.Messaging.Events;
|
||||||
using Polly;
|
|
||||||
using Polly.Retry;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.Datastore
|
namespace NzbDrone.Core.Datastore
|
||||||
{
|
{
|
||||||
@@ -45,31 +40,12 @@ namespace NzbDrone.Core.Datastore
|
|||||||
public class BasicRepository<TModel> : IBasicRepository<TModel>
|
public class BasicRepository<TModel> : IBasicRepository<TModel>
|
||||||
where TModel : ModelBase, new()
|
where TModel : ModelBase, new()
|
||||||
{
|
{
|
||||||
private static readonly ILogger Logger = NzbDroneLogger.GetLogger(typeof(BasicRepository<TModel>));
|
|
||||||
|
|
||||||
private readonly IEventAggregator _eventAggregator;
|
private readonly IEventAggregator _eventAggregator;
|
||||||
private readonly PropertyInfo _keyProperty;
|
private readonly PropertyInfo _keyProperty;
|
||||||
private readonly List<PropertyInfo> _properties;
|
private readonly List<PropertyInfo> _properties;
|
||||||
private readonly string _updateSql;
|
private readonly string _updateSql;
|
||||||
private readonly string _insertSql;
|
private readonly string _insertSql;
|
||||||
|
|
||||||
private static ResiliencePipeline RetryStrategy => new ResiliencePipelineBuilder()
|
|
||||||
.AddRetry(new RetryStrategyOptions
|
|
||||||
{
|
|
||||||
ShouldHandle = new PredicateBuilder().Handle<SQLiteException>(ex => ex.ResultCode == SQLiteErrorCode.Busy),
|
|
||||||
Delay = TimeSpan.FromMilliseconds(100),
|
|
||||||
MaxRetryAttempts = 3,
|
|
||||||
BackoffType = DelayBackoffType.Exponential,
|
|
||||||
UseJitter = true,
|
|
||||||
OnRetry = args =>
|
|
||||||
{
|
|
||||||
Logger.Warn(args.Outcome.Exception, "Failed writing to database. Retry #{0}", args.AttemptNumber);
|
|
||||||
|
|
||||||
return default;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.Build();
|
|
||||||
|
|
||||||
protected readonly IDatabase _database;
|
protected readonly IDatabase _database;
|
||||||
protected readonly string _table;
|
protected readonly string _table;
|
||||||
|
|
||||||
@@ -210,9 +186,7 @@ namespace NzbDrone.Core.Datastore
|
|||||||
private TModel Insert(IDbConnection connection, IDbTransaction transaction, TModel model)
|
private TModel Insert(IDbConnection connection, IDbTransaction transaction, TModel model)
|
||||||
{
|
{
|
||||||
SqlBuilderExtensions.LogQuery(_insertSql, model);
|
SqlBuilderExtensions.LogQuery(_insertSql, model);
|
||||||
|
var multi = connection.QueryMultiple(_insertSql, model, transaction);
|
||||||
var multi = RetryStrategy.Execute(static (state, _) => state.connection.QueryMultiple(state._insertSql, state.model, state.transaction), (connection, _insertSql, model, transaction));
|
|
||||||
|
|
||||||
var multiRead = multi.Read();
|
var multiRead = multi.Read();
|
||||||
var id = (int)(multiRead.First().id ?? multiRead.First().Id);
|
var id = (int)(multiRead.First().id ?? multiRead.First().Id);
|
||||||
_keyProperty.SetValue(model, id);
|
_keyProperty.SetValue(model, id);
|
||||||
@@ -409,7 +383,7 @@ namespace NzbDrone.Core.Datastore
|
|||||||
|
|
||||||
SqlBuilderExtensions.LogQuery(sql, model);
|
SqlBuilderExtensions.LogQuery(sql, model);
|
||||||
|
|
||||||
RetryStrategy.Execute(static (state, _) => state.connection.Execute(state.sql, state.model, transaction: state.transaction), (connection, sql, model, transaction));
|
connection.Execute(sql, model, transaction: transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateFields(IDbConnection connection, IDbTransaction transaction, IList<TModel> models, List<PropertyInfo> propertiesToUpdate)
|
private void UpdateFields(IDbConnection connection, IDbTransaction transaction, IList<TModel> models, List<PropertyInfo> propertiesToUpdate)
|
||||||
@@ -421,7 +395,7 @@ namespace NzbDrone.Core.Datastore
|
|||||||
SqlBuilderExtensions.LogQuery(sql, model);
|
SqlBuilderExtensions.LogQuery(sql, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
RetryStrategy.Execute(static (state, _) => state.connection.Execute(state.sql, state.models, transaction: state.transaction), (connection, sql, models, transaction));
|
connection.Execute(sql, models, transaction: transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual SqlBuilder PagedBuilder() => Builder();
|
protected virtual SqlBuilder PagedBuilder() => Builder();
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace NzbDrone.Core.Datastore
|
|||||||
JournalMode = OsInfo.IsOsx ? SQLiteJournalModeEnum.Truncate : SQLiteJournalModeEnum.Wal,
|
JournalMode = OsInfo.IsOsx ? SQLiteJournalModeEnum.Truncate : SQLiteJournalModeEnum.Wal,
|
||||||
Pooling = true,
|
Pooling = true,
|
||||||
Version = 3,
|
Version = 3,
|
||||||
BusyTimeout = 1000
|
BusyTimeout = 100
|
||||||
};
|
};
|
||||||
|
|
||||||
if (OsInfo.IsOsx)
|
if (OsInfo.IsOsx)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ using NzbDrone.Common.Instrumentation;
|
|||||||
namespace NzbDrone.Core.Datastore.Migration
|
namespace NzbDrone.Core.Datastore.Migration
|
||||||
{
|
{
|
||||||
[Maintenance(MigrationStage.BeforeAll, TransactionBehavior.None)]
|
[Maintenance(MigrationStage.BeforeAll, TransactionBehavior.None)]
|
||||||
public class DatabaseEngineVersionCheck : ForwardOnlyMigration
|
public class DatabaseEngineVersionCheck : FluentMigrator.Migration
|
||||||
{
|
{
|
||||||
protected readonly Logger _logger;
|
protected readonly Logger _logger;
|
||||||
|
|
||||||
@@ -22,6 +22,11 @@ namespace NzbDrone.Core.Datastore.Migration
|
|||||||
IfDatabase("postgres").Execute.WithConnection(LogPostgresVersion);
|
IfDatabase("postgres").Execute.WithConnection(LogPostgresVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Down()
|
||||||
|
{
|
||||||
|
// No-op
|
||||||
|
}
|
||||||
|
|
||||||
private void LogSqliteVersion(IDbConnection conn, IDbTransaction tran)
|
private void LogSqliteVersion(IDbConnection conn, IDbTransaction tran)
|
||||||
{
|
{
|
||||||
using (var versionCmd = conn.CreateCommand())
|
using (var versionCmd = conn.CreateCommand())
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using FluentMigrator;
|
||||||
|
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Datastore.Migration
|
||||||
|
{
|
||||||
|
[Migration(044)]
|
||||||
|
public class nzb_su_url_to_nzb_life : NzbDroneMigrationBase
|
||||||
|
{
|
||||||
|
protected override void MainDbUpgrade()
|
||||||
|
{
|
||||||
|
Execute.Sql("UPDATE \"Indexers\" SET \"Settings\" = replace(\"Settings\", '//api.nzb.su', '//api.nzb.life')" +
|
||||||
|
"WHERE \"Implementation\" = 'Newznab'" +
|
||||||
|
"AND \"Settings\" LIKE '%//api.nzb.su%'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ using FluentMigrator.Runner.Generators;
|
|||||||
using FluentMigrator.Runner.Initialization;
|
using FluentMigrator.Runner.Initialization;
|
||||||
using FluentMigrator.Runner.Processors;
|
using FluentMigrator.Runner.Processors;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NLog.Extensions.Logging;
|
using NLog.Extensions.Logging;
|
||||||
|
|
||||||
@@ -19,10 +20,13 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
public class MigrationController : IMigrationController
|
public class MigrationController : IMigrationController
|
||||||
{
|
{
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
|
private readonly ILoggerProvider _migrationLoggerProvider;
|
||||||
|
|
||||||
public MigrationController(Logger logger)
|
public MigrationController(Logger logger,
|
||||||
|
ILoggerProvider migrationLoggerProvider)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_migrationLoggerProvider = migrationLoggerProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Migrate(string connectionString, MigrationContext migrationContext, DatabaseType databaseType)
|
public void Migrate(string connectionString, MigrationContext migrationContext, DatabaseType databaseType)
|
||||||
@@ -31,13 +35,16 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
|
|
||||||
_logger.Info("*** Migrating {0} ***", connectionString);
|
_logger.Info("*** Migrating {0} ***", connectionString);
|
||||||
|
|
||||||
|
ServiceProvider serviceProvider;
|
||||||
|
|
||||||
var db = databaseType == DatabaseType.SQLite ? "sqlite" : "postgres";
|
var db = databaseType == DatabaseType.SQLite ? "sqlite" : "postgres";
|
||||||
|
|
||||||
var serviceProvider = new ServiceCollection()
|
serviceProvider = new ServiceCollection()
|
||||||
.AddLogging(b => b.AddNLog())
|
.AddLogging(b => b.AddNLog())
|
||||||
.AddFluentMigratorCore()
|
.AddFluentMigratorCore()
|
||||||
.Configure<RunnerOptions>(cfg => cfg.IncludeUntaggedMaintenances = true)
|
.Configure<RunnerOptions>(cfg => cfg.IncludeUntaggedMaintenances = true)
|
||||||
.ConfigureRunner(builder => builder
|
.ConfigureRunner(
|
||||||
|
builder => builder
|
||||||
.AddPostgres()
|
.AddPostgres()
|
||||||
.AddNzbDroneSQLite()
|
.AddNzbDroneSQLite()
|
||||||
.WithGlobalConnectionString(connectionString)
|
.WithGlobalConnectionString(connectionString)
|
||||||
|
|||||||
@@ -1,17 +1,11 @@
|
|||||||
using System.Data;
|
using FluentMigrator;
|
||||||
using FluentMigrator;
|
|
||||||
using FluentMigrator.Builders.Create;
|
using FluentMigrator.Builders.Create;
|
||||||
using FluentMigrator.Builders.Create.Table;
|
using FluentMigrator.Builders.Create.Table;
|
||||||
using FluentMigrator.Runner;
|
using FluentMigrator.Runner;
|
||||||
using FluentMigrator.Runner.BatchParser;
|
using FluentMigrator.Runner.BatchParser;
|
||||||
using FluentMigrator.Runner.Generators;
|
|
||||||
using FluentMigrator.Runner.Generators.SQLite;
|
using FluentMigrator.Runner.Generators.SQLite;
|
||||||
using FluentMigrator.Runner.Initialization;
|
|
||||||
using FluentMigrator.Runner.Processors;
|
|
||||||
using FluentMigrator.Runner.Processors.SQLite;
|
using FluentMigrator.Runner.Processors.SQLite;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.Datastore.Migration.Framework
|
namespace NzbDrone.Core.Datastore.Migration.Framework
|
||||||
{
|
{
|
||||||
@@ -22,49 +16,23 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
return expressionRoot.Table(name).WithColumn("Id").AsInt32().PrimaryKey().Identity();
|
return expressionRoot.Table(name).WithColumn("Id").AsInt32().PrimaryKey().Identity();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IDbCommand CreateCommand(this IDbConnection conn, IDbTransaction tran, string query)
|
public static void AddParameter(this System.Data.IDbCommand command, object value)
|
||||||
{
|
|
||||||
var command = conn.CreateCommand();
|
|
||||||
command.Transaction = tran;
|
|
||||||
command.CommandText = query;
|
|
||||||
|
|
||||||
return command;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void AddParameter(this IDbCommand command, object value)
|
|
||||||
{
|
{
|
||||||
var parameter = command.CreateParameter();
|
var parameter = command.CreateParameter();
|
||||||
parameter.Value = value;
|
parameter.Value = value;
|
||||||
command.Parameters.Add(parameter);
|
command.Parameters.Add(parameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IMigrationRunnerBuilder AddNzbDroneSQLite(this IMigrationRunnerBuilder builder, bool binaryGuid = false, bool useStrictTables = false)
|
public static IMigrationRunnerBuilder AddNzbDroneSQLite(this IMigrationRunnerBuilder builder)
|
||||||
{
|
{
|
||||||
builder.Services
|
builder.Services
|
||||||
.AddTransient<SQLiteBatchParser>()
|
.AddTransient<SQLiteBatchParser>()
|
||||||
.AddScoped<SQLiteDbFactory>()
|
.AddScoped<SQLiteDbFactory>()
|
||||||
.AddScoped<NzbDroneSQLiteProcessor>(sp =>
|
.AddScoped<NzbDroneSQLiteProcessor>()
|
||||||
{
|
|
||||||
var factory = sp.GetService<SQLiteDbFactory>();
|
|
||||||
var logger = sp.GetService<ILogger<NzbDroneSQLiteProcessor>>();
|
|
||||||
var options = sp.GetService<IOptionsSnapshot<ProcessorOptions>>();
|
|
||||||
var connectionStringAccessor = sp.GetService<IConnectionStringAccessor>();
|
|
||||||
var sqliteQuoter = new SQLiteQuoter(false);
|
|
||||||
return new NzbDroneSQLiteProcessor(factory, sp.GetService<SQLiteGenerator>(), logger, options, connectionStringAccessor, sp, sqliteQuoter);
|
|
||||||
})
|
|
||||||
.AddScoped<ISQLiteTypeMap>(_ => new NzbDroneSQLiteTypeMap(useStrictTables))
|
|
||||||
.AddScoped<IMigrationProcessor>(sp => sp.GetRequiredService<NzbDroneSQLiteProcessor>())
|
.AddScoped<IMigrationProcessor>(sp => sp.GetRequiredService<NzbDroneSQLiteProcessor>())
|
||||||
.AddScoped(
|
.AddScoped<SQLiteQuoter>()
|
||||||
sp =>
|
.AddScoped<SQLiteGenerator>()
|
||||||
{
|
|
||||||
var typeMap = sp.GetRequiredService<ISQLiteTypeMap>();
|
|
||||||
return new SQLiteGenerator(
|
|
||||||
new SQLiteQuoter(binaryGuid),
|
|
||||||
typeMap,
|
|
||||||
new OptionsWrapper<GeneratorOptions>(new GeneratorOptions()));
|
|
||||||
})
|
|
||||||
.AddScoped<IMigrationGenerator>(sp => sp.GetRequiredService<SQLiteGenerator>());
|
.AddScoped<IMigrationGenerator>(sp => sp.GetRequiredService<SQLiteGenerator>());
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
{
|
{
|
||||||
public class NzbDroneSQLiteProcessor : SQLiteProcessor
|
public class NzbDroneSQLiteProcessor : SQLiteProcessor
|
||||||
{
|
{
|
||||||
private readonly SQLiteQuoter _quoter;
|
|
||||||
|
|
||||||
public NzbDroneSQLiteProcessor(SQLiteDbFactory factory,
|
public NzbDroneSQLiteProcessor(SQLiteDbFactory factory,
|
||||||
SQLiteGenerator generator,
|
SQLiteGenerator generator,
|
||||||
ILogger<NzbDroneSQLiteProcessor> logger,
|
ILogger<NzbDroneSQLiteProcessor> logger,
|
||||||
@@ -26,7 +24,6 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
SQLiteQuoter quoter)
|
SQLiteQuoter quoter)
|
||||||
: base(factory, generator, logger, options, connectionStringAccessor, serviceProvider, quoter)
|
: base(factory, generator, logger, options, connectionStringAccessor, serviceProvider, quoter)
|
||||||
{
|
{
|
||||||
_quoter = quoter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Process(AlterColumnExpression expression)
|
public override void Process(AlterColumnExpression expression)
|
||||||
@@ -38,7 +35,7 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
|
|
||||||
if (columnIndex == -1)
|
if (columnIndex == -1)
|
||||||
{
|
{
|
||||||
throw new ApplicationException($"Column {expression.Column.Name} does not exist on table {expression.TableName}.");
|
throw new ApplicationException(string.Format("Column {0} does not exist on table {1}.", expression.Column.Name, expression.TableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
columnDefinitions[columnIndex] = expression.Column;
|
columnDefinitions[columnIndex] = expression.Column;
|
||||||
@@ -48,28 +45,6 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
ProcessAlterTable(tableDefinition);
|
ProcessAlterTable(tableDefinition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Process(AlterDefaultConstraintExpression expression)
|
|
||||||
{
|
|
||||||
var tableDefinition = GetTableSchema(expression.TableName);
|
|
||||||
|
|
||||||
var columnDefinitions = tableDefinition.Columns.ToList();
|
|
||||||
var columnIndex = columnDefinitions.FindIndex(c => c.Name == expression.ColumnName);
|
|
||||||
|
|
||||||
if (columnIndex == -1)
|
|
||||||
{
|
|
||||||
throw new ApplicationException($"Column {expression.ColumnName} does not exist on table {expression.TableName}.");
|
|
||||||
}
|
|
||||||
|
|
||||||
var changedColumn = columnDefinitions[columnIndex];
|
|
||||||
changedColumn.DefaultValue = expression.DefaultValue;
|
|
||||||
|
|
||||||
columnDefinitions[columnIndex] = changedColumn;
|
|
||||||
|
|
||||||
tableDefinition.Columns = columnDefinitions;
|
|
||||||
|
|
||||||
ProcessAlterTable(tableDefinition);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Process(DeleteColumnExpression expression)
|
public override void Process(DeleteColumnExpression expression)
|
||||||
{
|
{
|
||||||
var tableDefinition = GetTableSchema(expression.TableName);
|
var tableDefinition = GetTableSchema(expression.TableName);
|
||||||
@@ -87,7 +62,7 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
|
|
||||||
if (columnsToRemove.Any())
|
if (columnsToRemove.Any())
|
||||||
{
|
{
|
||||||
throw new ApplicationException($"Column {columnsToRemove.First()} does not exist on table {expression.TableName}.");
|
throw new ApplicationException(string.Format("Column {0} does not exist on table {1}.", columnsToRemove.First(), expression.TableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
ProcessAlterTable(tableDefinition);
|
ProcessAlterTable(tableDefinition);
|
||||||
@@ -103,12 +78,12 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
|
|
||||||
if (columnIndex == -1)
|
if (columnIndex == -1)
|
||||||
{
|
{
|
||||||
throw new ApplicationException($"Column {expression.OldName} does not exist on table {expression.TableName}.");
|
throw new ApplicationException(string.Format("Column {0} does not exist on table {1}.", expression.OldName, expression.TableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (columnDefinitions.Any(c => c.Name == expression.NewName))
|
if (columnDefinitions.Any(c => c.Name == expression.NewName))
|
||||||
{
|
{
|
||||||
throw new ApplicationException($"Column {expression.NewName} already exists on table {expression.TableName}.");
|
throw new ApplicationException(string.Format("Column {0} already exists on table {1}.", expression.NewName, expression.TableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
oldColumnDefinitions[columnIndex] = (ColumnDefinition)columnDefinitions[columnIndex].Clone();
|
oldColumnDefinitions[columnIndex] = (ColumnDefinition)columnDefinitions[columnIndex].Clone();
|
||||||
@@ -153,20 +128,21 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
}
|
}
|
||||||
|
|
||||||
// What is the cleanest way to do this? Add function to Generator?
|
// What is the cleanest way to do this? Add function to Generator?
|
||||||
var columnsToInsert = string.Join(", ", tableDefinition.Columns.Select(c => _quoter.QuoteColumnName(c.Name)));
|
var quoter = new SQLiteQuoter();
|
||||||
var columnsToFetch = string.Join(", ", (oldColumnDefinitions ?? tableDefinition.Columns).Select(c => _quoter.QuoteColumnName(c.Name)));
|
var columnsToInsert = string.Join(", ", tableDefinition.Columns.Select(c => quoter.QuoteColumnName(c.Name)));
|
||||||
|
var columnsToFetch = string.Join(", ", (oldColumnDefinitions ?? tableDefinition.Columns).Select(c => quoter.QuoteColumnName(c.Name)));
|
||||||
|
|
||||||
Process(new CreateTableExpression { TableName = tempTableName, Columns = tableDefinition.Columns.ToList() });
|
Process(new CreateTableExpression() { TableName = tempTableName, Columns = tableDefinition.Columns.ToList() });
|
||||||
|
|
||||||
Process($"INSERT INTO {_quoter.QuoteTableName(tempTableName)} ({columnsToInsert}) SELECT {columnsToFetch} FROM {_quoter.QuoteTableName(tableName)}");
|
Process(string.Format("INSERT INTO {0} ({1}) SELECT {2} FROM {3}", quoter.QuoteTableName(tempTableName), columnsToInsert, columnsToFetch, quoter.QuoteTableName(tableName)));
|
||||||
|
|
||||||
Process(new DeleteTableExpression { TableName = tableName });
|
Process(new DeleteTableExpression() { TableName = tableName });
|
||||||
|
|
||||||
Process(new RenameTableExpression { OldName = tempTableName, NewName = tableName });
|
Process(new RenameTableExpression() { OldName = tempTableName, NewName = tableName });
|
||||||
|
|
||||||
foreach (var index in tableDefinition.Indexes)
|
foreach (var index in tableDefinition.Indexes)
|
||||||
{
|
{
|
||||||
Process(new CreateIndexExpression { Index = index });
|
Process(new CreateIndexExpression() { Index = index });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,76 +0,0 @@
|
|||||||
using System.Data;
|
|
||||||
using FluentMigrator.Runner.Generators.Base;
|
|
||||||
using FluentMigrator.Runner.Generators.SQLite;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.Datastore.Migration.Framework;
|
|
||||||
|
|
||||||
// Based on https://github.com/fluentmigrator/fluentmigrator/blob/v6.2.0/src/FluentMigrator.Runner.SQLite/Generators/SQLite/SQLiteTypeMap.cs
|
|
||||||
public sealed class NzbDroneSQLiteTypeMap : TypeMapBase, ISQLiteTypeMap
|
|
||||||
{
|
|
||||||
public bool UseStrictTables { get; }
|
|
||||||
|
|
||||||
public NzbDroneSQLiteTypeMap(bool useStrictTables = false)
|
|
||||||
{
|
|
||||||
UseStrictTables = useStrictTables;
|
|
||||||
|
|
||||||
SetupTypeMaps();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Must be kept in sync with upstream
|
|
||||||
protected override void SetupTypeMaps()
|
|
||||||
{
|
|
||||||
SetTypeMap(DbType.Binary, "BLOB");
|
|
||||||
SetTypeMap(DbType.Byte, "INTEGER");
|
|
||||||
SetTypeMap(DbType.Int16, "INTEGER");
|
|
||||||
SetTypeMap(DbType.Int32, "INTEGER");
|
|
||||||
SetTypeMap(DbType.Int64, "INTEGER");
|
|
||||||
SetTypeMap(DbType.SByte, "INTEGER");
|
|
||||||
SetTypeMap(DbType.UInt16, "INTEGER");
|
|
||||||
SetTypeMap(DbType.UInt32, "INTEGER");
|
|
||||||
SetTypeMap(DbType.UInt64, "INTEGER");
|
|
||||||
|
|
||||||
if (!UseStrictTables)
|
|
||||||
{
|
|
||||||
SetTypeMap(DbType.Currency, "NUMERIC");
|
|
||||||
SetTypeMap(DbType.Decimal, "NUMERIC");
|
|
||||||
SetTypeMap(DbType.Double, "NUMERIC");
|
|
||||||
SetTypeMap(DbType.Single, "NUMERIC");
|
|
||||||
SetTypeMap(DbType.VarNumeric, "NUMERIC");
|
|
||||||
SetTypeMap(DbType.Date, "DATETIME");
|
|
||||||
SetTypeMap(DbType.DateTime, "DATETIME");
|
|
||||||
SetTypeMap(DbType.DateTime2, "DATETIME");
|
|
||||||
SetTypeMap(DbType.Time, "DATETIME");
|
|
||||||
SetTypeMap(DbType.Guid, "UNIQUEIDENTIFIER");
|
|
||||||
|
|
||||||
// Custom so that we can use DateTimeOffset in Postgres for appropriate DB typing
|
|
||||||
SetTypeMap(DbType.DateTimeOffset, "DATETIME");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetTypeMap(DbType.Currency, "TEXT");
|
|
||||||
SetTypeMap(DbType.Decimal, "TEXT");
|
|
||||||
SetTypeMap(DbType.Double, "REAL");
|
|
||||||
SetTypeMap(DbType.Single, "REAL");
|
|
||||||
SetTypeMap(DbType.VarNumeric, "TEXT");
|
|
||||||
SetTypeMap(DbType.Date, "TEXT");
|
|
||||||
SetTypeMap(DbType.DateTime, "TEXT");
|
|
||||||
SetTypeMap(DbType.DateTime2, "TEXT");
|
|
||||||
SetTypeMap(DbType.Time, "TEXT");
|
|
||||||
SetTypeMap(DbType.Guid, "TEXT");
|
|
||||||
|
|
||||||
// Custom so that we can use DateTimeOffset in Postgres for appropriate DB typing
|
|
||||||
SetTypeMap(DbType.DateTimeOffset, "TEXT");
|
|
||||||
}
|
|
||||||
|
|
||||||
SetTypeMap(DbType.AnsiString, "TEXT");
|
|
||||||
SetTypeMap(DbType.String, "TEXT");
|
|
||||||
SetTypeMap(DbType.AnsiStringFixedLength, "TEXT");
|
|
||||||
SetTypeMap(DbType.StringFixedLength, "TEXT");
|
|
||||||
SetTypeMap(DbType.Boolean, "INTEGER");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string GetTypeMap(DbType type, int? size, int? precision)
|
|
||||||
{
|
|
||||||
return base.GetTypeMap(type, size: null, precision: null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -120,7 +120,7 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
column.IsPrimaryKey = upper.Contains("PRIMARY KEY");
|
column.IsPrimaryKey = upper.Contains("PRIMARY KEY");
|
||||||
column.IsIdentity = upper.Contains("AUTOINCREMENT");
|
column.IsIdentity = upper.Contains("AUTOINCREMENT");
|
||||||
column.IsNullable = !upper.Contains("NOT NULL") && !upper.Contains("PRIMARY KEY");
|
column.IsNullable = !upper.Contains("NOT NULL") && !upper.Contains("PRIMARY KEY");
|
||||||
column.IsUnique = upper.Contains("UNIQUE");
|
column.IsUnique = upper.Contains("UNIQUE") || upper.Contains("PRIMARY KEY");
|
||||||
}
|
}
|
||||||
|
|
||||||
return column;
|
return column;
|
||||||
|
|||||||
@@ -424,8 +424,8 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
|||||||
}
|
}
|
||||||
catch (HttpException ex)
|
catch (HttpException ex)
|
||||||
{
|
{
|
||||||
_logger.Debug(ex, "qbitTorrent authentication failed.");
|
_logger.Debug("qbitTorrent authentication failed.");
|
||||||
if (ex.Response.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
|
if (ex.Response.StatusCode == HttpStatusCode.Forbidden)
|
||||||
{
|
{
|
||||||
throw new DownloadClientAuthenticationException("Failed to authenticate with qBittorrent.", ex);
|
throw new DownloadClientAuthenticationException("Failed to authenticate with qBittorrent.", ex);
|
||||||
}
|
}
|
||||||
@@ -437,9 +437,9 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
|||||||
throw new DownloadClientUnavailableException("Failed to connect to qBittorrent, please check your settings.", ex);
|
throw new DownloadClientUnavailableException("Failed to connect to qBittorrent, please check your settings.", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns "Fails." on bad login
|
if (response.Content != "Ok.")
|
||||||
if (response.Content.IsNotNullOrWhiteSpace() && response.Content != "Ok.")
|
|
||||||
{
|
{
|
||||||
|
// returns "Fails." on bad login
|
||||||
_logger.Debug("qbitTorrent authentication failed.");
|
_logger.Debug("qbitTorrent authentication failed.");
|
||||||
throw new DownloadClientAuthenticationException("Failed to authenticate with qBittorrent.");
|
throw new DownloadClientAuthenticationException("Failed to authenticate with qBittorrent.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -669,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 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 seasonCharactersRegex = new Regex(@"(I{2,})$", RegexOptions.Compiled);
|
||||||
var seasonNumberRegex = new Regex(@"\b(?<!(Part|No\.)[- ._])(?<!\d[/])(?<!\#)(?:S)?(?<season>[2-9])$", RegexOptions.Compiled);
|
var seasonNumberRegex = new Regex(@"\b(?<!Part[- ._])(?<!\d[/])(?:S)?(?<season>[2-9])$", RegexOptions.Compiled);
|
||||||
|
|
||||||
foreach (var title in titles)
|
foreach (var title in titles)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,341 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using AngleSharp.Html.Parser;
|
||||||
|
using NLog;
|
||||||
|
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;
|
||||||
|
using NzbDrone.Core.Parser;
|
||||||
|
using NzbDrone.Core.Parser.Model;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Indexers.Definitions
|
||||||
|
{
|
||||||
|
public class AnimeTorrents : TorrentIndexerBase<AnimeTorrentsSettings>
|
||||||
|
{
|
||||||
|
public override string Name => "AnimeTorrents";
|
||||||
|
public override string[] IndexerUrls => new[] { "https://animetorrents.me/" };
|
||||||
|
public override string Description => "Definitive source for anime and manga";
|
||||||
|
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
||||||
|
public override bool SupportsPagination => true;
|
||||||
|
public override TimeSpan RateLimit => TimeSpan.FromSeconds(4);
|
||||||
|
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||||
|
|
||||||
|
public AnimeTorrents(IIndexerHttpClient httpClient, IEventAggregator eventAggregator, IIndexerStatusService indexerStatusService, IConfigService configService, Logger logger)
|
||||||
|
: base(httpClient, eventAggregator, indexerStatusService, configService, logger)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IIndexerRequestGenerator GetRequestGenerator()
|
||||||
|
{
|
||||||
|
return new AnimeTorrentsRequestGenerator(Settings, Capabilities);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IParseIndexerResponse GetParser()
|
||||||
|
{
|
||||||
|
return new AnimeTorrentsParser(Settings, Capabilities.Categories);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
|
||||||
|
{
|
||||||
|
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()
|
||||||
|
{
|
||||||
|
var caps = new IndexerCapabilities
|
||||||
|
{
|
||||||
|
TvSearchParams = new List<TvSearchParam>
|
||||||
|
{
|
||||||
|
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
|
||||||
|
},
|
||||||
|
MovieSearchParams = new List<MovieSearchParam>
|
||||||
|
{
|
||||||
|
MovieSearchParam.Q
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Anime Movie");
|
||||||
|
caps.Categories.AddCategoryMapping(6, NewznabStandardCategory.MoviesHD, "Anime Movie HD");
|
||||||
|
caps.Categories.AddCategoryMapping(2, NewznabStandardCategory.TVAnime, "Anime Series");
|
||||||
|
caps.Categories.AddCategoryMapping(7, NewznabStandardCategory.TVAnime, "Anime Series HD");
|
||||||
|
caps.Categories.AddCategoryMapping(5, NewznabStandardCategory.XXXDVD, "Hentai (censored)");
|
||||||
|
caps.Categories.AddCategoryMapping(9, NewznabStandardCategory.XXXDVD, "Hentai (censored) HD");
|
||||||
|
caps.Categories.AddCategoryMapping(4, NewznabStandardCategory.XXXDVD, "Hentai (un-censored)");
|
||||||
|
caps.Categories.AddCategoryMapping(8, NewznabStandardCategory.XXXDVD, "Hentai (un-censored) HD");
|
||||||
|
caps.Categories.AddCategoryMapping(13, NewznabStandardCategory.BooksForeign, "Light Novel");
|
||||||
|
caps.Categories.AddCategoryMapping(3, NewznabStandardCategory.BooksComics, "Manga");
|
||||||
|
caps.Categories.AddCategoryMapping(10, NewznabStandardCategory.BooksComics, "Manga 18+");
|
||||||
|
caps.Categories.AddCategoryMapping(11, NewznabStandardCategory.TVAnime, "OVA");
|
||||||
|
caps.Categories.AddCategoryMapping(12, NewznabStandardCategory.TVAnime, "OVA HD");
|
||||||
|
caps.Categories.AddCategoryMapping(14, NewznabStandardCategory.BooksComics, "Doujin Anime");
|
||||||
|
caps.Categories.AddCategoryMapping(15, NewznabStandardCategory.XXXDVD, "Doujin Anime 18+");
|
||||||
|
caps.Categories.AddCategoryMapping(16, NewznabStandardCategory.AudioForeign, "Doujin Music");
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AnimeTorrentsRequestGenerator : IIndexerRequestGenerator
|
||||||
|
{
|
||||||
|
private readonly AnimeTorrentsSettings _settings;
|
||||||
|
private readonly IndexerCapabilities _capabilities;
|
||||||
|
|
||||||
|
public AnimeTorrentsRequestGenerator(AnimeTorrentsSettings settings, IndexerCapabilities capabilities)
|
||||||
|
{
|
||||||
|
_settings = settings;
|
||||||
|
_capabilities = capabilities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
var searchTerm = $"{searchCriteria.SanitizedSearchTerm}";
|
||||||
|
|
||||||
|
foreach (var category in GetTrackerCategories(searchTerm, searchCriteria))
|
||||||
|
{
|
||||||
|
pageableRequests.Add(GetPagedRequests(searchTerm, category, searchCriteria));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
var searchTerm = $"{searchCriteria.SanitizedSearchTerm}";
|
||||||
|
|
||||||
|
foreach (var category in GetTrackerCategories(searchTerm, searchCriteria))
|
||||||
|
{
|
||||||
|
pageableRequests.Add(GetPagedRequests(searchTerm, category, searchCriteria));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
var searchTerm = $"{searchCriteria.SanitizedSearchTerm}";
|
||||||
|
|
||||||
|
foreach (var category in GetTrackerCategories(searchTerm, searchCriteria))
|
||||||
|
{
|
||||||
|
pageableRequests.Add(GetPagedRequests(searchTerm, category, searchCriteria));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
var searchTerm = $"{searchCriteria.SanitizedSearchTerm}";
|
||||||
|
|
||||||
|
foreach (var category in GetTrackerCategories(searchTerm, searchCriteria))
|
||||||
|
{
|
||||||
|
pageableRequests.Add(GetPagedRequests(searchTerm, category, searchCriteria));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
var searchTerm = $"{searchCriteria.SanitizedSearchTerm}";
|
||||||
|
|
||||||
|
foreach (var category in GetTrackerCategories(searchTerm, searchCriteria))
|
||||||
|
{
|
||||||
|
pageableRequests.Add(GetPagedRequests(searchTerm, category, searchCriteria));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerable<IndexerRequest> GetPagedRequests(string term, string category, SearchCriteriaBase searchCriteria)
|
||||||
|
{
|
||||||
|
var searchUrl = _settings.BaseUrl + "ajax/torrents_data.php";
|
||||||
|
|
||||||
|
// replace non-word characters with % (wildcard)
|
||||||
|
var searchString = Regex.Replace(term.Trim(), @"[\W]+", "%");
|
||||||
|
|
||||||
|
var page = searchCriteria.Limit is > 0 && searchCriteria.Offset is > 0 ? (int)(searchCriteria.Offset / searchCriteria.Limit) + 1 : 1;
|
||||||
|
|
||||||
|
var refererUri = new HttpUri(_settings.BaseUrl)
|
||||||
|
.CombinePath("/torrents.php")
|
||||||
|
.AddQueryParam("cat", $"{category}");
|
||||||
|
|
||||||
|
if (_settings.DownloadableOnly)
|
||||||
|
{
|
||||||
|
refererUri = refererUri.AddQueryParam("dlable", "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
var requestBuilder = new HttpRequestBuilder(searchUrl)
|
||||||
|
.AddQueryParam("total", "100") // Assuming the total number of pages
|
||||||
|
.AddQueryParam("cat", $"{category}")
|
||||||
|
.AddQueryParam("searchin", "filename")
|
||||||
|
.AddQueryParam("search", searchString)
|
||||||
|
.AddQueryParam("page", page)
|
||||||
|
.SetHeader("X-Requested-With", "XMLHttpRequest")
|
||||||
|
.SetHeader("Referer", refererUri.FullUri)
|
||||||
|
.Accept(HttpAccept.Html);
|
||||||
|
|
||||||
|
if (_settings.DownloadableOnly)
|
||||||
|
{
|
||||||
|
requestBuilder.AddQueryParam("dlable", "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
yield return new IndexerRequest(requestBuilder.Build());
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<string> GetTrackerCategories(string term, SearchCriteriaBase searchCriteria)
|
||||||
|
{
|
||||||
|
var searchTerm = term.Trim();
|
||||||
|
|
||||||
|
var categoryMapping = _capabilities.Categories
|
||||||
|
.MapTorznabCapsToTrackers(searchCriteria.Categories)
|
||||||
|
.Distinct()
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
return searchTerm.IsNullOrWhiteSpace() && categoryMapping.Count == 2
|
||||||
|
? categoryMapping
|
||||||
|
: new List<string> { categoryMapping.FirstIfSingleOrDefault("0") };
|
||||||
|
}
|
||||||
|
|
||||||
|
public Func<IDictionary<string, string>> GetCookies { get; set; }
|
||||||
|
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AnimeTorrentsParser : IParseIndexerResponse
|
||||||
|
{
|
||||||
|
private readonly AnimeTorrentsSettings _settings;
|
||||||
|
private readonly IndexerCapabilitiesCategories _categories;
|
||||||
|
|
||||||
|
public AnimeTorrentsParser(AnimeTorrentsSettings settings, IndexerCapabilitiesCategories categories)
|
||||||
|
{
|
||||||
|
_settings = settings;
|
||||||
|
_categories = categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
||||||
|
{
|
||||||
|
var releaseInfos = new List<ReleaseInfo>();
|
||||||
|
|
||||||
|
var parser = new HtmlParser();
|
||||||
|
using var dom = parser.ParseDocument(indexerResponse.Content);
|
||||||
|
|
||||||
|
var rows = dom.QuerySelectorAll("table tr");
|
||||||
|
foreach (var (row, index) in rows.Skip(1).Select((v, i) => (v, i)))
|
||||||
|
{
|
||||||
|
var downloadVolumeFactor = row.QuerySelector("img[alt=\"Gold Torrent\"]") != null ? 0 : row.QuerySelector("img[alt=\"Silver Torrent\"]") != null ? 0.5 : 1;
|
||||||
|
|
||||||
|
// skip non-freeleech results when freeleech only is set
|
||||||
|
if (_settings.FreeleechOnly && downloadVolumeFactor != 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var qTitleLink = row.QuerySelector("td:nth-of-type(2) a:nth-of-type(1)");
|
||||||
|
var title = qTitleLink?.TextContent.Trim();
|
||||||
|
|
||||||
|
// If we search and get no results, we still get a table just with no info.
|
||||||
|
if (title.IsNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var infoUrl = qTitleLink?.GetAttribute("href");
|
||||||
|
|
||||||
|
// newbie users don't see DL links
|
||||||
|
// use details link as placeholder
|
||||||
|
// skipping the release prevents newbie users from adding the tracker (empty result)
|
||||||
|
var downloadUrl = row.QuerySelector("td:nth-of-type(3) a")?.GetAttribute("href") ?? infoUrl;
|
||||||
|
|
||||||
|
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");
|
||||||
|
|
||||||
|
var publishedDate = DateTime.ParseExact(row.QuerySelector("td:nth-of-type(5)").TextContent, "dd MMM yy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
|
||||||
|
|
||||||
|
if (publishedDate.Date == DateTime.Today)
|
||||||
|
{
|
||||||
|
publishedDate = publishedDate.Date + DateTime.Now.TimeOfDay - TimeSpan.FromMinutes(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
var release = new TorrentInfo
|
||||||
|
{
|
||||||
|
Guid = infoUrl,
|
||||||
|
InfoUrl = infoUrl,
|
||||||
|
DownloadUrl = downloadUrl,
|
||||||
|
Title = title,
|
||||||
|
Categories = _categories.MapTrackerCatToNewznab(categoryId),
|
||||||
|
PublishDate = publishedDate,
|
||||||
|
Size = ParseUtil.GetBytes(row.QuerySelector("td:nth-of-type(6)").TextContent.Trim()),
|
||||||
|
Seeders = seeders,
|
||||||
|
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 uploadFactor = row.QuerySelector("img[alt*=\"x Multiplier Torrent\"]")?.GetAttribute("alt");
|
||||||
|
if (uploadFactor != null)
|
||||||
|
{
|
||||||
|
release.UploadVolumeFactor = ParseUtil.CoerceDouble(uploadFactor.Split('x')[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
releaseInfos.Add(release);
|
||||||
|
}
|
||||||
|
|
||||||
|
return releaseInfos.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AnimeTorrentsSettings : CookieTorrentBaseSettings
|
||||||
|
{
|
||||||
|
public AnimeTorrentsSettings()
|
||||||
|
{
|
||||||
|
FreeleechOnly = false;
|
||||||
|
DownloadableOnly = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
[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)", Advanced = true)]
|
||||||
|
public bool DownloadableOnly { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,156 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using NLog;
|
|
||||||
using NzbDrone.Common.Extensions;
|
|
||||||
using NzbDrone.Common.Http;
|
|
||||||
using NzbDrone.Core.Configuration;
|
|
||||||
using NzbDrone.Core.Exceptions;
|
|
||||||
using NzbDrone.Core.Indexers.Definitions.Avistaz;
|
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
|
||||||
using NzbDrone.Core.Messaging.Events;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers.Definitions;
|
|
||||||
|
|
||||||
public class AnimeZ : AvistazBase
|
|
||||||
{
|
|
||||||
public override string Name => "AnimeZ";
|
|
||||||
public override string[] IndexerUrls => new[] { "https://animez.to/" };
|
|
||||||
public override string Description => "AnimeZ (ex-AnimeTorrents) is a Private Torrent Tracker for ANIME / MANGA";
|
|
||||||
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
|
||||||
|
|
||||||
public AnimeZ(IIndexerRepository indexerRepository,
|
|
||||||
IIndexerHttpClient httpClient,
|
|
||||||
IEventAggregator eventAggregator,
|
|
||||||
IIndexerStatusService indexerStatusService,
|
|
||||||
IConfigService configService,
|
|
||||||
Logger logger)
|
|
||||||
: base(indexerRepository, httpClient, eventAggregator, indexerStatusService, configService, logger)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override IIndexerRequestGenerator GetRequestGenerator()
|
|
||||||
{
|
|
||||||
return new AnimeZRequestGenerator
|
|
||||||
{
|
|
||||||
Settings = Settings,
|
|
||||||
Capabilities = Capabilities,
|
|
||||||
PageSize = PageSize,
|
|
||||||
HttpClient = _httpClient,
|
|
||||||
Logger = _logger
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public override IParseIndexerResponse GetParser()
|
|
||||||
{
|
|
||||||
return new AnimeZParser(Capabilities.Categories);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override async Task<IndexerDownloadResponse> Download(Uri link)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return await base.Download(link).ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
catch (ReleaseDownloadException ex) when (ex.InnerException is HttpException httpException &&
|
|
||||||
httpException.Response.StatusCode is HttpStatusCode.Unauthorized)
|
|
||||||
{
|
|
||||||
await DoLogin().ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
return await base.Download(link).ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override Task<HttpRequest> GetDownloadRequest(Uri link)
|
|
||||||
{
|
|
||||||
var request = new HttpRequestBuilder(link.AbsoluteUri)
|
|
||||||
.Accept(HttpAccept.Json)
|
|
||||||
.SetHeader("Authorization", $"Bearer {Settings.Token}")
|
|
||||||
.Build();
|
|
||||||
|
|
||||||
return Task.FromResult(request);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override IndexerCapabilities SetCapabilities()
|
|
||||||
{
|
|
||||||
var caps = new IndexerCapabilities
|
|
||||||
{
|
|
||||||
LimitsDefault = PageSize,
|
|
||||||
LimitsMax = PageSize,
|
|
||||||
TvSearchParams = new List<TvSearchParam>
|
|
||||||
{
|
|
||||||
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
|
|
||||||
},
|
|
||||||
MovieSearchParams = new List<MovieSearchParam>
|
|
||||||
{
|
|
||||||
MovieSearchParam.Q
|
|
||||||
},
|
|
||||||
BookSearchParams = new List<BookSearchParam>
|
|
||||||
{
|
|
||||||
BookSearchParam.Q,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
caps.Categories.AddCategoryMapping("TV", NewznabStandardCategory.TVAnime, "Anime > TV");
|
|
||||||
caps.Categories.AddCategoryMapping("TV_SHORT", NewznabStandardCategory.TVAnime, "Anime > TV Short");
|
|
||||||
caps.Categories.AddCategoryMapping("MOVIE", NewznabStandardCategory.Movies, "Anime > Movie");
|
|
||||||
caps.Categories.AddCategoryMapping("SPECIAL", NewznabStandardCategory.TVAnime, "Anime > Special");
|
|
||||||
caps.Categories.AddCategoryMapping("OVA", NewznabStandardCategory.TVAnime, "Anime > OVA");
|
|
||||||
caps.Categories.AddCategoryMapping("ONA", NewznabStandardCategory.TVAnime, "Anime > ONA");
|
|
||||||
caps.Categories.AddCategoryMapping("MUSIC", NewznabStandardCategory.TVAnime, "Anime > Music");
|
|
||||||
caps.Categories.AddCategoryMapping("MANGA", NewznabStandardCategory.BooksComics, "Manga > Manga");
|
|
||||||
caps.Categories.AddCategoryMapping("NOVEL", NewznabStandardCategory.BooksForeign, "Manga > Novel");
|
|
||||||
caps.Categories.AddCategoryMapping("ONE_SHOT", NewznabStandardCategory.BooksForeign, "Manga > One-Shot");
|
|
||||||
|
|
||||||
return caps;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AnimeZRequestGenerator : AvistazRequestGenerator
|
|
||||||
{
|
|
||||||
protected override List<KeyValuePair<string, string>> GetBasicSearchParameters(SearchCriteriaBase searchCriteria, string genre = null)
|
|
||||||
{
|
|
||||||
var parameters = new List<KeyValuePair<string, string>>
|
|
||||||
{
|
|
||||||
{ "limit", Math.Min(PageSize, searchCriteria.Limit.GetValueOrDefault(PageSize)).ToString() }
|
|
||||||
};
|
|
||||||
|
|
||||||
var categoryMappings = Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories).Distinct().ToList();
|
|
||||||
|
|
||||||
if (categoryMappings.Any())
|
|
||||||
{
|
|
||||||
foreach (var category in categoryMappings)
|
|
||||||
{
|
|
||||||
parameters.Add("format[]", category);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (searchCriteria.Limit is > 0 && searchCriteria.Offset is > 0)
|
|
||||||
{
|
|
||||||
var page = (int)(searchCriteria.Offset / searchCriteria.Limit) + 1;
|
|
||||||
parameters.Add("page", page.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Settings.FreeleechOnly)
|
|
||||||
{
|
|
||||||
parameters.Add("freeleech", "1");
|
|
||||||
}
|
|
||||||
|
|
||||||
return parameters;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AnimeZParser(IndexerCapabilitiesCategories categories) : AvistazParserBase
|
|
||||||
{
|
|
||||||
protected override List<IndexerCategory> ParseCategories(AvistazRelease row)
|
|
||||||
{
|
|
||||||
return categories.MapTrackerCatToNewznab(row.Format).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string ParseTitle(AvistazRelease row)
|
|
||||||
{
|
|
||||||
return row.ReleaseTitle.IsNotNullOrWhiteSpace() ? row.ReleaseTitle : row.FileName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,77 +5,72 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
{
|
{
|
||||||
public class AvistazRelease
|
public class AvistazRelease
|
||||||
{
|
{
|
||||||
public string Url { get; init; }
|
public string Url { get; set; }
|
||||||
public string Download { get; init; }
|
public string Download { get; set; }
|
||||||
public Dictionary<string, string> Category { get; init; }
|
public Dictionary<string, string> Category { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("movie_tv")]
|
[JsonPropertyName("movie_tv")]
|
||||||
public AvistazIdInfo MovieTvinfo { get; init; }
|
public AvistazIdInfo MovieTvinfo { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("created_at")]
|
||||||
|
public string CreatedAt { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("created_at_iso")]
|
[JsonPropertyName("created_at_iso")]
|
||||||
public string CreatedAtIso { get; init; }
|
public string CreatedAtIso { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("file_name")]
|
[JsonPropertyName("file_name")]
|
||||||
public string FileName { get; init; }
|
public string FileName { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("release_title")]
|
|
||||||
public string ReleaseTitle { get; init; }
|
|
||||||
|
|
||||||
[JsonPropertyName("info_hash")]
|
[JsonPropertyName("info_hash")]
|
||||||
public string InfoHash { get; init; }
|
public string InfoHash { get; set; }
|
||||||
|
public int? Leech { get; set; }
|
||||||
public int? Leech { get; init; }
|
public int? Completed { get; set; }
|
||||||
public int? Completed { get; init; }
|
public int? Seed { get; set; }
|
||||||
public int? Seed { get; init; }
|
|
||||||
|
|
||||||
[JsonPropertyName("file_size")]
|
[JsonPropertyName("file_size")]
|
||||||
public long? FileSize { get; init; }
|
public long? FileSize { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("file_count")]
|
[JsonPropertyName("file_count")]
|
||||||
public int? FileCount { get; init; }
|
public int? FileCount { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("download_multiply")]
|
[JsonPropertyName("download_multiply")]
|
||||||
public double? DownloadMultiply { get; init; }
|
public double? DownloadMultiply { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("upload_multiply")]
|
[JsonPropertyName("upload_multiply")]
|
||||||
public double? UploadMultiply { get; init; }
|
public double? UploadMultiply { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("video_quality")]
|
[JsonPropertyName("video_quality")]
|
||||||
public string VideoQuality { get; init; }
|
public string VideoQuality { get; set; }
|
||||||
|
public string Type { get; set; }
|
||||||
public string Type { get; init; }
|
public List<AvistazLanguage> Audio { get; set; }
|
||||||
|
public List<AvistazLanguage> Subtitle { get; set; }
|
||||||
public string Format { get; init; }
|
|
||||||
|
|
||||||
public IReadOnlyCollection<AvistazLanguage> Audio { get; init; }
|
|
||||||
public IReadOnlyCollection<AvistazLanguage> Subtitle { get; init; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AvistazLanguage
|
public class AvistazLanguage
|
||||||
{
|
{
|
||||||
public int Id { get; init; }
|
public int Id { get; set; }
|
||||||
public string Language { get; init; }
|
public string Language { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AvistazResponse
|
public class AvistazResponse
|
||||||
{
|
{
|
||||||
public IReadOnlyCollection<AvistazRelease> Data { get; init; }
|
public List<AvistazRelease> Data { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AvistazErrorResponse
|
public class AvistazErrorResponse
|
||||||
{
|
{
|
||||||
public string Message { get; init; }
|
public string Message { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AvistazIdInfo
|
public class AvistazIdInfo
|
||||||
{
|
{
|
||||||
public string Tmdb { get; init; }
|
public string Tmdb { get; set; }
|
||||||
public string Tvdb { get; init; }
|
public string Tvdb { get; set; }
|
||||||
public string Imdb { get; init; }
|
public string Imdb { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AvistazAuthResponse
|
public class AvistazAuthResponse
|
||||||
{
|
{
|
||||||
public string Token { get; init; }
|
public string Token { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using FluentValidation.Results;
|
using FluentValidation.Results;
|
||||||
using NLog;
|
using NLog;
|
||||||
@@ -20,7 +21,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
public override TimeSpan RateLimit => TimeSpan.FromSeconds(6);
|
public override TimeSpan RateLimit => TimeSpan.FromSeconds(6);
|
||||||
public override IndexerCapabilities Capabilities => SetCapabilities();
|
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||||
protected virtual string LoginUrl => Settings.BaseUrl + "api/v1/jackett/auth";
|
protected virtual string LoginUrl => Settings.BaseUrl + "api/v1/jackett/auth";
|
||||||
private readonly IIndexerRepository _indexerRepository;
|
private IIndexerRepository _indexerRepository;
|
||||||
|
|
||||||
public AvistazBase(IIndexerRepository indexerRepository,
|
public AvistazBase(IIndexerRepository indexerRepository,
|
||||||
IIndexerHttpClient httpClient,
|
IIndexerHttpClient httpClient,
|
||||||
@@ -56,7 +57,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Settings.Token = await GetToken().ConfigureAwait(false);
|
Settings.Token = await GetToken();
|
||||||
|
|
||||||
if (Definition.Id > 0)
|
if (Definition.Id > 0)
|
||||||
{
|
{
|
||||||
@@ -65,7 +66,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
|
|
||||||
_logger.Debug("Avistaz authentication succeeded.");
|
_logger.Debug("Avistaz authentication succeeded.");
|
||||||
}
|
}
|
||||||
catch (HttpException ex) when (ex.Response.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.UnprocessableEntity)
|
catch (HttpException ex) when (ex.Response.StatusCode == HttpStatusCode.Unauthorized)
|
||||||
{
|
{
|
||||||
_logger.Warn(ex, "Failed to authenticate with Avistaz");
|
_logger.Warn(ex, "Failed to authenticate with Avistaz");
|
||||||
|
|
||||||
@@ -89,11 +90,11 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await GetToken().ConfigureAwait(false);
|
await GetToken();
|
||||||
}
|
}
|
||||||
catch (HttpException ex)
|
catch (HttpException ex)
|
||||||
{
|
{
|
||||||
if (ex.Response.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.UnprocessableEntity)
|
if (ex.Response.StatusCode == HttpStatusCode.Unauthorized)
|
||||||
{
|
{
|
||||||
_logger.Warn(ex, "Unauthorized request to indexer");
|
_logger.Warn(ex, "Unauthorized request to indexer");
|
||||||
|
|
||||||
@@ -109,10 +110,10 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
{
|
{
|
||||||
_logger.Warn(ex, "Unable to connect to indexer");
|
_logger.Warn(ex, "Unable to connect to indexer");
|
||||||
|
|
||||||
return new ValidationFailure(string.Empty, "Unable to connect to indexer, check the log above the ValidationFailure for more details. " + ex.Message);
|
return new ValidationFailure(string.Empty, "Unable to connect to indexer, check the log above the ValidationFailure for more details");
|
||||||
}
|
}
|
||||||
|
|
||||||
return await base.TestConnection().ConfigureAwait(false);
|
return await base.TestConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<string> GetToken()
|
private async Task<string> GetToken()
|
||||||
@@ -120,17 +121,18 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
var requestBuilder = new HttpRequestBuilder(LoginUrl)
|
var requestBuilder = new HttpRequestBuilder(LoginUrl)
|
||||||
{
|
{
|
||||||
LogResponseContent = true,
|
LogResponseContent = true,
|
||||||
|
Method = HttpMethod.Post
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TODO: Change to HttpAccept.Json after they fix the issue with missing headers
|
||||||
var authLoginRequest = requestBuilder
|
var authLoginRequest = requestBuilder
|
||||||
.Post()
|
|
||||||
.AddFormParameter("username", Settings.Username)
|
.AddFormParameter("username", Settings.Username)
|
||||||
.AddFormParameter("password", Settings.Password)
|
.AddFormParameter("password", Settings.Password)
|
||||||
.AddFormParameter("pid", Settings.Pid.Trim())
|
.AddFormParameter("pid", Settings.Pid.Trim())
|
||||||
.Accept(HttpAccept.Json)
|
.Accept(HttpAccept.Html)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var response = await ExecuteAuth(authLoginRequest).ConfigureAwait(false);
|
var response = await ExecuteAuth(authLoginRequest);
|
||||||
|
|
||||||
if (!STJson.TryDeserialize<AvistazAuthResponse>(response.Content, out var authResponse))
|
if (!STJson.TryDeserialize<AvistazAuthResponse>(response.Content, out var authResponse))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
|
|
||||||
if (indexerResponse.HttpResponse.StatusCode == HttpStatusCode.NotFound)
|
if (indexerResponse.HttpResponse.StatusCode == HttpStatusCode.NotFound)
|
||||||
{
|
{
|
||||||
return releaseInfos;
|
return releaseInfos.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (indexerResponse.HttpResponse.StatusCode == HttpStatusCode.TooManyRequests)
|
if (indexerResponse.HttpResponse.StatusCode == HttpStatusCode.TooManyRequests)
|
||||||
@@ -52,28 +52,31 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
|
|
||||||
foreach (var row in jsonResponse.Data)
|
foreach (var row in jsonResponse.Data)
|
||||||
{
|
{
|
||||||
var detailsUrl = row.Url;
|
var details = row.Url;
|
||||||
|
var link = row.Download;
|
||||||
|
|
||||||
|
var cats = ParseCategories(row);
|
||||||
|
|
||||||
var release = new TorrentInfo
|
var release = new TorrentInfo
|
||||||
{
|
{
|
||||||
Guid = detailsUrl,
|
Title = row.FileName,
|
||||||
InfoUrl = detailsUrl,
|
DownloadUrl = link,
|
||||||
Title = ParseTitle(row),
|
|
||||||
DownloadUrl = row.Download,
|
|
||||||
Categories = ParseCategories(row).ToList(),
|
|
||||||
InfoHash = row.InfoHash,
|
InfoHash = row.InfoHash,
|
||||||
|
InfoUrl = details,
|
||||||
|
Guid = details,
|
||||||
|
Categories = cats,
|
||||||
|
PublishDate = DateTime.Parse(row.CreatedAtIso, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
|
||||||
Size = row.FileSize,
|
Size = row.FileSize,
|
||||||
Files = row.FileCount,
|
Files = row.FileCount,
|
||||||
Grabs = row.Completed,
|
Grabs = row.Completed,
|
||||||
Seeders = row.Seed,
|
Seeders = row.Seed,
|
||||||
Peers = row.Leech + row.Seed,
|
Peers = row.Leech + row.Seed,
|
||||||
PublishDate = DateTime.Parse(row.CreatedAtIso, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
|
|
||||||
DownloadVolumeFactor = row.DownloadMultiply,
|
DownloadVolumeFactor = row.DownloadMultiply,
|
||||||
UploadVolumeFactor = row.UploadMultiply,
|
UploadVolumeFactor = row.UploadMultiply,
|
||||||
MinimumRatio = 1,
|
MinimumRatio = 1,
|
||||||
MinimumSeedTime = 259200, // 72 hours
|
MinimumSeedTime = 259200, // 72 hours
|
||||||
Languages = row.Audio?.Select(x => x.Language).ToList() ?? [],
|
Languages = row.Audio?.Select(x => x.Language).ToList() ?? new List<string>(),
|
||||||
Subs = row.Subtitle?.Select(x => x.Language).ToList() ?? []
|
Subs = row.Subtitle?.Select(x => x.Language).ToList() ?? new List<string>()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (row.FileSize is > 0)
|
if (row.FileSize is > 0)
|
||||||
@@ -87,57 +90,54 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (row.MovieTvinfo is not null)
|
if (row.MovieTvinfo != null)
|
||||||
{
|
{
|
||||||
release.ImdbId = ParseUtil.GetImdbId(row.MovieTvinfo.Imdb).GetValueOrDefault();
|
release.ImdbId = ParseUtil.GetImdbId(row.MovieTvinfo.Imdb).GetValueOrDefault();
|
||||||
release.TmdbId = row.MovieTvinfo.Tmdb.IsNotNullOrWhiteSpace() && ParseUtil.TryCoerceInt(row.MovieTvinfo.Tmdb, out var tmdbResult) ? tmdbResult : 0;
|
release.TmdbId = row.MovieTvinfo.Tmdb.IsNullOrWhiteSpace() ? 0 : ParseUtil.TryCoerceInt(row.MovieTvinfo.Tmdb, out var tmdbResult) ? tmdbResult : 0;
|
||||||
release.TvdbId = row.MovieTvinfo.Tvdb.IsNotNullOrWhiteSpace() && ParseUtil.TryCoerceInt(row.MovieTvinfo.Tvdb, out var tvdbResult) ? tvdbResult : 0;
|
release.TvdbId = row.MovieTvinfo.Tvdb.IsNullOrWhiteSpace() ? 0 : ParseUtil.TryCoerceInt(row.MovieTvinfo.Tvdb, out var tvdbResult) ? tvdbResult : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
releaseInfos.Add(release);
|
releaseInfos.Add(release);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// order by date
|
||||||
return releaseInfos
|
return releaseInfos
|
||||||
.OrderByDescending(o => o.PublishDate)
|
.OrderByDescending(o => o.PublishDate)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual IReadOnlyList<IndexerCategory> ParseCategories(AvistazRelease row)
|
// hook to adjust category parsing
|
||||||
|
protected virtual List<IndexerCategory> ParseCategories(AvistazRelease row)
|
||||||
{
|
{
|
||||||
var categories = new List<IndexerCategory>();
|
var cats = new List<IndexerCategory>();
|
||||||
var videoQuality = row.VideoQuality;
|
var resolution = row.VideoQuality;
|
||||||
|
|
||||||
switch (row.Type.ToUpperInvariant())
|
switch (row.Type)
|
||||||
{
|
{
|
||||||
case "MOVIE":
|
case "Movie":
|
||||||
categories.Add(videoQuality switch
|
cats.Add(resolution switch
|
||||||
{
|
{
|
||||||
var res when _hdResolutions.Contains(res) => NewznabStandardCategory.MoviesHD,
|
var res when _hdResolutions.Contains(res) => NewznabStandardCategory.MoviesHD,
|
||||||
"2160p" => NewznabStandardCategory.MoviesUHD,
|
"2160p" => NewznabStandardCategory.MoviesUHD,
|
||||||
_ => NewznabStandardCategory.MoviesSD
|
_ => NewznabStandardCategory.MoviesSD
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "TV-SHOW":
|
case "TV-Show":
|
||||||
categories.Add(videoQuality switch
|
cats.Add(resolution switch
|
||||||
{
|
{
|
||||||
var res when _hdResolutions.Contains(res) => NewznabStandardCategory.TVHD,
|
var res when _hdResolutions.Contains(res) => NewznabStandardCategory.TVHD,
|
||||||
"2160p" => NewznabStandardCategory.TVUHD,
|
"2160p" => NewznabStandardCategory.TVUHD,
|
||||||
_ => NewznabStandardCategory.TVSD
|
_ => NewznabStandardCategory.TVSD
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "MUSIC":
|
case "Music":
|
||||||
categories.Add(NewznabStandardCategory.Audio);
|
cats.Add(NewznabStandardCategory.Audio);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Exception($"Error parsing Avistaz category type \"{row.Type}\"");
|
throw new Exception($"Error parsing Avistaz category type {row.Type}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return categories;
|
return cats;
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual string ParseTitle(AvistazRelease row)
|
|
||||||
{
|
|
||||||
return row.FileName;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,10 +82,11 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
{
|
{
|
||||||
var searchUrl = SearchUrl + "?" + searchParameters.GetQueryString();
|
var searchUrl = SearchUrl + "?" + searchParameters.GetQueryString();
|
||||||
|
|
||||||
var request = new IndexerRequest(searchUrl, HttpAccept.Json);
|
// TODO: Change to HttpAccept.Json after they fix the issue with missing headers
|
||||||
request.HttpRequest.Headers.Set("Authorization", $"Bearer {Settings.Token}");
|
var request = new IndexerRequest(searchUrl, HttpAccept.Html);
|
||||||
|
request.HttpRequest.Headers.Add("Authorization", $"Bearer {Settings.Token}");
|
||||||
|
|
||||||
request.HttpRequest.SuppressHttpErrorStatusCodes = [HttpStatusCode.NotFound];
|
request.HttpRequest.SuppressHttpErrorStatusCodes = new[] { HttpStatusCode.NotFound };
|
||||||
|
|
||||||
yield return request;
|
yield return request;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,13 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||||||
{
|
{
|
||||||
private static readonly AvistazSettingsValidator Validator = new();
|
private static readonly AvistazSettingsValidator Validator = new();
|
||||||
|
|
||||||
public string Token { get; set; } = string.Empty;
|
public AvistazSettings()
|
||||||
|
{
|
||||||
|
Token = "";
|
||||||
|
FreeleechOnly = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Token { get; set; }
|
||||||
|
|
||||||
[FieldDefinition(2, Label = "Username", HelpText = "IndexerAvistazSettingsUsernameHelpText", HelpTextWarning = "IndexerAvistazSettingsUsernameHelpTextWarning", Privacy = PrivacyLevel.UserName)]
|
[FieldDefinition(2, Label = "Username", HelpText = "IndexerAvistazSettingsUsernameHelpText", HelpTextWarning = "IndexerAvistazSettingsUsernameHelpTextWarning", Privacy = PrivacyLevel.UserName)]
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
}
|
}
|
||||||
else if (tmdbId > 0)
|
else if (tmdbId > 0)
|
||||||
{
|
{
|
||||||
body.Add("tmdb_id", $"movie/{tmdbId}");
|
body.Add("tmdb_id", tmdbId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (searchTerm.IsNotNullOrWhiteSpace())
|
if (searchTerm.IsNotNullOrWhiteSpace())
|
||||||
|
|||||||
+1
-1
@@ -74,7 +74,7 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
|||||||
else if (DateTime.TryParseExact($"{searchCriteria.Season} {searchCriteria.Episode}", "yyyy MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var showDate))
|
else if (DateTime.TryParseExact($"{searchCriteria.Season} {searchCriteria.Episode}", "yyyy MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var showDate))
|
||||||
{
|
{
|
||||||
// Daily Episode
|
// Daily Episode
|
||||||
parameters.Name = showDate.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture) + "%";
|
parameters.Name = showDate.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture);
|
||||||
parameters.Category = "Episode";
|
parameters.Category = "Episode";
|
||||||
pageableRequests.Add(GetPagedRequests(parameters, btnResults, btnOffset));
|
pageableRequests.Add(GetPagedRequests(parameters, btnResults, btnOffset));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
using System;
|
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Core.Configuration;
|
using NzbDrone.Core.Configuration;
|
||||||
using NzbDrone.Core.Indexers.Definitions.Gazelle;
|
using NzbDrone.Core.Indexers.Definitions.Gazelle;
|
||||||
@@ -6,7 +5,6 @@ using NzbDrone.Core.Messaging.Events;
|
|||||||
|
|
||||||
namespace NzbDrone.Core.Indexers.Definitions;
|
namespace NzbDrone.Core.Indexers.Definitions;
|
||||||
|
|
||||||
[Obsolete("Moved to YML for Cardigann")]
|
|
||||||
public class CGPeers : GazelleBase<GazelleSettings>
|
public class CGPeers : GazelleBase<GazelleSettings>
|
||||||
{
|
{
|
||||||
public override string Name => "CGPeers";
|
public override string Name => "CGPeers";
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ public class FunFile : TorrentIndexerBase<UserPassTorrentBaseSettings>
|
|||||||
};
|
};
|
||||||
|
|
||||||
var authLoginRequest = requestBuilder
|
var authLoginRequest = requestBuilder
|
||||||
.SetEncoding(Encoding)
|
|
||||||
.AddFormParameter("username", Settings.Username)
|
.AddFormParameter("username", Settings.Username)
|
||||||
.AddFormParameter("password", Settings.Password)
|
.AddFormParameter("password", Settings.Password)
|
||||||
.AddFormParameter("returnto", "")
|
.AddFormParameter("returnto", "")
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Specialized;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
@@ -111,26 +112,25 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var queryParams = new NameValueCollection
|
var queryParams = new NebulanceQuery
|
||||||
{
|
{
|
||||||
{ "action", "search" },
|
Age = ">0"
|
||||||
{ "age", ">0" },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (searchCriteria.TvMazeId is > 0)
|
if (searchCriteria.TvMazeId is > 0)
|
||||||
{
|
{
|
||||||
queryParams.Set("tvmaze", searchCriteria.TvMazeId.ToString());
|
queryParams.TvMaze = searchCriteria.TvMazeId.Value;
|
||||||
}
|
}
|
||||||
else if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace())
|
else if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
queryParams.Set("imdb", searchCriteria.FullImdbId);
|
queryParams.Imdb = searchCriteria.FullImdbId;
|
||||||
}
|
}
|
||||||
|
|
||||||
var searchQuery = searchCriteria.SanitizedSearchTerm.Trim();
|
var searchQuery = searchCriteria.SanitizedSearchTerm.Trim();
|
||||||
|
|
||||||
if (searchQuery.IsNotNullOrWhiteSpace())
|
if (searchQuery.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
queryParams.Set("release", searchQuery);
|
queryParams.Release = searchQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (searchCriteria.Season.HasValue &&
|
if (searchCriteria.Season.HasValue &&
|
||||||
@@ -139,43 +139,43 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
if (searchQuery.IsNotNullOrWhiteSpace())
|
if (searchQuery.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
queryParams.Set("name", searchQuery);
|
queryParams.Name = searchQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
queryParams.Set("release", showDate.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture));
|
queryParams.Release = showDate.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (searchCriteria.Season.HasValue)
|
if (searchCriteria.Season.HasValue)
|
||||||
{
|
{
|
||||||
queryParams.Set("season", searchCriteria.Season.Value.ToString());
|
queryParams.Season = searchCriteria.Season.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (searchCriteria.Episode.IsNotNullOrWhiteSpace() && int.TryParse(searchCriteria.Episode, out var episodeNumber))
|
if (searchCriteria.Episode.IsNotNullOrWhiteSpace() && int.TryParse(searchCriteria.Episode, out var episodeNumber))
|
||||||
{
|
{
|
||||||
queryParams.Set("episode", episodeNumber.ToString());
|
queryParams.Episode = episodeNumber;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((queryParams.Get("season").IsNotNullOrWhiteSpace() || queryParams.Get("episode").IsNotNullOrWhiteSpace()) &&
|
if ((queryParams.Season.HasValue || queryParams.Episode.HasValue) &&
|
||||||
queryParams.Get("name").IsNullOrWhiteSpace() &&
|
queryParams.Name.IsNullOrWhiteSpace() &&
|
||||||
queryParams.Get("release").IsNullOrWhiteSpace() &&
|
queryParams.Release.IsNullOrWhiteSpace() &&
|
||||||
queryParams.Get("tvmaze").IsNullOrWhiteSpace() &&
|
!queryParams.TvMaze.HasValue &&
|
||||||
queryParams.Get("imdb").IsNullOrWhiteSpace())
|
queryParams.Imdb.IsNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
_logger.Warn("NBL API does not support season calls without name, series, id, imdb, tvmaze, or time keys.");
|
_logger.Debug("NBL API does not support season calls without name, series, id, imdb, tvmaze, or time keys.");
|
||||||
|
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queryParams.Get("name") is { Length: > 0 and < 3 } || queryParams.Get("release") is { Length: > 0 and < 3 })
|
if (queryParams.Name is { Length: > 0 and < 3 } || queryParams.Release is { Length: > 0 and < 3 })
|
||||||
{
|
{
|
||||||
_logger.Warn("NBL API does not support release calls that are 2 characters or fewer.");
|
_logger.Debug("NBL API does not support release calls that are 2 characters or fewer.");
|
||||||
|
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
pageableRequests.Add(GetPagedRequests(queryParams, searchCriteria));
|
pageableRequests.Add(GetPagedRequests(queryParams, searchCriteria.Limit, searchCriteria.Offset));
|
||||||
|
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
@@ -189,45 +189,40 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var queryParams = new NameValueCollection
|
var queryParams = new NebulanceQuery
|
||||||
{
|
{
|
||||||
{ "action", "search" },
|
Age = ">0"
|
||||||
{ "age", ">0" },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var searchQuery = searchCriteria.SanitizedSearchTerm.Trim();
|
var searchQuery = searchCriteria.SanitizedSearchTerm.Trim();
|
||||||
|
|
||||||
if (searchQuery.IsNotNullOrWhiteSpace())
|
if (searchQuery.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
queryParams.Set("release", searchQuery);
|
queryParams.Release = searchQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queryParams.Get("release") is { Length: > 0 and < 3 })
|
if (queryParams.Release is { Length: > 0 and < 3 })
|
||||||
{
|
{
|
||||||
_logger.Debug("NBL API does not support release calls that are 2 characters or fewer.");
|
_logger.Debug("NBL API does not support release calls that are 2 characters or fewer.");
|
||||||
|
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
pageableRequests.Add(GetPagedRequests(queryParams, searchCriteria));
|
pageableRequests.Add(GetPagedRequests(queryParams, searchCriteria.Limit, searchCriteria.Offset));
|
||||||
|
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<IndexerRequest> GetPagedRequests(NameValueCollection parameters, SearchCriteriaBase searchCriteria)
|
private IEnumerable<IndexerRequest> GetPagedRequests(NebulanceQuery parameters, int? results, int? offset)
|
||||||
{
|
{
|
||||||
parameters.Set("api_key", _settings.ApiKey);
|
var apiUrl = _settings.BaseUrl + "api.php";
|
||||||
parameters.Set("per_page", searchCriteria.Limit.GetValueOrDefault(100).ToString());
|
|
||||||
|
|
||||||
if (searchCriteria.Limit > 0 && searchCriteria.Offset > 0)
|
var builder = new JsonRpcRequestBuilder(apiUrl)
|
||||||
{
|
.Call("getTorrents", _settings.ApiKey, parameters, results ?? 100, offset ?? 0);
|
||||||
var page = searchCriteria.Offset / searchCriteria.Limit;
|
|
||||||
parameters.Set("page", page.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
var apiUrl = $"{_settings.BaseUrl}api.php?{parameters.GetQueryString()}";
|
builder.SuppressHttpError = true;
|
||||||
|
|
||||||
yield return new IndexerRequest(apiUrl, HttpAccept.Json);
|
yield return new IndexerRequest(builder.Build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Func<IDictionary<string, string>> GetCookies { get; set; }
|
public Func<IDictionary<string, string>> GetCookies { get; set; }
|
||||||
@@ -249,14 +244,16 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
|
|
||||||
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
throw new IndexerException(indexerResponse, "Unexpected response status '{0}' code from indexer request. Check the logs for more information.", indexerResponse.HttpResponse.StatusCode);
|
STJson.TryDeserialize<JsonRpcResponse<NebulanceErrorResponse>>(indexerResponse.HttpResponse.Content, out var errorResponse);
|
||||||
|
|
||||||
|
throw new IndexerException(indexerResponse, "Unexpected response status '{0}' code from indexer request: {1}", indexerResponse.HttpResponse.StatusCode, errorResponse?.Result?.Error?.Message ?? "Check the logs for more information.");
|
||||||
}
|
}
|
||||||
|
|
||||||
NebulanceResponse jsonResponse;
|
JsonRpcResponse<NebulanceResponse> jsonResponse;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
jsonResponse = STJson.Deserialize<NebulanceResponse>(indexerResponse.HttpResponse.Content);
|
jsonResponse = STJson.Deserialize<JsonRpcResponse<NebulanceResponse>>(indexerResponse.HttpResponse.Content);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -265,17 +262,19 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
throw new IndexerException(indexerResponse, "Unexpected response from indexer request: {0}", ex, response?.Result ?? ex.Message);
|
throw new IndexerException(indexerResponse, "Unexpected response from indexer request: {0}", ex, response?.Result ?? ex.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jsonResponse.Error != null)
|
if (jsonResponse.Error != null || jsonResponse.Result == null)
|
||||||
{
|
{
|
||||||
throw new IndexerException(indexerResponse, "Indexer API call returned an error [{0}]", jsonResponse.Error?.Message);
|
throw new IndexerException(indexerResponse, "Indexer API call returned an error [{0}]", jsonResponse.Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jsonResponse.TotalResults == 0 || jsonResponse.Items == null || jsonResponse.Items.Count == 0)
|
if (jsonResponse.Result?.Items == null || jsonResponse.Result.Items.Count == 0)
|
||||||
{
|
{
|
||||||
return torrentInfos;
|
return torrentInfos;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var row in jsonResponse.Items)
|
var rows = jsonResponse.Result.Items;
|
||||||
|
|
||||||
|
foreach (var row in rows)
|
||||||
{
|
{
|
||||||
var details = _settings.BaseUrl + "torrents.php?id=" + row.TorrentId;
|
var details = _settings.BaseUrl + "torrents.php?id=" + row.TorrentId;
|
||||||
|
|
||||||
@@ -285,30 +284,26 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
Guid = details,
|
Guid = details,
|
||||||
InfoUrl = details,
|
InfoUrl = details,
|
||||||
DownloadUrl = row.DownloadLink,
|
DownloadUrl = row.Download,
|
||||||
Title = title.Trim(),
|
Title = title.Trim(),
|
||||||
Categories = new List<IndexerCategory> { TvCategoryFromQualityParser.ParseTvShowQuality(row.ReleaseTitle) },
|
Categories = new List<IndexerCategory> { TvCategoryFromQualityParser.ParseTvShowQuality(row.ReleaseTitle) },
|
||||||
Size = row.Size,
|
Size = ParseUtil.CoerceLong(row.Size),
|
||||||
Files = row.FileList.Count,
|
Files = row.FileList.Count(),
|
||||||
PublishDate = DateTime.Parse(row.PublishDateUtc, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal),
|
PublishDate = DateTime.Parse(row.PublishDateUtc, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal),
|
||||||
Grabs = row.Snatch,
|
Grabs = ParseUtil.CoerceInt(row.Snatch),
|
||||||
Seeders = row.Seed,
|
Seeders = ParseUtil.CoerceInt(row.Seed),
|
||||||
Peers = row.Seed + row.Leech,
|
Peers = ParseUtil.CoerceInt(row.Seed) + ParseUtil.CoerceInt(row.Leech),
|
||||||
Scene = row.Tags?.ContainsIgnoreCase("scene"),
|
Scene = row.Tags?.ContainsIgnoreCase("scene"),
|
||||||
MinimumRatio = 0, // ratioless
|
MinimumRatio = 0, // ratioless
|
||||||
MinimumSeedTime = row.Category.ToUpperInvariant() == "SEASON" ? 432000 : 86400, // 120 hours for seasons and 24 hours for episodes
|
MinimumSeedTime = row.Category.ToLower() == "season" ? 432000 : 86400, // 120 hours for seasons and 24 hours for episodes
|
||||||
DownloadVolumeFactor = 0, // ratioless tracker
|
DownloadVolumeFactor = 0, // ratioless tracker
|
||||||
UploadVolumeFactor = 1,
|
UploadVolumeFactor = 1,
|
||||||
|
PosterUrl = row.Banner
|
||||||
};
|
};
|
||||||
|
|
||||||
if (row.ImdbId.IsNotNullOrWhiteSpace())
|
if (row.TvMazeId.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
release.ImdbId = ParseUtil.GetImdbId(row.ImdbId).GetValueOrDefault();
|
release.TvMazeId = ParseUtil.CoerceInt(row.TvMazeId);
|
||||||
}
|
|
||||||
|
|
||||||
if (row.TvMazeId is > 0)
|
|
||||||
{
|
|
||||||
release.TvMazeId = row.TvMazeId.Value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
torrentInfos.Add(release);
|
torrentInfos.Add(release);
|
||||||
@@ -331,55 +326,100 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
public string ApiKey { get; set; }
|
public string ApiKey { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class NebulanceQuery
|
||||||
|
{
|
||||||
|
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Time { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName="age", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Age { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName="tvmaze", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public int? TvMaze { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName="imdb", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Imdb { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Hash { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string[] Tags { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName="name", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName="release", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Release { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Category { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public string Series { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName="season", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public int? Season { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName="episode", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||||
|
public int? Episode { get; set; }
|
||||||
|
|
||||||
|
public NebulanceQuery Clone()
|
||||||
|
{
|
||||||
|
return MemberwiseClone() as NebulanceQuery;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class NebulanceResponse
|
public class NebulanceResponse
|
||||||
{
|
{
|
||||||
[JsonPropertyName("total_results")]
|
public List<NebulanceTorrent> Items { get; set; }
|
||||||
public int TotalResults { get; init; }
|
|
||||||
|
|
||||||
public IReadOnlyCollection<NebulanceTorrent> Items { get; init; }
|
|
||||||
|
|
||||||
public NebulanceErrorMessage Error { get; init; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NebulanceTorrent
|
public class NebulanceTorrent
|
||||||
{
|
{
|
||||||
[JsonPropertyName("rls_name")]
|
[JsonPropertyName("rls_name")]
|
||||||
public string ReleaseTitle { get; init; }
|
public string ReleaseTitle { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("cat")]
|
[JsonPropertyName("cat")]
|
||||||
public string Category { get; init; }
|
public string Category { get; set; }
|
||||||
|
|
||||||
public long Size { get; init; }
|
public string Size { get; set; }
|
||||||
public int Seed { get; init; }
|
public string Seed { get; set; }
|
||||||
public int Leech { get; init; }
|
public string Leech { get; set; }
|
||||||
public int Snatch { get; init; }
|
public string Snatch { get; set; }
|
||||||
|
public string Download { get; set; }
|
||||||
[JsonPropertyName("download")]
|
|
||||||
public string DownloadLink { get; init; }
|
|
||||||
|
|
||||||
[JsonPropertyName("file_list")]
|
[JsonPropertyName("file_list")]
|
||||||
public IReadOnlyCollection<string> FileList { get; init; } = [];
|
public IEnumerable<string> FileList { get; set; } = Array.Empty<string>();
|
||||||
|
|
||||||
[JsonPropertyName("group_name")]
|
[JsonPropertyName("group_name")]
|
||||||
public string GroupName { get; init; }
|
public string GroupName { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("series_banner")]
|
||||||
|
public string Banner { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("group_id")]
|
[JsonPropertyName("group_id")]
|
||||||
public int TorrentId { get; init; }
|
public string TorrentId { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("imdb_id")]
|
[JsonPropertyName("series_id")]
|
||||||
public string ImdbId { get; init; }
|
public string TvMazeId { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("tvmaze_id")]
|
|
||||||
public int? TvMazeId { get; init; }
|
|
||||||
|
|
||||||
[JsonPropertyName("rls_utc")]
|
[JsonPropertyName("rls_utc")]
|
||||||
public string PublishDateUtc { get; init; }
|
public string PublishDateUtc { get; set; }
|
||||||
|
|
||||||
public IReadOnlyCollection<string> Tags { get; init; } = [];
|
public IEnumerable<string> Tags { get; set; } = Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class NebulanceErrorResponse
|
||||||
|
{
|
||||||
|
public NebulanceErrorMessage Error { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NebulanceErrorMessage
|
public class NebulanceErrorMessage
|
||||||
{
|
{
|
||||||
public string Message { get; init; }
|
public string Message { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,16 +35,6 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
|
|||||||
throw new RequestLimitReachedException(indexerResponse, "PTP Query Limit Reached. Please try again later.");
|
throw new RequestLimitReachedException(indexerResponse, "PTP Query Limit Reached. Please try again later.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (httpResponse.StatusCode == HttpStatusCode.TooManyRequests && indexerResponse.Content.Contains("We are not a TV indexer"))
|
|
||||||
{
|
|
||||||
throw new IndexerException(indexerResponse, "Invalid indexer request: We are not a TV indexer", HttpStatusCode.BadRequest);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (httpResponse.StatusCode == HttpStatusCode.TooManyRequests)
|
|
||||||
{
|
|
||||||
throw new RequestLimitReachedException(indexerResponse, "PTP Request Limit Reached. Please try again later.");
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
|
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-2
@@ -2,7 +2,6 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Specialized;
|
using System.Collections.Specialized;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
@@ -116,7 +115,6 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
|
|||||||
var request = new IndexerRequest(searchUrl, HttpAccept.Json);
|
var request = new IndexerRequest(searchUrl, HttpAccept.Json);
|
||||||
request.HttpRequest.Headers.Add("ApiUser", _settings.APIUser);
|
request.HttpRequest.Headers.Add("ApiUser", _settings.APIUser);
|
||||||
request.HttpRequest.Headers.Add("ApiKey", _settings.APIKey);
|
request.HttpRequest.Headers.Add("ApiKey", _settings.APIKey);
|
||||||
request.HttpRequest.SuppressHttpErrorStatusCodes = new[] { HttpStatusCode.TooManyRequests };
|
|
||||||
|
|
||||||
yield return request;
|
yield return request;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
};
|
};
|
||||||
|
|
||||||
var authLoginRequest = requestBuilder
|
var authLoginRequest = requestBuilder
|
||||||
.SetEncoding(Encoding)
|
|
||||||
.AddFormParameter("login_username", Settings.Username)
|
.AddFormParameter("login_username", Settings.Username)
|
||||||
.AddFormParameter("login_password", Settings.Password)
|
.AddFormParameter("login_password", Settings.Password)
|
||||||
.AddFormParameter("login", "Login")
|
.AddFormParameter("login", "Login")
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ public class PreToMe : TorrentIndexerBase<PreToMeSettings>
|
|||||||
};
|
};
|
||||||
|
|
||||||
var authLoginRequest = requestBuilder
|
var authLoginRequest = requestBuilder
|
||||||
.SetEncoding(Encoding)
|
|
||||||
.SetCookies(loginPage.GetCookies())
|
.SetCookies(loginPage.GetCookies())
|
||||||
.AddFormParameter("username", Settings.Username)
|
.AddFormParameter("username", Settings.Username)
|
||||||
.AddFormParameter("password", Settings.Password)
|
.AddFormParameter("password", Settings.Password)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
public override string Name => "PrivateHD";
|
public override string Name => "PrivateHD";
|
||||||
public override string[] IndexerUrls => new[] { "https://privatehd.to/" };
|
public override string[] IndexerUrls => new[] { "https://privatehd.to/" };
|
||||||
public override string Description => "PrivateHD (PHD) is a Private Torrent Tracker for HD MOVIES / TV and the sister-site of AvistaZ, CinemaZ, ExoticaZ, and AnimeZ";
|
public override string Description => "PrivateHD (PHD) is a Private Torrent Tracker for HD MOVIES / TV and the sister-site of AvistaZ, CinemaZ, ExoticaZ, and AnimeTorrents";
|
||||||
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
||||||
|
|
||||||
public PrivateHD(IIndexerRepository indexerRepository,
|
public PrivateHD(IIndexerRepository indexerRepository,
|
||||||
|
|||||||
@@ -23,8 +23,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
public override string Name => "RevolutionTT";
|
public override string Name => "RevolutionTT";
|
||||||
|
|
||||||
public override string[] IndexerUrls => new[] { "https://revott.me/" };
|
public override string[] IndexerUrls => new[] { "https://revolutiontt.me/" };
|
||||||
public override string[] LegacyUrls => new[] { "https://revolutiontt.me/" };
|
|
||||||
public override string Description => "The Revolution has begun";
|
public override string Description => "The Revolution has begun";
|
||||||
private string LoginUrl => Settings.BaseUrl + "takelogin.php";
|
private string LoginUrl => Settings.BaseUrl + "takelogin.php";
|
||||||
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
||||||
|
|||||||
@@ -91,7 +91,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
Cookies = null;
|
Cookies = null;
|
||||||
|
|
||||||
var authLoginRequest = requestBuilder.Post()
|
var authLoginRequest = requestBuilder.Post()
|
||||||
.SetEncoding(Encoding)
|
|
||||||
.AddFormParameter("login_username", Settings.Username)
|
.AddFormParameter("login_username", Settings.Username)
|
||||||
.AddFormParameter("login_password", Settings.Password)
|
.AddFormParameter("login_password", Settings.Password)
|
||||||
.AddFormParameter("login", "Login")
|
.AddFormParameter("login", "Login")
|
||||||
@@ -1542,7 +1541,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
|
|
||||||
if (season != 0)
|
if (season != 0)
|
||||||
{
|
{
|
||||||
searchString += " ТВ | Сезон: " + season;
|
searchString += " Сезон: " + season;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameters.Set("nm", searchString);
|
parameters.Set("nm", searchString);
|
||||||
@@ -1713,8 +1712,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
private readonly Regex _tvTitleRusSeasonRegex = new(@"Сезон\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
private readonly Regex _tvTitleRusSeasonRegex = new(@"Сезон\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
private readonly Regex _tvTitleRusEpisodeOfRegex = new(@"(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)\s*из\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
private readonly Regex _tvTitleRusEpisodeOfRegex = new(@"(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)\s*из\s*([\w?])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
private readonly Regex _tvTitleRusEpisodeRegex = new(@"(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
private readonly Regex _tvTitleRusEpisodeRegex = new(@"(?:Серии|Эпизод|Выпуски)+\s*[:]*\s+(\d+(?:-\d+)?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
private readonly Regex _tvTitleRusSeasonAnimeRegex = new(@"ТВ[-]*(?:(\d+))", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
|
||||||
private readonly Regex _tvTitleRusEpisodeAnimeOfRegex = new(@"\[(\d+(\+\d+)?)\s+из\s+(\d+(\+\d+)?)\]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
|
||||||
|
|
||||||
public string Parse(string title,
|
public string Parse(string title,
|
||||||
ICollection<IndexerCategory> categories,
|
ICollection<IndexerCategory> categories,
|
||||||
@@ -1739,8 +1736,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
title = _tvTitleRusSeasonRegex.Replace(title, "S$1");
|
title = _tvTitleRusSeasonRegex.Replace(title, "S$1");
|
||||||
title = _tvTitleRusEpisodeOfRegex.Replace(title, "E$1 of $2");
|
title = _tvTitleRusEpisodeOfRegex.Replace(title, "E$1 of $2");
|
||||||
title = _tvTitleRusEpisodeRegex.Replace(title, "E$1");
|
title = _tvTitleRusEpisodeRegex.Replace(title, "E$1");
|
||||||
title = _tvTitleRusSeasonAnimeRegex.Replace(title, "S$1");
|
|
||||||
title = _tvTitleRusEpisodeAnimeOfRegex.Replace(title, "E$1 of $3");
|
|
||||||
}
|
}
|
||||||
else if (IsAnyMovieCategory(categories))
|
else if (IsAnyMovieCategory(categories))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
|
|
||||||
public override IParseIndexerResponse GetParser()
|
public override IParseIndexerResponse GetParser()
|
||||||
{
|
{
|
||||||
return new SceneTimeParser(Settings, Capabilities.Categories, _logger);
|
return new SceneTimeParser(Settings, Capabilities.Categories);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
|
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
|
||||||
@@ -59,7 +59,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
return CookieUtil.CookieHeaderToDictionary(Settings.Cookie);
|
return CookieUtil.CookieHeaderToDictionary(Settings.Cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IndexerCapabilities SetCapabilities()
|
private IndexerCapabilities SetCapabilities()
|
||||||
{
|
{
|
||||||
var caps = new IndexerCapabilities
|
var caps = new IndexerCapabilities
|
||||||
{
|
{
|
||||||
@@ -213,13 +213,11 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
private readonly SceneTimeSettings _settings;
|
private readonly SceneTimeSettings _settings;
|
||||||
private readonly IndexerCapabilitiesCategories _categories;
|
private readonly IndexerCapabilitiesCategories _categories;
|
||||||
private readonly Logger _logger;
|
|
||||||
|
|
||||||
public SceneTimeParser(SceneTimeSettings settings, IndexerCapabilitiesCategories categories, Logger logger)
|
public SceneTimeParser(SceneTimeSettings settings, IndexerCapabilitiesCategories categories)
|
||||||
{
|
{
|
||||||
_settings = settings;
|
_settings = settings;
|
||||||
_categories = categories;
|
_categories = categories;
|
||||||
_logger = logger;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
||||||
@@ -229,30 +227,29 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
var parser = new HtmlParser();
|
var parser = new HtmlParser();
|
||||||
using var dom = parser.ParseDocument(indexerResponse.Content);
|
using var dom = parser.ParseDocument(indexerResponse.Content);
|
||||||
|
|
||||||
var table = dom.QuerySelector("table#torrenttable");
|
var table = dom.QuerySelector("table.movehere");
|
||||||
if (table == null)
|
if (table == null)
|
||||||
{
|
{
|
||||||
_logger.Error("No results, table element is not present in page.");
|
return releaseInfos; // no results
|
||||||
return releaseInfos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var headerColumns = table.QuerySelectorAll("thead > tr > th")
|
var headerColumns = table.QuerySelectorAll("tbody > tr > td.cat_Head").Select(x => x.TextContent).ToList();
|
||||||
.Select(x => x.GetAttribute("title") ?? x.QuerySelector("a[title]")?.GetAttribute("title") ?? x.TextContent)
|
var categoryIndex = headerColumns.FindIndex(x => x.Equals("Type"));
|
||||||
.ToList();
|
var nameIndex = headerColumns.FindIndex(x => x.Equals("Name"));
|
||||||
|
var sizeIndex = headerColumns.FindIndex(x => x.Equals("Size"));
|
||||||
|
var seedersIndex = headerColumns.FindIndex(x => x.Equals("Seeders"));
|
||||||
|
var leechersIndex = headerColumns.FindIndex(x => x.Equals("Leechers"));
|
||||||
|
|
||||||
var categoryIndex = headerColumns.FindIndex(x => x.Equals("Type", StringComparison.OrdinalIgnoreCase));
|
var rows = dom.QuerySelectorAll("tr.browse");
|
||||||
var nameIndex = headerColumns.FindIndex(x => x.Equals("Name", StringComparison.OrdinalIgnoreCase));
|
|
||||||
var sizeIndex = headerColumns.FindIndex(x => x.Equals("Size", StringComparison.OrdinalIgnoreCase));
|
|
||||||
var seedersIndex = headerColumns.FindIndex(x => x.Equals("Seeders", StringComparison.OrdinalIgnoreCase));
|
|
||||||
var leechersIndex = headerColumns.FindIndex(x => x.Equals("Leechers", StringComparison.OrdinalIgnoreCase));
|
|
||||||
|
|
||||||
var rows = table.QuerySelectorAll("tbody > tr");
|
|
||||||
|
|
||||||
foreach (var row in rows)
|
foreach (var row in rows)
|
||||||
{
|
{
|
||||||
var qDescCol = row.Children[nameIndex];
|
var qDescCol = row.Children[nameIndex];
|
||||||
var qLink = qDescCol.QuerySelector("a");
|
var qLink = qDescCol.QuerySelector("a");
|
||||||
var title = qLink.QuerySelector("span.bw-torrent-name").TextContent.Trim();
|
|
||||||
|
// Clean up title
|
||||||
|
qLink.QuerySelectorAll("font[color=\"green\"]").ToList().ForEach(e => e.Remove());
|
||||||
|
var title = qLink.TextContent.Trim();
|
||||||
|
|
||||||
var infoUrl = _settings.BaseUrl + qLink.GetAttribute("href")?.TrimStart('/');
|
var infoUrl = _settings.BaseUrl + qLink.GetAttribute("href")?.TrimStart('/');
|
||||||
var torrentId = ParseUtil.GetArgumentFromQueryString(infoUrl, "id");
|
var torrentId = ParseUtil.GetArgumentFromQueryString(infoUrl, "id");
|
||||||
@@ -277,7 +274,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
Size = ParseUtil.GetBytes(row.Children[sizeIndex].TextContent),
|
Size = ParseUtil.GetBytes(row.Children[sizeIndex].TextContent),
|
||||||
Seeders = seeders,
|
Seeders = seeders,
|
||||||
Peers = ParseUtil.CoerceInt(row.Children[leechersIndex].TextContent.Trim()) + seeders,
|
Peers = ParseUtil.CoerceInt(row.Children[leechersIndex].TextContent.Trim()) + seeders,
|
||||||
DownloadVolumeFactor = row.QuerySelector("span.tag.free") is not null ? 0 : 1,
|
DownloadVolumeFactor = row.QuerySelector("font > b:contains(Freeleech)") != null ? 0 : 1,
|
||||||
UploadVolumeFactor = 1,
|
UploadVolumeFactor = 1,
|
||||||
MinimumRatio = 1,
|
MinimumRatio = 1,
|
||||||
MinimumSeedTime = 259200 // 72 hours
|
MinimumSeedTime = 259200 // 72 hours
|
||||||
|
|||||||
@@ -27,8 +27,7 @@ namespace NzbDrone.Core.Indexers.Definitions;
|
|||||||
public class Shazbat : TorrentIndexerBase<ShazbatSettings>
|
public class Shazbat : TorrentIndexerBase<ShazbatSettings>
|
||||||
{
|
{
|
||||||
public override string Name => "Shazbat";
|
public override string Name => "Shazbat";
|
||||||
public override string[] IndexerUrls => new[] { "https://www.shazbat.tube/" };
|
public override string[] IndexerUrls => new[] { "https://www.shazbat.tv/" };
|
||||||
public override string[] LegacyUrls => new[] { "https://www.shazbat.tv/" };
|
|
||||||
public override string Description => "Shazbat is a PRIVATE Torrent Tracker with highly curated TV content";
|
public override string Description => "Shazbat is a PRIVATE Torrent Tracker with highly curated TV content";
|
||||||
public override string Language => "en-US";
|
public override string Language => "en-US";
|
||||||
public override Encoding Encoding => Encoding.UTF8;
|
public override Encoding Encoding => Encoding.UTF8;
|
||||||
@@ -69,8 +68,8 @@ public class Shazbat : TorrentIndexerBase<ShazbatSettings>
|
|||||||
.AddFormParameter("referer", "")
|
.AddFormParameter("referer", "")
|
||||||
.AddFormParameter("query", "")
|
.AddFormParameter("query", "")
|
||||||
.AddFormParameter("tv_timezone", "0")
|
.AddFormParameter("tv_timezone", "0")
|
||||||
.AddFormParameter("username", Settings.Username)
|
.AddFormParameter("tv_login", Settings.Username)
|
||||||
.AddFormParameter("password", Settings.Password)
|
.AddFormParameter("tv_password", Settings.Password)
|
||||||
.SetHeader("Content-Type", "application/x-www-form-urlencoded")
|
.SetHeader("Content-Type", "application/x-www-form-urlencoded")
|
||||||
.SetHeader("Referer", loginUrl)
|
.SetHeader("Referer", loginUrl)
|
||||||
.Build();
|
.Build();
|
||||||
@@ -92,11 +91,9 @@ public class Shazbat : TorrentIndexerBase<ShazbatSettings>
|
|||||||
_logger.Debug("Authentication succeeded.");
|
_logger.Debug("Authentication succeeded.");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
|
protected override bool CheckIfLoginNeeded(HttpResponse response)
|
||||||
{
|
{
|
||||||
return (httpResponse.HasHttpRedirect && httpResponse.RedirectUrl.ContainsIgnoreCase("login")) ||
|
return response.Content.ContainsIgnoreCase("sign in now");
|
||||||
httpResponse.Content.ContainsIgnoreCase("sign in now") ||
|
|
||||||
(httpResponse.Content.ContainsIgnoreCase("fullRedirect") && httpResponse.Content.ContainsIgnoreCase("login"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private IndexerCapabilities SetCapabilities()
|
private IndexerCapabilities SetCapabilities()
|
||||||
@@ -170,9 +167,9 @@ public class ShazbatRequestGenerator : IIndexerRequestGenerator
|
|||||||
|
|
||||||
if (term.IsNotNullOrWhiteSpace())
|
if (term.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
var request = new HttpRequestBuilder(_settings.BaseUrl + "search")
|
var request = new HttpRequestBuilder(_settings.BaseUrl + "search").Post()
|
||||||
.AddQueryParam("search", term)
|
.AddFormParameter("search", term)
|
||||||
.AddQueryParam("portlet", "true")
|
.SetHeader("Content-Type", "application/x-www-form-urlencoded")
|
||||||
.SetHeader("X-Requested-With", "XMLHttpRequest")
|
.SetHeader("X-Requested-With", "XMLHttpRequest")
|
||||||
.SetHeader("Referer", _settings.BaseUrl)
|
.SetHeader("Referer", _settings.BaseUrl)
|
||||||
.Accept(HttpAccept.Html)
|
.Accept(HttpAccept.Html)
|
||||||
@@ -197,14 +194,14 @@ public class ShazbatRequestGenerator : IIndexerRequestGenerator
|
|||||||
term = Regex.Replace(term, @"(.+)\b\d{4}(\.\d{2}\.\d{2})?\b", "$1");
|
term = Regex.Replace(term, @"(.+)\b\d{4}(\.\d{2}\.\d{2})?\b", "$1");
|
||||||
term = Regex.Replace(term, @"[\.\s\(\)\[\]]+", " ");
|
term = Regex.Replace(term, @"[\.\s\(\)\[\]]+", " ");
|
||||||
|
|
||||||
return term.ToLowerInvariant().Trim();
|
return term.ToLower().Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Func<IDictionary<string, string>> GetCookies { get; set; }
|
public Func<IDictionary<string, string>> GetCookies { get; set; }
|
||||||
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public partial class ShazbatParser : IParseIndexerResponse
|
public class ShazbatParser : IParseIndexerResponse
|
||||||
{
|
{
|
||||||
private readonly ProviderDefinition _definition;
|
private readonly ProviderDefinition _definition;
|
||||||
private readonly ShazbatSettings _settings;
|
private readonly ShazbatSettings _settings;
|
||||||
@@ -212,10 +209,8 @@ public partial class ShazbatParser : IParseIndexerResponse
|
|||||||
private readonly IIndexerHttpClient _httpClient;
|
private readonly IIndexerHttpClient _httpClient;
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
|
|
||||||
private readonly HashSet<string> _hdResolutions = ["1080p", "1080i", "720p"];
|
private readonly Regex _torrentInfoRegex = new(@"\((?<size>\d+)\):(?<seeders>\d+) \/ :(?<leechers>\d+)$", RegexOptions.Compiled);
|
||||||
|
private readonly HashSet<string> _hdResolutions = new() { "1080p", "1080i", "720p" };
|
||||||
[GeneratedRegex(@"\((?<size>\d+)\)\s*:(?<seeders>\d+) \/ :(?<leechers>\d+)$", RegexOptions.Compiled)]
|
|
||||||
private static partial Regex TorrentInfoRegex();
|
|
||||||
|
|
||||||
public ShazbatParser(ProviderDefinition definition, ShazbatSettings settings, TimeSpan rateLimit, IIndexerHttpClient httpClient, Logger logger)
|
public ShazbatParser(ProviderDefinition definition, ShazbatSettings settings, TimeSpan rateLimit, IIndexerHttpClient httpClient, Logger logger)
|
||||||
{
|
{
|
||||||
@@ -262,15 +257,15 @@ public partial class ShazbatParser : IParseIndexerResponse
|
|||||||
var showPageUrl = new HttpRequestBuilder(_settings.BaseUrl + "show")
|
var showPageUrl = new HttpRequestBuilder(_settings.BaseUrl + "show")
|
||||||
.AddQueryParam("id", show.GetAttribute("data-id"))
|
.AddQueryParam("id", show.GetAttribute("data-id"))
|
||||||
.Build()
|
.Build()
|
||||||
.Url
|
.Url.FullUri;
|
||||||
.FullUri;
|
|
||||||
|
|
||||||
var showRequest = new HttpRequestBuilder(_settings.BaseUrl + "show")
|
var showRequest = new HttpRequestBuilder(_settings.BaseUrl + "show").Post()
|
||||||
.SetCookies(indexerResponse.HttpResponse.GetCookies() ?? new Dictionary<string, string>())
|
.SetCookies(indexerResponse.HttpResponse.GetCookies() ?? new Dictionary<string, string>())
|
||||||
.AddQueryParam("id", show.GetAttribute("data-id"))
|
.AddQueryParam("id", show.GetAttribute("data-id"))
|
||||||
.AddQueryParam("show_mode", "torrents")
|
.AddQueryParam("show_mode", "torrents")
|
||||||
.AddQueryParam("portlet", "true")
|
.AddFormParameter("portlet", "true")
|
||||||
.AddQueryParam("tab", "true")
|
.AddFormParameter("tab", "true")
|
||||||
|
.SetHeader("Content-Type", "application/x-www-form-urlencoded")
|
||||||
.SetHeader("X-Requested-With", "XMLHttpRequest")
|
.SetHeader("X-Requested-With", "XMLHttpRequest")
|
||||||
.SetHeader("Referer", showPageUrl)
|
.SetHeader("Referer", showPageUrl)
|
||||||
.Accept(HttpAccept.Html)
|
.Accept(HttpAccept.Html)
|
||||||
@@ -282,8 +277,7 @@ public partial class ShazbatParser : IParseIndexerResponse
|
|||||||
var releaseRequest = new IndexerRequest(showRequest);
|
var releaseRequest = new IndexerRequest(showRequest);
|
||||||
var releaseResponse = new IndexerResponse(releaseRequest, _httpClient.ExecuteProxied(releaseRequest.HttpRequest, _definition));
|
var releaseResponse = new IndexerResponse(releaseRequest, _httpClient.ExecuteProxied(releaseRequest.HttpRequest, _definition));
|
||||||
|
|
||||||
if ((releaseResponse.HttpResponse.HasHttpRedirect && releaseResponse.HttpResponse.RedirectUrl.ContainsIgnoreCase("login")) ||
|
if (releaseResponse.HttpResponse.Content.ContainsIgnoreCase("sign in now"))
|
||||||
releaseResponse.HttpResponse.Content.ContainsIgnoreCase("sign in now"))
|
|
||||||
{
|
{
|
||||||
// Remove cookie cache
|
// Remove cookie cache
|
||||||
CookiesUpdater(null, null);
|
CookiesUpdater(null, null);
|
||||||
@@ -329,15 +323,13 @@ public partial class ShazbatParser : IParseIndexerResponse
|
|||||||
var title = ParseTitle(row.QuerySelector("td:nth-of-type(3)"));
|
var title = ParseTitle(row.QuerySelector("td:nth-of-type(3)"));
|
||||||
|
|
||||||
var infoString = row.QuerySelector("td:nth-of-type(4)")?.TextContent.Trim() ?? string.Empty;
|
var infoString = row.QuerySelector("td:nth-of-type(4)")?.TextContent.Trim() ?? string.Empty;
|
||||||
var matchInfo = TorrentInfoRegex().Match(infoString);
|
var matchInfo = _torrentInfoRegex.Match(infoString);
|
||||||
var size = matchInfo.Groups["size"].Success && long.TryParse(matchInfo.Groups["size"].Value, out var outSize) ? outSize : 0;
|
var size = matchInfo.Groups["size"].Success && long.TryParse(matchInfo.Groups["size"].Value, out var outSize) ? outSize : 0;
|
||||||
var seeders = matchInfo.Groups["seeders"].Success && int.TryParse(matchInfo.Groups["seeders"].Value, out var outSeeders) ? outSeeders : 0;
|
var seeders = matchInfo.Groups["seeders"].Success && int.TryParse(matchInfo.Groups["seeders"].Value, out var outSeeders) ? outSeeders : 0;
|
||||||
var leechers = matchInfo.Groups["leechers"].Success && int.TryParse(matchInfo.Groups["leechers"].Value, out var outLeechers) ? outLeechers : 0;
|
var leechers = matchInfo.Groups["leechers"].Success && int.TryParse(matchInfo.Groups["leechers"].Value, out var outLeechers) ? outLeechers : 0;
|
||||||
|
|
||||||
var dateTimestamp = row.QuerySelector(".datetime[data-timestamp]")?.GetAttribute("data-timestamp");
|
var dateTimestamp = row.QuerySelector(".datetime[data-timestamp]")?.GetAttribute("data-timestamp");
|
||||||
publishDate = dateTimestamp != null && ParseUtil.TryCoerceLong(dateTimestamp, out var timestamp)
|
publishDate = dateTimestamp != null && ParseUtil.TryCoerceDouble(dateTimestamp, out var timestamp) ? DateTimeUtil.UnixTimestampToDateTime(timestamp) : publishDate.AddMinutes(-1);
|
||||||
? DateTimeUtil.UnixTimestampToDateTime(timestamp)
|
|
||||||
: publishDate.AddMinutes(-1);
|
|
||||||
|
|
||||||
var release = new TorrentInfo
|
var release = new TorrentInfo
|
||||||
{
|
{
|
||||||
@@ -371,10 +363,10 @@ public partial class ShazbatParser : IParseIndexerResponse
|
|||||||
return title?.TextContent.Trim();
|
return title?.TextContent.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<IndexerCategory> ParseCategories(string title)
|
protected virtual List<IndexerCategory> ParseCategories(string title)
|
||||||
{
|
{
|
||||||
return
|
var categories = new List<IndexerCategory>
|
||||||
[
|
{
|
||||||
NewznabStandardCategory.TV,
|
NewznabStandardCategory.TV,
|
||||||
title switch
|
title switch
|
||||||
{
|
{
|
||||||
@@ -382,7 +374,9 @@ public partial class ShazbatParser : IParseIndexerResponse
|
|||||||
_ when title.Contains("2160p") => NewznabStandardCategory.TVUHD,
|
_ when title.Contains("2160p") => NewznabStandardCategory.TVUHD,
|
||||||
_ => NewznabStandardCategory.TVSD
|
_ => NewznabStandardCategory.TVSD
|
||||||
}
|
}
|
||||||
];
|
};
|
||||||
|
|
||||||
|
return categories;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
Cookies = null;
|
Cookies = null;
|
||||||
|
|
||||||
var authLoginRequest = requestBuilder
|
var authLoginRequest = requestBuilder
|
||||||
.SetEncoding(Encoding)
|
|
||||||
.AddFormParameter("username", Settings.Username)
|
.AddFormParameter("username", Settings.Username)
|
||||||
.AddFormParameter("password", Settings.Password)
|
.AddFormParameter("password", Settings.Password)
|
||||||
.AddFormParameter("returnto", "/")
|
.AddFormParameter("returnto", "/")
|
||||||
|
|||||||
@@ -83,11 +83,10 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
caps.Categories.AddCategoryMapping(25, NewznabStandardCategory.MoviesSD, "Movies/480p");
|
|
||||||
caps.Categories.AddCategoryMapping(96, NewznabStandardCategory.MoviesUHD, "Movie/4K");
|
caps.Categories.AddCategoryMapping(96, NewznabStandardCategory.MoviesUHD, "Movie/4K");
|
||||||
|
caps.Categories.AddCategoryMapping(25, NewznabStandardCategory.MoviesSD, "Movies/480p");
|
||||||
caps.Categories.AddCategoryMapping(11, NewznabStandardCategory.MoviesBluRay, "Movies/Bluray");
|
caps.Categories.AddCategoryMapping(11, NewznabStandardCategory.MoviesBluRay, "Movies/Bluray");
|
||||||
caps.Categories.AddCategoryMapping(5, NewznabStandardCategory.MoviesBluRay, "Movies/Bluray-Full");
|
caps.Categories.AddCategoryMapping(5, NewznabStandardCategory.MoviesBluRay, "Movies/Bluray-Full");
|
||||||
caps.Categories.AddCategoryMapping(103, NewznabStandardCategory.MoviesSD, "Movies/Cam");
|
|
||||||
caps.Categories.AddCategoryMapping(3, NewznabStandardCategory.MoviesDVD, "Movies/DVD-R");
|
caps.Categories.AddCategoryMapping(3, NewznabStandardCategory.MoviesDVD, "Movies/DVD-R");
|
||||||
caps.Categories.AddCategoryMapping(21, NewznabStandardCategory.MoviesSD, "Movies/MP4");
|
caps.Categories.AddCategoryMapping(21, NewznabStandardCategory.MoviesSD, "Movies/MP4");
|
||||||
caps.Categories.AddCategoryMapping(22, NewznabStandardCategory.MoviesForeign, "Movies/Non-English");
|
caps.Categories.AddCategoryMapping(22, NewznabStandardCategory.MoviesForeign, "Movies/Non-English");
|
||||||
@@ -97,7 +96,6 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Movies/XviD");
|
caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Movies/XviD");
|
||||||
|
|
||||||
caps.Categories.AddCategoryMapping(24, NewznabStandardCategory.TVSD, "TV/480p");
|
caps.Categories.AddCategoryMapping(24, NewznabStandardCategory.TVSD, "TV/480p");
|
||||||
caps.Categories.AddCategoryMapping(104, NewznabStandardCategory.TVUHD, "TV/4K");
|
|
||||||
caps.Categories.AddCategoryMapping(32, NewznabStandardCategory.TVHD, "TV/Bluray");
|
caps.Categories.AddCategoryMapping(32, NewznabStandardCategory.TVHD, "TV/Bluray");
|
||||||
caps.Categories.AddCategoryMapping(31, NewznabStandardCategory.TVSD, "TV/DVD-R");
|
caps.Categories.AddCategoryMapping(31, NewznabStandardCategory.TVSD, "TV/DVD-R");
|
||||||
caps.Categories.AddCategoryMapping(33, NewznabStandardCategory.TVSD, "TV/DVD-Rip");
|
caps.Categories.AddCategoryMapping(33, NewznabStandardCategory.TVSD, "TV/DVD-Rip");
|
||||||
@@ -106,13 +104,13 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
caps.Categories.AddCategoryMapping(14, NewznabStandardCategory.TV, "TV/Packs");
|
caps.Categories.AddCategoryMapping(14, NewznabStandardCategory.TV, "TV/Packs");
|
||||||
caps.Categories.AddCategoryMapping(26, NewznabStandardCategory.TVSD, "TV/SD/x264");
|
caps.Categories.AddCategoryMapping(26, NewznabStandardCategory.TVSD, "TV/SD/x264");
|
||||||
caps.Categories.AddCategoryMapping(7, NewznabStandardCategory.TVHD, "TV/x264");
|
caps.Categories.AddCategoryMapping(7, NewznabStandardCategory.TVHD, "TV/x264");
|
||||||
caps.Categories.AddCategoryMapping(34, NewznabStandardCategory.TVx265, "TV/x265");
|
caps.Categories.AddCategoryMapping(34, NewznabStandardCategory.TVUHD, "TV/x265");
|
||||||
caps.Categories.AddCategoryMapping(2, NewznabStandardCategory.TVSD, "TV/XviD");
|
caps.Categories.AddCategoryMapping(2, NewznabStandardCategory.TVSD, "TV/XviD");
|
||||||
|
|
||||||
caps.Categories.AddCategoryMapping(10, NewznabStandardCategory.ConsoleNDS, "Nintendo");
|
|
||||||
caps.Categories.AddCategoryMapping(4, NewznabStandardCategory.PCGames, "PC/Games");
|
caps.Categories.AddCategoryMapping(4, NewznabStandardCategory.PCGames, "PC/Games");
|
||||||
caps.Categories.AddCategoryMapping(18, NewznabStandardCategory.ConsolePS3, "PS");
|
caps.Categories.AddCategoryMapping(18, NewznabStandardCategory.ConsolePS3, "PS");
|
||||||
caps.Categories.AddCategoryMapping(8, NewznabStandardCategory.ConsolePSP, "PSP");
|
caps.Categories.AddCategoryMapping(8, NewznabStandardCategory.ConsolePSP, "PSP");
|
||||||
|
caps.Categories.AddCategoryMapping(10, NewznabStandardCategory.ConsoleNDS, "Nintendo");
|
||||||
caps.Categories.AddCategoryMapping(9, NewznabStandardCategory.ConsoleXBox, "Xbox");
|
caps.Categories.AddCategoryMapping(9, NewznabStandardCategory.ConsoleXBox, "Xbox");
|
||||||
|
|
||||||
caps.Categories.AddCategoryMapping(17, NewznabStandardCategory.AudioMP3, "Music/Audio");
|
caps.Categories.AddCategoryMapping(17, NewznabStandardCategory.AudioMP3, "Music/Audio");
|
||||||
|
|||||||
@@ -375,47 +375,5 @@
|
|||||||
"Stats": "الحالة",
|
"Stats": "الحالة",
|
||||||
"CurrentlyInstalled": "مثبتة حاليا",
|
"CurrentlyInstalled": "مثبتة حاليا",
|
||||||
"Season": "السبب",
|
"Season": "السبب",
|
||||||
"Mixed": "ثابت",
|
"Mixed": "ثابت"
|
||||||
"Destination": "مسار الوجهة",
|
|
||||||
"AddConnection": "الإتصال",
|
|
||||||
"Notification": "شهادة",
|
|
||||||
"DeleteClientCategory": "حذف Download Client",
|
|
||||||
"DeleteIndexerProxy": "حذف المفهرس",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "أصلي",
|
|
||||||
"IndexerStatus": "إعدادات المفهرس",
|
|
||||||
"ManageDownloadClients": "تحميل العملاء",
|
|
||||||
"Proxies": "مظهر",
|
|
||||||
"TvSearch": "بحث",
|
|
||||||
"UnableToLoadAppProfiles": "تعذر تحميل ملفات تعريف التأخير",
|
|
||||||
"DeleteSelectedIndexersMessageText": "هل أنت متأكد أنك تريد حذف ملفات الأفلام المحددة؟",
|
|
||||||
"SelectIndexers": "حذف المفهرس",
|
|
||||||
"EditSelectedDownloadClients": "حذف Download Client",
|
|
||||||
"EditSyncProfile": "تحرير ملف تعريف التأخير",
|
|
||||||
"Donate": "تاريخ",
|
|
||||||
"UnableToLoadIndexerProxies": "تعذر تحميل المفهرسات",
|
|
||||||
"IndexerProxy": "أولوية المفهرس",
|
|
||||||
"MovieSearch": "البحث الشامل عن الأفلام",
|
|
||||||
"UnableToLoadDevelopmentSettings": "تعذر تحميل الإعدادات العامة",
|
|
||||||
"AddNewIndexer": "أضف مفهرس",
|
|
||||||
"IndexerId": "مفهرس",
|
|
||||||
"AddCustomFilter": "مرشحات مخصصة",
|
|
||||||
"AuthenticationMethod": "المصادقة",
|
|
||||||
"Connect": "شهادة",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "هل أنت متأكد أنك تريد حذف ملفات الأفلام المحددة؟",
|
|
||||||
"DeleteSelectedIndexer": "حذف المفهرس",
|
|
||||||
"DeleteSelectedIndexers": "حذف المفهرس",
|
|
||||||
"DownloadClientCategory": "حذف Download Client",
|
|
||||||
"IndexerInfo": "مفهرس",
|
|
||||||
"IndexerProxies": "أولوية المفهرس",
|
|
||||||
"MovieSearchTypes": "البحث الشامل عن الأفلام",
|
|
||||||
"SyncProfile": "تحرير ملف تعريف التأخير",
|
|
||||||
"SearchIndexers": "حذف المفهرس",
|
|
||||||
"AddIndexerProxy": "أولوية المفهرس",
|
|
||||||
"EditSelectedIndexers": "حذف المفهرس",
|
|
||||||
"Notifications": "شهادة",
|
|
||||||
"DeleteSelectedApplications": "حذف ملفات الأفلام المحددة",
|
|
||||||
"DeleteSelectedDownloadClientsMessageText": "هل أنت متأكد أنك تريد حذف ملفات الأفلام المحددة؟",
|
|
||||||
"AddSyncProfile": "تحرير ملف تعريف التأخير",
|
|
||||||
"SyncProfiles": "تحرير ملف تعريف التأخير",
|
|
||||||
"FilterPlaceHolder": "حذف المفهرس"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -417,59 +417,5 @@
|
|||||||
"AddCustomFilter": "Добави персонализиран филтър",
|
"AddCustomFilter": "Добави персонализиран филтър",
|
||||||
"AuthenticationMethod": "Метод за удостоверяване",
|
"AuthenticationMethod": "Метод за удостоверяване",
|
||||||
"AuthenticationMethodHelpTextWarning": "Моля, изберете валиден метод за удостоверяване",
|
"AuthenticationMethodHelpTextWarning": "Моля, изберете валиден метод за удостоверяване",
|
||||||
"BlackholeFolderHelpText": "Папка, в която {appName} ще съхранява файла {extension}",
|
"BlackholeFolderHelpText": "Папка, в която {appName} ще съхранява файла {extension}"
|
||||||
"Author": "Авто",
|
|
||||||
"AddApplicationImplementation": "Добави условие - {implementationName}",
|
|
||||||
"AddCategory": "Категория",
|
|
||||||
"AddIndexerProxyImplementation": "Добави индексатор - {implementationName}",
|
|
||||||
"Notification": "Сертифициране",
|
|
||||||
"DeleteClientCategory": "Изтриване на клиент за изтегляне",
|
|
||||||
"DeleteIndexerProxy": "Изтрийте Indexer",
|
|
||||||
"DeleteSelectedIndexersMessageText": "Наистина ли искате да изтриете избраните филмови файлове?",
|
|
||||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "Незадължително локация за изтеглянията, оставете празно, за да използвате локацията по подразбиране на Aria2",
|
|
||||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Незадължително локация за изтеглянията, оставете празно, за да използвате локацията по подразбиране на Aria2",
|
|
||||||
"EditSyncProfile": "Редактиране на профил за забавяне",
|
|
||||||
"ManageDownloadClients": "Изтеглете клиенти",
|
|
||||||
"UnableToLoadDevelopmentSettings": "Не може да се заредят общи настройки",
|
|
||||||
"EditConnectionImplementation": "Добави връзка - {implementationName}",
|
|
||||||
"EditDownloadClientImplementation": "Добави клиент за изтегляне - {implementationName}",
|
|
||||||
"EditIndexerImplementation": "Добави индексатор - {implementationName}",
|
|
||||||
"EditIndexerProxyImplementation": "Добави индексатор - {implementationName}",
|
|
||||||
"IndexerHDBitsSettingsCodecs": "Кодек",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Оригинал",
|
|
||||||
"IndexerId": "Индексатор",
|
|
||||||
"MovieSearch": "Масово търсене на филми",
|
|
||||||
"SelectIndexers": "Изтрийте Indexer",
|
|
||||||
"UnableToLoadIndexerProxies": "Индексаторите не могат да се заредят",
|
|
||||||
"EditSelectedDownloadClients": "Изтриване на клиент за изтегляне",
|
|
||||||
"Application": "Приложения",
|
|
||||||
"AddNewIndexer": "Добавете Indexer",
|
|
||||||
"TvSearch": "Търсене",
|
|
||||||
"Proxies": "Профили",
|
|
||||||
"IndexerProxy": "Индексатор Приоритет",
|
|
||||||
"Stats": "Статус",
|
|
||||||
"UnableToLoadAppProfiles": "Профилите за забавяне не могат да се заредят",
|
|
||||||
"EditApplicationImplementation": "Добави условие - {implementationName}",
|
|
||||||
"Mixed": "Фиксирана",
|
|
||||||
"IndexerStatus": "Настройки на индексатора",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "Наистина ли искате да изтриете избраните филмови файлове?",
|
|
||||||
"DeleteSelectedApplications": "Изтриване на избрани филмови файлове",
|
|
||||||
"DeleteSelectedIndexers": "Изтрийте Indexer",
|
|
||||||
"DownloadClientCategory": "Изтриване на клиент за изтегляне",
|
|
||||||
"EditCategory": "Категория",
|
|
||||||
"Notifications": "Сертифициране",
|
|
||||||
"SearchIndexers": "Изтрийте Indexer",
|
|
||||||
"SyncProfile": "Редактиране на профил за забавяне",
|
|
||||||
"MovieSearchTypes": "Масово търсене на филми",
|
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Наистина ли искате да изтриете избраните филмови файлове?",
|
|
||||||
"DeleteSelectedIndexer": "Изтрийте Indexer",
|
|
||||||
"EditSelectedIndexers": "Изтрийте Indexer",
|
|
||||||
"Connect": "Сертифициране",
|
|
||||||
"AddIndexerProxy": "Индексатор Приоритет",
|
|
||||||
"IndexerProxies": "Индексатор Приоритет",
|
|
||||||
"IndexerInfo": "Индексатор",
|
|
||||||
"SyncProfiles": "Редактиране на профил за забавяне",
|
|
||||||
"AddSyncProfile": "Редактиране на профил за забавяне",
|
|
||||||
"Auth": "Авто",
|
|
||||||
"FilterPlaceHolder": "Изтрийте Indexer"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -487,7 +487,7 @@
|
|||||||
"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.",
|
"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ó",
|
"AptUpdater": "Utilitzeu apt per a instal·lar l'actualització",
|
||||||
"DockerUpdater": "Actualitzeu el contenidor Docker per actualitzar",
|
"DockerUpdater": "actualitzeu el contenidor Docker per a rebre l'actualització",
|
||||||
"Download": "Baixa",
|
"Download": "Baixa",
|
||||||
"ErrorRestoringBackup": "S'ha produït un error en restaurar la còpia de seguretat",
|
"ErrorRestoringBackup": "S'ha produït un error en restaurar la còpia de seguretat",
|
||||||
"ExternalUpdater": "{appName} està configurat per a utilitzar un mecanisme d'actualització extern",
|
"ExternalUpdater": "{appName} està configurat per a utilitzar un mecanisme d'actualització extern",
|
||||||
@@ -804,7 +804,7 @@
|
|||||||
"DownloadClientRTorrentSettingsAddStopped": "Afegeix aturat",
|
"DownloadClientRTorrentSettingsAddStopped": "Afegeix aturat",
|
||||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "En activar s'afegiran torrents i imants a rTorrent en un estat aturat. Això pot trencar els fitxers magnet.",
|
"DownloadClientRTorrentSettingsAddStoppedHelpText": "En activar s'afegiran torrents i imants a rTorrent en un estat aturat. Això pot trencar els fitxers magnet.",
|
||||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "S'ha recuperat el testimoni de l'aplicació en crear l'accés a l'API de Freebox (ex: 'app_token')",
|
"DownloadClientFreeboxSettingsAppTokenHelpText": "S'ha recuperat el testimoni de l'aplicació en crear l'accés a l'API de Freebox (ex: 'app_token')",
|
||||||
"DownloadClientUTorrentProviderMessage": "uTorrent té historial d'incloure criptominers, malware i anuncis, suggerim fortament que escolleixis un client diferent.",
|
"DownloadClientUTorrentProviderMessage": "uTorrent té un historial d'inclusió de criptominers, programari maliciós i anuncis, us animem a triar un client diferent.",
|
||||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Estat inicial dels torrents afegits a qBittorrent. Tingueu en compte que els torrents forçats no compleixen amb les restriccions de llavors",
|
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Estat inicial dels torrents afegits a qBittorrent. Tingueu en compte que els torrents forçats no compleixen amb les restriccions de llavors",
|
||||||
"LogSizeLimit": "Límit de la mida del registre",
|
"LogSizeLimit": "Límit de la mida del registre",
|
||||||
"SelectDownloadClientModalTitle": "{modalTitle} - Seleccioneu el client de baixada"
|
"SelectDownloadClientModalTitle": "{modalTitle} - Seleccioneu el client de baixada"
|
||||||
|
|||||||
@@ -644,25 +644,5 @@
|
|||||||
"SeedTime": "Doba sdílení",
|
"SeedTime": "Doba sdílení",
|
||||||
"OnHealthRestoredHelpText": "Při obnovení zdraví",
|
"OnHealthRestoredHelpText": "Při obnovení zdraví",
|
||||||
"SeedRatio": "Poměr sdílení",
|
"SeedRatio": "Poměr sdílení",
|
||||||
"ThemeHelpText": "Změnit motiv UI, možnost „Auto“ kopíruje nastavení OS pro výběr tmavého nebo světlého režimu. Inspirováno {inspiredBy}.",
|
"ThemeHelpText": "Změnit motiv UI, možnost „Auto“ kopíruje nastavení OS pro výběr tmavého nebo světlého režimu. Inspirováno {inspiredBy}."
|
||||||
"SearchType": "Hledat typy",
|
|
||||||
"UnableToLoadDevelopmentSettings": "Nelze načíst obecná nastavení",
|
|
||||||
"SeedTimeHelpText": "Doba, po kterou bude torrent sdílen před zastavením, prázdná hodnota použije výchozí hodnotu klienta stahování",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Originál",
|
|
||||||
"SelectIndexers": "Vybrat příznaky indexeru",
|
|
||||||
"IndexerTagsHelpTextWarning": "Š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.",
|
|
||||||
"MinimumSeeders": "Minimální počet seederů aplikací",
|
|
||||||
"SearchAllIndexers": "Hledat indexery",
|
|
||||||
"SyncProfile": "Přidat synchronizační profil",
|
|
||||||
"TvSearch": "Vyhledávání",
|
|
||||||
"UnableToLoadAppProfiles": "Nelze načíst profily zpoždění",
|
|
||||||
"UnableToLoadIndexerProxies": "Nelze načíst indexery",
|
|
||||||
"SyncProfiles": "Přidat synchronizační profil",
|
|
||||||
"TVSearchTypes": "Hledat typy",
|
|
||||||
"Proxies": "Profily",
|
|
||||||
"MovieSearchTypes": "Hledat typy",
|
|
||||||
"MusicSearchTypes": "Hledat typy",
|
|
||||||
"IndexerStatus": "Nastavení indexeru",
|
|
||||||
"MovieSearch": "Hromadné vyhledávání filmů",
|
|
||||||
"SeedRatioHelpText": "Doba, po kterou bude torrent sdílen před zastavením, prázdná hodnota použije výchozí hodnotu klienta stahování"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -428,39 +428,5 @@
|
|||||||
"Episode": "afsnit",
|
"Episode": "afsnit",
|
||||||
"Artist": "kunstner",
|
"Artist": "kunstner",
|
||||||
"Id": "ID",
|
"Id": "ID",
|
||||||
"Encoding": "Indkodning",
|
"Encoding": "Indkodning"
|
||||||
"Destination": "Destinationssti",
|
|
||||||
"IndexerId": "Indekser",
|
|
||||||
"MovieSearch": "Massefilmsøgning",
|
|
||||||
"CountIndexersSelected": "{count} film er valgt",
|
|
||||||
"EditCategory": "Tilføj Kategori",
|
|
||||||
"EditSelectedDownloadClients": "Slet Download Client",
|
|
||||||
"ManageDownloadClients": "Download Klienter",
|
|
||||||
"SyncProfile": "Tilføj synkroniseringsprofil",
|
|
||||||
"SyncProfiles": "Tilføj synkroniseringsprofil",
|
|
||||||
"UnableToLoadAppProfiles": "Kunne ikke indlæse forsinkelsesprofiler",
|
|
||||||
"ApplicationURL": "Applikationer",
|
|
||||||
"IndexerProxy": "Tilføj en indeksørproxy",
|
|
||||||
"Proxies": "Profiler",
|
|
||||||
"DeleteClientCategory": "Slet Download Client",
|
|
||||||
"IndexerStatus": "Indekseringsindstillinger",
|
|
||||||
"TvSearch": "Søg",
|
|
||||||
"UnableToLoadIndexerProxies": "Kan ikke indlæse indeksørerne",
|
|
||||||
"DeleteIndexerProxy": "Slet Indexer",
|
|
||||||
"UnableToLoadDevelopmentSettings": "Kan ikke indlæse generelle indstillinger",
|
|
||||||
"Donate": "Dato",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Original",
|
|
||||||
"SelectIndexers": "Slet Indexer",
|
|
||||||
"AuthenticationMethod": "Godkendelse",
|
|
||||||
"Category": "Tilføj Kategori",
|
|
||||||
"SearchIndexers": "Slet Indexer",
|
|
||||||
"IndexerProxies": "Tilføj en indeksørproxy",
|
|
||||||
"IndexerInfo": "Indekser",
|
|
||||||
"MovieSearchTypes": "Massefilmsøgning",
|
|
||||||
"DownloadClientCategory": "Slet Download Client",
|
|
||||||
"DeleteSelectedApplications": "Slet valgte filmfiler",
|
|
||||||
"DeleteSelectedIndexer": "Slet Indexer",
|
|
||||||
"DeleteSelectedIndexers": "Slet Indexer",
|
|
||||||
"EditSelectedIndexers": "Slet Indexer",
|
|
||||||
"FilterPlaceHolder": "Slet Indexer"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,7 +137,7 @@
|
|||||||
"Exception": "Ausnahme",
|
"Exception": "Ausnahme",
|
||||||
"ExistingTag": "Vorhandener Tag",
|
"ExistingTag": "Vorhandener Tag",
|
||||||
"Failed": "Fehlgeschlagen",
|
"Failed": "Fehlgeschlagen",
|
||||||
"FeatureRequests": "Funktion anfragen",
|
"FeatureRequests": "Feature Anfragen",
|
||||||
"Filename": "Dateiname",
|
"Filename": "Dateiname",
|
||||||
"Files": "Dateien",
|
"Files": "Dateien",
|
||||||
"Filter": "Filter",
|
"Filter": "Filter",
|
||||||
|
|||||||
@@ -540,28 +540,5 @@
|
|||||||
"AptUpdater": "Χρησιμοποιήστε το apt για να εγκαταστήσετε την ενημέρωση",
|
"AptUpdater": "Χρησιμοποιήστε το apt για να εγκαταστήσετε την ενημέρωση",
|
||||||
"InstallLatest": "Εγκατάσταση πιο πρόσφατου",
|
"InstallLatest": "Εγκατάσταση πιο πρόσφατου",
|
||||||
"CurrentlyInstalled": "Εγκατεστημένο αυτήν τη στιγμή",
|
"CurrentlyInstalled": "Εγκατεστημένο αυτήν τη στιγμή",
|
||||||
"Mixed": "Σταθερός",
|
"Mixed": "Σταθερός"
|
||||||
"Destination": "Διαδρομή προορισμού",
|
|
||||||
"AddCategory": "Κατηγορία",
|
|
||||||
"AddDownloadClientImplementation": "Προσθήκη - {implementationName}",
|
|
||||||
"LogSizeLimit": "Όριο μεγέθους",
|
|
||||||
"IndexerStatus": "Ρυθμίσεις ευρετηρίου",
|
|
||||||
"IndexerId": "Ευρετήριο",
|
|
||||||
"EditSelectedIndexers": "Αναζήτηση ευρετηρίων",
|
|
||||||
"AppsMinimumSeeders": "Ελάχιστοι σπαρτήρες",
|
|
||||||
"AuthenticationMethod": "Αυθεντικοποίηση",
|
|
||||||
"EditDownloadClientImplementation": "Προσθήκη",
|
|
||||||
"EditSelectedDownloadClients": "Διαγραφή προγράμματος-πελάτη λήψης",
|
|
||||||
"SearchAllIndexers": "Αναζήτηση ευρετηριαστών",
|
|
||||||
"ManageDownloadClients": "Προγράμματα Λήψης",
|
|
||||||
"DeleteSelectedApplications": "Διαγραφή επιλεγμένου καλλιτέχνη",
|
|
||||||
"Donate": "Ημερομηνία",
|
|
||||||
"IndexerDownloadClientHelpText": "Καθορίστε ποιο πρόγραμμα-πελάτη λήψης χρησιμοποιείται για αρπαγές από αυτό το ευρετήριο",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Πρωτότυπο",
|
|
||||||
"AddCustomFilter": "Custom Φιλτρα",
|
|
||||||
"AddApplication": "Εφαρμογή",
|
|
||||||
"IndexerSettingsAppsMinimumSeeders": "Ελάχιστοι σπαρτήρες",
|
|
||||||
"DeleteSelectedIndexer": "Αναζήτηση ευρετηρίων",
|
|
||||||
"DeleteSelectedIndexers": "Αναζήτηση ευρετηρίων",
|
|
||||||
"EditCategory": "Κατηγορία"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,23 +9,5 @@
|
|||||||
"AddConnectionImplementation": "افزودن پیوند - {implementationName}",
|
"AddConnectionImplementation": "افزودن پیوند - {implementationName}",
|
||||||
"AddDownloadClientImplementation": "افزودن کلاینت دانلود - {implementationName}",
|
"AddDownloadClientImplementation": "افزودن کلاینت دانلود - {implementationName}",
|
||||||
"Torrents": "تورنت ها",
|
"Torrents": "تورنت ها",
|
||||||
"Usenet": "Usenet",
|
"Usenet": "Usenet"
|
||||||
"AddIndexerImplementation": "افزودن شرط - {implementationName}",
|
|
||||||
"UnableToAddANewNotificationPleaseTryAgain": "افزودن شرط جدید ناموفق بود، لطفا مجددا تلاش کنید.",
|
|
||||||
"EditApplicationImplementation": "افزودن شرط - {implementationName}",
|
|
||||||
"EditDownloadClientImplementation": "افزودن کلاینت دانلود - {implementationName}",
|
|
||||||
"UnableToAddANewApplicationPleaseTryAgain": "افزودن شرط جدید ناموفق بود، لطفا مجددا تلاش کنید.",
|
|
||||||
"UnableToAddANewDownloadClientPleaseTryAgain": "افزودن شرط جدید ناموفق بود، لطفا مجددا تلاش کنید.",
|
|
||||||
"UnableToAddANewIndexerProxyPleaseTryAgain": "افزودن نمایه تاخیر جدید ناموفق بود، لطفا مجددا تلاش کنید.",
|
|
||||||
"Connections": "افزودن پیوند",
|
|
||||||
"EditConnectionImplementation": "افزودن پیوند - {implementationName}",
|
|
||||||
"AddApplicationImplementation": "افزودن شرط - {implementationName}",
|
|
||||||
"UnableToAddANewIndexerPleaseTryAgain": "افزودن شرط جدید ناموفق بود، لطفا مجددا تلاش کنید.",
|
|
||||||
"Torrent": "تورنت ها",
|
|
||||||
"UnableToAddANewAppProfilePleaseTryAgain": "افزودن نمایه تاخیر جدید ناموفق بود، لطفا مجددا تلاش کنید.",
|
|
||||||
"ConnectionLost": "افزودن پیوند",
|
|
||||||
"EditSyncProfile": "افزودن نمایه تاخیر",
|
|
||||||
"AddIndexerProxyImplementation": "افزودن شرط - {implementationName}",
|
|
||||||
"EditIndexerImplementation": "افزودن شرط - {implementationName}",
|
|
||||||
"EditIndexerProxyImplementation": "افزودن شرط - {implementationName}"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -285,7 +285,7 @@
|
|||||||
"NoLogFiles": "Lokitiedostoja ei ole",
|
"NoLogFiles": "Lokitiedostoja ei ole",
|
||||||
"SSLCertPasswordHelpText": "PFX-tiedoston salasana",
|
"SSLCertPasswordHelpText": "PFX-tiedoston salasana",
|
||||||
"SSLCertPath": "SSL-varmenteen sijainti",
|
"SSLCertPath": "SSL-varmenteen sijainti",
|
||||||
"SSLCertPathHelpText": "Pfx- tai pem-tiedoston sijainti.",
|
"SSLCertPathHelpText": "PFX-tiedoston sijainti",
|
||||||
"Status": "Tila",
|
"Status": "Tila",
|
||||||
"NotificationTriggers": "Ilmoituksen laukaisijat",
|
"NotificationTriggers": "Ilmoituksen laukaisijat",
|
||||||
"NoUpdatesAreAvailable": "Päivityksiä ei ole saatavilla",
|
"NoUpdatesAreAvailable": "Päivityksiä ei ole saatavilla",
|
||||||
@@ -622,7 +622,7 @@
|
|||||||
"IndexerBeyondHDSettingsSearchTypes": "Etsittävät tyypit",
|
"IndexerBeyondHDSettingsSearchTypes": "Etsittävät tyypit",
|
||||||
"IndexerSettingsSeedRatio": "Jakosuhde",
|
"IndexerSettingsSeedRatio": "Jakosuhde",
|
||||||
"IndexerSettingsSeedTime": "Jakoaika",
|
"IndexerSettingsSeedTime": "Jakoaika",
|
||||||
"IndexerSettingsSeedTimeHelpText": "Aika, joka torrentia tulee jakaa ennen kuin se pysäytetään. Käytä latauspalvelun 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",
|
"IndexerSettingsVipExpiration": "VIP-erääntyy",
|
||||||
"Destination": "Kohde",
|
"Destination": "Kohde",
|
||||||
"Directory": "Kansio",
|
"Directory": "Kansio",
|
||||||
@@ -647,7 +647,7 @@
|
|||||||
"IndexerSettingsCookie": "Eväste",
|
"IndexerSettingsCookie": "Eväste",
|
||||||
"IndexerSettingsPackSeedTime": "Paketin 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.",
|
"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": "Jakosuhde, joka torrentin tulee saavuttaa ennen kuin se pysäytetään. Käytä latauspalvelun oletusta jättämällä tyhjäksi. Suhteen tulisi olla vähintään 1.0 ja noudattaa hakupalvelun 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",
|
"SecretToken": "Salainen tunniste",
|
||||||
"TorrentBlackholeSaveMagnetFiles": "Tallenna magnet-tiedostot",
|
"TorrentBlackholeSaveMagnetFiles": "Tallenna magnet-tiedostot",
|
||||||
"UseSsl": "Käytä SSL-salausta",
|
"UseSsl": "Käytä SSL-salausta",
|
||||||
@@ -661,7 +661,7 @@
|
|||||||
"XmlRpcPath": "XML RPC -sijainti",
|
"XmlRpcPath": "XML RPC -sijainti",
|
||||||
"DownloadClientSettingsUrlBaseHelpText": "Lisää lataustuökalun {clientName} URL-osoitteeseen etuliitteen, esim. \"{url}\".",
|
"DownloadClientSettingsUrlBaseHelpText": "Lisää lataustuökalun {clientName} URL-osoitteeseen etuliitteen, esim. \"{url}\".",
|
||||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Lisää Flood-rajapintaan etuliitteen, esim. \"{url}\".",
|
"DownloadClientFloodSettingsUrlBaseHelpText": "Lisää Flood-rajapintaan etuliitteen, esim. \"{url}\".",
|
||||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Vaihtoehtoinen jaettu kansio latauksille. Käytä Download Stationin oletusta jättämällä tyhjäksi.",
|
"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}\".",
|
"DownloadClientFreeboxSettingsApiUrlHelpText": "Määritä Freebox-rajapinnan perus-URL rajapinnan versiolla, esim. \"{url}\". Oletus on \"{defaultApiUrl}\".",
|
||||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Ensimmäinen ja viimeinen ensin",
|
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Ensimmäinen ja viimeinen ensin",
|
||||||
"DownloadClientFreeboxSettingsAppId": "Sovelluksen ID",
|
"DownloadClientFreeboxSettingsAppId": "Sovelluksen ID",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"Indexers": "Indexeurs",
|
"Indexers": "Indexeurs",
|
||||||
"Host": "Hôte",
|
"Host": "Hôte",
|
||||||
"History": "Historique",
|
"History": "Historique",
|
||||||
"HideAdvanced": "Masquer les options avancées",
|
"HideAdvanced": "Masquer les Options Avancées",
|
||||||
"Health": "Santé",
|
"Health": "Santé",
|
||||||
"General": "Général",
|
"General": "Général",
|
||||||
"Folder": "Dossier",
|
"Folder": "Dossier",
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"Events": "Événements",
|
"Events": "Événements",
|
||||||
"Edit": "Modifier",
|
"Edit": "Modifier",
|
||||||
"DownloadClientStatusAllClientHealthCheckMessage": "Aucun client de téléchargement n'est disponible en raison d'échecs",
|
"DownloadClientStatusAllClientHealthCheckMessage": "Aucun client de téléchargement n'est disponible en raison d'échecs",
|
||||||
"DownloadClients": "Téléchargement",
|
"DownloadClients": "Clients de télécharg.",
|
||||||
"Dates": "Dates",
|
"Dates": "Dates",
|
||||||
"Date": "Date",
|
"Date": "Date",
|
||||||
"Delete": "Supprimer",
|
"Delete": "Supprimer",
|
||||||
@@ -22,20 +22,20 @@
|
|||||||
"Clear": "Effacer",
|
"Clear": "Effacer",
|
||||||
"BackupNow": "Sauvegarder maintenant",
|
"BackupNow": "Sauvegarder maintenant",
|
||||||
"Backup": "Sauvegarde",
|
"Backup": "Sauvegarde",
|
||||||
"AppDataLocationHealthCheckMessage": "La mise à jour ne sera pas possible afin d'éviter la suppression des données d'application (AppData)",
|
"AppDataLocationHealthCheckMessage": "La mise à jour ne sera pas possible afin empêcher la suppression de AppData lors de la mise à jour",
|
||||||
"Analytics": "Statistiques",
|
"Analytics": "Statistiques",
|
||||||
"All": "Tout",
|
"All": "Tout",
|
||||||
"About": "À propos",
|
"About": "À propos",
|
||||||
"IndexerStatusUnavailableHealthCheckMessage": "Indexeurs indisponibles en raison d'échecs : {indexerNames}",
|
"IndexerStatusUnavailableHealthCheckMessage": "Indexeurs indisponibles en raison d'échecs : {indexerNames}",
|
||||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Clients de Téléchargement indisponibles en raison d'échecs : {downloadClientNames}",
|
"DownloadClientStatusSingleClientHealthCheckMessage": "Clients de Téléchargement indisponibles en raison d'échecs : {downloadClientNames}",
|
||||||
"SetTags": "Définir les étiquettes",
|
"SetTags": "Définir des étiquettes",
|
||||||
"ReleaseStatus": "Statut de la version",
|
"ReleaseStatus": "Statut de la version",
|
||||||
"UpdateUiNotWritableHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier d'interface utilisateur '{uiFolder}' n'est pas accessible en écriture par l'utilisateur '{userName}'.",
|
"UpdateUiNotWritableHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier d'interface utilisateur '{uiFolder}' n'est pas accessible en écriture par l'utilisateur '{userName}'.",
|
||||||
"UpdateStartupTranslocationHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier de démarrage '{startupFolder}' se trouve dans un dossier App Translocation.",
|
"UpdateStartupTranslocationHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier de démarrage '{startupFolder}' se trouve dans un dossier App Translocation.",
|
||||||
"UpdateStartupNotWritableHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier de démarrage '{startupFolder}' n'est pas accessible en écriture par l'utilisateur '{userName}'.",
|
"UpdateStartupNotWritableHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier de démarrage '{startupFolder}' n'est pas accessible en écriture par l'utilisateur '{userName}'.",
|
||||||
"UnselectAll": "Tout désélectionner",
|
"UnselectAll": "Tout désélectionner",
|
||||||
"UISettingsSummary": "Date, langue, et perceptions des couleurs",
|
"UISettingsSummary": "Date, langue, et perceptions des couleurs",
|
||||||
"TagsSettingsSummary": "Voir toutes les étiquettes et leur utilisation. Les étiquettes inutilisées peuvent être supprimées",
|
"TagsSettingsSummary": "Voir toutes les étiquettes et comment elles sont utilisées. Les étiquettes inutilisées peuvent être supprimées",
|
||||||
"Style": "Style",
|
"Style": "Style",
|
||||||
"Status": "État",
|
"Status": "État",
|
||||||
"Sort": "Trier",
|
"Sort": "Trier",
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
"NoChanges": "Aucun changement",
|
"NoChanges": "Aucun changement",
|
||||||
"NoChange": "Pas de changement",
|
"NoChange": "Pas de changement",
|
||||||
"MoreInfo": "Plus d'informations",
|
"MoreInfo": "Plus d'informations",
|
||||||
"Grabbed": "Récupération",
|
"Grabbed": "Saisie",
|
||||||
"DownloadClientsSettingsSummary": "Configuration des clients de téléchargement pour intégration dans la recherche de l'interface utilisateur de {appName}",
|
"DownloadClientsSettingsSummary": "Configuration des clients de téléchargement pour intégration dans la recherche de l'interface utilisateur de {appName}",
|
||||||
"DownloadClient": "Client de téléchargement",
|
"DownloadClient": "Client de téléchargement",
|
||||||
"Logging": "Enregistrement",
|
"Logging": "Enregistrement",
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
"Updates": "Mises à jour",
|
"Updates": "Mises à jour",
|
||||||
"UI": "UI",
|
"UI": "UI",
|
||||||
"Tasks": "Tâches",
|
"Tasks": "Tâches",
|
||||||
"Tags": "Étiquettes",
|
"Tags": "Tags",
|
||||||
"System": "Système",
|
"System": "Système",
|
||||||
"LastWriteTime": "Heure de la dernière écriture",
|
"LastWriteTime": "Heure de la dernière écriture",
|
||||||
"Language": "Langue",
|
"Language": "Langue",
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
"Restart": "Redémarrer",
|
"Restart": "Redémarrer",
|
||||||
"Reload": "Recharger",
|
"Reload": "Recharger",
|
||||||
"Peers": "Peers",
|
"Peers": "Peers",
|
||||||
"PageSize": "Taille de la page",
|
"PageSize": "Pagination",
|
||||||
"Ok": "OK",
|
"Ok": "OK",
|
||||||
"OAuthPopupMessage": "Les pop-ups sont bloquées par votre navigateur",
|
"OAuthPopupMessage": "Les pop-ups sont bloquées par votre navigateur",
|
||||||
"Name": "Nom",
|
"Name": "Nom",
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
"PendingChangesStayReview": "Rester et vérifier les modifications",
|
"PendingChangesStayReview": "Rester et vérifier les modifications",
|
||||||
"PendingChangesMessage": "Vous avez des modifications non sauvegardées, voulez-vous vraiment quitter cette page ?",
|
"PendingChangesMessage": "Vous avez des modifications non sauvegardées, voulez-vous vraiment quitter cette page ?",
|
||||||
"PendingChangesDiscardChanges": "Abandonner les modifications et quitter",
|
"PendingChangesDiscardChanges": "Abandonner les modifications et quitter",
|
||||||
"CloneProfile": "Dupliquer le profil",
|
"CloneProfile": "Dupliqué le profil",
|
||||||
"ClientPriority": "Priorité du client",
|
"ClientPriority": "Priorité du client",
|
||||||
"ChangeHasNotBeenSavedYet": "Les changements n'ont pas encore été sauvegardés",
|
"ChangeHasNotBeenSavedYet": "Les changements n'ont pas encore été sauvegardés",
|
||||||
"CertificateValidationHelpText": "Change la rigueur de la vérification du certificat HTTPS",
|
"CertificateValidationHelpText": "Change la rigueur de la vérification du certificat HTTPS",
|
||||||
@@ -221,8 +221,8 @@
|
|||||||
"TagIsNotUsedAndCanBeDeleted": "L'étiquette n'est pas utilisée et peut être supprimée",
|
"TagIsNotUsedAndCanBeDeleted": "L'étiquette n'est pas utilisée et peut être supprimée",
|
||||||
"TagsHelpText": "S'applique aux indexeurs avec au moins une étiquette correspondante",
|
"TagsHelpText": "S'applique aux indexeurs avec au moins une étiquette correspondante",
|
||||||
"StartTypingOrSelectAPathBelow": "Commencer à écrire ou sélectionner un chemin ci-dessous",
|
"StartTypingOrSelectAPathBelow": "Commencer à écrire ou sélectionner un chemin ci-dessous",
|
||||||
"NoTagsHaveBeenAddedYet": "Aucune étiquette n'a encore été ajoutée",
|
"NoTagsHaveBeenAddedYet": "Aucune identification n'a été ajoutée pour l'instant",
|
||||||
"IndexerFlags": "Indicateurs de l'indexeur",
|
"IndexerFlags": "Drapeaux de l'indexeur",
|
||||||
"DeleteTagMessageText": "Voulez-vous vraiment supprimer l'étiquette '{label}' ?",
|
"DeleteTagMessageText": "Voulez-vous vraiment supprimer l'étiquette '{label}' ?",
|
||||||
"UISettings": "Paramètres UI",
|
"UISettings": "Paramètres UI",
|
||||||
"UILanguageHelpTextWarning": "Rechargement du navigateur requis",
|
"UILanguageHelpTextWarning": "Rechargement du navigateur requis",
|
||||||
@@ -250,8 +250,8 @@
|
|||||||
"RestartNow": "Redémarrer maintenant",
|
"RestartNow": "Redémarrer maintenant",
|
||||||
"ResetAPIKey": "Réinitialiser la clé API",
|
"ResetAPIKey": "Réinitialiser la clé API",
|
||||||
"Reset": "Réinitialiser",
|
"Reset": "Réinitialiser",
|
||||||
"RemovingTag": "Suppression de l'étiquette",
|
"RemovingTag": "Supprimer la balise",
|
||||||
"ExistingTag": "Étiquette existante",
|
"ExistingTag": "Balise existante",
|
||||||
"RemoveFilter": "Supprimer le filtre",
|
"RemoveFilter": "Supprimer le filtre",
|
||||||
"RemovedFromTaskQueue": "Supprimé de la file d'attente des tâches",
|
"RemovedFromTaskQueue": "Supprimé de la file d'attente des tâches",
|
||||||
"RefreshMovie": "Actualiser le film",
|
"RefreshMovie": "Actualiser le film",
|
||||||
@@ -259,8 +259,8 @@
|
|||||||
"ProwlarrSupportsAnyIndexer": "{appName} prend en charge de nombreux indexeurs en plus de tout indexeur qui utilise la norme Newznab/Torznab en utilisant « Generic Newznab » (pour usenet) ou « Generic Torznab » (pour les torrents). Recherchez et sélectionnez votre indexeur ci-dessous.",
|
"ProwlarrSupportsAnyIndexer": "{appName} prend en charge de nombreux indexeurs en plus de tout indexeur qui utilise la norme Newznab/Torznab en utilisant « Generic Newznab » (pour usenet) ou « Generic Torznab » (pour les torrents). Recherchez et sélectionnez votre indexeur ci-dessous.",
|
||||||
"ProwlarrSupportsAnyDownloadClient": "{appName} prend en charge tout client de téléchargement qui utilise le standard Newznab, ainsi que d'autres clients de téléchargement répertoriés ci-dessous.",
|
"ProwlarrSupportsAnyDownloadClient": "{appName} prend en charge tout client de téléchargement qui utilise le standard Newznab, ainsi que d'autres clients de téléchargement répertoriés ci-dessous.",
|
||||||
"ProxyUsernameHelpText": "Il vous suffit de saisir un nom d'utilisateur et un mot de passe si nécessaire. Sinon, laissez-les vides.",
|
"ProxyUsernameHelpText": "Il vous suffit de saisir un nom d'utilisateur et un mot de passe si nécessaire. Sinon, laissez-les vides.",
|
||||||
"ProxyType": "Type de proxy",
|
"ProxyType": "Type de mandataire",
|
||||||
"ProxyPasswordHelpText": "Saisissez un nom d'utilisateur et un mot de passe uniquement s'ils sont requis. Sinon, laissez ces champs vides.",
|
"ProxyPasswordHelpText": "Il vous suffit de saisir un nom d'utilisateur et un mot de passe si nécessaire. Sinon, laissez-les vides.",
|
||||||
"Priority": "Priorité",
|
"Priority": "Priorité",
|
||||||
"PortNumber": "Numéro de port",
|
"PortNumber": "Numéro de port",
|
||||||
"Port": "Port",
|
"Port": "Port",
|
||||||
@@ -274,11 +274,11 @@
|
|||||||
"NoLeaveIt": "Non, laisse tomber",
|
"NoLeaveIt": "Non, laisse tomber",
|
||||||
"NoBackupsAreAvailable": "Aucune sauvegarde n'est disponible",
|
"NoBackupsAreAvailable": "Aucune sauvegarde n'est disponible",
|
||||||
"New": "Nouveau",
|
"New": "Nouveau",
|
||||||
"NetCore": ".NET",
|
"NetCore": ".NET Core",
|
||||||
"MovieIndexScrollTop": "Index des films : faire défiler vers le haut",
|
"MovieIndexScrollTop": "Index des films : faire défiler vers le haut",
|
||||||
"MovieIndexScrollBottom": "Index des films : faire défiler vers le bas",
|
"MovieIndexScrollBottom": "Index des films : faire défiler vers le bas",
|
||||||
"MIA": "Indisponible",
|
"MIA": "MIA",
|
||||||
"LaunchBrowserHelpText": " Ouvrir un navigateur Web et accéder à la page d'accueil de {appName} au démarrage de l'application.",
|
"LaunchBrowserHelpText": " Ouvrer un navigateur Web et accéder à la page d'accueil de {appName} au démarrage de l'application.",
|
||||||
"CloseCurrentModal": "Fermer cette fenêtre modale",
|
"CloseCurrentModal": "Fermer cette fenêtre modale",
|
||||||
"AddingTag": "Ajout d'une étiquette",
|
"AddingTag": "Ajout d'une étiquette",
|
||||||
"OnHealthIssueHelpText": "Sur un problème de santé",
|
"OnHealthIssueHelpText": "Sur un problème de santé",
|
||||||
@@ -318,8 +318,8 @@
|
|||||||
"ApplicationStatusCheckSingleClientMessage": "Applications indisponibles en raison de dysfonctionnements : {0}",
|
"ApplicationStatusCheckSingleClientMessage": "Applications indisponibles en raison de dysfonctionnements : {0}",
|
||||||
"ApplicationStatusCheckAllClientMessage": "Toutes les applications sont indisponibles en raison de dysfonctionnements",
|
"ApplicationStatusCheckAllClientMessage": "Toutes les applications sont indisponibles en raison de dysfonctionnements",
|
||||||
"AllIndexersHiddenDueToFilter": "Tous les indexeurs sont cachés en raison du filtre appliqué.",
|
"AllIndexersHiddenDueToFilter": "Tous les indexeurs sont cachés en raison du filtre appliqué.",
|
||||||
"AddToDownloadClient": "Ajouter une version au client",
|
"AddToDownloadClient": "Ajouter un release au client",
|
||||||
"AddedToDownloadClient": "Version ajoutée au client",
|
"AddedToDownloadClient": "Release ajoutée au client",
|
||||||
"AddNewIndexer": "Ajouter un nouvel indexeur",
|
"AddNewIndexer": "Ajouter un nouvel indexeur",
|
||||||
"Wiki": "Wiki",
|
"Wiki": "Wiki",
|
||||||
"Rss": "RSS",
|
"Rss": "RSS",
|
||||||
@@ -344,7 +344,7 @@
|
|||||||
"Description": "Description",
|
"Description": "Description",
|
||||||
"Donations": "Dons",
|
"Donations": "Dons",
|
||||||
"Enabled": "Activé",
|
"Enabled": "Activé",
|
||||||
"Grabs": "Récupérations",
|
"Grabs": "Complétés",
|
||||||
"Id": "ID",
|
"Id": "ID",
|
||||||
"Presets": "Préconfigurations",
|
"Presets": "Préconfigurations",
|
||||||
"Privacy": "Visibilité",
|
"Privacy": "Visibilité",
|
||||||
@@ -360,7 +360,7 @@
|
|||||||
"SyncLevel": "Niveau de synchronisation",
|
"SyncLevel": "Niveau de synchronisation",
|
||||||
"FullSync": "Synchronisation complète",
|
"FullSync": "Synchronisation complète",
|
||||||
"AddRemoveOnly": "Ajouter et supprimer uniquement",
|
"AddRemoveOnly": "Ajouter et supprimer uniquement",
|
||||||
"AddDownloadClientToProwlarr": "L'ajout d'un client de téléchargement permet à {appName} d'envoyer des fichiers directement depuis l'interface utilisateur tout en effectuant une recherche manuelle.",
|
"AddDownloadClientToProwlarr": "L'ajout d'un client de téléchargement permet à {appName} d'envoyer des fichers directement depuis l'interface utilisateur tout en effectuant une recherche manuelle.",
|
||||||
"NoSearchResultsFound": "Aucun résultat de recherche trouvé, essayez d'effectuer une nouvelle recherche ci-dessous.",
|
"NoSearchResultsFound": "Aucun résultat de recherche trouvé, essayez d'effectuer une nouvelle recherche ci-dessous.",
|
||||||
"DeleteIndexerProxy": "Supprimer le proxy indexeur",
|
"DeleteIndexerProxy": "Supprimer le proxy indexeur",
|
||||||
"DeleteIndexerProxyMessageText": "Voulez-vous supprimer le proxy d'indexeur « {name} » ?",
|
"DeleteIndexerProxyMessageText": "Voulez-vous supprimer le proxy d'indexeur « {name} » ?",
|
||||||
@@ -382,7 +382,7 @@
|
|||||||
"Filters": "Filtres",
|
"Filters": "Filtres",
|
||||||
"HistoryCleanupDaysHelpText": "Définir sur 0 pour désactiver le nettoyage automatique",
|
"HistoryCleanupDaysHelpText": "Définir sur 0 pour désactiver le nettoyage automatique",
|
||||||
"HistoryCleanupDaysHelpTextWarning": "Les fichiers dans la corbeille plus anciens que le nombre de jours sélectionné seront nettoyés automatiquement",
|
"HistoryCleanupDaysHelpTextWarning": "Les fichiers dans la corbeille plus anciens que le nombre de jours sélectionné seront nettoyés automatiquement",
|
||||||
"OnGrab": "Lors de la récupération",
|
"OnGrab": "Récupéré à la sortie",
|
||||||
"OnHealthIssue": "Lors de problème de santé",
|
"OnHealthIssue": "Lors de problème de santé",
|
||||||
"TestAllIndexers": "Tester tous les indexeurs",
|
"TestAllIndexers": "Tester tous les indexeurs",
|
||||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent fourni par l'application qui a appelé l'API",
|
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent fourni par l'application qui a appelé l'API",
|
||||||
@@ -410,7 +410,7 @@
|
|||||||
"MovieSearch": "Recherche de films",
|
"MovieSearch": "Recherche de films",
|
||||||
"TvSearch": "Recherche de séries TV",
|
"TvSearch": "Recherche de séries TV",
|
||||||
"Application": "Applications",
|
"Application": "Applications",
|
||||||
"GrabReleases": "Récupérer la/les version(s)",
|
"GrabReleases": "Télécharger la/les version(s)",
|
||||||
"Link": "Lien",
|
"Link": "Lien",
|
||||||
"No": "Non",
|
"No": "Non",
|
||||||
"SearchTypes": "Types de recherche",
|
"SearchTypes": "Types de recherche",
|
||||||
@@ -444,7 +444,7 @@
|
|||||||
"SyncProfile": "Profil de synchronisation",
|
"SyncProfile": "Profil de synchronisation",
|
||||||
"SyncProfiles": "Profils de synchronisation",
|
"SyncProfiles": "Profils de synchronisation",
|
||||||
"MinimumSeeders": "Nombre minimum de seeders",
|
"MinimumSeeders": "Nombre minimum de seeders",
|
||||||
"MinimumSeedersHelpText": "Nombre minimum de seeders requis par l'application pour que l'indexeur effectue une récupération",
|
"MinimumSeedersHelpText": "Nombre minimum de seeders requis par l'application pour que l’indexer puisse saisir",
|
||||||
"AreYouSureYouWantToDeleteCategory": "Êtes-vous sûr de vouloir supprimer la catégorie mappée ?",
|
"AreYouSureYouWantToDeleteCategory": "Êtes-vous sûr de vouloir supprimer la catégorie mappée ?",
|
||||||
"ElapsedTime": "Temps écoulé",
|
"ElapsedTime": "Temps écoulé",
|
||||||
"Parameters": "Paramètres",
|
"Parameters": "Paramètres",
|
||||||
@@ -461,8 +461,8 @@
|
|||||||
"OnLatestVersion": "La dernière version de {appName} est déjà installée",
|
"OnLatestVersion": "La dernière version de {appName} est déjà installée",
|
||||||
"AddCustomFilter": "Ajouter filtre personnalisé",
|
"AddCustomFilter": "Ajouter filtre personnalisé",
|
||||||
"AddApplication": "Ajouter une application",
|
"AddApplication": "Ajouter une application",
|
||||||
"IncludeManualGrabsHelpText": "Inclure les récupérations manuelles effectuées dans {appName}",
|
"IncludeManualGrabsHelpText": "Inclure les saisies manuelles effectuées dans {appName}",
|
||||||
"OnGrabHelpText": "Lors de la récupération",
|
"OnGrabHelpText": "Récupéré à la sortie",
|
||||||
"RssFeed": "Flux RSS",
|
"RssFeed": "Flux RSS",
|
||||||
"VipExpiration": "Expiration VIP",
|
"VipExpiration": "Expiration VIP",
|
||||||
"DisabledUntil": "Désactivé jusqu'à",
|
"DisabledUntil": "Désactivé jusqu'à",
|
||||||
@@ -475,8 +475,8 @@
|
|||||||
"HistoryDetails": "Détails de l'historique",
|
"HistoryDetails": "Détails de l'historique",
|
||||||
"RepeatSearch": "Répéter la recherche",
|
"RepeatSearch": "Répéter la recherche",
|
||||||
"Theme": "Thème",
|
"Theme": "Thème",
|
||||||
"TotalHostGrabs": "Total des récupérations d'hôte",
|
"TotalHostGrabs": "Total des captures d'hôte",
|
||||||
"TotalUserAgentGrabs": "Total des récupérations d'agent utilisateur",
|
"TotalUserAgentGrabs": "Total des captures d'agent utilisateur",
|
||||||
"Book": "Livre",
|
"Book": "Livre",
|
||||||
"Artist": "Artiste",
|
"Artist": "Artiste",
|
||||||
"Author": "Auteur",
|
"Author": "Auteur",
|
||||||
@@ -488,7 +488,7 @@
|
|||||||
"Season": "Saison",
|
"Season": "Saison",
|
||||||
"TotalHostQueries": "Nombre total de requêtes d'hôte",
|
"TotalHostQueries": "Nombre total de requêtes d'hôte",
|
||||||
"TotalIndexerQueries": "Requêtes totales d'indexeur",
|
"TotalIndexerQueries": "Requêtes totales d'indexeur",
|
||||||
"TotalIndexerSuccessfulGrabs": "Total des récupérations réussies de l'indexeur",
|
"TotalIndexerSuccessfulGrabs": "Total des saisies réussies de l'indexeur",
|
||||||
"TotalUserAgentQueries": "Nombre total de requêtes d'agent utilisateur",
|
"TotalUserAgentQueries": "Nombre total de requêtes d'agent utilisateur",
|
||||||
"Track": "Piste",
|
"Track": "Piste",
|
||||||
"Year": "Année",
|
"Year": "Année",
|
||||||
@@ -504,8 +504,8 @@
|
|||||||
"DownloadClientPriorityHelpText": "Donnez la priorité à plusieurs clients de téléchargement. Le Round-Robin est utilisé pour les clients ayant la même priorité.",
|
"DownloadClientPriorityHelpText": "Donnez la priorité à plusieurs clients de téléchargement. Le Round-Robin est utilisé pour les clients ayant la même priorité.",
|
||||||
"SelectIndexers": "Sélectionner les indexeurs",
|
"SelectIndexers": "Sélectionner les indexeurs",
|
||||||
"ApplyTagsHelpTextHowToApplyIndexers": "Comment appliquer des étiquettes aux indexeurs sélectionnés",
|
"ApplyTagsHelpTextHowToApplyIndexers": "Comment appliquer des étiquettes aux indexeurs sélectionnés",
|
||||||
"ApplyTagsHelpTextRemove": "Supprimer : Supprimer les étiquettes saisies",
|
"ApplyTagsHelpTextRemove": "Supprimer : supprime les étiquettes renseignées",
|
||||||
"ApplyTagsHelpTextReplace": "Remplacer : Remplacer les étiquettes par celles saisies (ne saisissez aucune étiquette pour tout effacer)",
|
"ApplyTagsHelpTextReplace": "Remplacer : remplace les étiquettes par les étiquettes renseignées (ne pas renseigner d'étiquette pour toutes les effacer)",
|
||||||
"DeleteSelectedDownloadClients": "Supprimer le(s) client(s) de téléchargement",
|
"DeleteSelectedDownloadClients": "Supprimer le(s) client(s) de téléchargement",
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Voulez-vous vraiment supprimer {count} client(s) de téléchargement sélectionné(s) ?",
|
"DeleteSelectedDownloadClientsMessageText": "Voulez-vous vraiment supprimer {count} client(s) de téléchargement sélectionné(s) ?",
|
||||||
"StopSelecting": "Effacer la sélection",
|
"StopSelecting": "Effacer la sélection",
|
||||||
@@ -513,7 +513,7 @@
|
|||||||
"AdvancedSettingsHiddenClickToShow": "Paramètres avancés masqués, cliquez pour afficher",
|
"AdvancedSettingsHiddenClickToShow": "Paramètres avancés masqués, cliquez pour afficher",
|
||||||
"AdvancedSettingsShownClickToHide": "Paramètres avancés affichés, cliquez pour masquer",
|
"AdvancedSettingsShownClickToHide": "Paramètres avancés affichés, cliquez pour masquer",
|
||||||
"AppsMinimumSeeders": "Apps avec le nombre minimum de seeders disponibles",
|
"AppsMinimumSeeders": "Apps avec le nombre minimum de seeders disponibles",
|
||||||
"AppsMinimumSeedersHelpText": "Nombre minimum de seeders requis par l'application pour que l'indexeur effectue une récupération. Si vide, la valeur par défaut du profil de synchronisation est utilisée",
|
"AppsMinimumSeedersHelpText": "Minimum de seeders requis par les applications pour que l’indexeur les récupère, laisser vide utilise la valeur par défaut du profil Sync",
|
||||||
"BasicSearch": "Recherche de base",
|
"BasicSearch": "Recherche de base",
|
||||||
"CountIndexersAvailable": "{count} indexeur(s) disponible(s)",
|
"CountIndexersAvailable": "{count} indexeur(s) disponible(s)",
|
||||||
"DeleteSelectedApplications": "Supprimer les applications sélectionnées",
|
"DeleteSelectedApplications": "Supprimer les applications sélectionnées",
|
||||||
@@ -558,7 +558,7 @@
|
|||||||
"NoDownloadClientsFound": "Aucun client de téléchargement n'a été trouvé",
|
"NoDownloadClientsFound": "Aucun client de téléchargement n'a été trouvé",
|
||||||
"AppUpdated": "{appName} mis à jour",
|
"AppUpdated": "{appName} mis à jour",
|
||||||
"AppUpdatedVersion": "{appName} a été mis à jour vers la version `{version}`, pour profiter des derniers changements, vous devrez relancer {appName}",
|
"AppUpdatedVersion": "{appName} a été mis à jour vers la version `{version}`, pour profiter des derniers changements, vous devrez relancer {appName}",
|
||||||
"IndexerDownloadClientHelpText": "Spécifiez quel client de téléchargement utiliser pour les récupérations effectuées dans {appName} depuis cet indexeur",
|
"IndexerDownloadClientHelpText": "Préciser quel client de téléchargement est utilisé pour les saisies créées au sein de {appName} provenant de cet indexeur",
|
||||||
"Implementation": "Mise en œuvre",
|
"Implementation": "Mise en œuvre",
|
||||||
"SearchCountIndexers": "Rechercher {count} indexeur(s)",
|
"SearchCountIndexers": "Rechercher {count} indexeur(s)",
|
||||||
"SearchAllIndexers": "Rechercher tous les indexeurs",
|
"SearchAllIndexers": "Rechercher tous les indexeurs",
|
||||||
@@ -572,17 +572,17 @@
|
|||||||
"EditCategory": "Modifier la catégorie",
|
"EditCategory": "Modifier la catégorie",
|
||||||
"EditDownloadClientImplementation": "Modifier le client de téléchargement - {implementationName}",
|
"EditDownloadClientImplementation": "Modifier le client de téléchargement - {implementationName}",
|
||||||
"External": "Externe",
|
"External": "Externe",
|
||||||
"FoundCountReleases": "{itemCount} version(s) trouvée(s)",
|
"FoundCountReleases": "{itemCount} release(s) trouvée(s)",
|
||||||
"IndexerHistoryLoadError": "Erreur lors du chargement de l'historique de l'indexeur",
|
"IndexerHistoryLoadError": "Erreur lors du chargement de l'historique de l'indexeur",
|
||||||
"IndexerTagsHelpTextWarning": "Les étiquettes doivent être utilisées avec prudence, elles peuvent avoir des effets indésirables. Un indexeur avec une étiquette va uniquement synchroniser les applications ayant la même étiquette.",
|
"IndexerTagsHelpTextWarning": "Les étiquettes doivent être utilisées avec prudence, elles peuvent avoir des effets indésirables. Un indexeur avec une étiquette va uniquement synchroniser les applications ayant la même étiquette.",
|
||||||
"NoIndexerHistory": "Aucun historique n'a été trouvé pour cet indexeur",
|
"NoIndexerHistory": "Aucun historique n'a été trouvé pour cet indexeur",
|
||||||
"PackSeedTimeHelpText": "Le temps qu'un pack (saison ou discographie) doit être seedé avant de s'arrêter, la valeur vide est la valeur par défaut de l'application",
|
"PackSeedTimeHelpText": "Le temps qu'un pack (saison ou discographie) doit être seedé avant de s'arrêter, la valeur vide est la valeur par défaut de l'application",
|
||||||
"SeedRatioHelpText": "Le ratio qu'un torrent doit atteindre avant de s'arrêter, une valeur vide est la valeur par défaut de l'application",
|
"SeedRatioHelpText": "Le ratio qu'un torrent doit atteindre avant de s'arrêter, une valeur vide est la valeur par défaut de l'application",
|
||||||
"TorznabUrl": "URL Torznab",
|
"TorznabUrl": "URL Torznab",
|
||||||
"TotalGrabs": "Total des récupérations",
|
"TotalGrabs": "Récupéré au total",
|
||||||
"TotalQueries": "Requêtes totales",
|
"TotalQueries": "Requêtes totales",
|
||||||
"SeedRatio": "Ratio de seed",
|
"SeedRatio": "Ratio de seed",
|
||||||
"SelectedCountOfCountReleases": "{selectedCount} sur {itemCount} versions sélectionnées",
|
"SelectedCountOfCountReleases": "{selectedCount} sur {itemCount} releases sélectionnées",
|
||||||
"AddCategory": "Ajouter une catégorie",
|
"AddCategory": "Ajouter une catégorie",
|
||||||
"AddDownloadClientImplementation": "Ajouter un client de téléchargement - {implementationName}",
|
"AddDownloadClientImplementation": "Ajouter un client de téléchargement - {implementationName}",
|
||||||
"ManageDownloadClients": "Gérer les clients de téléchargement",
|
"ManageDownloadClients": "Gérer les clients de téléchargement",
|
||||||
@@ -596,7 +596,7 @@
|
|||||||
"Clone": "Dupliquer",
|
"Clone": "Dupliquer",
|
||||||
"PackSeedTime": "Temps de Seed",
|
"PackSeedTime": "Temps de Seed",
|
||||||
"ApplicationTagsHelpText": "Synchroniser les indexeurs avec cette application qui n'ont aucune étiquette ou qui ont une ou plusieurs étiquettes correspondantes. Si aucune étiquette n'est listée ici, aucun indexeur ne sera empêché de se synchroniser en raison de ses étiquettes.",
|
"ApplicationTagsHelpText": "Synchroniser les indexeurs avec cette application qui n'ont aucune étiquette ou qui ont une ou plusieurs étiquettes correspondantes. Si aucune étiquette n'est listée ici, aucun indexeur ne sera empêché de se synchroniser en raison de ses étiquettes.",
|
||||||
"OnHealthRestored": "Quand le système redevient opérationnel",
|
"OnHealthRestored": "Sur la santé restaurée",
|
||||||
"OnHealthRestoredHelpText": "Sur la santé restaurée",
|
"OnHealthRestoredHelpText": "Sur la santé restaurée",
|
||||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Confirmer le nouveau mot de passe",
|
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Confirmer le nouveau mot de passe",
|
||||||
"PasswordConfirmation": "Confirmation du mot de passe",
|
"PasswordConfirmation": "Confirmation du mot de passe",
|
||||||
@@ -639,7 +639,7 @@
|
|||||||
"IndexerSettingsApiUser": "Utilisateur de l'API",
|
"IndexerSettingsApiUser": "Utilisateur de l'API",
|
||||||
"IndexerSettingsAppsMinimumSeeders": "Apps avec le nombre minimum de seeders disponibles",
|
"IndexerSettingsAppsMinimumSeeders": "Apps avec le nombre minimum de seeders disponibles",
|
||||||
"IndexerSettingsFreeleechOnly": "Freeleech seulement",
|
"IndexerSettingsFreeleechOnly": "Freeleech seulement",
|
||||||
"IndexerSettingsGrabLimit": "Limite de récupération",
|
"IndexerSettingsGrabLimit": "Limite de saisie",
|
||||||
"IndexerSettingsQueryLimit": "Limite de requête",
|
"IndexerSettingsQueryLimit": "Limite de requête",
|
||||||
"IndexerSettingsQueryLimitHelpText": "Le nombre de requêtes maximales tel que spécifié par l'unité respective que {appName} autorisera au site",
|
"IndexerSettingsQueryLimitHelpText": "Le nombre de requêtes maximales tel que spécifié par l'unité respective que {appName} autorisera au site",
|
||||||
"IndexerSettingsRssKey": "Clé RSS",
|
"IndexerSettingsRssKey": "Clé RSS",
|
||||||
@@ -649,10 +649,10 @@
|
|||||||
"BlackholeFolderHelpText": "Dossier dans lequel {appName} stockera le fichier {extension}",
|
"BlackholeFolderHelpText": "Dossier dans lequel {appName} stockera le fichier {extension}",
|
||||||
"DefaultCategory": "Catégorie par défaut",
|
"DefaultCategory": "Catégorie par défaut",
|
||||||
"DownloadClientFloodSettingsAdditionalTags": "Étiquette supplémentaire",
|
"DownloadClientFloodSettingsAdditionalTags": "Étiquette supplémentaire",
|
||||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Ajoute les propriétés du média sous forme d'étiquettes. Les indices sont donnés à titre d'exemple.",
|
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Ajoute les propriétés des médias sous forme d'étiquette. Les conseils sont des exemples.",
|
||||||
"DownloadClientFreeboxSettingsApiUrl": "URL DE L'API",
|
"DownloadClientFreeboxSettingsApiUrl": "URL DE L'API",
|
||||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "Définir l'URL de base de l'API Freebox avec la version de l'API, par exemple '{url}', par défaut '{defaultApiUrl}'",
|
"DownloadClientFreeboxSettingsApiUrlHelpText": "Définir l'URL de base de l'API Freebox avec la version de l'API, par exemple '{url}', par défaut '{defaultApiUrl}'",
|
||||||
"DownloadClientFloodSettingsTagsHelpText": "Étiquettes initiales d'un téléchargement. Pour être reconnu, un téléchargement doit posséder toutes les étiquettes initiales. Cela évite les conflits avec des téléchargements non liés.",
|
"DownloadClientFloodSettingsTagsHelpText": "Étiquettes initiales d'un téléchargement. Pour être reconnu, un téléchargement doit avoir toutes les étiquettes initiales. Cela permet d'éviter les conflits avec des téléchargements non apparentés.",
|
||||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Ajoute d'un préfixe à l'API Flood, tel que {url}",
|
"DownloadClientFloodSettingsUrlBaseHelpText": "Ajoute d'un préfixe à l'API Flood, tel que {url}",
|
||||||
"DownloadClientFreeboxSettingsPortHelpText": "Port utilisé pour accéder à l'interface de la Freebox, la valeur par défaut est '{port}'",
|
"DownloadClientFreeboxSettingsPortHelpText": "Port utilisé pour accéder à l'interface de la Freebox, la valeur par défaut est '{port}'",
|
||||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Cette option nécessite au moins la version 16.0 de NzbGet",
|
"DownloadClientNzbgetSettingsAddPausedHelpText": "Cette option nécessite au moins la version 16.0 de NzbGet",
|
||||||
@@ -660,7 +660,7 @@
|
|||||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "Le jeton de l'application récupéré lors de la création de l'accès à l'API Freebox (c'est-à-dire 'app_token')",
|
"DownloadClientFreeboxSettingsAppTokenHelpText": "Le jeton de l'application récupéré lors de la création de l'accès à l'API Freebox (c'est-à-dire 'app_token')",
|
||||||
"DownloadClientFreeboxSettingsHostHelpText": "Nom d'hôte ou adresse IP de la Freebox, par défaut '{url}' (ne fonctionnera que si elle est sur le même réseau)",
|
"DownloadClientFreeboxSettingsHostHelpText": "Nom d'hôte ou adresse IP de la Freebox, par défaut '{url}' (ne fonctionnera que si elle est sur le même réseau)",
|
||||||
"DownloadClientSettingsInitialState": "État initial",
|
"DownloadClientSettingsInitialState": "État initial",
|
||||||
"DownloadClientSettingsPriorityItemHelpText": "Priorité à utiliser lors de la récupération des éléments",
|
"DownloadClientSettingsPriorityItemHelpText": "Priorité à utiliser lors de la saisie des articles",
|
||||||
"DownloadClientSettingsUrlBaseHelpText": "Ajoute un préfixe à l'url {clientName}, tel que {url}",
|
"DownloadClientSettingsUrlBaseHelpText": "Ajoute un préfixe à l'url {clientName}, tel que {url}",
|
||||||
"DownloadClientSettingsUseSslHelpText": "Utiliser une connexion sécurisée lors de la connexion à {clientName}",
|
"DownloadClientSettingsUseSslHelpText": "Utiliser une connexion sécurisée lors de la connexion à {clientName}",
|
||||||
"DownloadClientSettingsInitialStateHelpText": "État initial pour les torrents ajoutés à {clientName}",
|
"DownloadClientSettingsInitialStateHelpText": "État initial pour les torrents ajoutés à {clientName}",
|
||||||
@@ -687,7 +687,7 @@
|
|||||||
"IndexerOrpheusSettingsApiKeyHelpText": "Clé API du site (dans Paramètres => Paramètres d'accès)",
|
"IndexerOrpheusSettingsApiKeyHelpText": "Clé API du site (dans Paramètres => Paramètres d'accès)",
|
||||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "Clé API du site",
|
"IndexerPassThePopcornSettingsApiKeyHelpText": "Clé API du site",
|
||||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Ces paramètres se trouvent dans les paramètres de sécurité de PassThePopcorn (Modifier le profil > Sécurité).",
|
"IndexerPassThePopcornSettingsApiUserHelpText": "Ces paramètres se trouvent dans les paramètres de sécurité de PassThePopcorn (Modifier le profil > Sécurité).",
|
||||||
"IndexerSettingsGrabLimitHelpText": "Le nombre maximum de récupérations autorisé par {appName} pour ce site, selon l'unité spécifiée",
|
"IndexerSettingsGrabLimitHelpText": "Le nombre de prises maximales tel que spécifié par l'unité respective que {appName} autorisera sur le site",
|
||||||
"IndexerSettingsLimitsUnit": "Limites d'unité",
|
"IndexerSettingsLimitsUnit": "Limites d'unité",
|
||||||
"IndexerSettingsCookie": "Cookie",
|
"IndexerSettingsCookie": "Cookie",
|
||||||
"IndexerSettingsCookieHelpText": "Cookie du site",
|
"IndexerSettingsCookieHelpText": "Cookie du site",
|
||||||
@@ -723,7 +723,7 @@
|
|||||||
"IndexerHDBitsSettingsUseFilenames": "Utiliser les noms de fichiers",
|
"IndexerHDBitsSettingsUseFilenames": "Utiliser les noms de fichiers",
|
||||||
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Rechercher les publications freeleech uniquement",
|
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Rechercher les publications freeleech uniquement",
|
||||||
"IndexerSettingsApiPath": "Chemin d'accès à l'API",
|
"IndexerSettingsApiPath": "Chemin d'accès à l'API",
|
||||||
"IndexerSettingsAppsMinimumSeedersHelpText": "Nombre minimum de seeders requis par l'application pour que l'indexeur effectue une récupération. Si vide, la valeur par défaut du profil de synchronisation sera utilisée",
|
"IndexerSettingsAppsMinimumSeedersHelpText": "Nombre minimum de seeders requis par les applications pour que l'indexeur s'en saisisse, vide est la valeur par défaut du profil Sync",
|
||||||
"IndexerSettingsBaseUrl": "Url de base",
|
"IndexerSettingsBaseUrl": "Url de base",
|
||||||
"IndexerSettingsBaseUrlHelpText": "Sélectionnez l'url de base que {appName} utilisera pour les requêtes vers le site",
|
"IndexerSettingsBaseUrlHelpText": "Sélectionnez l'url de base que {appName} utilisera pour les requêtes vers le site",
|
||||||
"IndexerSettingsLimitsUnitHelpText": "L'unité de temps pour le comptage des limites par indexeur",
|
"IndexerSettingsLimitsUnitHelpText": "L'unité de temps pour le comptage des limites par indexeur",
|
||||||
@@ -742,7 +742,7 @@
|
|||||||
"Donate": "Donation",
|
"Donate": "Donation",
|
||||||
"Menu": "Menu",
|
"Menu": "Menu",
|
||||||
"Mixed": "Mixte",
|
"Mixed": "Mixte",
|
||||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Synchroniser le rejet des hashs de torrents en liste de blocage lors de la récupération",
|
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Synchroniser le rejet des hachages torrent sur liste bloquée lors de la saisie",
|
||||||
"ClickToChangeQueryOptions": "Cliquez pour modifier les options de la requête",
|
"ClickToChangeQueryOptions": "Cliquez pour modifier les options de la requête",
|
||||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Si un torrent est bloqué par le hachage, il peut ne pas être correctement rejeté pendant le RSS/recherche pour certains indexeurs. L'activation de cette fonction permet de le rejeter après que le torrent a été saisi, mais avant qu'il ne soit envoyé au client.",
|
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Si un torrent est bloqué par le hachage, il peut ne pas être correctement rejeté pendant le RSS/recherche pour certains indexeurs. L'activation de cette fonction permet de le rejeter après que le torrent a été saisi, mais avant qu'il ne soit envoyé au client.",
|
||||||
"ProwlarrDownloadClientsAlert": "Si vous avez l'intention d'effectuer des recherches directement dans {appName}, vous devez ajouter les clients de téléchargement. Sinon, vous n'avez pas besoin de les ajouter ici. Pour les recherches à partir de vos applications, les clients de téléchargement qui y sont configurés sont utilisés à la place.",
|
"ProwlarrDownloadClientsAlert": "Si vous avez l'intention d'effectuer des recherches directement dans {appName}, vous devez ajouter les clients de téléchargement. Sinon, vous n'avez pas besoin de les ajouter ici. Pour les recherches à partir de vos applications, les clients de téléchargement qui y sont configurés sont utilisés à la place.",
|
||||||
@@ -758,8 +758,8 @@
|
|||||||
"ProxyValidationBadRequest": "Échec du test du proxy. Code d'état : {statusCode}",
|
"ProxyValidationBadRequest": "Échec du test du proxy. Code d'état : {statusCode}",
|
||||||
"ProxyValidationUnableToConnect": "Impossible de se connecter à l'indexeur : {exceptionMessage}. Vérifiez le journal pour plus de détails sur cette erreur",
|
"ProxyValidationUnableToConnect": "Impossible de se connecter à l'indexeur : {exceptionMessage}. Vérifiez le journal pour plus de détails sur cette erreur",
|
||||||
"Default": "Par défaut",
|
"Default": "Par défaut",
|
||||||
"GrabRelease": "Récupérer la version",
|
"GrabRelease": "Saisir Release",
|
||||||
"ManualGrab": "Récupération manuelle",
|
"ManualGrab": "Saisie manuelle",
|
||||||
"Open": "Ouvrir",
|
"Open": "Ouvrir",
|
||||||
"Any": "Tous",
|
"Any": "Tous",
|
||||||
"BuiltIn": "Intégré",
|
"BuiltIn": "Intégré",
|
||||||
@@ -768,7 +768,7 @@
|
|||||||
"Redirected": "Rediriger",
|
"Redirected": "Rediriger",
|
||||||
"PublishedDate": "Date de publication",
|
"PublishedDate": "Date de publication",
|
||||||
"AllSearchResultsHiddenByFilter": "Tous les résultats sont masqués par le filtre appliqué.",
|
"AllSearchResultsHiddenByFilter": "Tous les résultats sont masqués par le filtre appliqué.",
|
||||||
"AverageGrabs": "Récupérations moyennes",
|
"AverageGrabs": "Prises moyennes",
|
||||||
"AverageQueries": "Requêtes moyennes",
|
"AverageQueries": "Requêtes moyennes",
|
||||||
"PackageVersionInfo": "{packageVersion} par {packageAuthor}",
|
"PackageVersionInfo": "{packageVersion} par {packageAuthor}",
|
||||||
"HealthMessagesInfoBox": "Vous pouvez trouver plus d'informations sur la cause de ces messages de contrôle de santé en cliquant sur le lien wiki (icône de livre) à la fin de la ligne, ou en vérifiant vos [journaux]({link}). Si vous rencontrez des difficultés pour interpréter ces messages, vous pouvez contacter notre support, via les liens ci-dessous.",
|
"HealthMessagesInfoBox": "Vous pouvez trouver plus d'informations sur la cause de ces messages de contrôle de santé en cliquant sur le lien wiki (icône de livre) à la fin de la ligne, ou en vérifiant vos [journaux]({link}). Si vous rencontrez des difficultés pour interpréter ces messages, vous pouvez contacter notre support, via les liens ci-dessous.",
|
||||||
|
|||||||
@@ -432,43 +432,5 @@
|
|||||||
"CurrentlyInstalled": "מותקן כעת",
|
"CurrentlyInstalled": "מותקן כעת",
|
||||||
"Stats": "סטָטוּס",
|
"Stats": "סטָטוּס",
|
||||||
"Season": "סיבה",
|
"Season": "סיבה",
|
||||||
"Mixed": "תוקן",
|
"Mixed": "תוקן"
|
||||||
"SearchTypes": "סוגי חיפוש ספר",
|
|
||||||
"IndexerId": "אינדקסר",
|
|
||||||
"SyncProfile": "הוספת פרופיל סינכרון",
|
|
||||||
"TVSearchTypes": "סוגי חיפוש ספר",
|
|
||||||
"UnableToLoadAppProfiles": "לא ניתן לטעון פרופילי עיכוב",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "מְקוֹרִי",
|
|
||||||
"SelectIndexers": "מחק את אינדקס",
|
|
||||||
"ApplicationURL": "אפליקציה",
|
|
||||||
"IndexerProxy": "הוספת פרוקסי לאינדקסר",
|
|
||||||
"Proxies": "פרופילים",
|
|
||||||
"SyncProfiles": "הוספת פרופיל סינכרון",
|
|
||||||
"ManageDownloadClients": "הורד לקוחות",
|
|
||||||
"UnableToLoadDevelopmentSettings": "לא ניתן לטעון את ההגדרות הכלליות",
|
|
||||||
"UnableToLoadIndexerProxies": "לא ניתן לטעון אינדקסים",
|
|
||||||
"TvSearch": "לחפש",
|
|
||||||
"AuthenticationMethod": "אימות",
|
|
||||||
"EditSelectedDownloadClients": "מחק את לקוח ההורדות",
|
|
||||||
"Donate": "תַאֲרִיך",
|
|
||||||
"MovieSearch": "חיפוש סרטים המוני",
|
|
||||||
"MovieSearchTypes": "סוגי חיפוש ספר",
|
|
||||||
"Destination": "נתיב יעד",
|
|
||||||
"IndexerBeyondHDSettingsSearchTypes": "סוגי חיפוש ספר",
|
|
||||||
"IndexerDownloadClientHelpText": "ציין איזה קליינט הורדה משתמש באינדקסר הזה להורדה",
|
|
||||||
"IndexerStatus": "הגדרות אינדקס",
|
|
||||||
"Author": "אוטו'",
|
|
||||||
"AddConnection": "הוסף חיבור",
|
|
||||||
"EditCategory": "הוסף קטגוריה",
|
|
||||||
"SearchIndexers": "מחק את אינדקס",
|
|
||||||
"IndexerProxies": "הוספת פרוקסי לאינדקסר",
|
|
||||||
"SearchType": "סוגי חיפוש ספר",
|
|
||||||
"IndexerInfo": "אינדקסר",
|
|
||||||
"MusicSearchTypes": "סוגי חיפוש ספר",
|
|
||||||
"DeleteSelectedApplications": "מחק קבצי סרטים שנבחרו",
|
|
||||||
"DeleteSelectedIndexer": "מחק את אינדקס",
|
|
||||||
"DeleteSelectedIndexers": "מחק את אינדקס",
|
|
||||||
"EditSelectedIndexers": "מחק את אינדקס",
|
|
||||||
"FilterPlaceHolder": "מחק את אינדקס",
|
|
||||||
"AddConnectionImplementation": "הוסף חיבור - {implementationName}"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -373,47 +373,5 @@
|
|||||||
"CurrentlyInstalled": "वर्तमान में स्थापित है",
|
"CurrentlyInstalled": "वर्तमान में स्थापित है",
|
||||||
"Mixed": "फिक्स्ड",
|
"Mixed": "फिक्स्ड",
|
||||||
"Season": "कारण",
|
"Season": "कारण",
|
||||||
"Stats": "स्थिति",
|
"Stats": "स्थिति"
|
||||||
"AuthenticationMethod": "प्रमाणीकरण",
|
|
||||||
"UnableToLoadIndexerProxies": "अनुक्रमणिका लोड करने में असमर्थ",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "मूल",
|
|
||||||
"IndexerId": "इंडेक्सर",
|
|
||||||
"DeleteClientCategory": "डाउनलोड क्लाइंट हटाएं",
|
|
||||||
"Destination": "गंतव्य पथ",
|
|
||||||
"Donate": "दिनांक",
|
|
||||||
"ManageDownloadClients": "ग्राहक डाउनलोड करें",
|
|
||||||
"IndexerProxy": "सूचकांक प्राथमिकता",
|
|
||||||
"DeleteIndexerProxy": "अनुक्रमणिका हटाएं",
|
|
||||||
"EditSyncProfile": "देरी प्रोफ़ाइल संपादित करें",
|
|
||||||
"EditSelectedDownloadClients": "डाउनलोड क्लाइंट हटाएं",
|
|
||||||
"IndexerStatus": "अनुक्रमणिका सेटिंग्स",
|
|
||||||
"SelectIndexers": "अनुक्रमणिका हटाएं",
|
|
||||||
"TvSearch": "खोज",
|
|
||||||
"AddCustomFilter": "कस्टम फ़िल्टर",
|
|
||||||
"AddNewIndexer": "सूचकांक जोड़ें",
|
|
||||||
"MovieSearch": "मास मूवी सर्च",
|
|
||||||
"DeleteSelectedIndexersMessageText": "क्या आप वाकई चयनित मूवी फ़ाइलों को हटाना चाहते हैं?",
|
|
||||||
"Proxies": "प्रोफाइल",
|
|
||||||
"UnableToLoadAppProfiles": "विलंब प्रोफाइल लोड करने में असमर्थ",
|
|
||||||
"Notification": "प्रमाणीकरण",
|
|
||||||
"UnableToLoadDevelopmentSettings": "सामान्य सेटिंग्स लोड करने में असमर्थ",
|
|
||||||
"AddConnection": "संबंध",
|
|
||||||
"SyncProfiles": "देरी प्रोफ़ाइल संपादित करें",
|
|
||||||
"DeleteSelectedApplications": "चयनित मूवी फ़ाइलें हटाएं",
|
|
||||||
"DeleteSelectedIndexers": "अनुक्रमणिका हटाएं",
|
|
||||||
"DownloadClientCategory": "डाउनलोड क्लाइंट हटाएं",
|
|
||||||
"SearchIndexers": "अनुक्रमणिका हटाएं",
|
|
||||||
"SyncProfile": "देरी प्रोफ़ाइल संपादित करें",
|
|
||||||
"EditSelectedIndexers": "अनुक्रमणिका हटाएं",
|
|
||||||
"IndexerProxies": "सूचकांक प्राथमिकता",
|
|
||||||
"AddIndexerProxy": "सूचकांक प्राथमिकता",
|
|
||||||
"Notifications": "प्रमाणीकरण",
|
|
||||||
"IndexerInfo": "इंडेक्सर",
|
|
||||||
"DeleteSelectedDownloadClientsMessageText": "क्या आप वाकई चयनित मूवी फ़ाइलों को हटाना चाहते हैं?",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "क्या आप वाकई चयनित मूवी फ़ाइलों को हटाना चाहते हैं?",
|
|
||||||
"AddSyncProfile": "देरी प्रोफ़ाइल संपादित करें",
|
|
||||||
"MovieSearchTypes": "मास मूवी सर्च",
|
|
||||||
"DeleteSelectedIndexer": "अनुक्रमणिका हटाएं",
|
|
||||||
"Connect": "प्रमाणीकरण",
|
|
||||||
"FilterPlaceHolder": "अनुक्रमणिका हटाएं"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,35 +212,5 @@
|
|||||||
"EditApplicationImplementation": "Dodaj Vezu - {implementationName}",
|
"EditApplicationImplementation": "Dodaj Vezu - {implementationName}",
|
||||||
"AptUpdater": "Koristi apt kako bi instalirao ažuriranje",
|
"AptUpdater": "Koristi apt kako bi instalirao ažuriranje",
|
||||||
"EditIndexerProxyImplementation": "Dodaj Indexer - {implementationName}",
|
"EditIndexerProxyImplementation": "Dodaj Indexer - {implementationName}",
|
||||||
"Clone": "Zatvori",
|
"Clone": "Zatvori"
|
||||||
"GrabRelease": "verzija",
|
|
||||||
"ManageDownloadClients": "Klijent za preuzimanje",
|
|
||||||
"TvSearch": "Traži",
|
|
||||||
"IndexerId": "Indekser",
|
|
||||||
"CustomFilter": "Dodaj proizvoljan filter",
|
|
||||||
"CustomFilters": "Dodaj proizvoljan filter",
|
|
||||||
"DeleteDownloadClient": "Klijent za preuzimanje",
|
|
||||||
"UISettings": "Postavke",
|
|
||||||
"AddApplication": "Aplikacije",
|
|
||||||
"AddNewIndexer": "Dodaj Indexer",
|
|
||||||
"EnableAutomaticSearch": "Automatska Pretraga",
|
|
||||||
"EditSyncProfile": "Dodaj Profil Odgode",
|
|
||||||
"Tags": "Oznaka",
|
|
||||||
"UILanguage": "jezik",
|
|
||||||
"NoChange": "Promijeni",
|
|
||||||
"ConnectionLost": "Veze",
|
|
||||||
"DownloadClientSettings": "Klijent za preuzimanje",
|
|
||||||
"UnsavedChanges": "Spremi izmjene",
|
|
||||||
"Author": "Automatski",
|
|
||||||
"AddSyncProfile": "Dodaj Profil Odgode",
|
|
||||||
"Auth": "Automatski",
|
|
||||||
"DeleteClientCategory": "Klijent za preuzimanje",
|
|
||||||
"GrabReleases": "verzija",
|
|
||||||
"IndexerInfo": "Indekser",
|
|
||||||
"NoChanges": "Promijeni",
|
|
||||||
"SyncProfile": "Dodaj Profil Odgode",
|
|
||||||
"SyncProfiles": "Dodaj Profil Odgode",
|
|
||||||
"DeleteSelectedDownloadClients": "Klijent za preuzimanje",
|
|
||||||
"EditSelectedDownloadClients": "Klijent za preuzimanje",
|
|
||||||
"Download": "Ponovno preuzimanje neuspješno"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,23 +6,23 @@
|
|||||||
"Error": "Hiba",
|
"Error": "Hiba",
|
||||||
"DeleteTag": "Címke törlése",
|
"DeleteTag": "Címke törlése",
|
||||||
"EnableAutomaticSearchHelpText": "Akkor lesz használatos, ha automatikus keresést hajt végre a felhasználói felületen vagy a(z) {appName} alkalmazáson keresztül",
|
"EnableAutomaticSearchHelpText": "Akkor lesz használatos, ha automatikus keresést hajt végre a felhasználói felületen vagy a(z) {appName} alkalmazáson keresztül",
|
||||||
"EnableAutomaticSearch": "Automatikus keresés engedélyezése",
|
"EnableAutomaticSearch": "Engedélyezd az Automatikus Keresést",
|
||||||
"Enable": "Aktiválás",
|
"Enable": "Aktiválás",
|
||||||
"EditIndexer": "Indexelő Szerkesztése",
|
"EditIndexer": "Indexer Szerkesztése",
|
||||||
"Edit": "Szerkesztés",
|
"Edit": "Szerkeszt",
|
||||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Letöltő kliensek elérhetetlenek meghibásodások miatt: {downloadClientNames}",
|
"DownloadClientStatusSingleClientHealthCheckMessage": "Letöltőkliens hiba miatt nem elérhető: {downloadClientNames}",
|
||||||
"DownloadClientStatusAllClientHealthCheckMessage": "Az összes letöltőkliens elérhetetlen, hiba miatt",
|
"DownloadClientStatusAllClientHealthCheckMessage": "Az összes letöltőkliens elérhetetlen, hiba miatt",
|
||||||
"DownloadClientsSettingsSummary": "Letöltőkliens konfigurációja a {appName} felhasználói felület keresésbe történő integráláshoz",
|
"DownloadClientsSettingsSummary": "Letöltőkliens konfigurációja a {appName} felhasználói felület keresésbe történő integráláshoz",
|
||||||
"DownloadClientSettings": "Letöltőkliens beállítások",
|
"DownloadClientSettings": "Letöltőkliens Beállítások",
|
||||||
"DownloadClients": "Letöltő kliensek",
|
"DownloadClients": "Letöltő kliensek",
|
||||||
"DownloadClient": "Letöltő kliens",
|
"DownloadClient": "Letöltési kliens",
|
||||||
"Docker": "Docker",
|
"Docker": "Docker",
|
||||||
"Disabled": "Tiltva",
|
"Disabled": "Tiltva",
|
||||||
"Details": "Részletek",
|
"Details": "részletek",
|
||||||
"DeleteTagMessageText": "Biztosan törli a „{label}” címkét?",
|
"DeleteTagMessageText": "Biztosan törli a „{label}” címkét?",
|
||||||
"DeleteNotificationMessageText": "Biztosan törli a(z) „{name}” értesítést?",
|
"DeleteNotificationMessageText": "Biztosan törli a(z) „{name}” értesítést?",
|
||||||
"DeleteNotification": "Értesítés törlése",
|
"DeleteNotification": "Értesítés törlése",
|
||||||
"DeleteDownloadClientMessageText": "Biztosan törli a(z) \"{name}\" letöltő klienst?",
|
"DeleteDownloadClientMessageText": "Biztosan törli a(z) \"{name}\" letöltési klienst?",
|
||||||
"DeleteDownloadClient": "Letöltőkliens törlése",
|
"DeleteDownloadClient": "Letöltőkliens törlése",
|
||||||
"DeleteBackupMessageText": "Biztosan törli a '{name}' biztonsági mentést?",
|
"DeleteBackupMessageText": "Biztosan törli a '{name}' biztonsági mentést?",
|
||||||
"DeleteBackup": "Biztonsági Mentés törlése",
|
"DeleteBackup": "Biztonsági Mentés törlése",
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
"Date": "Dátum",
|
"Date": "Dátum",
|
||||||
"CustomFilters": "Egyedi Szűrők",
|
"CustomFilters": "Egyedi Szűrők",
|
||||||
"ConnectSettingsSummary": "Értesítések és egyéni szkriptek",
|
"ConnectSettingsSummary": "Értesítések és egyéni szkriptek",
|
||||||
"ConnectSettings": "Kapcsolati beállítások",
|
"ConnectSettings": "Csatlakozási beállítások",
|
||||||
"Connections": "Kapcsolatok",
|
"Connections": "Kapcsolatok",
|
||||||
"ConnectionLost": "A kapcsolat megszakadt",
|
"ConnectionLost": "A kapcsolat megszakadt",
|
||||||
"Connect": "Értesítések",
|
"Connect": "Értesítések",
|
||||||
@@ -49,35 +49,35 @@
|
|||||||
"CancelPendingTask": "Biztosan törölni szeretné ezt a függőben lévő feladatot?",
|
"CancelPendingTask": "Biztosan törölni szeretné ezt a függőben lévő feladatot?",
|
||||||
"Cancel": "Mégse",
|
"Cancel": "Mégse",
|
||||||
"BypassProxyForLocalAddresses": "Proxy megkerülése a helyi hálózatos címekhez",
|
"BypassProxyForLocalAddresses": "Proxy megkerülése a helyi hálózatos címekhez",
|
||||||
"BranchUpdateMechanism": "Külső frissítési mechanizmus által használt kiadási csatorna (ág)",
|
"BranchUpdateMechanism": "Külső frissítési mechanizmus által használt ág",
|
||||||
"BranchUpdate": "A {appName} frissítéséhez használt kiadási csatorna (ág)",
|
"BranchUpdate": "A(z) {appName} frissítéséhez használt fiók",
|
||||||
"Branch": "Kiadási csatorna",
|
"Branch": "Ágazat",
|
||||||
"BindAddressHelpText": "Érvényes IP-cím, localhost vagy '*' minden interfészhez",
|
"BindAddressHelpText": "Érvényes IP-cím, localhost vagy '*' minden interfészhez",
|
||||||
"BindAddress": "Kötési cím",
|
"BindAddress": "Kötési cím",
|
||||||
"BeforeUpdate": "Frissítés előtt",
|
"BeforeUpdate": "Frissítés előtt",
|
||||||
"Backups": "Biztonsági mentések",
|
"Backups": "Biztonsági mentések",
|
||||||
"BackupRetentionHelpText": "A megőrzési időszaknál régebbi automatikus biztonsági másolatok automatikusan törlődnek",
|
"BackupRetentionHelpText": "A megőrzési időszaknál régebbi automatikus biztonsági másolatok automatikusan törlődnek",
|
||||||
"BackupNow": "Mentés most",
|
"BackupNow": "Biztonsági Mentés",
|
||||||
"BackupIntervalHelpText": "Az automatikus biztonsági mentések közötti időköz",
|
"BackupIntervalHelpText": "Az automatikus biztonsági mentések közötti időköz",
|
||||||
"BackupFolderHelpText": "A relatív elérési utak a {appName} AppData könyvtárában találhatók",
|
"BackupFolderHelpText": "A relatív elérési utak a(z) {appName} AppData könyvtárában találhatók",
|
||||||
"Backup": "Biztonsági mentés",
|
"Backup": "Biztonsági mentés",
|
||||||
"AutomaticSearch": "Automatikus keresés",
|
"AutomaticSearch": "Automatikus keresés",
|
||||||
"Automatic": "Automatikus",
|
"Automatic": "Automatikus",
|
||||||
"AnalyticsEnabledHelpText": "Névtelen használati és hibainformáció küldése {appName} szervereinek. Ez magában foglalja a böngészővel kapcsolatos információkat, a használt {appName} WebUI oldalakat, a hibajelentéseket, valamint az operációs rendszert és a futásidejű verziót. Ezeket az információkat a funkciók és a hibajavítások fontossági sorrendjének meghatározására fogjuk használni.",
|
"AnalyticsEnabledHelpText": "Névtelen használati és hibainformáció küldése {appName} szervereinek. Ez magában foglalja a böngészővel kapcsolatos információkat, a használt {appName} WebUI oldalakat, a hibajelentéseket, valamint az operációs rendszert és a futásidejű verziót. Ezeket az információkat a funkciók és a hibajavítások fontossági sorrendjének meghatározására fogjuk használni.",
|
||||||
"AuthenticationMethodHelpText": "Felhasználónév és jelszó szükséges a {appName} eléréséhez",
|
"AuthenticationMethodHelpText": "Felhasználónév és jelszó szükséges a(z) {appName} eléréséhez",
|
||||||
"Authentication": "Hitelesítés",
|
"Authentication": "Hitelesítés",
|
||||||
"ApplyTags": "Címkék alkalmazása",
|
"ApplyTags": "Címkék alkalmazása",
|
||||||
"Age": "Kor",
|
"Age": "Kor",
|
||||||
"ApiKey": "API Kulcs",
|
"ApiKey": "API Kulcs",
|
||||||
"All": "Összes",
|
"All": "Összes",
|
||||||
"AcceptConfirmationModal": "Változás Megerősítése",
|
"AcceptConfirmationModal": "Változás Megerősítése",
|
||||||
"Apply": "Alkalmaz",
|
"Apply": "Alkamaz",
|
||||||
"AppDataLocationHealthCheckMessage": "A frissítés nem hajtható végre, hogy elkerüljük az alkalmazás adatainak törlését",
|
"AppDataLocationHealthCheckMessage": "A frissítés nem lehetséges az alkalmazás adatok törlése nélkül",
|
||||||
"AppDataDirectory": "AppData könyvtár",
|
"AppDataDirectory": "AppData Könyvtár",
|
||||||
"Added": "Hozzáadva",
|
"Added": "Hozzáadva",
|
||||||
"Actions": "Teendők",
|
"Actions": "Teendők",
|
||||||
"History": "Előzmény",
|
"History": "Előzmény",
|
||||||
"HideAdvanced": "Haladó beállítások elrejtése",
|
"HideAdvanced": "Haladó Elrejtése",
|
||||||
"NoIssuesWithYourConfiguration": "Nincs hiba a konfigurációval",
|
"NoIssuesWithYourConfiguration": "Nincs hiba a konfigurációval",
|
||||||
"Health": "Egészség",
|
"Health": "Egészség",
|
||||||
"GeneralSettingsSummary": "Port, SSL, felhasználónév / jelszó, proxy, elemzések, és frissítések",
|
"GeneralSettingsSummary": "Port, SSL, felhasználónév / jelszó, proxy, elemzések, és frissítések",
|
||||||
@@ -85,10 +85,10 @@
|
|||||||
"Folder": "Mappa",
|
"Folder": "Mappa",
|
||||||
"FocusSearchBox": "Fókusz Keresőmező",
|
"FocusSearchBox": "Fókusz Keresőmező",
|
||||||
"Fixed": "Rögzített",
|
"Fixed": "Rögzített",
|
||||||
"FilterPlaceHolder": "Indexelők keresése",
|
"FilterPlaceHolder": "Filmek Keresése",
|
||||||
"Filter": "Szűrő",
|
"Filter": "Szűrő",
|
||||||
"Files": "Fájlok",
|
"Files": "Fájlok",
|
||||||
"Filename": "Fájlnév",
|
"Filename": "Fájl név",
|
||||||
"Failed": "Nem sikerült",
|
"Failed": "Nem sikerült",
|
||||||
"ExistingTag": "Létező címke",
|
"ExistingTag": "Létező címke",
|
||||||
"Exception": "Kivétel",
|
"Exception": "Kivétel",
|
||||||
@@ -113,9 +113,9 @@
|
|||||||
"Source": "Forrás",
|
"Source": "Forrás",
|
||||||
"Sort": "Fajta",
|
"Sort": "Fajta",
|
||||||
"Size": "Méret",
|
"Size": "Méret",
|
||||||
"Shutdown": "Leállítás",
|
"Shutdown": "Leállitás",
|
||||||
"ShowSearchHelpText": "Keresés gomb megjelenítése az egérrel",
|
"ShowSearchHelpText": "Keresés gomb megjelenítése az egérrel",
|
||||||
"ShowAdvanced": "Haladó beállítások megjelenítése",
|
"ShowAdvanced": "Haladó nézet",
|
||||||
"SettingsTimeFormat": "Időformátum",
|
"SettingsTimeFormat": "Időformátum",
|
||||||
"SettingsShowRelativeDatesHelpText": "Relatív (Ma / Tegnap / stb.) vagy valós dátumok megjelenítése",
|
"SettingsShowRelativeDatesHelpText": "Relatív (Ma / Tegnap / stb.) vagy valós dátumok megjelenítése",
|
||||||
"SettingsShowRelativeDates": "Relatív dátumok megjelenítése",
|
"SettingsShowRelativeDates": "Relatív dátumok megjelenítése",
|
||||||
@@ -129,13 +129,13 @@
|
|||||||
"Seeders": "Seederek",
|
"Seeders": "Seederek",
|
||||||
"Security": "Biztonság",
|
"Security": "Biztonság",
|
||||||
"Search": "Keresés",
|
"Search": "Keresés",
|
||||||
"ScriptPath": "Szkriptútvonal",
|
"ScriptPath": "Script útvonal",
|
||||||
"Scheduled": "Ütemezve",
|
"Scheduled": "Ütemezve",
|
||||||
"SaveSettings": "Beállítások mentése",
|
"SaveSettings": "Beállítások mentése",
|
||||||
"SaveChanges": "Változtatások mentése",
|
"SaveChanges": "Változtatások mentése",
|
||||||
"Save": "Mentés",
|
"Save": "Mentés",
|
||||||
"RssIsNotSupportedWithThisIndexer": "Ez az indexelő nem támogatja az RSS-t",
|
"RssIsNotSupportedWithThisIndexer": "Ez az indexelő nem támogatja az RSS-t",
|
||||||
"Retention": "Megőrzési idő",
|
"Retention": "Visszatartás",
|
||||||
"Result": "Eredmény",
|
"Result": "Eredmény",
|
||||||
"RestoreBackup": "Biztonsági mentés visszaállítása",
|
"RestoreBackup": "Biztonsági mentés visszaállítása",
|
||||||
"Restore": "Visszaállít",
|
"Restore": "Visszaállít",
|
||||||
@@ -146,11 +146,11 @@
|
|||||||
"ResetAPIKey": "API Kulcs Visszaállítása",
|
"ResetAPIKey": "API Kulcs Visszaállítása",
|
||||||
"Reset": "Visszaállítás",
|
"Reset": "Visszaállítás",
|
||||||
"RemovingTag": "Címke eltávolítása",
|
"RemovingTag": "Címke eltávolítása",
|
||||||
"RemoveFilter": "Szűrő eltávolítása",
|
"RemoveFilter": "Szűrő Eltávolítás",
|
||||||
"RemovedFromTaskQueue": "Eltávolítva a feladatsorból",
|
"RemovedFromTaskQueue": "Eltávolítva a feladatsorból",
|
||||||
"Reload": "Újratölt",
|
"Reload": "Újratölt",
|
||||||
"ReleaseStatus": "Kiadás státusza",
|
"ReleaseStatus": "Kiadás státusza",
|
||||||
"ReleaseBranchCheckOfficialBranchMessage": "A(z) {0} nem érvényes {appName} kiadási csatorna (ág), ezért nem kap további frissítéseket",
|
"ReleaseBranchCheckOfficialBranchMessage": "A(z) {0} nem érvényes {appName} frissítési ágazat, ezért nem kap frissítéseket",
|
||||||
"RefreshMovie": "Film frissítése",
|
"RefreshMovie": "Film frissítése",
|
||||||
"Refresh": "Frissítés",
|
"Refresh": "Frissítés",
|
||||||
"ReadTheWikiForMoreInformation": "További információkért olvassa el a Wikit",
|
"ReadTheWikiForMoreInformation": "További információkért olvassa el a Wikit",
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
"ProxyPasswordHelpText": "Csak akkor kell megadnia egy felhasználónevet és jelszót, ha szükséges. Ellenkező esetben hagyja üresen.",
|
"ProxyPasswordHelpText": "Csak akkor kell megadnia egy felhasználónevet és jelszót, ha szükséges. Ellenkező esetben hagyja üresen.",
|
||||||
"ProxyResolveIpHealthCheckMessage": "Nem sikerült megoldani a konfigurált proxykiszolgáló IP-címét {proxyHostName}",
|
"ProxyResolveIpHealthCheckMessage": "Nem sikerült megoldani a konfigurált proxykiszolgáló IP-címét {proxyHostName}",
|
||||||
"ProxyFailedToTestHealthCheckMessage": "Proxy tesztelése sikertelen: {url}",
|
"ProxyFailedToTestHealthCheckMessage": "Proxy tesztelése sikertelen: {url}",
|
||||||
"ProxyBadRequestHealthCheckMessage": "Sikertelen proxy teszt. Állapotkód: {statusCode}",
|
"ProxyBadRequestHealthCheckMessage": "Proxy tesztelése sikertelen. Állapotkód: {statusCode}",
|
||||||
"ProxyBypassFilterHelpText": "Használja a ',' jelet elválasztóként és a '*' jelet. helyettesítő karakterként az aldomainekhez",
|
"ProxyBypassFilterHelpText": "Használja a ',' jelet elválasztóként és a '*' jelet. helyettesítő karakterként az aldomainekhez",
|
||||||
"Proxy": "Proxy",
|
"Proxy": "Proxy",
|
||||||
"Protocol": "Protokoll",
|
"Protocol": "Protokoll",
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
"PortNumber": "Port száma",
|
"PortNumber": "Port száma",
|
||||||
"Port": "Port",
|
"Port": "Port",
|
||||||
"PendingChangesStayReview": "Maradjon és tekintse át a változtatásokat",
|
"PendingChangesStayReview": "Maradjon és tekintse át a változtatásokat",
|
||||||
"PendingChangesMessage": "Nem mentett módosításai vannak. Biztosan elhagyja ezt az oldalt?",
|
"PendingChangesMessage": "Vannak nem mentett módosításai. Biztosan elhagyja ezt az oldalt?",
|
||||||
"PendingChangesDiscardChanges": "Vesse el a változtatásokat, és lépjen ki",
|
"PendingChangesDiscardChanges": "Vesse el a változtatásokat, és lépjen ki",
|
||||||
"Peers": "Peerek",
|
"Peers": "Peerek",
|
||||||
"Password": "Jelszó",
|
"Password": "Jelszó",
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
"Ok": "Ok",
|
"Ok": "Ok",
|
||||||
"OAuthPopupMessage": "A böngésződ blokkolja az előugró ablakokat",
|
"OAuthPopupMessage": "A böngésződ blokkolja az előugró ablakokat",
|
||||||
"NoUpdatesAreAvailable": "Nem érhetők el frissítések",
|
"NoUpdatesAreAvailable": "Nem érhetők el frissítések",
|
||||||
"NoTagsHaveBeenAddedYet": "Még nincsenek címkék hozzáadva",
|
"NoTagsHaveBeenAddedYet": "Még nem adtak hozzá címkéket",
|
||||||
"NoLogFiles": "Nincsenek naplófájlok",
|
"NoLogFiles": "Nincsenek naplófájlok",
|
||||||
"NoLeaveIt": "Nem, Hagyd",
|
"NoLeaveIt": "Nem, Hagyd",
|
||||||
"NoChanges": "Nincs változás",
|
"NoChanges": "Nincs változás",
|
||||||
@@ -199,13 +199,13 @@
|
|||||||
"Mode": "Mód",
|
"Mode": "Mód",
|
||||||
"MIA": "MIA",
|
"MIA": "MIA",
|
||||||
"Message": "Üzenet",
|
"Message": "Üzenet",
|
||||||
"Mechanism": "Működési mód",
|
"Mechanism": "Gépezet",
|
||||||
"Manual": "Kézi",
|
"Manual": "Kézi",
|
||||||
"MaintenanceRelease": "Karbantartási kiadás: hibajavítások és egyéb fejlesztések. További részletekért lásd: Github Commit History",
|
"MaintenanceRelease": "Karbantartási kiadás: hibajavítások és egyéb fejlesztések. További részletekért lásd: Github Commit History",
|
||||||
"Logs": "Naplók",
|
"Logs": "Naplók",
|
||||||
"LogLevelTraceHelpTextWarning": "A nyomkövetési naplózást csak ideiglenesen szabad engedélyezni",
|
"LogLevelTraceHelpTextWarning": "A nyomkövetési naplózást csak ideiglenesen szabad engedélyezni",
|
||||||
"LogLevel": "Napló szint",
|
"LogLevel": "Napló szint",
|
||||||
"Logging": "Naplózás",
|
"Logging": "Loggolás",
|
||||||
"LogFiles": "Naplófájlok",
|
"LogFiles": "Naplófájlok",
|
||||||
"Level": "Szint",
|
"Level": "Szint",
|
||||||
"LaunchBrowserHelpText": " Nyisson meg egy böngészőt, és az alkalmazás indításakor lépjen a {appName} kezdőlapjára.",
|
"LaunchBrowserHelpText": " Nyisson meg egy böngészőt, és az alkalmazás indításakor lépjen a {appName} kezdőlapjára.",
|
||||||
@@ -218,7 +218,7 @@
|
|||||||
"IndexerStatusUnavailableHealthCheckMessage": "Indexerek elérhetetlenek a következő hiba miatt: {indexerNames}",
|
"IndexerStatusUnavailableHealthCheckMessage": "Indexerek elérhetetlenek a következő hiba miatt: {indexerNames}",
|
||||||
"Hostname": "Hosztnév",
|
"Hostname": "Hosztnév",
|
||||||
"Host": "Hoszt",
|
"Host": "Hoszt",
|
||||||
"Grabbed": "Megragadva",
|
"Grabbed": "Megragadta",
|
||||||
"GeneralSettings": "Általános Beállítások",
|
"GeneralSettings": "Általános Beállítások",
|
||||||
"General": "Általános",
|
"General": "Általános",
|
||||||
"UnableToLoadHistory": "Nem sikerült betölteni az előzményeket",
|
"UnableToLoadHistory": "Nem sikerült betölteni az előzményeket",
|
||||||
@@ -232,8 +232,8 @@
|
|||||||
"UISettings": "A felhasználói felület beállításai",
|
"UISettings": "A felhasználói felület beállításai",
|
||||||
"UILanguageHelpTextWarning": "Böngésző újratöltése szükséges",
|
"UILanguageHelpTextWarning": "Böngésző újratöltése szükséges",
|
||||||
"UILanguageHelpText": "A {appName} által a felhasználói felülethez használt nyelv",
|
"UILanguageHelpText": "A {appName} által a felhasználói felülethez használt nyelv",
|
||||||
"UILanguage": "Felhasználói felület nyelve",
|
"UILanguage": "Felület nyelve",
|
||||||
"UI": "Felhasználói felület",
|
"UI": "Felület",
|
||||||
"Type": "Típus",
|
"Type": "Típus",
|
||||||
"Torrents": "Torrentek",
|
"Torrents": "Torrentek",
|
||||||
"Title": "Cím",
|
"Title": "Cím",
|
||||||
@@ -249,11 +249,11 @@
|
|||||||
"TagCannotBeDeletedWhileInUse": "Használat közben nem törölhető",
|
"TagCannotBeDeletedWhileInUse": "Használat közben nem törölhető",
|
||||||
"TableOptionsColumnsMessage": "Válasszd ki, mely oszlopok legyenek láthatóak, és milyen sorrendben jelenjenek meg",
|
"TableOptionsColumnsMessage": "Válasszd ki, mely oszlopok legyenek láthatóak, és milyen sorrendben jelenjenek meg",
|
||||||
"SystemTimeHealthCheckMessage": "A rendszeridő több mint 1 napja nem frissült. Előfordulhat, hogy az ütemezett feladatok az idő kijavításáig nem futnak megfelelően",
|
"SystemTimeHealthCheckMessage": "A rendszeridő több mint 1 napja nem frissült. Előfordulhat, hogy az ütemezett feladatok az idő kijavításáig nem futnak megfelelően",
|
||||||
"IndexerStatusAllUnavailableHealthCheckMessage": "Az összes indexelő elérhetetlen hiba miatt",
|
"IndexerStatusAllUnavailableHealthCheckMessage": "Az összes indexer elérhetetlen hiba miatt",
|
||||||
"Indexers": "Indexelők",
|
"Indexers": "Indexerek",
|
||||||
"IndexerPriorityHelpText": "Indexelő prioritás 1-től (legmagasabb) 50-ig (legalacsonyabb). Alapértelmezés: 25.",
|
"IndexerPriorityHelpText": "Indexelő prioritás 1-től (legmagasabb) 50-ig (legalacsonyabb). Alapértelmezés: 25.",
|
||||||
"IndexerPriority": "Indexelő prioritása",
|
"IndexerPriority": "Indexer Prioritása",
|
||||||
"IndexerFlags": "Indexelő jelzők",
|
"IndexerFlags": "Indexer Zászló",
|
||||||
"Indexer": "Indexelő",
|
"Indexer": "Indexelő",
|
||||||
"IncludeHealthWarningsHelpText": "Tartalmazza a Állapot Figyelmeztetéseket",
|
"IncludeHealthWarningsHelpText": "Tartalmazza a Állapot Figyelmeztetéseket",
|
||||||
"IllRestartLater": "Később Újraindítom",
|
"IllRestartLater": "Később Újraindítom",
|
||||||
@@ -266,9 +266,9 @@
|
|||||||
"UseProxy": "Proxy használata",
|
"UseProxy": "Proxy használata",
|
||||||
"Usenet": "Usenet",
|
"Usenet": "Usenet",
|
||||||
"UrlBaseHelpText": "Fordított proxy támogatás esetén az alapértelmezett érték üres",
|
"UrlBaseHelpText": "Fordított proxy támogatás esetén az alapértelmezett érték üres",
|
||||||
"URLBase": "Alap URL",
|
"URLBase": "URL Bázis",
|
||||||
"Uptime": "Üzemidő",
|
"Uptime": "Üzemidő",
|
||||||
"UpdateScriptPathHelpText": "Egy szkript elérési útja, amely átveszi a kicsomagolt frissítési csomagot, és elvégzi a frissítési folyamat hátralévő részét",
|
"UpdateScriptPathHelpText": "Keresse meg az egyéni parancsfájl elérési útját, amely kibontott frissítési csomagot vesz fel, és kezeli a frissítési folyamat fennmaradó részét",
|
||||||
"Updates": "Frissítések",
|
"Updates": "Frissítések",
|
||||||
"UpdateMechanismHelpText": "Használja a {appName} beépített frissítőjét vagy szkriptjét",
|
"UpdateMechanismHelpText": "Használja a {appName} beépített frissítőjét vagy szkriptjét",
|
||||||
"UpdateUiNotWritableHealthCheckMessage": "Nem lehet telepíteni a frissítést, mert a(z) „{uiFolder}” felhasználói felület mappát nem írhatja a „{userName}” felhasználó.",
|
"UpdateUiNotWritableHealthCheckMessage": "Nem lehet telepíteni a frissítést, mert a(z) „{uiFolder}” felhasználói felület mappát nem írhatja a „{userName}” felhasználó.",
|
||||||
@@ -281,13 +281,13 @@
|
|||||||
"UnableToLoadTags": "Nem sikerült betölteni a címkéket",
|
"UnableToLoadTags": "Nem sikerült betölteni a címkéket",
|
||||||
"UnableToLoadNotifications": "Nem sikerült betölteni az Értesítéseket",
|
"UnableToLoadNotifications": "Nem sikerült betölteni az Értesítéseket",
|
||||||
"TableOptions": "Táblázat Beállítások",
|
"TableOptions": "Táblázat Beállítások",
|
||||||
"ShowSearch": "Keresés megjelenítése",
|
"ShowSearch": "Keresés mutatása",
|
||||||
"SetTags": "Címkék beállítása",
|
"SetTags": "Címkék beállítása",
|
||||||
"NotificationTriggers": "Értesítési triggerek",
|
"NotificationTriggers": "Értesítési triggerek",
|
||||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Az összes indexer elérhetetlen több mint 6 órája, meghibásodás miatt: {indexerNames}",
|
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Az összes indexer elérhetetlen több mint 6 órája, meghibásodás miatt: {indexerNames}",
|
||||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Az összes indexelő elérhetetlen több mint 6 órája, meghibásodás miatt",
|
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Az összes indexer elérhetetlen több mint 6 órája, meghibásodás miatt",
|
||||||
"SettingsLogSql": "SQL naplózás",
|
"SettingsLogSql": "SQL naplózás",
|
||||||
"IndexerRss": "Indexelő RSS",
|
"IndexerRss": "Indexer Rss",
|
||||||
"IndexerAuth": "Indexelő auth",
|
"IndexerAuth": "Indexelő auth",
|
||||||
"Yesterday": "Tegnap",
|
"Yesterday": "Tegnap",
|
||||||
"UnableToLoadDevelopmentSettings": "Nem sikerült betölteni a fejlesztési beállításokat",
|
"UnableToLoadDevelopmentSettings": "Nem sikerült betölteni a fejlesztési beállításokat",
|
||||||
@@ -309,18 +309,18 @@
|
|||||||
"EnableIndexer": "Indexelő engedélyezése",
|
"EnableIndexer": "Indexelő engedélyezése",
|
||||||
"IndexerObsoleteCheckMessage": "Az indexelők elavultak vagy frissültek: {0}. Kérjük, távolítsa el és (vagy) add újra a hozzá a {appName}-ba",
|
"IndexerObsoleteCheckMessage": "Az indexelők elavultak vagy frissültek: {0}. Kérjük, távolítsa el és (vagy) add újra a hozzá a {appName}-ba",
|
||||||
"DevelopmentSettings": "Fejlesztési beállítások",
|
"DevelopmentSettings": "Fejlesztési beállítások",
|
||||||
"DeleteApplicationMessageText": "Biztosan törli a(z) „{name}” alkalmazást?",
|
"DeleteApplicationMessageText": "Biztosan törli a(z) „{0}” alkalmazást?",
|
||||||
"DeleteApplication": "Alkalmazás törlése",
|
"DeleteApplication": "Alkalmazás törlése",
|
||||||
"ClearHistoryMessageText": "Biztosan törlöd a {appName} összes előzményét?",
|
"ClearHistoryMessageText": "Biztosan törlöd a {appName} összes előzményét?",
|
||||||
"ClearHistory": "Előzmények törlése",
|
"ClearHistory": "Előzmények törlése",
|
||||||
"ApplicationStatusCheckSingleClientMessage": "Az alkalmazás nem áll rendelkezésre az alábbi hibák miatt: {0}",
|
"ApplicationStatusCheckSingleClientMessage": "Az alkalmazás nem áll rendelkezésre az alábbi hibák miatt: {0}",
|
||||||
"ApplicationStatusCheckAllClientMessage": "Összes alkalmazás elérhetetlen hiba miatt",
|
"ApplicationStatusCheckAllClientMessage": "Összes alkalmazás elérhetetlen hiba miatt",
|
||||||
"AllIndexersHiddenDueToFilter": "Az összes indexelő rejtve van az alkalmazott szűrő miatt.",
|
"AllIndexersHiddenDueToFilter": "Az összes indexelő rejtve van az alkalmazott szűrő miatt.",
|
||||||
"AddToDownloadClient": "Kiadás hozzáadása a letöltőklienshez",
|
"AddToDownloadClient": "Kiadás hozzáadása a kliens letöltéséhez",
|
||||||
"AddNewIndexer": "Új indexelő hozzáadása",
|
"AddNewIndexer": "Új indexelő hozzáadása",
|
||||||
"AddedToDownloadClient": "Kiadás hozzáadva a klienshez",
|
"AddedToDownloadClient": "Kiadás hozzáadva a klienshez",
|
||||||
"EnableRssHelpText": "RSS engedélyezése indexelőkhöz",
|
"EnableRssHelpText": "RSS Engedélyezése az Indexerekhez",
|
||||||
"EnableRss": "RSS engedélyezése",
|
"EnableRss": "RSS Aktiválás",
|
||||||
"Wiki": "Wiki",
|
"Wiki": "Wiki",
|
||||||
"Rss": "RSS",
|
"Rss": "RSS",
|
||||||
"RedirectHelpText": "Átirányítja a bejövő letöltési kérelmet az indexelő számára, és közvetlenül adja át a fájlt ahelyett, hogy a kérést a {appName}-en keresztül proxyba tenné",
|
"RedirectHelpText": "Átirányítja a bejövő letöltési kérelmet az indexelő számára, és közvetlenül adja át a fájlt ahelyett, hogy a kérést a {appName}-en keresztül proxyba tenné",
|
||||||
@@ -332,7 +332,7 @@
|
|||||||
"AppProfileSelectHelpText": "Az alkalmazásprofilok az RSS vezérlésére szolgálnak, Automatikus keresés és Interaktív keresés beállításai az alkalmazás szinkronizálásakor",
|
"AppProfileSelectHelpText": "Az alkalmazásprofilok az RSS vezérlésére szolgálnak, Automatikus keresés és Interaktív keresés beállításai az alkalmazás szinkronizálásakor",
|
||||||
"UnableToAddANewApplicationPleaseTryAgain": "Nem lehet új alkalmazást hozzáadni, próbálkozzon újra.",
|
"UnableToAddANewApplicationPleaseTryAgain": "Nem lehet új alkalmazást hozzáadni, próbálkozzon újra.",
|
||||||
"UnableToAddANewAppProfilePleaseTryAgain": "Nem lehet új alkalmazásprofilt hozzáadni, próbálkozzon újra.",
|
"UnableToAddANewAppProfilePleaseTryAgain": "Nem lehet új alkalmazásprofilt hozzáadni, próbálkozzon újra.",
|
||||||
"AddDownloadClient": "Letöltőkliens hozzáadása",
|
"AddDownloadClient": "Letöltési kliens hozzáadása",
|
||||||
"Applications": "Alkalmazások",
|
"Applications": "Alkalmazások",
|
||||||
"AppProfileInUse": "Használatban lévő alkalmazásprofil",
|
"AppProfileInUse": "Használatban lévő alkalmazásprofil",
|
||||||
"Apps": "Appok",
|
"Apps": "Appok",
|
||||||
@@ -349,7 +349,7 @@
|
|||||||
"Id": "Azonosító",
|
"Id": "Azonosító",
|
||||||
"NotificationTriggersHelpText": "Válassza ki, hogy mely események váltsák ki ezt az értesítést",
|
"NotificationTriggersHelpText": "Válassza ki, hogy mely események váltsák ki ezt az értesítést",
|
||||||
"Presets": "Előbeállítások",
|
"Presets": "Előbeállítások",
|
||||||
"Privacy": "Adatvédelem",
|
"Privacy": "Titkosítás",
|
||||||
"Query": "Lekérdezés",
|
"Query": "Lekérdezés",
|
||||||
"Stats": "Statisztikák",
|
"Stats": "Statisztikák",
|
||||||
"Torrent": "Torrent",
|
"Torrent": "Torrent",
|
||||||
@@ -364,13 +364,13 @@
|
|||||||
"NoSearchResultsFound": "Nincs találat. Próbálkozzon új kereséssel.",
|
"NoSearchResultsFound": "Nincs találat. Próbálkozzon új kereséssel.",
|
||||||
"AppSettingsSummary": "Alkalmazások és beállítások a {appName} interakciójának beállításához a PVR programjaiddal",
|
"AppSettingsSummary": "Alkalmazások és beállítások a {appName} interakciójának beállításához a PVR programjaiddal",
|
||||||
"DeleteIndexerProxy": "Indexer Proxy törlése",
|
"DeleteIndexerProxy": "Indexer Proxy törlése",
|
||||||
"DeleteIndexerProxyMessageText": "Biztosan törli a(z) „{name}” indexelő proxyt?",
|
"DeleteIndexerProxyMessageText": "Biztosan törlöd a(z) „{0}” proxyt?",
|
||||||
"IndexerProxies": "Indexer Proxy(k)",
|
"IndexerProxies": "Indexer Proxy(k)",
|
||||||
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Az összes indexelő-proxy elérhetetlen, hiba miatt",
|
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Az összes Proxy elérhetetlen, hiba miatt",
|
||||||
"IndexerProxyStatusUnavailableHealthCheckMessage": "Proxyk elérhetetlenek az alábbi hibák miatt: {indexerProxyNames}",
|
"IndexerProxyStatusUnavailableHealthCheckMessage": "Proxyk elérhetetlenek az alábbi hibák miatt: {indexerProxyNames}",
|
||||||
"IndexerTagsHelpText": "Címkékkel adhatja meg, mely indexelő proxykat használja az indexelő, illetve mely alkalmazásokkal legyen szinkronizálva.",
|
"IndexerTagsHelpText": "Címkék segítségével megadhatod az indexer proxykat amelyekkel az indexer szinkronizálva van, vagy egyszerűen az indexelők rendszerezéséhez.",
|
||||||
"UnableToLoadIndexerProxies": "Nem lehet betölteni az Indexer Proxyt",
|
"UnableToLoadIndexerProxies": "Nem lehet betölteni az Indexer Proxyt",
|
||||||
"AddIndexerProxy": "Indexelő-proxy hozzáadása",
|
"AddIndexerProxy": "Indexer Proxy hozzáadása",
|
||||||
"IndexerSettingsSummary": "Konfigurálja a különböző globális indexer beállításokat, beleértve a proxykat is.",
|
"IndexerSettingsSummary": "Konfigurálja a különböző globális indexer beállításokat, beleértve a proxykat is.",
|
||||||
"Notifications": "Értesítések",
|
"Notifications": "Értesítések",
|
||||||
"UnableToAddANewIndexerProxyPleaseTryAgain": "Nem lehet új Indexer Proxyt hozzáadni, próbálja újra.",
|
"UnableToAddANewIndexerProxyPleaseTryAgain": "Nem lehet új Indexer Proxyt hozzáadni, próbálja újra.",
|
||||||
@@ -393,18 +393,18 @@
|
|||||||
"HistoryCleanupDaysHelpTextWarning": "A kiválasztott napszámnál régebbi előzmények automatikusan törlődnek",
|
"HistoryCleanupDaysHelpTextWarning": "A kiválasztott napszámnál régebbi előzmények automatikusan törlődnek",
|
||||||
"IndexerAlreadySetup": "Az indexelő legalább egy példánya már be van állítva",
|
"IndexerAlreadySetup": "Az indexelő legalább egy példánya már be van állítva",
|
||||||
"IndexerInfo": "Indexer információ",
|
"IndexerInfo": "Indexer információ",
|
||||||
"IndexerNoDefinitionCheckHealthCheckMessage": "Az indexelőknek nincs definíciójuk, és nem működnek: {indexerNames}. Kérjük, távolítsa el és (vagy) adja hozzá újra a {appName}-hoz.",
|
"IndexerNoDefinitionCheckHealthCheckMessage": "Az indexereknek nincs definíciójuk, és nem működnek: {indexerNames}. Kérjük, távolítsa el és (vagy) adja hozzá újra a {appName}hoz",
|
||||||
"MassEditor": "Tömeges szerkesztő",
|
"MassEditor": "Tömeges szerkesztő",
|
||||||
"OnApplicationUpdate": "Alkalmazásfrissítéskor",
|
"OnApplicationUpdate": "Alkalmazásfrissítésről",
|
||||||
"OnApplicationUpdateHelpText": "Alkalmazásfrissítésről",
|
"OnApplicationUpdateHelpText": "Alkalmazásfrissítésről",
|
||||||
"OnGrab": "A kiadás megragadásakor",
|
"OnGrab": "Kiválasztás alatt",
|
||||||
"OnHealthIssue": "Állapotproblémakor",
|
"OnHealthIssue": "Állapotprobléma",
|
||||||
"Private": "Privát",
|
"Private": "Privát",
|
||||||
"Proxies": "Proxyk",
|
"Proxies": "Proxyk",
|
||||||
"Public": "Publikus",
|
"Public": "Publikus",
|
||||||
"QueryResults": "Lekérdezési eredmények",
|
"QueryResults": "Lekérdezési eredmények",
|
||||||
"SemiPrivate": "Félig privát",
|
"SemiPrivate": "Fél-Privát",
|
||||||
"TestAllIndexers": "Minden indexelő tesztelése",
|
"TestAllIndexers": "Tesztelje az összes indexelőt",
|
||||||
"ApplicationsLoadError": "Nem sikerült betölteni az alkalmazáslistát",
|
"ApplicationsLoadError": "Nem sikerült betölteni az alkalmazáslistát",
|
||||||
"Url": "URL",
|
"Url": "URL",
|
||||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "Az API-t hívó alkalmazás biztosítja a User-Agent szolgáltatást",
|
"UserAgentProvidedByTheAppThatCalledTheAPI": "Az API-t hívó alkalmazás biztosítja a User-Agent szolgáltatást",
|
||||||
@@ -433,13 +433,13 @@
|
|||||||
"AddSyncProfile": "Szinkronizálási profil hozzáadása",
|
"AddSyncProfile": "Szinkronizálási profil hozzáadása",
|
||||||
"EditSyncProfile": "Szinkronizálási profil szerkesztése",
|
"EditSyncProfile": "Szinkronizálási profil szerkesztése",
|
||||||
"MinimumSeedersHelpText": "Az alkalmazás által megkövetelt minimális Seeder az indexer számára",
|
"MinimumSeedersHelpText": "Az alkalmazás által megkövetelt minimális Seeder az indexer számára",
|
||||||
"InstanceName": "Példány neve",
|
"InstanceName": "Példány Neve",
|
||||||
"InstanceNameHelpText": "Instancia név a fülön és a Syslog alkalmazásnévhez",
|
"InstanceNameHelpText": "Példánynév a böngésző lapon és a syslog alkalmazás neve",
|
||||||
"ThemeHelpText": "Alkalmazás UI‑témájának módosítása. Az „Automatikus” téma az operációs rendszer témáját használja a világos vagy sötét mód beállításához. Inspirálta: {inspiredBy}.",
|
"ThemeHelpText": "Változtasd meg az alkalmazás felhasználói felület témáját. Az „Auto” téma az operációs rendszer témáját használja a Világos vagy Sötét mód beállításához. Ihlette: {0}",
|
||||||
"Duration": "Időtartam",
|
"Duration": "Időtartam",
|
||||||
"ElapsedTime": "Eltelt idő",
|
"ElapsedTime": "Eltelt idő",
|
||||||
"EnabledRedirected": "Engedélyezve, átirányítva",
|
"EnabledRedirected": "Engedélyezve, átirányítva",
|
||||||
"Ended": "Véget ért",
|
"Ended": "Vége lett",
|
||||||
"GrabTitle": "Cím megragadása",
|
"GrabTitle": "Cím megragadása",
|
||||||
"LastDuration": "Utolsó időtartam",
|
"LastDuration": "Utolsó időtartam",
|
||||||
"LastExecution": "Utolsó végrehajtás",
|
"LastExecution": "Utolsó végrehajtás",
|
||||||
@@ -455,12 +455,12 @@
|
|||||||
"DownloadClientCategory": "Letöltési kliens kategória",
|
"DownloadClientCategory": "Letöltési kliens kategória",
|
||||||
"AuthenticationRequired": "Azonosítás szükséges",
|
"AuthenticationRequired": "Azonosítás szükséges",
|
||||||
"AuthenticationRequiredHelpText": "Módosítsa, hogy mely kérésekhez van szükség hitelesítésre. Ne változtasson, hacsak nem érti a kockázatokat.",
|
"AuthenticationRequiredHelpText": "Módosítsa, hogy mely kérésekhez van szükség hitelesítésre. Ne változtasson, hacsak nem érti a kockázatokat.",
|
||||||
"AuthenticationRequiredWarning": "A hitelesítés nélküli távoli hozzáférés megakadályozása érdekében a {appName} alkalmazásnak engedélyeznie kell a hitelesítést. Opcionálisan letilthatja a helyi címekről történő hitelesítést.",
|
"AuthenticationRequiredWarning": "A hitelesítés nélküli távoli hozzáférés megakadályozása érdekében a(z) {appName} alkalmazásnak engedélyeznie kell a hitelesítést. Opcionálisan letilthatja a helyi címekről történő hitelesítést.",
|
||||||
"OnLatestVersion": "A {appName} legújabb verziója már telepítve van",
|
"OnLatestVersion": "A {appName} legújabb verziója már telepítva van",
|
||||||
"Remove": "Eltávolítás",
|
"Remove": "Eltávolítás",
|
||||||
"Replace": "Kicserél",
|
"Replace": "Kicserél",
|
||||||
"ApplicationURL": "Alkalmazás URL",
|
"ApplicationURL": "Alkalmazás URL",
|
||||||
"ApplicationUrlHelpText": "Az alkalmazás külső URL‑je, beleértve a http(s):// előtagot, a portot és az URL‑alapot",
|
"ApplicationUrlHelpText": "Ennek az alkalmazásnak a külső URL-címe, beleértve a http-eket",
|
||||||
"More": "Több",
|
"More": "Több",
|
||||||
"Publisher": "Kiadó",
|
"Publisher": "Kiadó",
|
||||||
"ApplyChanges": "Változások alkalmazása",
|
"ApplyChanges": "Változások alkalmazása",
|
||||||
@@ -469,19 +469,19 @@
|
|||||||
"ApplyTagsHelpTextAdd": "Hozzáadás: Adja hozzá a címkéket a meglévő címkék listájához",
|
"ApplyTagsHelpTextAdd": "Hozzáadás: Adja hozzá a címkéket a meglévő címkék listájához",
|
||||||
"ApplyTagsHelpTextHowToApplyApplications": "Hogyan adjunk hozzá címkéket a kiválasztott filmhez",
|
"ApplyTagsHelpTextHowToApplyApplications": "Hogyan adjunk hozzá címkéket a kiválasztott filmhez",
|
||||||
"ApplyTagsHelpTextHowToApplyIndexers": "Címkék alkalmazása a kiválasztott indexelőkre",
|
"ApplyTagsHelpTextHowToApplyIndexers": "Címkék alkalmazása a kiválasztott indexelőkre",
|
||||||
"ApplyTagsHelpTextRemove": "Eltávolítás: a megadott címkék eltávolítása",
|
"ApplyTagsHelpTextRemove": "Eltávolítás: Távolítsa el a beírt címkéket",
|
||||||
"CountIndexersSelected": "{count} indexelő kiválasztva",
|
"CountIndexersSelected": "{count} indexelő(k) kiválasztva",
|
||||||
"DeleteSelectedDownloadClients": "Letöltő kliens(ek) törlése",
|
"DeleteSelectedDownloadClients": "Letöltési kliens(ek) törlése",
|
||||||
"DownloadClientPriorityHelpText": "Priorizálj több letöltési klienst. A Round-Robint azonos prioritású letöltőkliensek használják.",
|
"DownloadClientPriorityHelpText": "Priorizálj több letöltési klienst. A Round-Robint azonos prioritású letöltőkliensek használják.",
|
||||||
"EditSelectedDownloadClients": "Kijelölt letöltő kliensek szerkesztése",
|
"EditSelectedDownloadClients": "Kijelölt letöltési kliensek szerkesztése",
|
||||||
"Label": "Címke",
|
"Label": "Címke",
|
||||||
"SelectIndexers": "Indexelők kiválasztása",
|
"SelectIndexers": "Indexelők keresése",
|
||||||
"ApiKeyValidationHealthCheckMessage": "Kérjük, frissítse API-kulcsát úgy, hogy az legalább {length} karakter hosszú legyen. Ezt a beállítások vagy a konfigurációs fájl segítségével teheti meg",
|
"ApiKeyValidationHealthCheckMessage": "Kérlek frissítsd az API kulcsot, ami legalább {length} karakter hosszú. Ezt megteheted a Beállításokban, vagy a config file-ban",
|
||||||
"Episode": "Epizód",
|
"Episode": "Epizód",
|
||||||
"Genre": "Műfaj",
|
"Genre": "Műfajok",
|
||||||
"Theme": "Téma",
|
"Theme": "Téma",
|
||||||
"Track": "Dal",
|
"Track": "Dal",
|
||||||
"UpdateAvailableHealthCheckMessage": "Új frissítés érhető el: {version}",
|
"UpdateAvailableHealthCheckMessage": "Új frissítés elérhető: {version}",
|
||||||
"Year": "Év",
|
"Year": "Év",
|
||||||
"Book": "Könyv",
|
"Book": "Könyv",
|
||||||
"Season": "Évad",
|
"Season": "Évad",
|
||||||
@@ -489,12 +489,12 @@
|
|||||||
"Artist": "Előadó",
|
"Artist": "Előadó",
|
||||||
"Author": "Szerző",
|
"Author": "Szerző",
|
||||||
"ConnectionLostReconnect": "A(z) {appName} automatikusan megpróbál csatlakozni, vagy kattintson az újratöltés gombra lent.",
|
"ConnectionLostReconnect": "A(z) {appName} automatikusan megpróbál csatlakozni, vagy kattintson az újratöltés gombra lent.",
|
||||||
"DeleteAppProfileMessageText": "Biztosan törli a(z) {name} app profilt?",
|
"DeleteAppProfileMessageText": "Biztosan törli a {0} minőségi profilt?",
|
||||||
"RecentChanges": "Friss változások",
|
"RecentChanges": "Friss változások",
|
||||||
"WhatsNew": "Újdonságok",
|
"WhatsNew": "Mi az újdonság?",
|
||||||
"ConnectionLostToBackend": "A(z) {appName} megszakadt a kapcsolat a háttérrendszerrel, ezért újra kell tölteni a működés visszaállításához.",
|
"ConnectionLostToBackend": "A(z) {appName} megszakadt a kapcsolat a háttérrendszerrel, ezért újra kell tölteni a működés visszaállításához.",
|
||||||
"minutes": "percek",
|
"minutes": "percek",
|
||||||
"AddConnection": "Kapcsolat hozzáadása",
|
"AddConnection": "Csatlakozás hozzáadása",
|
||||||
"NotificationStatusAllClientHealthCheckMessage": "Az összes értesítés nem érhető el hibák miatt",
|
"NotificationStatusAllClientHealthCheckMessage": "Az összes értesítés nem érhető el hibák miatt",
|
||||||
"NotificationStatusSingleClientHealthCheckMessage": "Az alkalmazás nem áll rendelkezésre az alábbi hibák miatt: {notificationNames}",
|
"NotificationStatusSingleClientHealthCheckMessage": "Az alkalmazás nem áll rendelkezésre az alábbi hibák miatt: {notificationNames}",
|
||||||
"AuthBasic": "Alap (böngésző előugró ablak)",
|
"AuthBasic": "Alap (böngésző előugró ablak)",
|
||||||
@@ -509,56 +509,56 @@
|
|||||||
"AddCustomFilter": "Egyéni szűrő hozzáadása",
|
"AddCustomFilter": "Egyéni szűrő hozzáadása",
|
||||||
"Clone": "Klón",
|
"Clone": "Klón",
|
||||||
"Implementation": "Végrehajtás",
|
"Implementation": "Végrehajtás",
|
||||||
"AddConnectionImplementation": "Kapcsolat hozzáadása - {implementationName}",
|
"AddConnectionImplementation": "Csatlakozás hozzáadása - {implementationName}",
|
||||||
"AddDownloadClientImplementation": "Letöltőkliens hozzáadása – {implementationName}",
|
"AddDownloadClientImplementation": "Letöltési kliens hozzáadása – {implementationName}",
|
||||||
"AddIndexerImplementation": "Indexelő hozzáadása - {implementationName}",
|
"AddIndexerImplementation": "Indexelő hozzáadása - {implementationName}",
|
||||||
"ActiveApps": "Aktív alkalmazások",
|
"ActiveApps": "Aktív alkalmazások",
|
||||||
"ActiveIndexers": "Aktív indexelők",
|
"ActiveIndexers": "Indexerek",
|
||||||
"AuthenticationMethod": "Hitelesítési módszer",
|
"AuthenticationMethod": "Hitelesítési Módszer",
|
||||||
"AuthenticationMethodHelpTextWarning": "Kérjük, válasszon érvényes hitelesítési módszert",
|
"AuthenticationMethodHelpTextWarning": "Kérjük, válasszon érvényes hitelesítési módot",
|
||||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Erősítse meg az új jelszót",
|
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Erősítsd meg az új jelszót",
|
||||||
"DefaultNameCopiedProfile": "{name} - Másolat",
|
"DefaultNameCopiedProfile": "{name} - Másolat",
|
||||||
"EditConnectionImplementation": "Kapcsolat szerkesztése - {implementationName}",
|
"EditConnectionImplementation": "Kapcsolat szerkesztése - {implementationName}",
|
||||||
"EditIndexerProxyImplementation": "Indexelő proxy-jának szerkesztése - {implementationName}",
|
"EditIndexerProxyImplementation": "Indexelő hozzáadása - {megvalósítás neve}",
|
||||||
"AddApplicationImplementation": "Alkalmazás hozzáadása - {implementationName}",
|
"AddApplicationImplementation": "Csatlakozás hozzáadása - {implementationName}",
|
||||||
"AddIndexerProxyImplementation": "Indexelő-proxy hozzáadása - {implementationName}",
|
"AddIndexerProxyImplementation": "Indexelő hozzáadása - {implementationName}",
|
||||||
"EditIndexerImplementation": "Indexelő szerkesztése – {implementationName}",
|
"EditIndexerImplementation": "Indexelő szerkesztése – {implementationName}",
|
||||||
"EditApplicationImplementation": "Applikáció szerkesztése - {implementationName}",
|
"EditApplicationImplementation": "Csatlakozás hozzáadása - {megvalósítás neve}",
|
||||||
"EditDownloadClientImplementation": "Letöltő kliens szerkesztése – {implementationName}",
|
"EditDownloadClientImplementation": "Letöltési kliens szerkesztése – {implementationName}",
|
||||||
"NoIndexersFound": "Nem található indexelő",
|
"NoIndexersFound": "Nem található indexelő",
|
||||||
"NoDownloadClientsFound": "Nem találhatók letöltő kliensek",
|
"NoDownloadClientsFound": "Nem találhatók letöltő kliensek",
|
||||||
"AdvancedSettingsShownClickToHide": "Haladó beállítások megjelenítve, kattints az elrejtéshez",
|
"AdvancedSettingsShownClickToHide": "Haladó beállítások megjelenítve, kattints az elrejtéshez",
|
||||||
"AdvancedSettingsHiddenClickToShow": "Haladó beállítások rejtve, kattints a megjelenítéshez",
|
"AdvancedSettingsHiddenClickToShow": "Haladó beállítások rejtve, kattints a megjelenítéshez",
|
||||||
"AppUpdatedVersion": "{appName} frissítve lett `{version}` verzióra, ahhoz hogy a legutóbbi változtatások életbelépjenek, töltse újra a {appName}-t",
|
"AppUpdatedVersion": "{appName} frissítve lett `{version}` verzióra, ahhoz hogy a legutóbbi változtatások életbelépjenek, töltsd újra a {appName}-t",
|
||||||
"AddCategory": "Kategória hozzáadása",
|
"AddCategory": "Kategória hozzáadása",
|
||||||
"External": "Külső",
|
"External": "Külső",
|
||||||
"NoHistoryFound": "Nem található előzmény",
|
"NoHistoryFound": "Nem található előzmény",
|
||||||
"InvalidUILanguage": "A felhasználói felület érvénytelen nyelvre van állítva, javítsa ki, és mentse el a beállításait",
|
"InvalidUILanguage": "A felhasználói felület érvénytelen nyelvre van állítva, javítsa ki, és mentse el a beállításait",
|
||||||
"ManageDownloadClients": "Letöltő kliensek kezelése",
|
"ManageDownloadClients": "Letöltési kliensek kezelése",
|
||||||
"DownloadClientAriaSettingsDirectoryHelpText": "Választható hely a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Aria2 hely használatához",
|
"DownloadClientAriaSettingsDirectoryHelpText": "Választható hely a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Aria2 hely használatához",
|
||||||
"DeleteSelectedIndexersMessageText": "Biztosan törölni szeretne {count} kiválasztott indexelőt?",
|
"DeleteSelectedIndexersMessageText": "Biztosan törölni szeretne {count} kiválasztott indexelőt?",
|
||||||
"DownloadClientQbittorrentSettingsContentLayout": "Tartalom elrendezése",
|
"DownloadClientQbittorrentSettingsContentLayout": "Tartalom elrendezése",
|
||||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Függetlenül attól, hogy a qBittorrent konfigurált tartalomelrendezését használja, az eredeti elrendezést a torrentből, vagy mindig hozzon létre egy almappát (qBittorrent 4.3.2)",
|
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Függetlenül attól, hogy a qBittorrent konfigurált tartalomelrendezését használja, az eredeti elrendezést a torrentből, vagy mindig hozzon létre egy almappát (qBittorrent 4.3.2)",
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Biztosan törölni szeretné a kiválasztott {count} letöltő klienst?",
|
"DeleteSelectedDownloadClientsMessageText": "Biztosan törölni szeretné a kiválasztott {count} letöltési klienst?",
|
||||||
"CountDownloadClientsSelected": "{count} letöltő kliens kiválasztva",
|
"CountDownloadClientsSelected": "{count} letöltési kliens kiválasztva",
|
||||||
"StopSelecting": "Kiválasztás leállítása",
|
"StopSelecting": "Kiválasztás leállítása",
|
||||||
"days": "napok",
|
"days": "napok",
|
||||||
"DeleteSelectedApplicationsMessageText": "Biztosan törölni szeretne {count} kiválasztott importlistát?",
|
"DeleteSelectedApplicationsMessageText": "Biztosan törölni szeretne {count} kiválasztott importlistát?",
|
||||||
"CountApplicationsSelected": "{count} Gyűjtemény(ek) kiválasztva",
|
"CountApplicationsSelected": "{count} Gyűjtemény(ek) kiválasztva",
|
||||||
"ManageClients": "Ügyfelek kezelése",
|
"ManageClients": "Ügyfelek kezelése",
|
||||||
"IndexerDownloadClientHealthCheckMessage": "Indexelők érvénytelen letöltő kliensekkel: {indexerNames}.",
|
"IndexerDownloadClientHealthCheckMessage": "Indexelők érvénytelen letöltési kliensekkel: {indexerNames}.",
|
||||||
"PasswordConfirmation": "Jelszó megerősítése",
|
"PasswordConfirmation": "Jelszó megerősítése",
|
||||||
"SecretToken": "Titkos token",
|
"SecretToken": "Titkos token",
|
||||||
"UseSsl": "SSL használata",
|
"UseSsl": "SSL használata",
|
||||||
"Donate": "Adományoz",
|
"Donate": "Adományoz",
|
||||||
"IndexerBeyondHDSettingsSearchTypes": "Keresés típusa",
|
"IndexerBeyondHDSettingsSearchTypes": "Keresés típusa",
|
||||||
"Mixed": "Vegyes",
|
"Mixed": "Mixed",
|
||||||
"TorrentBlackholeSaveMagnetFiles": "Magnet fájlok mentése",
|
"TorrentBlackholeSaveMagnetFiles": "Magnet fájlok mentése",
|
||||||
"DownloadClientSettingsInitialState": "Kezdeti állapot",
|
"DownloadClientSettingsInitialState": "Kezdeti állapot",
|
||||||
"DownloadClientSettingsInitialStateHelpText": "A torrentek kezdeti állapota hozzáadva a következőhöz {clientName}",
|
"DownloadClientSettingsInitialStateHelpText": "A torrentek kezdeti állapota hozzáadva a következőhöz {clientName}",
|
||||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Opcionális hely a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Transmission hely használatához",
|
"DownloadClientTransmissionSettingsDirectoryHelpText": "Választható hely a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Aria2 hely használatához",
|
||||||
"IndexerHDBitsSettingsCodecs": "Kodekek",
|
"IndexerHDBitsSettingsCodecs": "Kodek",
|
||||||
"IndexerHDBitsSettingsMediums": "Médiumok",
|
"IndexerHDBitsSettingsMediums": "Közepes",
|
||||||
"BlackholeFolderHelpText": "Mappa, amelyben az {appName} tárolja az {extension} fájlt",
|
"BlackholeFolderHelpText": "Mappa, amelyben az {appName} tárolja az {extension} fájlt",
|
||||||
"Destination": "Rendeltetési hely",
|
"Destination": "Rendeltetési hely",
|
||||||
"Directory": "Könyvtár",
|
"Directory": "Könyvtár",
|
||||||
@@ -567,11 +567,11 @@
|
|||||||
"TorrentBlackholeSaveMagnetFilesExtension": "Magnet Files kiterjesztés mentése",
|
"TorrentBlackholeSaveMagnetFilesExtension": "Magnet Files kiterjesztés mentése",
|
||||||
"TorrentBlackholeTorrentFolder": "Torrent mappa",
|
"TorrentBlackholeTorrentFolder": "Torrent mappa",
|
||||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Előtagot ad a deluge json URL-hez, lásd: {url}",
|
"DownloadClientDelugeSettingsUrlBaseHelpText": "Előtagot ad a deluge json URL-hez, lásd: {url}",
|
||||||
"CustomFilter": "Egyedi szűrő",
|
"CustomFilter": "Egyedi Szűrők",
|
||||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Opcionális megosztott mappa a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Download Station hely használatához",
|
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Opcionális megosztott mappa a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Download Station hely használatához",
|
||||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "Választható hely a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett rTorrent hely használatához",
|
"DownloadClientRTorrentSettingsDirectoryHelpText": "Választható hely a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Aria2 hely használatához",
|
||||||
"DownloadClientSettingsUseSslHelpText": "Biztonságos kapcsolat használata, amikor a(z) {clientName} szolgáltatással csatlakozik",
|
"DownloadClientSettingsUseSslHelpText": "Biztonságos kapcsolat használata, amikor a(z) {clientName} szolgáltatással csatlakozik",
|
||||||
"GrabRelease": "Kiadás megragadása",
|
"GrabRelease": "Release megragadása",
|
||||||
"ManualGrab": "Megfog",
|
"ManualGrab": "Megfog",
|
||||||
"PrioritySettings": "Prioritás: {priority}",
|
"PrioritySettings": "Prioritás: {priority}",
|
||||||
"ProxyValidationBadRequest": "Proxy tesztelése sikertelen. Állapotkód: {statusCode}",
|
"ProxyValidationBadRequest": "Proxy tesztelése sikertelen. Állapotkód: {statusCode}",
|
||||||
@@ -580,8 +580,8 @@
|
|||||||
"Script": "Szkript",
|
"Script": "Szkript",
|
||||||
"Any": "Bármi",
|
"Any": "Bármi",
|
||||||
"PublishedDate": "Közzététel dátuma",
|
"PublishedDate": "Közzététel dátuma",
|
||||||
"Redirected": "Átirányítva",
|
"Redirected": "Átirányítás",
|
||||||
"AllSearchResultsHiddenByFilter": "Az alkalmazott szűrők miatt, az összes keresési eredmény rejtve marad.",
|
"AllSearchResultsHiddenByFilter": "Az alkalmazott szűrők miatt, az összes keresési eredmény rejtve marad",
|
||||||
"HealthMessagesInfoBox": "Az állapotfelmérés okáról további információkat találhat, ha a sor végén található wikilinkre (könyv ikonra) kattint, vagy megnézi [logs] ({link}). Ha nehézségei vannak ezen üzenetek értelmezése során, forduljon ügyfélszolgálatunkhoz az alábbi linkeken.",
|
"HealthMessagesInfoBox": "Az állapotfelmérés okáról további információkat találhat, ha a sor végén található wikilinkre (könyv ikonra) kattint, vagy megnézi [logs] ({link}). Ha nehézségei vannak ezen üzenetek értelmezése során, forduljon ügyfélszolgálatunkhoz az alábbi linkeken.",
|
||||||
"AptUpdater": "A frissítés telepítéséhez használja az apt-t",
|
"AptUpdater": "A frissítés telepítéséhez használja az apt-t",
|
||||||
"DockerUpdater": "Frissítse a docker-tárolót a frissítés fogadásához",
|
"DockerUpdater": "Frissítse a docker-tárolót a frissítés fogadásához",
|
||||||
@@ -592,123 +592,10 @@
|
|||||||
"LogFilesLocation": "A naplófájlok itt találhatók: {location}",
|
"LogFilesLocation": "A naplófájlok itt találhatók: {location}",
|
||||||
"Logout": "Kijelentkezés",
|
"Logout": "Kijelentkezés",
|
||||||
"NoEventsFound": "Nem található események",
|
"NoEventsFound": "Nem található események",
|
||||||
"RestartReloadNote": "Megjegyzés: A {appName} automatikusan újraindítja és újratölti a felhasználói felületet a visszaállítási folyamatban.",
|
"RestartReloadNote": "Megjegyzés: A {appName} automatikusan újraindítja és újratölti a felületet a visszaállítási folyamatban.",
|
||||||
"UpdateAppDirectlyLoadError": "Nem lehetséges közvetlenül frissíteni a {appName}-t,",
|
"UpdateAppDirectlyLoadError": "Nem lehetséges közvetlenül frissíteni a {appName}-t",
|
||||||
"WouldYouLikeToRestoreBackup": "Szeretné visszaállítani a(z) „{name}” biztonsági másolatot?",
|
"WouldYouLikeToRestoreBackup": "Szeretné visszaállítani a(z) „{name}” biztonsági másolatot?",
|
||||||
"InstallLatest": "Legfrissebb telepítése",
|
"InstallLatest": "Legfrissebb telepítése",
|
||||||
"CurrentlyInstalled": "Jelenleg telepítve",
|
"CurrentlyInstalled": "Jelenleg telepítve",
|
||||||
"PreviouslyInstalled": "Korábban telepítve",
|
"PreviouslyInstalled": "Korábban telepítve"
|
||||||
"IndexerId": "Indexelő",
|
|
||||||
"FailedToFetchSettings": "A beállítások lekérése sikertelen",
|
|
||||||
"IndexerBeyondHDSettingsRewindOnly": "Csak olvasható",
|
|
||||||
"IndexerSettingsAppsMinimumSeeders": "Minimális Seederek Száma",
|
|
||||||
"EditCategory": "Kategória szerkesztése",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Eredet",
|
|
||||||
"LogSizeLimit": "Logfájl méretkorlátja",
|
|
||||||
"DeleteSelectedApplications": "A kiválasztott előadó(k) törlése",
|
|
||||||
"DeleteSelectedIndexer": "Kiválasztott indexelők szerkesztése",
|
|
||||||
"SearchAllIndexers": "Filmek Keresése",
|
|
||||||
"AppsMinimumSeeders": "Minimális Seederek Száma",
|
|
||||||
"DeleteSelectedIndexers": "Kiválasztott indexelők szerkesztése",
|
|
||||||
"IndexerStatus": "Indexer Beállítások",
|
|
||||||
"IndexerDownloadClientHelpText": "Adja meg, melyik letöltési kliens legyen használva a {appName} által erről az indexelőről indított letöltésekhez",
|
|
||||||
"IndexerBeyondHDSettingsRefundOnly": "Csak visszatérítésre",
|
|
||||||
"DownloadClientFloodSettingsTagsHelpText": "A letöltés induló címkéi. A rendszer csak akkor ismeri fel a letöltést, ha az összes megadott induló címkét tartalmazza. Ez segít megelőzni az ütközéseket más, nem kapcsolódó letöltésekkel.",
|
|
||||||
"DownloadClientFreeboxSettingsApiUrl": "API URL",
|
|
||||||
"DownloadClientFreeboxSettingsAppId": "Alkalmazás ID",
|
|
||||||
"DownloadClientFreeboxSettingsAppToken": "Alkalmazás token",
|
|
||||||
"XmlRpcPath": "XML RPC útvonal",
|
|
||||||
"NotificationsEmailSettingsUseEncryptionHelpText": "Meghatározza, hogy a rendszer a szerver beállításaitól függően előnyben részesítse‑e a titkosítást, mindig titkosítást használjon (SSL: csak 465‑ös port, StartTLS: más portok), vagy egyáltalán ne alkalmazzon titkosítást",
|
|
||||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Ez az opció legalább 16.0-s NzbGet verziót igényel",
|
|
||||||
"DownloadClientPneumaticSettingsNzbFolder": "Nzb mappa",
|
|
||||||
"DownloadClientPneumaticSettingsStrmFolder": "Strm mappa",
|
|
||||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Biztonságos kapcsolatot használjon. Ld. Opciók -> Web UI -> \"HTTPS használata HTTP helyett\" qBittorentben.",
|
|
||||||
"DownloadClientRTorrentSettingsUrlPath": "Url útvonal",
|
|
||||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Előtag hozzáadása a Flood API‑hoz (pl. {url})",
|
|
||||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "Adja meg a Freebox API alap URL‑jét az API‑verzióval együtt, pl. '{url}', alapértelmezés: '{defaultApiUrl}'",
|
|
||||||
"DownloadClientFreeboxSettingsAppIdHelpText": "A Freebox API‑hoz való hozzáférés létrehozásakor megadott App ID (például „app_id”)",
|
|
||||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "A Freebox API‑hozzáférés létrehozásakor kapott alkalmazás‑token (pl. „app_token”)",
|
|
||||||
"DownloadClientFreeboxSettingsHostHelpText": "A Freebox hostneve vagy IP‑címe (alapértelmezés: '{url}'; csak ugyanazon a hálózaton működik)",
|
|
||||||
"DownloadClientFreeboxSettingsPortHelpText": "A Freebox interfész által használt port, alapértelmezés: '{port}'",
|
|
||||||
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Ennek a mappának elérhetőnek kell lennie az XBMC számára",
|
|
||||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Első és utolsó először",
|
|
||||||
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Először a fájl elejének és a végének letöltése (qBittorrent 4.1.0+)",
|
|
||||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "qBittorrenthez hozzáadott torrentek alapértelmezett állapota. Fontos: a kényszerített torrentek figyelmen kívül hagyják a seedelési szabályokat",
|
|
||||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Szekvenciális sorrend",
|
|
||||||
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Letöltés szekvenciális sorrendben (qBittorrent 4.1.0+)",
|
|
||||||
"DownloadClientSettingsAddPaused": "Hozzáadás szüneltetettként",
|
|
||||||
"UsenetBlackholeNzbFolder": "Nzb mappa",
|
|
||||||
"DownloadClientRTorrentSettingsAddStopped": "Hozzáadás megállítvaként",
|
|
||||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Engedélyezés esetén a torrentek és magnet linkek megállítva állapotban kerülnek be az rTorrentbe, ami a magnet fájlok hibás működéséhez vezethet.",
|
|
||||||
"DownloadClientRTorrentSettingsUrlPathHelpText": "Az XMLRPC végpont elérési útja, lásd: {url}. ruTorrent használata esetén ez általában az RPC2 vagy a [ruTorrent elérési útvonala]{url2}.",
|
|
||||||
"DownloadClientSettingsDestinationHelpText": "A letöltési útvonal kézi beállítása. Ha üresen marad, az alapértelmezett lesz használva",
|
|
||||||
"DownloadClientSettingsUrlBaseHelpText": "Prefixet ad a(z) {clientName} hivatkozáshoz, például: {url}",
|
|
||||||
"DownloadClientUTorrentProviderMessage": "A uTorrent múltjában előfordult, hogy kriptobányászót, kártevőket és reklámokat tartalmazott, ezért erősen javasoljuk, hogy válasszon egy másik klienst.",
|
|
||||||
"TheLogLevelDefault": "A naplózási szint alapértéke a 'Debug', ez megváltoztatható az Általános beállítások/beállítások/általános menüpontban",
|
|
||||||
"IndexerHDBitsSettingsCodecsHelpText": "Ha nincs megadva, minden lehetőség felhasználásra kerül.",
|
|
||||||
"IndexerHDBitsSettingsMediumsHelpText": "Ha nincs megadva, minden lehetőség felhasználásra kerül.",
|
|
||||||
"IndexerNewznabSettingsAdditionalParametersHelpText": "Kiegészítő Newznab paraméterek",
|
|
||||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Ezek a beállítások megtalálhatók a PassThePopcorn-jának biztonsági beállításaiban (Profil szerkesztése > Biztonság).",
|
|
||||||
"IndexerSettingsAdditionalParameters": "Kiegészítő paraméterek",
|
|
||||||
"IndexerSettingsApiPath": "API útvonal",
|
|
||||||
"IndexerSettingsApiPathHelpText": "Az API elérési útja, általában: {url}",
|
|
||||||
"IndexerSettingsApiUser": "API felhasználó",
|
|
||||||
"IndexerSettingsCookie": "Süti",
|
|
||||||
"IndexerSettingsSeedRatio": "Megosztási arány",
|
|
||||||
"IndexerSettingsSeedRatioHelpText": "Az az arány, amelyet a torrentnek el kell érnie a leállítás előtt. Üresen hagyva a letöltő kliens alapértelmezett értékét használja. Az aránynak legalább 1.0‑nak kell lennie, és meg kell felelnie az indexelő szabályainak",
|
|
||||||
"IndexerSettingsSeedTime": "Megosztási idő",
|
|
||||||
"IndexerSettingsSeedTimeHelpText": "Az az időtartam, ameddig a torrentet seedelni kell a leállítás előtt. Üresen hagyva a letöltő kliens alapértelmezett értékét használja",
|
|
||||||
"InfoUrl": "Infó URL",
|
|
||||||
"InstallMajorVersionUpdate": "Frissítés telepítése",
|
|
||||||
"InstallMajorVersionUpdateMessage": "Ez a frissítés egy új főverziót telepít, és előfordulhat, hogy nem kompatibilis a rendszerével. Biztosan telepíteni szeretné ezt a frissítést?",
|
|
||||||
"LogSizeLimitHelpText": "Archiválás előtti maximális log fájl méret MB-ben. Alapértelmezetten 1MB.",
|
|
||||||
"Menu": "Menü",
|
|
||||||
"SelectDownloadClientModalTitle": "{modalTitle} - Letöltő kliens kiválasztása",
|
|
||||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Előtagot ad a(z) {clientName} RPC‑URL‑jéhez, például {url}; alapértelmezetten: '{defaultUrl}'",
|
|
||||||
"Install": "Telepítés",
|
|
||||||
"InstallMajorVersionUpdateMessageLink": "További információért látogasson el ide: [{domain}]({url}).",
|
|
||||||
"LabelIsRequired": "Címke kötelező",
|
|
||||||
"TorrentBlackholeSaveMagnetFilesHelpText": "Magnet link mentése, ha nem érhető el .torrent fájl (csak akkor hasznos, ha a letöltő kliens támogatja a fájlba mentett magneteket)",
|
|
||||||
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "A magnet linkekhez használandó kiterjesztés, alapértelmezés szerint: \".magnet\"",
|
|
||||||
"PackageVersionInfo": "{packageVersion} {packageAuthor}-tól/től",
|
|
||||||
"NotificationsEmailSettingsUseEncryption": "Titkosítás használata",
|
|
||||||
"NotificationsTelegramSettingsIncludeAppName": "Csatolja a {appName} nevet a címbe",
|
|
||||||
"NotificationsTelegramSettingsIncludeAppNameHelpText": "Az üzenet címének opcionális kiegészítése a {appName}-ral, hogy megkülönböztesse az értesítéseket más alkalmazásoktól",
|
|
||||||
"OverrideGrabModalTitle": "Felülírás és megragadás - {title}",
|
|
||||||
"OnHealthRestored": "Az állapot stabilizálódásakor",
|
|
||||||
"DownloadClientPneumaticSettingsStrmFolderHelpText": "A mappában lévő .strm fájlokat a Drone fogja importálni",
|
|
||||||
"UpdaterLogFiles": "A frissítő naplófájljai",
|
|
||||||
"CountIndexersAvailable": "{count} indexelő elérhető",
|
|
||||||
"PreferMagnetUrlHelpText": "Ha engedélyett, ez az indexelő előnyben részesíti a magnet URL-ek használatát a letöltésekhez, és ha ez nem lehetséges, visszatér a torrent linkekhez",
|
|
||||||
"IndexerSettingsPreferMagnetUrlHelpText": "Ha engedélyett, ez az indexelő előnyben részesíti a magnet URL-ek használatát a letöltésekhez, és ha ez nem lehetséges, visszatér a torrent linkekhez",
|
|
||||||
"IndexerHDBitsSettingsUseFilenames": "Fájlneveket használjon",
|
|
||||||
"TorznabUrl": "Torznab URL",
|
|
||||||
"IndexerGazelleGamesSettingsApiKeyHelpText": "API‑kulcs az oldalról (a Beállítások => Hozzáférési beállítások menüben található)",
|
|
||||||
"IndexerOrpheusSettingsApiKeyHelpText": "API‑kulcs az oldalról (a Beállítások => Hozzáférési beállítások menüben található)",
|
|
||||||
"IndexerRedactedSettingsApiKeyHelpText": "API‑kulcs az oldalról (a Beállítások => Hozzáférési beállítások menüben található)",
|
|
||||||
"IndexerMTeamTpSettingsApiKeyHelpText": "API‑kulcs az oldalról (a Vezérlőpult => Biztonság => Laboratórium menüben található)",
|
|
||||||
"IndexerSettingsBaseUrl": "Alap URL",
|
|
||||||
"DefaultCategory": "Alapértelmezett kategória",
|
|
||||||
"FoundCountReleases": "{itemCount} kiadást talált",
|
|
||||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Ha egy torrent hash alapján blokkolt, előfordulhat, hogy egyes indexelőknél nem kerül megfelelően elutasításra RSS‑ben vagy keresés közben. Ennek engedélyezésével a torrent a lekérés után, de még a kliensnek való továbbítás előtt elutasítható.",
|
|
||||||
"IndexerHDBitsSettingsOriginsHelpText": "Ha nincs megadva, minden lehetőség felhasználásra kerül.",
|
|
||||||
"SeedTimeHelpText": "z az időtartam, ameddig a torrentet seedelni kell a leállítás előtt, üresen hagyva az app alapértelmezett értéke",
|
|
||||||
"NewznabUrl": "Newznab URL",
|
|
||||||
"RepeatSearch": "Keresés megismétlése",
|
|
||||||
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Csak freeleech kiadások keresése",
|
|
||||||
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Csak freeleech kiadások keresése",
|
|
||||||
"IndexerFileListSettingsFreeleechOnlyHelpText": "Csak freeleech kiadások keresése",
|
|
||||||
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Csak freeleech kiadások keresése",
|
|
||||||
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Csak freeleech kiadások keresése",
|
|
||||||
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Csak freeleech kiadások keresése",
|
|
||||||
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Csak freeleech kiadások keresése",
|
|
||||||
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Csak freeleech kiadások keresése",
|
|
||||||
"SeedRatio": "Megosztási arány",
|
|
||||||
"SeedTime": "Megosztási idő",
|
|
||||||
"IndexerNewznabSettingsApiKeyHelpText": "Webhely API-kulcsa",
|
|
||||||
"IndexerNzbIndexSettingsApiKeyHelpText": "Webhely API-kulcsa",
|
|
||||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "Webhely API-kulcsa",
|
|
||||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Webhely API-kulcsa",
|
|
||||||
"OnGrabHelpText": "A kiadás megragadásakor",
|
|
||||||
"OnHealthRestoredHelpText": "Az állapot stabilizálódásakor"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,51 +89,5 @@
|
|||||||
"AptUpdater": "Gunakan apt untuk memasang pembaruan",
|
"AptUpdater": "Gunakan apt untuk memasang pembaruan",
|
||||||
"Clone": "Tutup",
|
"Clone": "Tutup",
|
||||||
"EnableSSL": "Aktifkan RSS",
|
"EnableSSL": "Aktifkan RSS",
|
||||||
"CurrentlyInstalled": "Saat Ini Terpasang",
|
"CurrentlyInstalled": "Saat Ini Terpasang"
|
||||||
"Author": "Otomatis",
|
|
||||||
"CustomFilters": "tambah filter khusus",
|
|
||||||
"AddCategory": "Kategori",
|
|
||||||
"AddDownloadClientImplementation": "tambah persyaratan {implementationName}",
|
|
||||||
"AddIndexerImplementation": "tambah persyaratan {implementationName}",
|
|
||||||
"Applications": "URL Aplikasi",
|
|
||||||
"Proxies": "Profil",
|
|
||||||
"IndexerId": "Pengindeks",
|
|
||||||
"UnableToAddANewAppProfilePleaseTryAgain": "tidak dapat menambahkan persyaratan baru, coba lagi..",
|
|
||||||
"CustomFilter": "tambah filter khusus",
|
|
||||||
"DownloadClient": "Tambahkan Download Client",
|
|
||||||
"EditApplicationImplementation": "tambah persyaratan {implementationName}",
|
|
||||||
"EditConnectionImplementation": "tambah koneksi - {implementationName}",
|
|
||||||
"Filter": "File",
|
|
||||||
"UILanguage": "Bahasa",
|
|
||||||
"UnableToAddANewApplicationPleaseTryAgain": "tidak dapat menambahkan persyaratan baru, coba lagi..",
|
|
||||||
"UnableToAddANewDownloadClientPleaseTryAgain": "tidak dapat menambahkan persyaratan baru, coba lagi..",
|
|
||||||
"UnableToAddANewIndexerPleaseTryAgain": "tidak dapat menambahkan persyaratan baru, coba lagi..",
|
|
||||||
"CountIndexersSelected": "{count} serial dipilih",
|
|
||||||
"UnableToAddANewIndexerProxyPleaseTryAgain": "tidak dapat menambahkan persyaratan baru, coba lagi..",
|
|
||||||
"InteractiveSearch": "Aktifkan Penelusuran Interaktif",
|
|
||||||
"UnableToAddANewNotificationPleaseTryAgain": "tidak dapat menambahkan persyaratan baru, coba lagi..",
|
|
||||||
"Application": "URL Aplikasi",
|
|
||||||
"Donate": "Tanggal",
|
|
||||||
"AddNewIndexer": "Tambahkan Pengindeks",
|
|
||||||
"DownloadClients": "Tambahkan Download Client",
|
|
||||||
"AddApplicationImplementation": "tambah persyaratan {implementationName}",
|
|
||||||
"TvSearch": "Cari",
|
|
||||||
"AddIndexerProxyImplementation": "tambah persyaratan {implementationName}",
|
|
||||||
"ManageDownloadClients": "Tambahkan Download Client",
|
|
||||||
"Download": "Pengunduhan Ulang Gagal",
|
|
||||||
"DownloadClientSettings": "Tambahkan Download Client",
|
|
||||||
"EditSelectedDownloadClients": "Tambahkan Download Client",
|
|
||||||
"IndexerInfo": "Pengindeks",
|
|
||||||
"DeleteSelectedDownloadClients": "Tambahkan Download Client",
|
|
||||||
"Filters": "File",
|
|
||||||
"AddApplication": "URL Aplikasi",
|
|
||||||
"CountApplicationsSelected": "{count} serial dipilih",
|
|
||||||
"EditCategory": "Kategori",
|
|
||||||
"EditDownloadClientImplementation": "tambah persyaratan {implementationName}",
|
|
||||||
"EditIndexerImplementation": "tambah persyaratan {implementationName}",
|
|
||||||
"Auth": "Otomatis",
|
|
||||||
"DeleteClientCategory": "Tambahkan Download Client",
|
|
||||||
"DeleteDownloadClient": "Tambahkan Download Client",
|
|
||||||
"EditSyncProfile": "Tambah Delay Profile",
|
|
||||||
"EditIndexerProxyImplementation": "tambah persyaratan {implementationName}"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -375,47 +375,5 @@
|
|||||||
"CurrentlyInstalled": "Nú sett upp",
|
"CurrentlyInstalled": "Nú sett upp",
|
||||||
"Stats": "Staða",
|
"Stats": "Staða",
|
||||||
"Mixed": "Fastur",
|
"Mixed": "Fastur",
|
||||||
"Season": "Ástæða",
|
"Season": "Ástæða"
|
||||||
"Destination": "Áfangastaður Slóð",
|
|
||||||
"AuthenticationMethod": "Auðkenning",
|
|
||||||
"UnableToLoadDevelopmentSettings": "Ekki er hægt að hlaða almennar stillingar",
|
|
||||||
"UnableToLoadIndexerProxies": "Ekki er hægt að hlaða Indexers",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Frumlegt",
|
|
||||||
"IndexerId": "Indexer",
|
|
||||||
"IndexerProxy": "Forgangur indexers",
|
|
||||||
"AddNewIndexer": "Bættu við Indexer",
|
|
||||||
"UnableToLoadAppProfiles": "Ekki er hægt að hlaða seinkunarsnið",
|
|
||||||
"Notification": "Vottun",
|
|
||||||
"Proxies": "Snið",
|
|
||||||
"TvSearch": "Leitaðu",
|
|
||||||
"SelectIndexers": "Eyða Indexer",
|
|
||||||
"AddCustomFilter": "Sérsniðin síur",
|
|
||||||
"Donate": "Dagsetning",
|
|
||||||
"DeleteClientCategory": "Eyða niðurhals viðskiptavinur",
|
|
||||||
"EditSyncProfile": "Breyta seinkunarprófíl",
|
|
||||||
"DeleteSelectedIndexersMessageText": "Ertu viss um að þú viljir eyða völdum kvikmyndaskrám?",
|
|
||||||
"EditSelectedDownloadClients": "Eyða niðurhals viðskiptavinur",
|
|
||||||
"IndexerStatus": "Stillingar flokkara",
|
|
||||||
"MovieSearch": "Fjöldamyndaleit",
|
|
||||||
"AddConnection": "Tenging",
|
|
||||||
"ManageDownloadClients": "Sækja viðskiptavini",
|
|
||||||
"DeleteIndexerProxy": "Eyða Indexer",
|
|
||||||
"DeleteSelectedApplications": "Eyða völdum kvikmyndaskrám",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "Ertu viss um að þú viljir eyða völdum kvikmyndaskrám?",
|
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Ertu viss um að þú viljir eyða völdum kvikmyndaskrám?",
|
|
||||||
"IndexerInfo": "Indexer",
|
|
||||||
"MovieSearchTypes": "Fjöldamyndaleit",
|
|
||||||
"Notifications": "Vottun",
|
|
||||||
"SearchIndexers": "Eyða Indexer",
|
|
||||||
"SyncProfile": "Breyta seinkunarprófíl",
|
|
||||||
"Connect": "Vottun",
|
|
||||||
"AddIndexerProxy": "Forgangur indexers",
|
|
||||||
"SyncProfiles": "Breyta seinkunarprófíl",
|
|
||||||
"DeleteSelectedIndexer": "Eyða Indexer",
|
|
||||||
"EditSelectedIndexers": "Eyða Indexer",
|
|
||||||
"AddSyncProfile": "Breyta seinkunarprófíl",
|
|
||||||
"DownloadClientCategory": "Eyða niðurhals viðskiptavinur",
|
|
||||||
"IndexerProxies": "Forgangur indexers",
|
|
||||||
"DeleteSelectedIndexers": "Eyða Indexer",
|
|
||||||
"FilterPlaceHolder": "Eyða Indexer"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"NoChanges": "Nessun Cambiamento",
|
"NoChanges": "Nessun Cambiamento",
|
||||||
"NoChange": "Nessun Cambio",
|
"NoChange": "Nessun Cambio",
|
||||||
"LastWriteTime": "Orario di Ultima Scrittura",
|
"LastWriteTime": "Orario di Ultima Scrittura",
|
||||||
"Indexer": "Indice",
|
"Indexer": "Indicizzatore",
|
||||||
"HideAdvanced": "Nascondi Avanzate",
|
"HideAdvanced": "Nascondi Avanzate",
|
||||||
"Health": "Salute",
|
"Health": "Salute",
|
||||||
"Grabbed": "Preso",
|
"Grabbed": "Preso",
|
||||||
@@ -50,11 +50,11 @@
|
|||||||
"Logging": "Logging",
|
"Logging": "Logging",
|
||||||
"LogFiles": "File di Log",
|
"LogFiles": "File di Log",
|
||||||
"Language": "Lingua",
|
"Language": "Lingua",
|
||||||
"IndexerStatusUnavailableHealthCheckMessage": "Indici non disponibili a causa di errori: {indexerNames}",
|
"IndexerStatusUnavailableHealthCheckMessage": "Indicizzatori non disponibili a causa di errori: {indexerNames}",
|
||||||
"IndexerStatusAllUnavailableHealthCheckMessage": "Nessun indice disponibile a causa di errori",
|
"IndexerStatusAllUnavailableHealthCheckMessage": "Nessun Indicizzatore disponibile a causa di errori",
|
||||||
"Indexers": "Indici",
|
"Indexers": "Indicizzatori",
|
||||||
"Host": "Host",
|
"Host": "Host",
|
||||||
"History": "Storico",
|
"History": "Storia",
|
||||||
"GeneralSettingsSummary": "Porta, SSL, nome utente/password, proxy, analitiche, e aggiornamenti",
|
"GeneralSettingsSummary": "Porta, SSL, nome utente/password, proxy, analitiche, e aggiornamenti",
|
||||||
"General": "Generale",
|
"General": "Generale",
|
||||||
"Folder": "Cartella",
|
"Folder": "Cartella",
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
"CertificateValidationHelpText": "Cambia quanto è rigorosa la convalida del certificato HTTPS",
|
"CertificateValidationHelpText": "Cambia quanto è rigorosa la convalida del certificato HTTPS",
|
||||||
"CertificateValidation": "Convalida del Certificato",
|
"CertificateValidation": "Convalida del Certificato",
|
||||||
"Cancel": "Annulla",
|
"Cancel": "Annulla",
|
||||||
"BypassProxyForLocalAddresses": "Ignora il Proxy per Indirizzi Locali",
|
"BypassProxyForLocalAddresses": "Evita il Proxy per gli Indirizzi Locali",
|
||||||
"Branch": "Branca",
|
"Branch": "Branca",
|
||||||
"BindAddressHelpText": "Indirizzi IP validi, localhost o '*' per tutte le interfacce",
|
"BindAddressHelpText": "Indirizzi IP validi, localhost o '*' per tutte le interfacce",
|
||||||
"BindAddress": "Indirizzo di Ascolto",
|
"BindAddress": "Indirizzo di Ascolto",
|
||||||
@@ -156,13 +156,13 @@
|
|||||||
"Logs": "Logs",
|
"Logs": "Logs",
|
||||||
"Hostname": "Nome Host",
|
"Hostname": "Nome Host",
|
||||||
"MIA": "MIA",
|
"MIA": "MIA",
|
||||||
"IndexerFlags": "Etichette dell'Indice",
|
"IndexerFlags": "Flags dell'Indicizzatore",
|
||||||
"EnableSSL": "Abilita SSL",
|
"EnableSSL": "Abilita SSL",
|
||||||
"SettingsLongDateFormat": "Formato Data Esteso",
|
"SettingsLongDateFormat": "Formato Data Esteso",
|
||||||
"SettingsEnableColorImpairedMode": "Abilità la Modalità Daltonica",
|
"SettingsEnableColorImpairedMode": "Abilità la Modalità Daltonica",
|
||||||
"SendAnonymousUsageData": "Invia dati anonimi sull'uso",
|
"SendAnonymousUsageData": "Invia dati anonimi sull'uso",
|
||||||
"ScriptPath": "Percorso dello script",
|
"ScriptPath": "Percorso dello script",
|
||||||
"RssIsNotSupportedWithThisIndexer": "RSS non supportato con questo indice",
|
"RssIsNotSupportedWithThisIndexer": "RSS non è supportato con questo indicizzatore",
|
||||||
"Retention": "Ritenzione",
|
"Retention": "Ritenzione",
|
||||||
"Result": "Risultato",
|
"Result": "Risultato",
|
||||||
"Restore": "Ripristina",
|
"Restore": "Ripristina",
|
||||||
@@ -173,10 +173,10 @@
|
|||||||
"Reset": "Reimposta",
|
"Reset": "Reimposta",
|
||||||
"RemovingTag": "Eliminando l'etichetta",
|
"RemovingTag": "Eliminando l'etichetta",
|
||||||
"RemoveFilter": "Rimuovi filtro",
|
"RemoveFilter": "Rimuovi filtro",
|
||||||
"RemovedFromTaskQueue": "Rimosso dalla coda",
|
"RemovedFromTaskQueue": "Rimosso dalla coda lavori",
|
||||||
"RefreshMovie": "Aggiorna il Film",
|
"RefreshMovie": "Aggiorna il Film",
|
||||||
"ReadTheWikiForMoreInformation": "Leggi la Wiki per più informazioni",
|
"ReadTheWikiForMoreInformation": "Leggi la Wiki per più informazioni",
|
||||||
"ProwlarrSupportsAnyIndexer": "{appName} supporta molti indici oltre a qualsiasi indice che utilizza gli standard Newznab/Torznab utilizzando \"Newznab Generico\" (per usenet) o \"Torznab Generico\" (per torrent). Cerca e seleziona il tuo indice da qua sotto.",
|
"ProwlarrSupportsAnyIndexer": "{appName} supporta molti indicizzatori oltre a qualsiasi indicizzatore che utilizza lo standard Newznab/Torznab utilizzando \"Generic Newznab\" (per usenet) o \"Generic Torznab\" (per torrent). Cerca e seleziona il tuo indicizzatore da qua sotto.",
|
||||||
"ProwlarrSupportsAnyDownloadClient": "{appName} supporta qualunque client di download elencato sotto.",
|
"ProwlarrSupportsAnyDownloadClient": "{appName} supporta qualunque client di download elencato sotto.",
|
||||||
"ProxyUsernameHelpText": "Devi inserire nome utente e password solo se richiesto. Altrimenti lascia vuoto.",
|
"ProxyUsernameHelpText": "Devi inserire nome utente e password solo se richiesto. Altrimenti lascia vuoto.",
|
||||||
"ProxyType": "Tipo Proxy",
|
"ProxyType": "Tipo Proxy",
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
"IgnoredAddresses": "Indirizzi Ignorati",
|
"IgnoredAddresses": "Indirizzi Ignorati",
|
||||||
"GeneralSettings": "Impostazioni Generali",
|
"GeneralSettings": "Impostazioni Generali",
|
||||||
"ForMoreInformationOnTheIndividualDownloadClients": "Per più informazioni sui singoli client di download clicca sui pulsanti info.",
|
"ForMoreInformationOnTheIndividualDownloadClients": "Per più informazioni sui singoli client di download clicca sui pulsanti info.",
|
||||||
"FilterPlaceHolder": "Cerca indici",
|
"FilterPlaceHolder": "Cerca indicizzatori",
|
||||||
"ExistingTag": "Etichetta esistente",
|
"ExistingTag": "Etichetta esistente",
|
||||||
"Exception": "Eccezione",
|
"Exception": "Eccezione",
|
||||||
"ErrorLoadingContents": "Errore nel caricare i contenuti",
|
"ErrorLoadingContents": "Errore nel caricare i contenuti",
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
"DownloadClientsLoadError": "Impossibile caricare i client di download",
|
"DownloadClientsLoadError": "Impossibile caricare i client di download",
|
||||||
"BackupsLoadError": "Impossibile caricare i backup",
|
"BackupsLoadError": "Impossibile caricare i backup",
|
||||||
"UnableToAddANewNotificationPleaseTryAgain": "Impossibile aggiungere una nuova notifica, riprova.",
|
"UnableToAddANewNotificationPleaseTryAgain": "Impossibile aggiungere una nuova notifica, riprova.",
|
||||||
"UnableToAddANewIndexerPleaseTryAgain": "Impossibile aggiungere un nuovo indice, riprova.",
|
"UnableToAddANewIndexerPleaseTryAgain": "Impossibile aggiungere un nuovo Indicizzatore, riprova.",
|
||||||
"UnableToAddANewDownloadClientPleaseTryAgain": "Impossibile aggiungere un nuovo client di download, riprova.",
|
"UnableToAddANewDownloadClientPleaseTryAgain": "Impossibile aggiungere un nuovo client di download, riprova.",
|
||||||
"UISettings": "Impostazioni Interfaccia",
|
"UISettings": "Impostazioni Interfaccia",
|
||||||
"UILanguageHelpTextWarning": "Ricaricamento del browser richiesto",
|
"UILanguageHelpTextWarning": "Ricaricamento del browser richiesto",
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
"UILanguage": "Lingua dell'Interfaccia",
|
"UILanguage": "Lingua dell'Interfaccia",
|
||||||
"Torrents": "Torrents",
|
"Torrents": "Torrents",
|
||||||
"TestAllClients": "Testa tutti i client",
|
"TestAllClients": "Testa tutti i client",
|
||||||
"TagsHelpText": "Si applica agli indici con almeno un'etichetta corrispondente",
|
"TagsHelpText": "Si applica agli Indicizzatori con almeno un etichetta corrispondente",
|
||||||
"TagIsNotUsedAndCanBeDeleted": "L'etichetta non è in uso e può essere eliminata",
|
"TagIsNotUsedAndCanBeDeleted": "L'etichetta non è in uso e può essere eliminata",
|
||||||
"TagCannotBeDeletedWhileInUse": "Non può essere cancellato mentre è in uso",
|
"TagCannotBeDeletedWhileInUse": "Non può essere cancellato mentre è in uso",
|
||||||
"SuggestTranslationChange": "Suggerisci un cambio nella traduzione",
|
"SuggestTranslationChange": "Suggerisci un cambio nella traduzione",
|
||||||
@@ -270,12 +270,12 @@
|
|||||||
"SettingsEnableColorImpairedModeHelpText": "Stile alterato per permettere agli utenti daltonici di distinguere meglio le informazioni codificate a colori",
|
"SettingsEnableColorImpairedModeHelpText": "Stile alterato per permettere agli utenti daltonici di distinguere meglio le informazioni codificate a colori",
|
||||||
"Priority": "Priorità",
|
"Priority": "Priorità",
|
||||||
"InteractiveSearch": "Ricerca interattiva",
|
"InteractiveSearch": "Ricerca interattiva",
|
||||||
"IndexerPriorityHelpText": "Priorità dell'Indice da 1 (più alta) a 50 (più bassa). Predefinita: 25.",
|
"IndexerPriorityHelpText": "Priorità dell'Indicizzatore da 1 (più alto) a 50 (più basso). Predefinita: 25.",
|
||||||
"IndexerPriority": "Priorità dell'Indice",
|
"IndexerPriority": "Priorità dell'Indicizzatore",
|
||||||
"EditIndexer": "Modifica Indice",
|
"EditIndexer": "Modifica Indicizzatore",
|
||||||
"Disabled": "Disabilitato",
|
"Disabled": "Disabilitato",
|
||||||
"AutomaticSearch": "Ricerca Automatica",
|
"AutomaticSearch": "Ricerca Automatica",
|
||||||
"AddIndexer": "Aggiungi Indice",
|
"AddIndexer": "Aggiungi Indexer",
|
||||||
"SaveSettings": "Salva Impostazioni",
|
"SaveSettings": "Salva Impostazioni",
|
||||||
"OpenThisModal": "Apri questa Modale",
|
"OpenThisModal": "Apri questa Modale",
|
||||||
"MovieIndexScrollTop": "Indice film: scorri in alto",
|
"MovieIndexScrollTop": "Indice film: scorri in alto",
|
||||||
@@ -283,24 +283,24 @@
|
|||||||
"FocusSearchBox": "Evidenzia casella di ricerca",
|
"FocusSearchBox": "Evidenzia casella di ricerca",
|
||||||
"CloseCurrentModal": "Chiudi la Modale Attuale",
|
"CloseCurrentModal": "Chiudi la Modale Attuale",
|
||||||
"AcceptConfirmationModal": "Accetta Conferma Modale",
|
"AcceptConfirmationModal": "Accetta Conferma Modale",
|
||||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Alcuni indici non sono disponibili da più di 6 ore a causa di errori: {indexerNames}",
|
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Alcuni Indicizzatori non sono disponibili da più di 6 ore a causa di errori: {indexerNames}",
|
||||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Nessun indice è disponibile da più di 6 ore a causa di errori",
|
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Nessun Indicizzatore è disponibile da più di 6 ore a causa di errori",
|
||||||
"Description": "Descrizione",
|
"Description": "Descrizione",
|
||||||
"Add": "Aggiungi",
|
"Add": "Aggiungi",
|
||||||
"Enabled": "Abilitato",
|
"Enabled": "Abilitato",
|
||||||
"Encoding": "Codifica",
|
"Encoding": "Codifica",
|
||||||
"EnableIndexer": "Abilita Indice",
|
"EnableIndexer": "Abilita Indicizzatore",
|
||||||
"AddNewIndexer": "Aggiungi nuovo Indexer",
|
"AddNewIndexer": "Aggiungi nuovo Indexer",
|
||||||
"IndexerAuth": "Autenticazione dell'Indice",
|
"IndexerAuth": "Autenticazione dell'Indicizzatore",
|
||||||
"AddDownloadClient": "Aggiungi Client di Download",
|
"AddDownloadClient": "Aggiungi Client di Download",
|
||||||
"Category": "Categoria",
|
"Category": "Categoria",
|
||||||
"ClearHistory": "Cancella cronologia",
|
"ClearHistory": "Cancella cronologia",
|
||||||
"ClearHistoryMessageText": "Sei sicuro di voler cancellare tutta la cronologia di {appName}?",
|
"ClearHistoryMessageText": "Sei sicuro di voler cancellare tutta la cronologia di {appName}?",
|
||||||
"Donations": "Donazioni",
|
"Donations": "Donazioni",
|
||||||
"EnableRssHelpText": "Abilita feed RSS per l'Indice",
|
"EnableRssHelpText": "Abilita feed RSS per l'Indicizzatore",
|
||||||
"HomePage": "Pagina Iniziale",
|
"HomePage": "Pagina Iniziale",
|
||||||
"Id": "ID",
|
"Id": "ID",
|
||||||
"IndexerHealthCheckNoIndexers": "Nessun indice abilitato, {appName} non restituirà risultati di ricerca",
|
"IndexerHealthCheckNoIndexers": "Nessun Indicizzatore abilitato, {appName} non restituirà risultati di ricerca",
|
||||||
"EnableRss": "Abilita RSS",
|
"EnableRss": "Abilita RSS",
|
||||||
"NoLinks": "Nessun Collegamento",
|
"NoLinks": "Nessun Collegamento",
|
||||||
"Rss": "RSS",
|
"Rss": "RSS",
|
||||||
@@ -309,8 +309,8 @@
|
|||||||
"DeleteApplicationMessageText": "Sei sicuro di voler eliminare l'applicazione '{name}'?",
|
"DeleteApplicationMessageText": "Sei sicuro di voler eliminare l'applicazione '{name}'?",
|
||||||
"DeleteIndexerProxyMessageText": "Sei sicuro di voler eliminare il proxy '{name}'?",
|
"DeleteIndexerProxyMessageText": "Sei sicuro di voler eliminare il proxy '{name}'?",
|
||||||
"Presets": "Preset",
|
"Presets": "Preset",
|
||||||
"SearchIndexers": "Cerca negli indici",
|
"SearchIndexers": "Cerca Indicizzatori",
|
||||||
"UnableToAddANewIndexerProxyPleaseTryAgain": "Impossibile aggiungere un nuovo proxy per l'indice, riprova.",
|
"UnableToAddANewIndexerProxyPleaseTryAgain": "Impossibile aggiungere un nuovo proxy per l'Indicizzatore, riprova.",
|
||||||
"Yesterday": "Ieri",
|
"Yesterday": "Ieri",
|
||||||
"ApplicationStatusCheckSingleClientMessage": "Applicazioni non disponibili a causa di errori: {0}",
|
"ApplicationStatusCheckSingleClientMessage": "Applicazioni non disponibili a causa di errori: {0}",
|
||||||
"Today": "Oggi",
|
"Today": "Oggi",
|
||||||
@@ -334,13 +334,13 @@
|
|||||||
"OnApplicationUpdateHelpText": "All'aggiornamento dell'applicazione",
|
"OnApplicationUpdateHelpText": "All'aggiornamento dell'applicazione",
|
||||||
"OnGrab": "Al Prelievo",
|
"OnGrab": "Al Prelievo",
|
||||||
"OnHealthIssue": "Quando c'è un problema",
|
"OnHealthIssue": "Quando c'è un problema",
|
||||||
"TestAllIndexers": "Prova tutti gli Indici",
|
"TestAllIndexers": "Prova tutti gli indicizzatori",
|
||||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent fornito dalla app che ha chiamato la API",
|
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent fornito dalla app che ha chiamato la API",
|
||||||
"GrabReleases": "Prendi Release(s)",
|
"GrabReleases": "Prendi Release(s)",
|
||||||
"Link": "Collegamenti",
|
"Link": "Collegamenti",
|
||||||
"MappedDrivesRunningAsService": "Le unità di rete mappate non sono disponibili eseguendo come servizio di Windows. Vedere le FAQ per maggiori informazioni",
|
"MappedDrivesRunningAsService": "Le unità di rete mappate non sono disponibili eseguendo come servizio di Windows. Vedere le FAQ per maggiori informazioni",
|
||||||
"No": "No",
|
"No": "No",
|
||||||
"UnableToLoadIndexers": "Impossibile caricare gli Indici",
|
"UnableToLoadIndexers": "Impossibile caricare gli Indicizzatori",
|
||||||
"Yes": "Sì",
|
"Yes": "Sì",
|
||||||
"AddIndexerProxy": "Aggiungi proxy dell'Indexer",
|
"AddIndexerProxy": "Aggiungi proxy dell'Indexer",
|
||||||
"AudioSearch": "Ricerca Audio",
|
"AudioSearch": "Ricerca Audio",
|
||||||
@@ -353,7 +353,7 @@
|
|||||||
"AddToDownloadClient": "Aggiungi release al client di download",
|
"AddToDownloadClient": "Aggiungi release al client di download",
|
||||||
"Categories": "Categorie",
|
"Categories": "Categorie",
|
||||||
"Database": "Database",
|
"Database": "Database",
|
||||||
"DeleteIndexerProxy": "Cancella il Proxy dell'Indice",
|
"DeleteIndexerProxy": "Cancella il Proxy dell'Indicizzatore",
|
||||||
"Auth": "Auth",
|
"Auth": "Auth",
|
||||||
"AddDownloadClientToProwlarr": "L'aggiunta di un client di download permette a {appName} di inviare le release direttamente dall'interfaccia mentre si fa una ricerca manuale.",
|
"AddDownloadClientToProwlarr": "L'aggiunta di un client di download permette a {appName} di inviare le release direttamente dall'interfaccia mentre si fa una ricerca manuale.",
|
||||||
"Applications": "Applicazioni",
|
"Applications": "Applicazioni",
|
||||||
@@ -363,33 +363,33 @@
|
|||||||
"AppSettingsSummary": "Applicazioni e impostazioni per configurare come {appName} interagisce con i tuoi programmi PVR",
|
"AppSettingsSummary": "Applicazioni e impostazioni per configurare come {appName} interagisce con i tuoi programmi PVR",
|
||||||
"Apps": "Le App",
|
"Apps": "Le App",
|
||||||
"DevelopmentSettings": "Impostazioni di Sviluppo",
|
"DevelopmentSettings": "Impostazioni di Sviluppo",
|
||||||
"RedirectHelpText": "Reindirizza le richieste di download per l'indice e inoltra il recupero direttamente invece di far passare la richiesta tramite {appName}",
|
"RedirectHelpText": "Reindirizza le richieste di download per l'Indicizzatore e passa il prelievo direttamente invece di inoltrare la richiesta tramite {appName}",
|
||||||
"IndexerVipExpiredHealthCheckMessage": "I benefici VIP dell'Indice sono scaduti: {indexerNames}",
|
"IndexerVipExpiredHealthCheckMessage": "I benefici VIP dell'Indicizzatore sono scaduti: {indexerNames}",
|
||||||
"IndexerVipExpiringHealthCheckMessage": "I benefici VIP dell'Indice scadranno a breve: {indexerNames}",
|
"IndexerVipExpiringHealthCheckMessage": "I benefici VIP dell'Indicizzatore scadranno a breve: {indexerNames}",
|
||||||
"IndexerProxies": "Proxy degli Indici",
|
"IndexerProxies": "Proxy degli Indicizzatori",
|
||||||
"Stats": "Statistiche",
|
"Stats": "Statistiche",
|
||||||
"SyncAppIndexers": "Sincronizza tutti gli indici",
|
"SyncAppIndexers": "Sincronizza tutti gli indicizzatori",
|
||||||
"SyncLevel": "Livello Sincronizzazione",
|
"SyncLevel": "Livello Sincronizzazione",
|
||||||
"IndexerProxy": "Proxy dell'Indice",
|
"IndexerProxy": "Proxy dell'Indicizzatore",
|
||||||
"Proxies": "Proxy",
|
"Proxies": "Proxy",
|
||||||
"ApplicationsLoadError": "Impossibile careicare la lista applicazioni",
|
"ApplicationsLoadError": "Impossibile careicare la lista applicazioni",
|
||||||
"Website": "Sito",
|
"Website": "Sito",
|
||||||
"Privacy": "Privacy",
|
"Privacy": "Privacy",
|
||||||
"SettingsIndexerLogging": "Logging dettagliato dell'indice",
|
"SettingsIndexerLogging": "Logging Migliorato dell'Indicizzatore",
|
||||||
"TestAllApps": "Prova Tutte le App",
|
"TestAllApps": "Prova Tutte le App",
|
||||||
"UnableToLoadAppProfiles": "Impossibile caricare i profili delle app",
|
"UnableToLoadAppProfiles": "Impossibile caricare i profili delle app",
|
||||||
"UnableToLoadIndexerProxies": "Impossibile caricare i Proxy degli Indici",
|
"UnableToLoadIndexerProxies": "Impossibile caricare i Proxy degli Indicizzatori",
|
||||||
"FullSync": "Sincronizzazione completa",
|
"FullSync": "Sincronizzazione completa",
|
||||||
"IndexerAlreadySetup": "Almeno un'istanza dell'indice è già configurata",
|
"IndexerAlreadySetup": "Almeno un'istanza dell'indicizzatore è già configurata",
|
||||||
"IndexerDetails": "Dettagli Indice",
|
"IndexerDetails": "Dettagli dell'Indicizzatore",
|
||||||
"IndexerInfo": "Info sull'Indice",
|
"IndexerInfo": "Info sull'Indicizzatore",
|
||||||
"IndexerName": "Nome dell'Indice",
|
"IndexerName": "Nome dell'Indicizzatore",
|
||||||
"IndexerNoDefinitionCheckHealthCheckMessage": "Indici senza definizione che non funzioneranno: {indexerNames}. Si prega di rimuoverli e/o di riaggiungerli a {appName}.",
|
"IndexerNoDefinitionCheckHealthCheckMessage": "Gli indicizzatori non hanno una definizione e non funzioneranno: {indexerNames}. Si prega di rimuoverli e/o di riaggiungerli a {appName}",
|
||||||
"HistoryCleanup": "Pulizia della Cronologia",
|
"HistoryCleanup": "Pulizia della Cronologia",
|
||||||
"IndexerRss": "Indice RSS",
|
"IndexerRss": "RSS dell'Indicizzatore",
|
||||||
"IndexerSite": "Sito dell'Indice",
|
"IndexerSite": "Sito dell'Indicizzatore",
|
||||||
"MassEditor": "Editor di Massa",
|
"MassEditor": "Editor di Massa",
|
||||||
"IndexerTagsHelpText": "Usa le etichette per specificare i Proxy degli Indici, o con che app un indice si sincronizza.",
|
"IndexerTagsHelpText": "Usa le etichette per specificare i Proxy degli Indicizzatori, con che app un indicizzatore si sincronizza o semplicemente per organizzarli.",
|
||||||
"MovieSearch": "Ricerca Film",
|
"MovieSearch": "Ricerca Film",
|
||||||
"MovieSearchTypes": "Tipi di Ricerca Film",
|
"MovieSearchTypes": "Tipi di Ricerca Film",
|
||||||
"MusicSearchTypes": "Tipi di Ricerca Musica",
|
"MusicSearchTypes": "Tipi di Ricerca Musica",
|
||||||
@@ -416,16 +416,16 @@
|
|||||||
"Url": "Url",
|
"Url": "Url",
|
||||||
"NoSearchResultsFound": "Nessun risultato di ricerca trovato, prova a eseguire una nuova ricerca qui sotto.",
|
"NoSearchResultsFound": "Nessun risultato di ricerca trovato, prova a eseguire una nuova ricerca qui sotto.",
|
||||||
"SettingsConsoleLogLevel": "Livello di Log della Console",
|
"SettingsConsoleLogLevel": "Livello di Log della Console",
|
||||||
"IndexerObsoleteCheckMessage": "Indici obsoleti o aggiornati: {0}. Si prega di rimuoverli e/o di riaggiungerli a {appName}",
|
"IndexerObsoleteCheckMessage": "Gli indicizzatori sono obsoleti e sono stati aggiornati: {0}. Si prega di rimuoverli e/o di riaggiungerli a {appName}",
|
||||||
"IndexerQuery": "Query dell'Indice",
|
"IndexerQuery": "Query dell'Indicizzatore",
|
||||||
"IndexerSettingsSummary": "Configura varie impostazioni globali degli Indici, inclusi i Proxy.",
|
"IndexerSettingsSummary": "Configura varie impostazioni globali degli Indicizzatori, anche i Proxy.",
|
||||||
"Query": "Query",
|
"Query": "Query",
|
||||||
"SearchCapabilities": "Capacità di Ricerca",
|
"SearchCapabilities": "Capacità di Ricerca",
|
||||||
"SettingsIndexerLoggingHelpText": "Registra informazioni aggiuntive dell'indice includendo la risposta",
|
"SettingsIndexerLoggingHelpText": "Logga i dati aggiuntivi dell'indicizzatore includendo la risposta",
|
||||||
"SettingsSqlLoggingHelpText": "Scrivi a log tutte le query SQL di {appName}",
|
"SettingsSqlLoggingHelpText": "Scrivi a log tutte le query SQL di {appName}",
|
||||||
"SyncLevelAddRemove": "Solo aggiunte e rimozioni: quando gli indici vengono aggiunti o rimossi da {appName}, questa applicazione remota verrà aggiornata.",
|
"SyncLevelAddRemove": "Solo aggiunte e rimozioni: Quando gli indicizzatori vengono aggiunti o rimossi da {appName}, verrà aggiornata questa applicazione remota.",
|
||||||
"SyncLevelFull": "Sincronizzazione completa: mantiene gli indici di questa applicazione completamente sincronizzati. Le modifiche agli indici fatte in {appName} sono sincronizzate in questa applicazione. Qualsiasi cambiamento fatto agli indici da remoto all'interno di questa applicazione verrà sovrascritto da {appName} alla prossima sincronizzazione.",
|
"SyncLevelFull": "Sincronizzazione completa: Mantiene gli indicizzatori dell'app completamente sincronizzati. Le modifiche apportate agli indicizzatori in {appName} sono sincronizzate in questa app. Qualsiasi cambiamento fatto agli indicizzatori da remoto all'interno di questa applicazione verrà sovrascritto da {appName} alla prossima sincronizzazione.",
|
||||||
"MinimumSeedersHelpText": "Seeder minimi richiesti dall'applicazione per far sì che l'indice li recupera",
|
"MinimumSeedersHelpText": "Seeder minimi richiesti dall'Applicazione per far sì che l'indicizzatore li prenda",
|
||||||
"SyncProfile": "Profilo Sincronizzazione",
|
"SyncProfile": "Profilo Sincronizzazione",
|
||||||
"SyncProfiles": "Profili di sincronizzazione",
|
"SyncProfiles": "Profili di sincronizzazione",
|
||||||
"AddSyncProfile": "Aggiungi Profilo di Sincronizzazione",
|
"AddSyncProfile": "Aggiungi Profilo di Sincronizzazione",
|
||||||
@@ -464,11 +464,11 @@
|
|||||||
"Publisher": "Editore",
|
"Publisher": "Editore",
|
||||||
"ApplyTagsHelpTextAdd": "Aggiungi: Aggiunge le etichette alla lista esistente di etichette",
|
"ApplyTagsHelpTextAdd": "Aggiungi: Aggiunge le etichette alla lista esistente di etichette",
|
||||||
"ApplyTagsHelpTextHowToApplyApplications": "Come applicare etichette agli autori selezionati",
|
"ApplyTagsHelpTextHowToApplyApplications": "Come applicare etichette agli autori selezionati",
|
||||||
"ApplyTagsHelpTextHowToApplyIndexers": "Come applicare etichette agli indici selezionati",
|
"ApplyTagsHelpTextHowToApplyIndexers": "Come applicare etichette agli indicizzatori selezionati",
|
||||||
"CountIndexersSelected": "{count} indice/i selezionato/i",
|
"CountIndexersSelected": "{count} indicizzatore(i) selezionato(i)",
|
||||||
"DeleteSelectedApplicationsMessageText": "Sei sicuro di voler eliminare {count} applicazione(i) selezionata(e)?",
|
"DeleteSelectedApplicationsMessageText": "Sei sicuro di voler eliminare {count} applicazione(i) selezionata(e)?",
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Sei sicuro di voler eliminare i '{count}' client di download selezionato/i?",
|
"DeleteSelectedDownloadClientsMessageText": "Sei sicuro di voler eliminare i '{count}' client di download selezionato/i?",
|
||||||
"SelectIndexers": "Seleziona indici",
|
"SelectIndexers": "Cerca Indicizzatori",
|
||||||
"Track": "Traccia",
|
"Track": "Traccia",
|
||||||
"Book": "Libro",
|
"Book": "Libro",
|
||||||
"Theme": "Tema",
|
"Theme": "Tema",
|
||||||
@@ -482,7 +482,7 @@
|
|||||||
"More": "Altro",
|
"More": "Altro",
|
||||||
"Season": "Stagione",
|
"Season": "Stagione",
|
||||||
"Year": "Anno",
|
"Year": "Anno",
|
||||||
"UpdateAvailableHealthCheckMessage": "Aggiornamento disponibile: {version}",
|
"UpdateAvailableHealthCheckMessage": "Nuovo aggiornamento disponibile: {version}",
|
||||||
"Author": "Autore",
|
"Author": "Autore",
|
||||||
"ApplyChanges": "Applica Cambiamenti",
|
"ApplyChanges": "Applica Cambiamenti",
|
||||||
"ApiKeyValidationHealthCheckMessage": "Aggiorna la tua chiave API in modo che abbia una lunghezza di almeno {length} caratteri. Puoi farlo dalle impostazioni o dal file di configurazione",
|
"ApiKeyValidationHealthCheckMessage": "Aggiorna la tua chiave API in modo che abbia una lunghezza di almeno {length} caratteri. Puoi farlo dalle impostazioni o dal file di configurazione",
|
||||||
@@ -505,7 +505,7 @@
|
|||||||
"AddCustomFilter": "Aggiungi Filtro Personalizzato",
|
"AddCustomFilter": "Aggiungi Filtro Personalizzato",
|
||||||
"AddConnectionImplementation": "Aggiungi Connessione - {implementationName}",
|
"AddConnectionImplementation": "Aggiungi Connessione - {implementationName}",
|
||||||
"AddDownloadClientImplementation": "Aggiungi un Client di Download - {implementationName}",
|
"AddDownloadClientImplementation": "Aggiungi un Client di Download - {implementationName}",
|
||||||
"AddIndexerImplementation": "Aggiungi Indice - {implementationName}",
|
"AddIndexerImplementation": "Aggiungi indicizzatore - {implementationName}",
|
||||||
"AuthenticationRequiredUsernameHelpTextWarning": "Inserisci username",
|
"AuthenticationRequiredUsernameHelpTextWarning": "Inserisci username",
|
||||||
"AuthenticationMethod": "Metodo di Autenticazione",
|
"AuthenticationMethod": "Metodo di Autenticazione",
|
||||||
"AuthenticationMethodHelpTextWarning": "Selezione un metodo di autenticazione valido",
|
"AuthenticationMethodHelpTextWarning": "Selezione un metodo di autenticazione valido",
|
||||||
@@ -515,19 +515,19 @@
|
|||||||
"DefaultNameCopiedProfile": "{name} - Copia",
|
"DefaultNameCopiedProfile": "{name} - Copia",
|
||||||
"AppUpdatedVersion": "{appName} è stato aggiornato alla versione `{version}`, per vedere le modifiche devi ricaricare {appName}",
|
"AppUpdatedVersion": "{appName} è stato aggiornato alla versione `{version}`, per vedere le modifiche devi ricaricare {appName}",
|
||||||
"AddApplicationImplementation": "Aggiungi Connessione - {implementationName}",
|
"AddApplicationImplementation": "Aggiungi Connessione - {implementationName}",
|
||||||
"AddIndexerProxyImplementation": "Aggiungi Proxy per Indice - {implementationName}",
|
"AddIndexerProxyImplementation": "Aggiungi indicizzatore - {implementationName}",
|
||||||
"EditApplicationImplementation": "Aggiungi Condizione - {implementationName}",
|
"EditApplicationImplementation": "Aggiungi Condizione - {implementationName}",
|
||||||
"CountApplicationsSelected": "{count} Collezione(i) Selezionate",
|
"CountApplicationsSelected": "{count} Collezione(i) Selezionate",
|
||||||
"EditConnectionImplementation": "Modifica Connessione - {implementationName}",
|
"EditConnectionImplementation": "Modifica Connessione - {implementationName}",
|
||||||
"EditDownloadClientImplementation": "Modifica Client di Download - {implementationName}",
|
"EditDownloadClientImplementation": "Modifica Client di Download - {implementationName}",
|
||||||
"EditIndexerImplementation": "Modifica Indice - {implementationName}",
|
"EditIndexerImplementation": "Modifica Indicizzatore - {implementationName}",
|
||||||
"EditIndexerProxyImplementation": "Modifica Proxy per Indice - {implementationName}",
|
"EditIndexerProxyImplementation": "Aggiungi indicizzatore - {implementationName}",
|
||||||
"AdvancedSettingsShownClickToHide": "Impostazioni avanzate mostrate, clicca per nasconderle",
|
"AdvancedSettingsShownClickToHide": "Impostazioni avanzate mostrate, clicca per nasconderle",
|
||||||
"AdvancedSettingsHiddenClickToShow": "Impostazioni avanzate nascoste, clicca per mostrarle",
|
"AdvancedSettingsHiddenClickToShow": "Impostazioni avanzate nascoste, clicca per mostrarle",
|
||||||
"AddApplication": "Aggiungi Applicazione",
|
"AddApplication": "Aggiungi Applicazione",
|
||||||
"AddCategory": "Aggiungi Categoria",
|
"AddCategory": "Aggiungi Categoria",
|
||||||
"ActiveApps": "App Attive",
|
"ActiveApps": "App Attive",
|
||||||
"ActiveIndexers": "Indici Attivi",
|
"ActiveIndexers": "Indicizzatori Attivi",
|
||||||
"IndexerBeyondHDSettingsSearchTypes": "Tipi di Ricerca",
|
"IndexerBeyondHDSettingsSearchTypes": "Tipi di Ricerca",
|
||||||
"Directory": "Cartella",
|
"Directory": "Cartella",
|
||||||
"CustomFilter": "Filtro Personalizzato",
|
"CustomFilter": "Filtro Personalizzato",
|
||||||
@@ -549,7 +549,7 @@
|
|||||||
"IndexerDisabled": "Indexer Disattivato",
|
"IndexerDisabled": "Indexer Disattivato",
|
||||||
"GoToApplication": "Vai all'applicazione",
|
"GoToApplication": "Vai all'applicazione",
|
||||||
"AreYouSureYouWantToDeleteIndexer": "Sei sicuro di voler eliminare '{name}' da {appName}?",
|
"AreYouSureYouWantToDeleteIndexer": "Sei sicuro di voler eliminare '{name}' da {appName}?",
|
||||||
"IndexerStatus": "Stato Indice",
|
"IndexerStatus": "Stato Indicizzatore",
|
||||||
"XmlRpcPath": "Percorso XML RPC",
|
"XmlRpcPath": "Percorso XML RPC",
|
||||||
"EditCategory": "Modifica Categoria",
|
"EditCategory": "Modifica Categoria",
|
||||||
"IndexerSettingsAdditionalParameters": "Parametri Addizionali",
|
"IndexerSettingsAdditionalParameters": "Parametri Addizionali",
|
||||||
@@ -568,36 +568,36 @@
|
|||||||
"CountDownloadClientsSelected": "{count} client di download selezionato/i",
|
"CountDownloadClientsSelected": "{count} client di download selezionato/i",
|
||||||
"NotificationsTelegramSettingsIncludeAppName": "Includi {appName} nel Titolo",
|
"NotificationsTelegramSettingsIncludeAppName": "Includi {appName} nel Titolo",
|
||||||
"Menu": "Menu",
|
"Menu": "Menu",
|
||||||
"NoIndexersFound": "Nessun indice trovato",
|
"NoIndexersFound": "Nessun indicizzatore trovato",
|
||||||
"PasswordConfirmation": "Conferma Password",
|
"PasswordConfirmation": "Conferma Password",
|
||||||
"NoHistoryFound": "Nessun storico trovato",
|
"NoHistoryFound": "Nessun storico trovato",
|
||||||
"DeleteSelectedIndexersMessageText": "Confermi di voler eliminare i {count} indici selezionati?",
|
"DeleteSelectedIndexersMessageText": "Sei sicuro di voler eliminare {count} applicazione(i) selezionata(e)?",
|
||||||
"UsenetBlackholeNzbFolder": "Cartella Nzb",
|
"UsenetBlackholeNzbFolder": "Cartella Nzb",
|
||||||
"VipExpiration": "Scadenza VIP",
|
"VipExpiration": "Scadenza VIP",
|
||||||
"OverrideAndAddToDownloadClient": "Sovrascrivi e aggiungi alla coda di download",
|
"OverrideAndAddToDownloadClient": "Sovrascrivi e aggiungi alla coda di download",
|
||||||
"BasicSearch": "Ricerca basica",
|
"BasicSearch": "Ricerca basica",
|
||||||
"CountIndexersAvailable": "{count} indice/i disponibile/i",
|
"CountIndexersAvailable": "{count} indicizzatore/i disponibili",
|
||||||
"EditSelectedIndexers": "Modifica Indici Selezionati",
|
"EditSelectedIndexers": "Modifica Indicizzatori Selezionati",
|
||||||
"FoundCountReleases": "Trovate {itemCount} release",
|
"FoundCountReleases": "Trovate {itemCount} release",
|
||||||
"ManageApplications": "Gestisci Applicazioni",
|
"ManageApplications": "Gestisci Applicazioni",
|
||||||
"ManageDownloadClients": "Gestisci Clients di Download",
|
"ManageDownloadClients": "Gestisci Clients di Download",
|
||||||
"HistoryDetails": "Dettagli Storico",
|
"HistoryDetails": "Dettagli Storico",
|
||||||
"NotificationsEmailSettingsUseEncryption": "Usa Crittografia",
|
"NotificationsEmailSettingsUseEncryption": "Usa Crittografia",
|
||||||
"SearchAllIndexers": "Cerca in tutti gli indici",
|
"SearchAllIndexers": "Cerca tutti gli indicizzatori",
|
||||||
"SearchCountIndexers": "Cerca in {count} indice/i",
|
"SearchCountIndexers": "Cerca {count} indicizzatore/i",
|
||||||
"SearchQueries": "Cerca Richieste",
|
"SearchQueries": "Cerca Richieste",
|
||||||
"SeedRatio": "Rapporto Seed",
|
"SeedRatio": "Rapporto Seed",
|
||||||
"TorznabUrl": "Url Torznab",
|
"TorznabUrl": "Url Torznab",
|
||||||
"TorrentBlackholeTorrentFolder": "Cartella Torrent",
|
"TorrentBlackholeTorrentFolder": "Cartella Torrent",
|
||||||
"UseSsl": "Usa SSL",
|
"UseSsl": "Usa SSL",
|
||||||
"days": "giorni",
|
"days": "giorni",
|
||||||
"IndexerCategories": "Categorie degli Indici",
|
"IndexerCategories": "Categorie degli Indicizzatori",
|
||||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "API Key Sito",
|
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "API Key Sito",
|
||||||
"LabelIsRequired": "Etichetta richiesta",
|
"LabelIsRequired": "Etichetta richiesta",
|
||||||
"NoIndexerHistory": "Nessun storico trovato per questo indice",
|
"NoIndexerHistory": "Nessun storico trovato per questo indicizzatore",
|
||||||
"RssFeed": "Feed RSS",
|
"RssFeed": "Feed RSS",
|
||||||
"AverageResponseTimesMs": "Tempo di risposta medio dell'Indice (ms)",
|
"AverageResponseTimesMs": "Tempo di Risposta Medio dell'Indicizzatore (ms)",
|
||||||
"DeleteSelectedIndexer": "Elimina l'Indice Selezionato",
|
"DeleteSelectedIndexer": "Elimina Indicizzatore Selezionato",
|
||||||
"DisabledUntil": "Disattiva fino",
|
"DisabledUntil": "Disattiva fino",
|
||||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Aggiungi un prefisso all'url del json di deluge, vedi {url}",
|
"DownloadClientDelugeSettingsUrlBaseHelpText": "Aggiungi un prefisso all'url del json di deluge, vedi {url}",
|
||||||
"Implementation": "Implementazione",
|
"Implementation": "Implementazione",
|
||||||
@@ -605,7 +605,7 @@
|
|||||||
"NewznabUrl": "Url Newznab",
|
"NewznabUrl": "Url Newznab",
|
||||||
"NoApplicationsFound": "Nessuna applicazione trovata",
|
"NoApplicationsFound": "Nessuna applicazione trovata",
|
||||||
"IndexerSettingsBaseUrl": "Url Base",
|
"IndexerSettingsBaseUrl": "Url Base",
|
||||||
"IndexerId": "ID Indice",
|
"IndexerId": "ID Indicizzatore",
|
||||||
"NoDownloadClientsFound": "Nessun client di download trovato",
|
"NoDownloadClientsFound": "Nessun client di download trovato",
|
||||||
"BlackholeFolderHelpText": "Cartella nella quale {appName} salverà i file di tipo {extension}",
|
"BlackholeFolderHelpText": "Cartella nella quale {appName} salverà i file di tipo {extension}",
|
||||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Questa opzione richiede almeno la versione 16.0 di NzbGet",
|
"DownloadClientNzbgetSettingsAddPausedHelpText": "Questa opzione richiede almeno la versione 16.0 di NzbGet",
|
||||||
@@ -619,12 +619,12 @@
|
|||||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Cookie User-Agent",
|
"IndexerIPTorrentsSettingsCookieUserAgent": "Cookie User-Agent",
|
||||||
"IndexerSettingsApiPathHelpText": "Percorso API, solitamente {url}",
|
"IndexerSettingsApiPathHelpText": "Percorso API, solitamente {url}",
|
||||||
"IndexerSettingsBaseUrlHelpText": "Seleziona quale url base {appName} userà per le richieste al sito",
|
"IndexerSettingsBaseUrlHelpText": "Seleziona quale url base {appName} userà per le richieste al sito",
|
||||||
"NoIndexerCategories": "Nessuna categoria trovata per questo indice",
|
"NoIndexerCategories": "Nessuna categoria trovata per questo indicizzatore",
|
||||||
"SecretToken": "Secret Token",
|
"SecretToken": "Secret Token",
|
||||||
"SeedRatioHelpText": "Il rapporto che un torrent dovrebbe raggiungere prima di essere fermato, vuoto è il predefinito dell'app",
|
"SeedRatioHelpText": "Il rapporto che un torrent dovrebbe raggiungere prima di essere fermato, vuoto è il predefinito dell'app",
|
||||||
"TotalQueries": "Totale Richieste",
|
"TotalQueries": "Totale Richieste",
|
||||||
"IndexerHistoryLoadError": "Errore caricando lo storico dell'indice",
|
"IndexerHistoryLoadError": "Errore caricando lo storico dell'indicizzatore",
|
||||||
"DeleteSelectedIndexers": "Elimina Indici Selezionati",
|
"DeleteSelectedIndexers": "Elimina Indicizzatori Selezionati",
|
||||||
"InvalidUILanguage": "L'interfaccia è impostata in una lingua non valida, correggi e salva le tue impostazioni",
|
"InvalidUILanguage": "L'interfaccia è impostata in una lingua non valida, correggi e salva le tue impostazioni",
|
||||||
"IndexerSettingsSeedRatio": "Rapporto Seed",
|
"IndexerSettingsSeedRatio": "Rapporto Seed",
|
||||||
"IndexerSettingsRssKey": "Chiave RSS",
|
"IndexerSettingsRssKey": "Chiave RSS",
|
||||||
@@ -634,7 +634,7 @@
|
|||||||
"IndexerNewznabSettingsAdditionalParametersHelpText": "Parametri Newznab addizionali",
|
"IndexerNewznabSettingsAdditionalParametersHelpText": "Parametri Newznab addizionali",
|
||||||
"SelectDownloadClientModalTitle": "{modalTitle} - Seleziona Client di Download",
|
"SelectDownloadClientModalTitle": "{modalTitle} - Seleziona Client di Download",
|
||||||
"DownloadClientSettingsDestinationHelpText": "Specifica manualmente la destinazione dei download, lascia vuoti per usare la predefinita",
|
"DownloadClientSettingsDestinationHelpText": "Specifica manualmente la destinazione dei download, lascia vuoti per usare la predefinita",
|
||||||
"IndexerDownloadClientHealthCheckMessage": "Indici con client di download non validi: {indexerNames}.",
|
"IndexerDownloadClientHealthCheckMessage": "Indicizzatori con client di download non validi: {indexerNames}.",
|
||||||
"SeedTimeHelpText": "Il rapporto che un torrent dovrebbe raggiungere prima di essere fermato, vuoto è il predefinito dell'app",
|
"SeedTimeHelpText": "Il rapporto che un torrent dovrebbe raggiungere prima di essere fermato, vuoto è il predefinito dell'app",
|
||||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "API Key Sito",
|
"IndexerPassThePopcornSettingsApiKeyHelpText": "API Key Sito",
|
||||||
"IndexerNzbIndexSettingsApiKeyHelpText": "API Key Sito",
|
"IndexerNzbIndexSettingsApiKeyHelpText": "API Key Sito",
|
||||||
@@ -667,17 +667,5 @@
|
|||||||
"AuthQueries": "Query di autenticazione",
|
"AuthQueries": "Query di autenticazione",
|
||||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Se un torrent è bloccato tramite hash, potrebbe non essere correttamente rifiutato durante l’uso di RSS/Ricerca con alcuni indexer. Abilitando questa opzione, il torrent verrà rifiutato dopo essere stato acquisito, ma prima di essere inviato al client.",
|
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Se un torrent è bloccato tramite hash, potrebbe non essere correttamente rifiutato durante l’uso di RSS/Ricerca con alcuni indexer. Abilitando questa opzione, il torrent verrà rifiutato dopo essere stato acquisito, ma prima di essere inviato al client.",
|
||||||
"AppsMinimumSeedersHelpText": "Numero minimo di seeders richiesti dall’applicazione affinché l’indexer possa acquisire il torrent; se vuoto, viene utilizzato il valore predefinito del profilo di sincronizzazione",
|
"AppsMinimumSeedersHelpText": "Numero minimo di seeders richiesti dall’applicazione affinché l’indexer possa acquisire il torrent; se vuoto, viene utilizzato il valore predefinito del profilo di sincronizzazione",
|
||||||
"IndexerSettingsAppsMinimumSeedersHelpText": "Numero minimo di seeders richiesti dall’applicazione affinché l’indexer possa acquisire il torrent; se vuoto, viene utilizzato il valore predefinito del profilo di sincronizzazione",
|
"IndexerSettingsAppsMinimumSeedersHelpText": "Numero minimo di seeders richiesti dall’applicazione affinché l’indexer possa acquisire il torrent; se vuoto, viene utilizzato il valore predefinito del profilo di sincronizzazione"
|
||||||
"TotalHostQueries": "Totale Richieste",
|
|
||||||
"AppsMinimumSeeders": "Seeder Minimi",
|
|
||||||
"PackSeedTimeHelpText": "Il rapporto che un torrent dovrebbe raggiungere prima di essere fermato, vuoto è il predefinito dell'app",
|
|
||||||
"IndexerTagsHelpTextWarning": "I tag devono essere usati con cautela, poiché possono avere effetti indesiderati. Un'app con un tag si sincronizzerà solo con gli indexer che hanno lo stesso tag.",
|
|
||||||
"IndexerBeyondHDSettingsRefundOnly": "Solo Lettura",
|
|
||||||
"IndexerBeyondHDSettingsRewindOnly": "Solo Lettura",
|
|
||||||
"IndexerSettingsAppsMinimumSeeders": "Seeder Minimi",
|
|
||||||
"IndexerSettingsPackSeedTimeIndexerHelpText": "Il rapporto che un torrent dovrebbe raggiungere prima di essere fermato, vuoto è il predefinito dell'app",
|
|
||||||
"IndexerSettingsSeedTimeHelpText": "Il rapporto che un torrent dovrebbe raggiungere prima di essere fermato, vuoto è il predefinito dell'app",
|
|
||||||
"LogSizeLimit": "Limite Dimensione",
|
|
||||||
"TheLogLevelDefault": "Il livello di log predefinito è 'Debug' e può essere modificato nelle [Impostazioni Generali](settings/general)",
|
|
||||||
"DownloadClientSettingsUrlBaseHelpText": "Aggiunge un prefisso all'url della {connectionName}, come {url}"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -375,48 +375,5 @@
|
|||||||
"Mixed": "修繕",
|
"Mixed": "修繕",
|
||||||
"CurrentlyInstalled": "現在インストール中",
|
"CurrentlyInstalled": "現在インストール中",
|
||||||
"Stats": "状態",
|
"Stats": "状態",
|
||||||
"Season": "理由",
|
"Season": "理由"
|
||||||
"UnableToLoadIndexerProxies": "インデクサーを読み込めません",
|
|
||||||
"AddConnection": "接続を追加",
|
|
||||||
"AuthenticationMethod": "認証",
|
|
||||||
"IndexerId": "インデクサー",
|
|
||||||
"DeleteClientCategory": "ダウンロードクライアントを削除する",
|
|
||||||
"DeleteSelectedIndexersMessageText": "選択したムービーファイルを削除してもよろしいですか?",
|
|
||||||
"Destination": "宛先パス",
|
|
||||||
"UnableToLoadDevelopmentSettings": "一般設定を読み込めません",
|
|
||||||
"EditSyncProfile": "遅延プロファイルの編集",
|
|
||||||
"MovieSearch": "マスムービー検索",
|
|
||||||
"TvSearch": "探す",
|
|
||||||
"UnableToLoadAppProfiles": "遅延プロファイルを読み込めません",
|
|
||||||
"IndexerProxy": "インデクサの優先順位",
|
|
||||||
"AddCustomFilter": "カスタムフィルターを追加",
|
|
||||||
"AddNewIndexer": "インデクサーを追加",
|
|
||||||
"DeleteIndexerProxy": "インデクサーを削除する",
|
|
||||||
"Notification": "認証",
|
|
||||||
"EditSelectedDownloadClients": "ダウンロードクライアントを削除する",
|
|
||||||
"IndexerStatus": "インデクサ設定",
|
|
||||||
"Proxies": "プロファイル",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "元の",
|
|
||||||
"ManageDownloadClients": "クライアントのダウンロード",
|
|
||||||
"Donate": "日付",
|
|
||||||
"SelectIndexers": "インデクサーを削除する",
|
|
||||||
"DeleteSelectedIndexer": "インデクサーを削除する",
|
|
||||||
"SyncProfile": "遅延プロファイルの編集",
|
|
||||||
"SyncProfiles": "遅延プロファイルの編集",
|
|
||||||
"DeleteSelectedDownloadClientsMessageText": "選択したムービーファイルを削除してもよろしいですか?",
|
|
||||||
"DeleteSelectedIndexers": "インデクサーを削除する",
|
|
||||||
"MovieSearchTypes": "マスムービー検索",
|
|
||||||
"SearchIndexers": "インデクサーを削除する",
|
|
||||||
"AddSyncProfile": "遅延プロファイルの編集",
|
|
||||||
"Connect": "認証",
|
|
||||||
"Notifications": "認証",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "選択したムービーファイルを削除してもよろしいですか?",
|
|
||||||
"EditSelectedIndexers": "インデクサーを削除する",
|
|
||||||
"AddIndexerProxy": "インデクサの優先順位",
|
|
||||||
"IndexerProxies": "インデクサの優先順位",
|
|
||||||
"IndexerInfo": "インデクサー",
|
|
||||||
"DeleteSelectedApplications": "選択したムービーファイルを削除する",
|
|
||||||
"DownloadClientCategory": "ダウンロードクライアントを削除する",
|
|
||||||
"FilterPlaceHolder": "インデクサーを削除する",
|
|
||||||
"IndexerNoDefinitionCheckHealthCheckMessage": "インデクサーの定義が設定されておらず、機能していません: {indexerNames}。 {appName} から削除、もしくは再追加してください。"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -506,50 +506,5 @@
|
|||||||
"DownloadClientSettingsAddPaused": "일시 중지 추가",
|
"DownloadClientSettingsAddPaused": "일시 중지 추가",
|
||||||
"SecretToken": "비밀 토큰",
|
"SecretToken": "비밀 토큰",
|
||||||
"NoDownloadClientsFound": "다운로드 클라이언트를 찾을 수 없음",
|
"NoDownloadClientsFound": "다운로드 클라이언트를 찾을 수 없음",
|
||||||
"PrioritySettings": "우선 순위: {0}",
|
"PrioritySettings": "우선 순위: {0}"
|
||||||
"IndexerId": "인덱서",
|
|
||||||
"IndexerBeyondHDSettingsRefundOnly": "읽기 전용",
|
|
||||||
"SeedTimeHelpText": "토런트가 중지되기 전에 시드되어야 하는 시간, 비어 있으면 다운로드 클라이언트의 기본값을 사용합니다.",
|
|
||||||
"DownloadClientSettingsDefaultCategoryHelpText": "{appName}에 대한 특정 카테고리를 추가하면 관련 없는 {appName}가 아니 다운로드와의 충돌을 피할 수 있습니다. 카테고리 사용은 선택 사항이지만 강력히 권장됩니다.",
|
|
||||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "{appName}에 대한 특정 카테고리를 추가하면 관련 없는 비{appName} 다운로드와의 충돌을 피할 수 있습니다. 카테고리 사용은 선택 사항이지만 강력히 권장됩니다. 출력 디렉토리에 [카테고리] 하위 디렉토리를 만듭니다.",
|
|
||||||
"EditCategory": "카테고리 추가",
|
|
||||||
"EditSelectedIndexers": "선택된 영화 수정하기",
|
|
||||||
"IndexerBeyondHDSettingsRewindOnly": "읽기 전용",
|
|
||||||
"IndexerDownloadClientHelpText": "이 인덱서에서 가져온 것을 가져오는 데 사용되는 다운로드 클라이언트를 지정합니다.",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "원본",
|
|
||||||
"IndexerProxy": "인덱서 프록시 추가",
|
|
||||||
"SelectIndexers": "인덱서 플래그 선택",
|
|
||||||
"UnableToLoadDevelopmentSettings": "일반 설정을 불러올 수 없",
|
|
||||||
"LogSizeLimit": "크기 제한",
|
|
||||||
"DownloadClientAriaSettingsDirectoryHelpText": "다운로드를 넣을 위치 (선택 사항), 기본 rTorrent 위치를 사용하려면 비워두세요",
|
|
||||||
"CountApplicationsSelected": "{count}개의 컬렉션을 선택함",
|
|
||||||
"ManageDownloadClients": "클라이언트 다운로드",
|
|
||||||
"UnableToLoadIndexerProxies": "인덱서를 로드할 수 없음",
|
|
||||||
"UnableToLoadAppProfiles": "지연 프로필을 불러올 수 없",
|
|
||||||
"DeleteIndexerProxy": "인덱서 삭제",
|
|
||||||
"Auth": "저작자",
|
|
||||||
"Notification": "인증",
|
|
||||||
"Proxies": "프로필",
|
|
||||||
"SyncProfiles": "동기화 프로필 추가",
|
|
||||||
"SyncProfile": "동기화 프로필 추가",
|
|
||||||
"IndexerStatus": "인덱스 설정",
|
|
||||||
"EditSelectedDownloadClients": "다운로드 클라이언트 삭제",
|
|
||||||
"TvSearch": "검색",
|
|
||||||
"DeleteClientCategory": "다운로드 클라이언트 삭제",
|
|
||||||
"IndexerNewznabSettingsAdditionalParametersHelpText": "매개 변수 추가",
|
|
||||||
"ThemeHelpText": "애플리케이션 UI 테마 변경, '자동' 테마는 OS 테마를 사용하여 라이트 또는 다크 모드를 설정합니다. Theme.Park에서 영감을 받음",
|
|
||||||
"ProxyValidationUnableToConnect": "인덱서에 연결할 수 없음: {exceptionMessage}. 상세 내용은 이 오류를 둘러싼 로그를 확인하세요",
|
|
||||||
"Connect": "인증",
|
|
||||||
"SearchIndexers": "인덱서 플래그 선택",
|
|
||||||
"IndexerProxies": "인덱서 프록시 추가",
|
|
||||||
"Notifications": "인증",
|
|
||||||
"IndexerInfo": "인덱서",
|
|
||||||
"DownloadClientCategory": "다운로드 클라이언트 삭제",
|
|
||||||
"DeleteSelectedApplications": "선택된 것을 삭제",
|
|
||||||
"DeleteSelectedIndexer": "선택된 영화 수정하기",
|
|
||||||
"DeleteSelectedIndexers": "선택된 영화 수정하기",
|
|
||||||
"PackSeedTimeHelpText": "토런트가 중지되기 전에 시드되어야 하는 시간, 비어 있으면 다운로드 클라이언트의 기본값을 사용합니다.",
|
|
||||||
"SeedRatioHelpText": "토런트가 중지되기 전에 시드되어야 하는 시간, 비어 있으면 다운로드 클라이언트의 기본값을 사용합니다.",
|
|
||||||
"IndexerSettingsPackSeedTimeIndexerHelpText": "토런트가 중지되기 전에 시드되어야 하는 시간, 비어 있으면 다운로드 클라이언트의 기본값을 사용합니다.",
|
|
||||||
"FilterPlaceHolder": "인덱서 플래그 선택"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,21 +16,5 @@
|
|||||||
"AddIndexerImplementation": "Pievienot Nosacījumu - {implementationName}",
|
"AddIndexerImplementation": "Pievienot Nosacījumu - {implementationName}",
|
||||||
"AddIndexerProxyImplementation": "Pievienot Nosacījumu - {implementationName}",
|
"AddIndexerProxyImplementation": "Pievienot Nosacījumu - {implementationName}",
|
||||||
"AddApplicationImplementation": "Pievienot Savienojumu - {implementationName}",
|
"AddApplicationImplementation": "Pievienot Savienojumu - {implementationName}",
|
||||||
"EditIndexerProxyImplementation": "Pievienot Nosacījumu - {implementationName}",
|
"EditIndexerProxyImplementation": "Pievienot Nosacījumu - {implementationName}"
|
||||||
"Connections": "Pievienot Savienojumu",
|
|
||||||
"DownloadClient": "Pievienot Lejupielādes Klientu",
|
|
||||||
"DownloadClients": "Pievienot Lejupielādes Klientu",
|
|
||||||
"EditSyncProfile": "Pievienot Aizkaves Profilu",
|
|
||||||
"AddDownloadClientImplementation": "Pievienot Nosacījumu - {implementationName}",
|
|
||||||
"EditDownloadClientImplementation": "Pievienot Nosacījumu - {implementationName}",
|
|
||||||
"AddSyncProfile": "Pievienot Aizkaves Profilu",
|
|
||||||
"ConnectionLost": "Pievienot Savienojumu",
|
|
||||||
"DeleteDownloadClient": "Pievienot Lejupielādes Klientu",
|
|
||||||
"DownloadClientSettings": "Pievienot Lejupielādes Klientu",
|
|
||||||
"SyncProfile": "Pievienot Aizkaves Profilu",
|
|
||||||
"SyncProfiles": "Pievienot Aizkaves Profilu",
|
|
||||||
"DeleteClientCategory": "Pievienot Lejupielādes Klientu",
|
|
||||||
"DeleteSelectedDownloadClients": "Pievienot Lejupielādes Klientu",
|
|
||||||
"EditSelectedDownloadClients": "Pievienot Lejupielādes Klientu",
|
|
||||||
"ManageDownloadClients": "Pievienot Lejupielādes Klientu"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"AddingTag": "Legger til tag",
|
"AddingTag": "Legger til tag",
|
||||||
"All": "Alle",
|
"All": "Alle",
|
||||||
"Analytics": "Analyse",
|
"Analytics": "Analyse",
|
||||||
"AppDataDirectory": "AppData Katalog",
|
"AppDataDirectory": "AppData -katalog",
|
||||||
"ApplyTags": "Bruk Tags",
|
"ApplyTags": "Bruk Tags",
|
||||||
"Authentication": "Godkjenning",
|
"Authentication": "Godkjenning",
|
||||||
"Automatic": "Automatisk",
|
"Automatic": "Automatisk",
|
||||||
@@ -162,53 +162,5 @@
|
|||||||
"AddCustomFilter": "Legg til eget filter",
|
"AddCustomFilter": "Legg til eget filter",
|
||||||
"Clone": "Lukk",
|
"Clone": "Lukk",
|
||||||
"AddDownloadClientImplementation": "Ny Nedlastingsklient - {implementationName}",
|
"AddDownloadClientImplementation": "Ny Nedlastingsklient - {implementationName}",
|
||||||
"History": "Historikk",
|
"History": "Historikk"
|
||||||
"DeleteDownloadClient": "Slett Nedlastingsklient",
|
|
||||||
"AuthenticationMethod": "Godkjenning",
|
|
||||||
"Author": "Auto",
|
|
||||||
"TvSearch": "Søk",
|
|
||||||
"CustomFilter": "Legg til eget filter",
|
|
||||||
"GrabRelease": "utgivelse",
|
|
||||||
"IndexerId": "Indekser",
|
|
||||||
"Tags": "Merker",
|
|
||||||
"UILanguage": "språk",
|
|
||||||
"CustomFilters": "Egne filter",
|
|
||||||
"UISettings": "Innstillinger",
|
|
||||||
"EnableAutomaticSearch": "Automatisk Søk",
|
|
||||||
"AddApplication": "Applikasjoner",
|
|
||||||
"NoChange": "Ingen Endring",
|
|
||||||
"EditSyncProfile": "Legg til forsinkelsesprofil",
|
|
||||||
"ManageDownloadClients": "Nedlastingsklienter",
|
|
||||||
"AddNewIndexer": "Legg til indekser",
|
|
||||||
"DownloadClientSettings": "Nedlastingsklient",
|
|
||||||
"EditDownloadClientImplementation": "Ny Nedlastingsklient - {implementationName}",
|
|
||||||
"NoChanges": "Ingen Endringer",
|
|
||||||
"Auth": "Auto",
|
|
||||||
"IndexerInfo": "Indekser",
|
|
||||||
"GrabReleases": "utgivelse",
|
|
||||||
"AddSyncProfile": "Legg til forsinkelsesprofil",
|
|
||||||
"SyncProfile": "Legg til forsinkelsesprofil",
|
|
||||||
"SyncProfiles": "Legg til forsinkelsesprofil",
|
|
||||||
"DeleteClientCategory": "Slett Nedlastingsklient",
|
|
||||||
"DeleteSelectedDownloadClients": "Nedlastingsklient",
|
|
||||||
"EditSelectedDownloadClients": "Nedlastingsklient",
|
|
||||||
"AppUpdated": "{appName} Oppdatert",
|
|
||||||
"AppUpdatedVersion": "{appName} er oppdatert til `{version}`, for å aktivere de siste endringene må du laste inn {appName} på ny.",
|
|
||||||
"AuthenticationMethodHelpTextWarning": "Vennligst velg en valid autentiserings metode.",
|
|
||||||
"AuthenticationRequired": "Verefisering påkrevd",
|
|
||||||
"AddCategory": "Legg til kategori",
|
|
||||||
"AddIndexerProxy": "Legg til indexer Proxy",
|
|
||||||
"AddRemoveOnly": "Legg til og fjern kun",
|
|
||||||
"AddToDownloadClient": "Legg til ny utgave i nedlastingsagenten",
|
|
||||||
"AddedToDownloadClient": "Ny utgave lagt til klient",
|
|
||||||
"AdvancedSettingsHiddenClickToShow": "Avanserte innstillinger er skjult. Klikk for å vise",
|
|
||||||
"AdvancedSettingsShownClickToHide": "Avanserte innstilinger vises.Klikk for å skjule",
|
|
||||||
"AppProfileInUse": "App profil i bruk",
|
|
||||||
"ApplicationLongTermStatusCheckAllClientMessage": "Alle indexere er ikke tilgjengelig på grunn av feil i mer enn 6 timer",
|
|
||||||
"Any": "Hvilken som helst",
|
|
||||||
"AuthenticationRequiredHelpText": "Endre hvilke forespørsler som krever autentisering. Ikke endre dette med mindre du forstår risikoen.",
|
|
||||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Gjenta nytt passord",
|
|
||||||
"AuthenticationRequiredPasswordHelpTextWarning": "Oppgi nytt passord",
|
|
||||||
"AuthenticationRequiredUsernameHelpTextWarning": "Oppgi nytt bruernavn",
|
|
||||||
"AuthenticationRequiredWarning": "For å forhindre ekstern tilgang uten pålogging, krever {appName} nå at autentisering er aktivert. Du kan velge å deaktivere autentisering for lokale adresser."
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
"Clear": "Wis",
|
"Clear": "Wis",
|
||||||
"ClearHistory": "Geschiedenis verwijderen",
|
"ClearHistory": "Geschiedenis verwijderen",
|
||||||
"ClearHistoryMessageText": "Weet je zeker dat je alle geschiedenis van {appName} wilt verwijderen?",
|
"ClearHistoryMessageText": "Weet je zeker dat je alle geschiedenis van {appName} wilt verwijderen?",
|
||||||
"ClientPriority": "Client prioriteit",
|
"ClientPriority": "Client Prioriteit",
|
||||||
"CloneProfile": "Dupliceer Profiel",
|
"CloneProfile": "Dupliceer Profiel",
|
||||||
"Close": "Sluit",
|
"Close": "Sluit",
|
||||||
"CloseCurrentModal": "Sluit Huidig Bericht",
|
"CloseCurrentModal": "Sluit Huidig Bericht",
|
||||||
@@ -662,28 +662,5 @@
|
|||||||
"DownloadClientFloodSettingsTagsHelpText": "Initiële tags van een download. Om herkend te worden, moet een download alle initiële tags hebben. Dit voorkomt conflicten met niet-gerelateerde downloads.",
|
"DownloadClientFloodSettingsTagsHelpText": "Initiële tags van een download. Om herkend te worden, moet een download alle initiële tags hebben. Dit voorkomt conflicten met niet-gerelateerde downloads.",
|
||||||
"IndexerNewznabSettingsVipExpirationHelpText": "Voer de datum in (jjjj-mm-dd) voor VIP-vervaldatum of laat leeg. {appName} zal 1 week voor het verstrijken van de VIP-periode een melding geven",
|
"IndexerNewznabSettingsVipExpirationHelpText": "Voer de datum in (jjjj-mm-dd) voor VIP-vervaldatum of laat leeg. {appName} zal 1 week voor het verstrijken van de VIP-periode een melding geven",
|
||||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Standaard fallback-categorie als er geen gekoppelde categorie bestaat voor een release. Het toevoegen van een categorie specifiek voor {appName} voorkomt conflicten met niet-gerelateerde downloads die niet van {appName} zijn. Het gebruik van een categorie is optioneel, maar wordt sterk aanbevolen. Er wordt een [categorie]-submap aangemaakt in de uitvoermap.",
|
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Standaard fallback-categorie als er geen gekoppelde categorie bestaat voor een release. Het toevoegen van een categorie specifiek voor {appName} voorkomt conflicten met niet-gerelateerde downloads die niet van {appName} zijn. Het gebruik van een categorie is optioneel, maar wordt sterk aanbevolen. Er wordt een [categorie]-submap aangemaakt in de uitvoermap.",
|
||||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Deze instellingen vind je in je PassThePopcorn beveiligingsinstellingen (Profiel bewerken > Beveiliging).",
|
"IndexerPassThePopcornSettingsApiUserHelpText": "Deze instellingen vind je in je PassThePopcorn beveiligingsinstellingen (Profiel bewerken > Beveiliging)."
|
||||||
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Doorzoek alleen freeleech releases",
|
|
||||||
"UsenetBlackholeNzbFolder": "Nzb map",
|
|
||||||
"IndexerSettingsAppsMinimumSeedersHelpText": "Minimum aantal vereiste seeders door de applicaties voordat de indexer iets ophaalt. Leeg laten gebruikt de standaardwaarde van het synchronisatieprofiel",
|
|
||||||
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Doorzoek alleen freeleech releases",
|
|
||||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Site API-sleutel",
|
|
||||||
"SearchTypes": "Zoek types",
|
|
||||||
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Doorzoek alleen freeleech releases",
|
|
||||||
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Doorzoek alleen freeleech releases",
|
|
||||||
"BookSearchTypes": "Zoek types",
|
|
||||||
"SyncProfile": "Synchronisatieprofiel toevoegen",
|
|
||||||
"TVSearchTypes": "Zoek types",
|
|
||||||
"ManageDownloadClients": "Downloadprogramma's",
|
|
||||||
"MovieSearchTypes": "Zoek types",
|
|
||||||
"IndexerTagsHelpTextWarning": "Gebruik tags met voorzichtigheid, ze kunnen onbedoelde effecten hebben. Een app met een tag zal alleen synchroniseren met indexers die dezelfde tag hebben.",
|
|
||||||
"MusicSearchTypes": "Zoek types",
|
|
||||||
"MovieSearch": "Bulk Films Zoeken",
|
|
||||||
"TvSearch": "Zoeken",
|
|
||||||
"IndexerStatus": "Indexeerder Instellingen",
|
|
||||||
"SyncProfiles": "Synchronisatieprofiel toevoegen",
|
|
||||||
"SearchType": "Zoek types",
|
|
||||||
"Proxies": "Profielen",
|
|
||||||
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Doorzoek alleen freeleech releases",
|
|
||||||
"SearchAllIndexers": "Zoek indexeerder"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -508,33 +508,5 @@
|
|||||||
"FailedToFetchUpdates": "Falha a obter atualizações",
|
"FailedToFetchUpdates": "Falha a obter atualizações",
|
||||||
"External": "Externo",
|
"External": "Externo",
|
||||||
"Categories": "Categorias",
|
"Categories": "Categorias",
|
||||||
"days": "dias",
|
"days": "dias"
|
||||||
"EditCategory": "Adicionar Categoria",
|
|
||||||
"IndexerStatus": "Definições do indexador",
|
|
||||||
"Destination": "Caminho de destino",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Original",
|
|
||||||
"IndexerId": "Indexador",
|
|
||||||
"DeleteClientCategory": "Eliminar cliente de transferências",
|
|
||||||
"LogSizeLimit": "Tamanho Limite",
|
|
||||||
"TvSearch": "Pesquisar",
|
|
||||||
"NotificationStatusAllClientHealthCheckMessage": "Todas as listas estão indisponíveis devido a erros",
|
|
||||||
"SyncProfile": "Adicionar Perfil de Sincronização",
|
|
||||||
"AdvancedSettingsShownClickToHide": "Definições avançadas ocultas, clique para mostrar",
|
|
||||||
"DeleteSelectedApplications": "Eliminar artista selecionado",
|
|
||||||
"IndexerDownloadClientHelpText": "Especificar que cliente de transferências quer usar para as transferências deste indexador",
|
|
||||||
"MovieSearch": "Pesquisar filmes em massa",
|
|
||||||
"SelectIndexers": "Eliminar indexador",
|
|
||||||
"ManageDownloadClients": "Clientes de transferências",
|
|
||||||
"SearchAllIndexers": "Indexadores de pesquisa",
|
|
||||||
"SyncProfiles": "Adicionar Perfil de Sincronização",
|
|
||||||
"Proxies": "Perfis",
|
|
||||||
"Author": "Automático",
|
|
||||||
"Donate": "Data",
|
|
||||||
"IndexerInfo": "Indexador",
|
|
||||||
"MovieSearchTypes": "Pesquisar filmes em massa",
|
|
||||||
"DownloadClientCategory": "Eliminar cliente de transferências",
|
|
||||||
"DeleteSelectedIndexer": "Eliminar indexador",
|
|
||||||
"DeleteSelectedIndexers": "Eliminar indexador",
|
|
||||||
"EditSelectedIndexers": "Eliminar indexador",
|
|
||||||
"NotificationStatusSingleClientHealthCheckMessage": "Listas indisponíveis devido a erros: {0}"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"Actions": "Ações",
|
"Actions": "Ações",
|
||||||
"Add": "Adicionar",
|
"Add": "Adicionar",
|
||||||
"AddApplication": "Adicionar Aplicativo",
|
"AddApplication": "Adicionar Aplicativo",
|
||||||
"AddCustomFilter": "Adicionar Filtro Personalizado",
|
"AddCustomFilter": "Adicionar filtro personalizado",
|
||||||
"AddDownloadClient": "Adicionar cliente de download",
|
"AddDownloadClient": "Adicionar cliente de download",
|
||||||
"AddDownloadClientToProwlarr": "Adicionar um cliente de download possibilita que o {appName} envie lançamentos diretamente da interface ao executar uma pesquisa manual.",
|
"AddDownloadClientToProwlarr": "Adicionar um cliente de download possibilita que o {appName} envie lançamentos diretamente da interface ao executar uma pesquisa manual.",
|
||||||
"AddIndexer": "Adicionar indexador",
|
"AddIndexer": "Adicionar indexador",
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"ApiKey": "Chave da API",
|
"ApiKey": "Chave da API",
|
||||||
"ApiKeyValidationHealthCheckMessage": "Atualize sua chave de API para ter pelo menos {length} caracteres. Você pode fazer isso através das configurações ou do arquivo de configuração",
|
"ApiKeyValidationHealthCheckMessage": "Atualize sua chave de API para ter pelo menos {length} caracteres. Você pode fazer isso através das configurações ou do arquivo de configuração",
|
||||||
"AppDataDirectory": "Diretório AppData",
|
"AppDataDirectory": "Diretório AppData",
|
||||||
"AppDataLocationHealthCheckMessage": "Não será possível atualizar para evitar a exclusão dos dados de AppData durante a Atualização",
|
"AppDataLocationHealthCheckMessage": "A atualização não será possível para evitar a exclusão de AppData na Atualização",
|
||||||
"AppProfileInUse": "Perfil de aplicativo em uso",
|
"AppProfileInUse": "Perfil de aplicativo em uso",
|
||||||
"AppProfileSelectHelpText": "Os perfis de aplicativos são usados para controlar as configurações de RSS, Pesquisa automática e Pesquisa interativa ao sincronizar o aplicativo",
|
"AppProfileSelectHelpText": "Os perfis de aplicativos são usados para controlar as configurações de RSS, Pesquisa automática e Pesquisa interativa ao sincronizar o aplicativo",
|
||||||
"AppSettingsSummary": "Aplicativos e configurações para configurar como {appName} interage com seus programas PVR",
|
"AppSettingsSummary": "Aplicativos e configurações para configurar como {appName} interage com seus programas PVR",
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
"Connections": "Conexões",
|
"Connections": "Conexões",
|
||||||
"CouldNotConnectSignalR": "Não é possível conectar ao SignalR, a interface não atualizará",
|
"CouldNotConnectSignalR": "Não é possível conectar ao SignalR, a interface não atualizará",
|
||||||
"Custom": "Personalizado",
|
"Custom": "Personalizado",
|
||||||
"CustomFilters": "Filtros Personalizados",
|
"CustomFilters": "Filtros personalizados",
|
||||||
"DatabaseMigration": "Migração de banco de dados",
|
"DatabaseMigration": "Migração de banco de dados",
|
||||||
"Database": "Banco de dados",
|
"Database": "Banco de dados",
|
||||||
"Date": "Data",
|
"Date": "Data",
|
||||||
@@ -503,7 +503,7 @@
|
|||||||
"ApplyTagsHelpTextAdd": "Adicionar: adicione as etiquetas à lista existente de etiquetas",
|
"ApplyTagsHelpTextAdd": "Adicionar: adicione as etiquetas à lista existente de etiquetas",
|
||||||
"Implementation": "Implementação",
|
"Implementation": "Implementação",
|
||||||
"SelectIndexers": "Pesquisar indexadores",
|
"SelectIndexers": "Pesquisar indexadores",
|
||||||
"ApplyTagsHelpTextHowToApplyApplications": "Como aplicar etiquetas aos aplicativos selecionados",
|
"ApplyTagsHelpTextHowToApplyApplications": "Como aplicar tags ao autor selecionado",
|
||||||
"ApplyTagsHelpTextHowToApplyIndexers": "Como aplicar etiquetas aos indexadores selecionados",
|
"ApplyTagsHelpTextHowToApplyIndexers": "Como aplicar etiquetas aos indexadores selecionados",
|
||||||
"ApplyTagsHelpTextRemove": "Remover: remove as etiquetas inseridas",
|
"ApplyTagsHelpTextRemove": "Remover: remove as etiquetas inseridas",
|
||||||
"ApplyTagsHelpTextReplace": "Substituir: substitui as etiquetas atuais pelas inseridas (deixe em branco para limpar todas as etiquetas)",
|
"ApplyTagsHelpTextReplace": "Substituir: substitui as etiquetas atuais pelas inseridas (deixe em branco para limpar todas as etiquetas)",
|
||||||
@@ -559,7 +559,7 @@
|
|||||||
"AppUpdated": "{appName} atualizado",
|
"AppUpdated": "{appName} atualizado",
|
||||||
"AppUpdatedVersion": "O {appName} foi atualizado para a versão `{version}`. Para obter as alterações mais recentes, recarregue o {appName}",
|
"AppUpdatedVersion": "O {appName} foi atualizado para a versão `{version}`. Para obter as alterações mais recentes, recarregue o {appName}",
|
||||||
"ConnectionLostToBackend": "O {appName} perdeu a conexão com o backend e precisará ser recarregado para restaurar a funcionalidade.",
|
"ConnectionLostToBackend": "O {appName} perdeu a conexão com o backend e precisará ser recarregado para restaurar a funcionalidade.",
|
||||||
"RecentChanges": "Mudanças recentes",
|
"RecentChanges": "Mudanças Recentes",
|
||||||
"WhatsNew": "O que há de novo?",
|
"WhatsNew": "O que há de novo?",
|
||||||
"ConnectionLostReconnect": "O {appName} tentará se conectar automaticamente ou você pode clicar em Recarregar abaixo.",
|
"ConnectionLostReconnect": "O {appName} tentará se conectar automaticamente ou você pode clicar em Recarregar abaixo.",
|
||||||
"AddApplicationImplementation": "Adicionar Aplicativo - {implementationName}",
|
"AddApplicationImplementation": "Adicionar Aplicativo - {implementationName}",
|
||||||
@@ -587,7 +587,7 @@
|
|||||||
"DisabledForLocalAddresses": "Desabilitado para endereços locais",
|
"DisabledForLocalAddresses": "Desabilitado para endereços locais",
|
||||||
"External": "Externo",
|
"External": "Externo",
|
||||||
"None": "Nenhum",
|
"None": "Nenhum",
|
||||||
"ResetAPIKeyMessageText": "Tem certeza de que deseja redefinir sua chave da API?",
|
"ResetAPIKeyMessageText": "Tem certeza de que deseja redefinir sua chave de API?",
|
||||||
"AuthBasic": "Básico (pop-up do navegador)",
|
"AuthBasic": "Básico (pop-up do navegador)",
|
||||||
"ActiveIndexers": "Indexadores Ativos",
|
"ActiveIndexers": "Indexadores Ativos",
|
||||||
"ActiveApps": "Apps Ativos",
|
"ActiveApps": "Apps Ativos",
|
||||||
@@ -631,7 +631,7 @@
|
|||||||
"IndexerGazelleGamesSettingsSearchGroupNames": "Pesquisar Nomes de Grupos",
|
"IndexerGazelleGamesSettingsSearchGroupNames": "Pesquisar Nomes de Grupos",
|
||||||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Pesquisar lançamentos por nomes de grupos",
|
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Pesquisar lançamentos por nomes de grupos",
|
||||||
"IndexerHDBitsSettingsCodecs": "Codecs",
|
"IndexerHDBitsSettingsCodecs": "Codecs",
|
||||||
"IndexerHDBitsSettingsMediumsHelpText": "Se não for especificado, todas as opções serão usadas.",
|
"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",
|
"IndexerHDBitsSettingsUseFilenames": "Usar nomes de arquivos",
|
||||||
"IndexerHDBitsSettingsUsernameHelpText": "Nome de Usuário do Site",
|
"IndexerHDBitsSettingsUsernameHelpText": "Nome de Usuário do Site",
|
||||||
@@ -643,10 +643,10 @@
|
|||||||
"IndexerNzbIndexSettingsApiKeyHelpText": "Chave de API do site",
|
"IndexerNzbIndexSettingsApiKeyHelpText": "Chave de API do site",
|
||||||
"IndexerOrpheusSettingsApiKeyHelpText": "Chave API do site (encontrada em Configurações = Configurações de acesso)",
|
"IndexerOrpheusSettingsApiKeyHelpText": "Chave API do site (encontrada em Configurações = Configurações de acesso)",
|
||||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "Chave de API do site",
|
"IndexerPassThePopcornSettingsApiKeyHelpText": "Chave de API do site",
|
||||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Essas configurações estão nas configurações de segurança do PassThePopcorn (Edit Profile [Editar perfil] > Security [Segurança]).",
|
"IndexerPassThePopcornSettingsApiUserHelpText": "Essas configurações são encontradas nas configurações de segurança do PassThePopcorn (Editar Perfil > Segurança).",
|
||||||
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Pesquisar apenas lançamentos freeleech",
|
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Pesquisar apenas lançamentos freeleech",
|
||||||
"IndexerRedactedSettingsApiKeyHelpText": "Chave API do site (encontrada em Configurações = Configurações de acesso)",
|
"IndexerRedactedSettingsApiKeyHelpText": "Chave API do site (encontrada em Configurações = Configurações de acesso)",
|
||||||
"IndexerSettingsAdditionalParameters": "Parâmetros adicionais",
|
"IndexerSettingsAdditionalParameters": "Parâmetros Adicionais",
|
||||||
"IndexerSettingsApiPath": "Caminho da API",
|
"IndexerSettingsApiPath": "Caminho da API",
|
||||||
"IndexerSettingsApiPathHelpText": "Caminho para a API, geralmente {url}",
|
"IndexerSettingsApiPathHelpText": "Caminho para a API, geralmente {url}",
|
||||||
"IndexerSettingsApiUser": "Usuário da API",
|
"IndexerSettingsApiUser": "Usuário da API",
|
||||||
@@ -669,7 +669,7 @@
|
|||||||
"IndexerAlphaRatioSettingsExcludeScene": "Excluir SCENE",
|
"IndexerAlphaRatioSettingsExcludeScene": "Excluir SCENE",
|
||||||
"IndexerBeyondHDSettingsApiKeyHelpText": "Chave de API do site (encontrada em Minha segurança = chave de API)",
|
"IndexerBeyondHDSettingsApiKeyHelpText": "Chave de API do site (encontrada em Minha segurança = chave de API)",
|
||||||
"IndexerBeyondHDSettingsSearchTypesHelpText": "Selecione os tipos de lançamentos nos quais você está interessado. Se nenhum for selecionado, todas as opções serão usadas.",
|
"IndexerBeyondHDSettingsSearchTypesHelpText": "Selecione os tipos de lançamentos nos quais você está interessado. Se nenhum for selecionado, todas as opções serão usadas.",
|
||||||
"IndexerHDBitsSettingsCodecsHelpText": "Se não for especificado, todas as opções serão usadas.",
|
"IndexerHDBitsSettingsCodecsHelpText": "se não for especificado, todas as opções serão usadas.",
|
||||||
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Mostrar apenas lançamentos freeleech",
|
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Mostrar apenas lançamentos freeleech",
|
||||||
"IndexerHDBitsSettingsUseFilenamesHelpText": "Marque esta opção se quiser usar nomes de arquivos torrent como títulos de lançamento",
|
"IndexerHDBitsSettingsUseFilenamesHelpText": "Marque esta opção se quiser usar nomes de arquivos torrent como títulos de lançamento",
|
||||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Agente de Usuário para Cookies",
|
"IndexerIPTorrentsSettingsCookieUserAgent": "Agente de Usuário para Cookies",
|
||||||
@@ -763,17 +763,17 @@
|
|||||||
"SelectDownloadClientModalTitle": "{modalTitle} - Selecionar Cliente de Download",
|
"SelectDownloadClientModalTitle": "{modalTitle} - Selecionar Cliente de Download",
|
||||||
"Any": "Quaisquer",
|
"Any": "Quaisquer",
|
||||||
"Script": "Script",
|
"Script": "Script",
|
||||||
"BuiltIn": "Incorporado",
|
"BuiltIn": "Embutido",
|
||||||
"InfoUrl": "URL de informações",
|
"InfoUrl": "URL de informações",
|
||||||
"PublishedDate": "Data de publicação",
|
"PublishedDate": "Data de Publicação",
|
||||||
"Redirected": "Redirecionado",
|
"Redirected": "Redirecionar",
|
||||||
"AverageQueries": "Média de Consultas",
|
"AverageQueries": "Média de Consultas",
|
||||||
"AverageGrabs": "Média de Capturas",
|
"AverageGrabs": "Média de Capturas",
|
||||||
"AllSearchResultsHiddenByFilter": "Todos os resultados da pesquisa são ocultados pelo filtro aplicado.",
|
"AllSearchResultsHiddenByFilter": "Todos os resultados da pesquisa são ocultados pelo filtro aplicado.",
|
||||||
"PackageVersionInfo": "{packageVersion} por {packageAuthor}",
|
"PackageVersionInfo": "{packageVersion} por {packageAuthor}",
|
||||||
"HealthMessagesInfoBox": "Para saber mais sobre a causa dessas mensagens de verificação de integridade, clique no link da wiki (ícone de livro) no final da linha, ou verifique os [logs]({link}). Se tiver dificuldade em interpretar essas mensagens, entre em contato com nosso suporte nos links abaixo.",
|
"HealthMessagesInfoBox": "Para saber mais sobre a causa dessas mensagens de verificação de integridade, clique no link da wiki (ícone de livro) no final da linha ou verifique os [logs]({link}). Se tiver dificuldade em interpretar essas mensagens, entre em contato com nosso suporte nos links abaixo.",
|
||||||
"LogSizeLimit": "Limite de tamanho do log",
|
"LogSizeLimit": "Limite de Tamanho do Registro",
|
||||||
"LogSizeLimitHelpText": "Tamanho máximo do arquivo de log, em MB, antes do arquivamento. O padrão é 1 MB.",
|
"LogSizeLimitHelpText": "Tamanho máximo do arquivo de registro em MB antes do arquivamento. O padrão é 1 MB.",
|
||||||
"PreferMagnetUrlHelpText": "Quando ativado, este indexador preferirá o uso de URLs magnéticos para captura com substituto para links de torrent",
|
"PreferMagnetUrlHelpText": "Quando ativado, este indexador preferirá o uso de URLs magnéticos para captura com substituto para links de torrent",
|
||||||
"IndexerSettingsPreferMagnetUrl": "Preferir URL Magnético",
|
"IndexerSettingsPreferMagnetUrl": "Preferir URL Magnético",
|
||||||
"IndexerSettingsPreferMagnetUrlHelpText": "Quando ativado, este indexador preferirá o uso de URLs magnéticos para captura com substituto para links de torrent",
|
"IndexerSettingsPreferMagnetUrlHelpText": "Quando ativado, este indexador preferirá o uso de URLs magnéticos para captura com substituto para links de torrent",
|
||||||
@@ -781,7 +781,7 @@
|
|||||||
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Apenas Golden Popcorn",
|
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Apenas Golden Popcorn",
|
||||||
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Pesquisar somente lançamentos em Golden Popcorn",
|
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Pesquisar somente lançamentos em Golden Popcorn",
|
||||||
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Pesquisar apenas lançamentos freeleech",
|
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Pesquisar apenas lançamentos freeleech",
|
||||||
"IndexerAvistazSettingsUsernameHelpText": "Nome de usuário do site",
|
"IndexerAvistazSettingsUsernameHelpText": "Nome de Usuário do Site",
|
||||||
"IndexerAvistazSettingsPasswordHelpText": "Senha do Site",
|
"IndexerAvistazSettingsPasswordHelpText": "Senha do Site",
|
||||||
"IndexerAvistazSettingsPidHelpText": "PID da página Minha Conta ou Meu Perfil",
|
"IndexerAvistazSettingsPidHelpText": "PID da página Minha Conta ou Meu Perfil",
|
||||||
"IndexerAvistazSettingsUsernameHelpTextWarning": "Somente membros com rank e acima podem usar a API neste indexador.",
|
"IndexerAvistazSettingsUsernameHelpTextWarning": "Somente membros com rank e acima podem usar a API neste indexador.",
|
||||||
@@ -795,17 +795,17 @@
|
|||||||
"Logout": "Sair",
|
"Logout": "Sair",
|
||||||
"NoEventsFound": "Nenhum evento encontrado",
|
"NoEventsFound": "Nenhum evento encontrado",
|
||||||
"TheLogLevelDefault": "O nível de log padrão é ' Debug ' e pode ser alterado em [ Configurações gerais](/ configurações/geral)",
|
"TheLogLevelDefault": "O nível de log padrão é ' Debug ' e pode ser alterado em [ Configurações gerais](/ configurações/geral)",
|
||||||
"UpdateAppDirectlyLoadError": "Não foi possível atualizar o {appName} diretamente,",
|
"UpdateAppDirectlyLoadError": "Incapaz de atualizar o {appName} diretamente,",
|
||||||
"UpdaterLogFiles": "Arquivos de log do atualizador",
|
"UpdaterLogFiles": "Arquivos de log do atualizador",
|
||||||
"WouldYouLikeToRestoreBackup": "Gostaria de restaurar o backup '{name}'?",
|
"WouldYouLikeToRestoreBackup": "Gostaria de restaurar o backup '{name}'?",
|
||||||
"AptUpdater": "Usar apt para instalar atualizações",
|
"AptUpdater": "Usar apt para instalar atualizações",
|
||||||
"Install": "Instalar",
|
"Install": "Instalar",
|
||||||
"InstallLatest": "Instalar o mais recente",
|
"InstallLatest": "Instalar o mais recente",
|
||||||
"InstallMajorVersionUpdate": "Instalar atualização",
|
"InstallMajorVersionUpdate": "Instalar Atualização",
|
||||||
"InstallMajorVersionUpdateMessage": "Esta atualização instalará uma nova versão principal e pode não ser compatível com o seu sistema. Tem certeza de que deseja instalar esta atualização?",
|
"InstallMajorVersionUpdateMessage": "Esta atualização instalará uma nova versão principal e pode não ser compatível com o seu sistema. Tem certeza de que deseja instalar esta atualização?",
|
||||||
"InstallMajorVersionUpdateMessageLink": "Verifique [{domain}]({url}) para saber mais.",
|
"InstallMajorVersionUpdateMessageLink": "Verifique [{domain}]({url}) para obter mais informações.",
|
||||||
"FailedToFetchSettings": "Falha ao obter configurações",
|
"FailedToFetchSettings": "Falha ao obter configurações",
|
||||||
"CurrentlyInstalled": "Atualmente instalado",
|
"CurrentlyInstalled": "Atualmente instalado",
|
||||||
"PreviouslyInstalled": "Instalado anteriormente",
|
"PreviouslyInstalled": "Instalado anteriormente",
|
||||||
"DownloadClientUTorrentProviderMessage": "O uTorrent tem um histórico de inclusão de criptomineradores, malware e anúncios. Recomendamos fortemente que você escolha um cliente diferente."
|
"DownloadClientUTorrentProviderMessage": "O uTorrent tem um histórico de incluir criptomineradores, malware e anúncios, recomendamos que você escolha outro cliente de download."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -491,7 +491,7 @@
|
|||||||
"Stats": "Status",
|
"Stats": "Status",
|
||||||
"CurrentlyInstalled": "În prezent instalat",
|
"CurrentlyInstalled": "În prezent instalat",
|
||||||
"Mixed": "Fix",
|
"Mixed": "Fix",
|
||||||
"Season": "Sezon",
|
"Season": "Motiv",
|
||||||
"ActiveIndexers": "Indexatorii activi",
|
"ActiveIndexers": "Indexatorii activi",
|
||||||
"Any": "Oricare",
|
"Any": "Oricare",
|
||||||
"AdvancedSettingsShownClickToHide": "Setări avansate afișate, click pentru a le ascunde",
|
"AdvancedSettingsShownClickToHide": "Setări avansate afișate, click pentru a le ascunde",
|
||||||
@@ -499,29 +499,5 @@
|
|||||||
"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",
|
"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",
|
"AddToDownloadClient": "Adaugă versiunea în clientul de descărcare",
|
||||||
"AddSyncProfile": "Adaugă profil de sincronizare",
|
"AddSyncProfile": "Adaugă profil de sincronizare",
|
||||||
"AddedToDownloadClient": "Versiune adăugată în client",
|
"AddedToDownloadClient": "Versiune adăugată în client"
|
||||||
"TvSearch": "Caută",
|
|
||||||
"Destination": "Calea de destinație",
|
|
||||||
"SyncProfile": "Adaugă profil de sincronizare",
|
|
||||||
"EditSelectedIndexers": "Ștergeți indexatorii selectați",
|
|
||||||
"NotificationStatusAllClientHealthCheckMessage": "Toate listele sunt indisponibile datorită erorilor",
|
|
||||||
"Proxies": "Profile",
|
|
||||||
"AuthenticationMethod": "Autentificare",
|
|
||||||
"Donate": "Dată",
|
|
||||||
"SyncProfiles": "Adaugă profil de sincronizare",
|
|
||||||
"EditCategory": "Adăugați categorie",
|
|
||||||
"EditSelectedDownloadClients": "Ștergere clienți de descărcare",
|
|
||||||
"ManageDownloadClients": "Clienți de descărcare",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Original",
|
|
||||||
"IndexerStatus": "Setări Indexer",
|
|
||||||
"SelectIndexers": "Ștergeți Indexer",
|
|
||||||
"DownloadClientCategory": "Ștergeți categoria din clientul de descărcare",
|
|
||||||
"EditSyncProfile": "Adaugă profil de sincronizare",
|
|
||||||
"MovieSearch": "Caută filme în masa",
|
|
||||||
"UnableToLoadAppProfiles": "Nu se pot încărca profilurile de întârziere",
|
|
||||||
"Notification": "Certificare",
|
|
||||||
"UnableToLoadDevelopmentSettings": "Nu se pot încărca setările generale",
|
|
||||||
"IndexerId": "Indexator",
|
|
||||||
"Notifications": "Certificare",
|
|
||||||
"MovieSearchTypes": "Caută filme în masa"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,44 +148,5 @@
|
|||||||
"AllSearchResultsHiddenByFilter": "Použitý filter skryje všetky výsledky",
|
"AllSearchResultsHiddenByFilter": "Použitý filter skryje všetky výsledky",
|
||||||
"AptUpdater": "Použiť apt pre inštaláciu aktualizácie",
|
"AptUpdater": "Použiť apt pre inštaláciu aktualizácie",
|
||||||
"Discord": "Discord",
|
"Discord": "Discord",
|
||||||
"Clone": "Zatvoriť",
|
"Clone": "Zatvoriť"
|
||||||
"AuthenticationMethod": "Overenie",
|
|
||||||
"CustomFilter": "Pridať vlastný filter",
|
|
||||||
"EditSyncProfile": "Pridať profil oneskorenia",
|
|
||||||
"IndexerId": "Indexer",
|
|
||||||
"Tags": "Značka",
|
|
||||||
"Track": "Trakt",
|
|
||||||
"TvSearch": "Hľadať",
|
|
||||||
"UISettings": "Nastavenia",
|
|
||||||
"UILanguage": "jazyk",
|
|
||||||
"ManageDownloadClients": "Klient na sťahovanie",
|
|
||||||
"AddNewIndexer": "Pridať indexer",
|
|
||||||
"NoChange": "Zmeniť",
|
|
||||||
"DownloadClientSettings": "Klient na sťahovanie",
|
|
||||||
"UnableToLoadTags": "Nie je možné načítať albumy",
|
|
||||||
"EnableAutomaticSearch": "Automatické vyhľadávanie",
|
|
||||||
"CustomFilters": "Pridať vlastný filter",
|
|
||||||
"AddApplication": "Aplikácie",
|
|
||||||
"Author": "Automaticky",
|
|
||||||
"DeleteDownloadClient": "Klient na sťahovanie",
|
|
||||||
"SettingsShowRelativeDates": "Dátum vydania albumu",
|
|
||||||
"DownloadClientsLoadError": "Nie je možné načítať albumy",
|
|
||||||
"DeleteSelectedDownloadClients": "Klient na sťahovanie",
|
|
||||||
"SyncProfile": "Pridať profil oneskorenia",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "Naozaj chcete toto vylúčenie importného zoznamu zmazať?",
|
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Naozaj chcete toto vylúčenie importného zoznamu zmazať?",
|
|
||||||
"EditSelectedDownloadClients": "Klient na sťahovanie",
|
|
||||||
"UnableToLoadHistory": "Nie je možné načítať albumy",
|
|
||||||
"SyncProfiles": "Pridať profil oneskorenia",
|
|
||||||
"DeleteSelectedIndexersMessageText": "Naozaj chcete toto vylúčenie importného zoznamu zmazať?",
|
|
||||||
"UnableToLoadNotifications": "Nie je možné načítať albumy",
|
|
||||||
"IndexerInfo": "Indexer",
|
|
||||||
"DeleteClientCategory": "Klient na sťahovanie",
|
|
||||||
"UnableToLoadIndexerProxies": "Nie je možné načítať albumy",
|
|
||||||
"UnableToLoadIndexers": "Nie je možné načítať albumy",
|
|
||||||
"ReleaseStatus": "Dátum vydania albumu",
|
|
||||||
"AddSyncProfile": "Pridať profil oneskorenia",
|
|
||||||
"NoChanges": "Zmeniť",
|
|
||||||
"Auth": "Automaticky",
|
|
||||||
"UnableToLoadAppProfiles": "Nie je možné načítať albumy"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -461,36 +461,5 @@
|
|||||||
"InstallLatest": "Installera senaste",
|
"InstallLatest": "Installera senaste",
|
||||||
"Clone": "Avsluta",
|
"Clone": "Avsluta",
|
||||||
"Mixed": "Fast",
|
"Mixed": "Fast",
|
||||||
"CurrentlyInstalled": "För närvarande installerad",
|
"CurrentlyInstalled": "För närvarande installerad"
|
||||||
"Destination": "Destinationsväg",
|
|
||||||
"IndexerId": "Indexerare",
|
|
||||||
"EditSelectedIndexers": "Sök Indexers",
|
|
||||||
"EditSyncProfile": "Redigera fördröjningsprofil",
|
|
||||||
"ManageDownloadClients": "Nerladdningsklienter",
|
|
||||||
"SearchAllIndexers": "Sök indexers",
|
|
||||||
"DeleteClientCategory": "Radera nedladdningsklient",
|
|
||||||
"AddApplication": "Applikationer",
|
|
||||||
"DeleteSelectedIndexersMessageText": "Är du säker på att du vill radera de markerade filmfilerna?",
|
|
||||||
"AuthenticationMethod": "Autentisera",
|
|
||||||
"IndexerStatus": "Indexerinställningar",
|
|
||||||
"Proxies": "Profiler",
|
|
||||||
"Donate": "Datum",
|
|
||||||
"TvSearch": "Sök",
|
|
||||||
"AddCategory": "Kategori",
|
|
||||||
"AddConnection": "Anslutning",
|
|
||||||
"EditSelectedDownloadClients": "Radera nedladdningsklient",
|
|
||||||
"MovieSearch": "Mass-sök filmer",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Orginal",
|
|
||||||
"IndexerInfo": "Indexerare",
|
|
||||||
"MovieSearchTypes": "Mass-sök filmer",
|
|
||||||
"AddSyncProfile": "Redigera fördröjningsprofil",
|
|
||||||
"SyncProfile": "Redigera fördröjningsprofil",
|
|
||||||
"SyncProfiles": "Redigera fördröjningsprofil",
|
|
||||||
"DownloadClientCategory": "Radera nedladdningsklient",
|
|
||||||
"DeleteSelectedApplications": "Radera markerade filmfiler",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "Är du säker på att du vill radera de markerade filmfilerna?",
|
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Är du säker på att du vill radera de markerade filmfilerna?",
|
|
||||||
"DeleteSelectedIndexer": "Sök Indexers",
|
|
||||||
"DeleteSelectedIndexers": "Sök Indexers",
|
|
||||||
"EditCategory": "Kategori"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -378,44 +378,5 @@
|
|||||||
"Mixed": "แก้ไขแล้ว",
|
"Mixed": "แก้ไขแล้ว",
|
||||||
"Stats": "สถานะ",
|
"Stats": "สถานะ",
|
||||||
"CurrentlyInstalled": "ติดตั้งแล้ว",
|
"CurrentlyInstalled": "ติดตั้งแล้ว",
|
||||||
"Season": "เหตุผล",
|
"Season": "เหตุผล"
|
||||||
"DeleteClientCategory": "ลบไคลเอนต์ดาวน์โหลด",
|
|
||||||
"EditSelectedDownloadClients": "ลบไคลเอนต์ดาวน์โหลด",
|
|
||||||
"SelectIndexers": "ลบ Indexer",
|
|
||||||
"UnableToLoadDevelopmentSettings": "ไม่สามารถโหลดการตั้งค่าทั่วไป",
|
|
||||||
"Destination": "เส้นทางปลายทาง",
|
|
||||||
"UnableToLoadIndexerProxies": "ไม่สามารถโหลด Indexers",
|
|
||||||
"DeleteIndexerProxy": "ลบ Indexer",
|
|
||||||
"MovieSearch": "ค้นหาภาพยนตร์จำนวนมาก",
|
|
||||||
"IndexerProxy": "ลำดับความสำคัญของ Indexer",
|
|
||||||
"EditSyncProfile": "แก้ไขโปรไฟล์ความล่าช้า",
|
|
||||||
"AddNewIndexer": "เพิ่ม Indexer",
|
|
||||||
"ManageDownloadClients": "ดาวน์โหลดไคลเอนต์",
|
|
||||||
"AddCustomFilter": "ตัวกรองที่กำหนดเอง",
|
|
||||||
"Proxies": "โปรไฟล์",
|
|
||||||
"UnableToLoadAppProfiles": "ไม่สามารถโหลด Delay Profiles",
|
|
||||||
"TvSearch": "ค้นหา",
|
|
||||||
"Donate": "วันที่",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "ต้นฉบับ",
|
|
||||||
"AuthenticationMethod": "การรับรองความถูกต้อง",
|
|
||||||
"IndexerStatus": "การตั้งค่าดัชนี",
|
|
||||||
"IndexerId": "Indexer",
|
|
||||||
"AddConnection": "การเชื่อมต่อ",
|
|
||||||
"Notification": "การรับรอง",
|
|
||||||
"DeleteSelectedIndexers": "ลบ Indexer",
|
|
||||||
"DeleteSelectedIndexer": "ลบ Indexer",
|
|
||||||
"Connect": "การรับรอง",
|
|
||||||
"IndexerProxies": "ลำดับความสำคัญของ Indexer",
|
|
||||||
"SearchIndexers": "ลบ Indexer",
|
|
||||||
"DeleteSelectedApplications": "ลบไฟล์ภาพยนตร์ที่เลือก",
|
|
||||||
"EditSelectedIndexers": "ลบ Indexer",
|
|
||||||
"DownloadClientCategory": "ลบไคลเอนต์ดาวน์โหลด",
|
|
||||||
"AddIndexerProxy": "ลำดับความสำคัญของ Indexer",
|
|
||||||
"SyncProfile": "แก้ไขโปรไฟล์ความล่าช้า",
|
|
||||||
"IndexerInfo": "Indexer",
|
|
||||||
"AddSyncProfile": "แก้ไขโปรไฟล์ความล่าช้า",
|
|
||||||
"Notifications": "การรับรอง",
|
|
||||||
"SyncProfiles": "แก้ไขโปรไฟล์ความล่าช้า",
|
|
||||||
"MovieSearchTypes": "ค้นหาภาพยนตร์จำนวนมาก",
|
|
||||||
"FilterPlaceHolder": "ลบ Indexer"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"Analytics": "Аналітика",
|
"Analytics": "Аналітика",
|
||||||
"ApiKey": "API Ключ",
|
"ApiKey": "API Ключ",
|
||||||
"Added": "Додано",
|
"Added": "Додано",
|
||||||
"AddIndexer": "Додати індексатор",
|
"AddIndexer": "Додати Індексер",
|
||||||
"AddingTag": "Додавання тега",
|
"AddingTag": "Додавання тега",
|
||||||
"AppDataDirectory": "Каталог AppData",
|
"AppDataDirectory": "Каталог AppData",
|
||||||
"AppDataLocationHealthCheckMessage": "Оновлення буде неможливим, щоб запобігти видаленню AppData під час оновлення",
|
"AppDataLocationHealthCheckMessage": "Оновлення буде неможливим, щоб запобігти видаленню AppData під час оновлення",
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
"BypassProxyForLocalAddresses": "Обійти проксі для локальних адрес",
|
"BypassProxyForLocalAddresses": "Обійти проксі для локальних адрес",
|
||||||
"Cancel": "Скасувати",
|
"Cancel": "Скасувати",
|
||||||
"CertificateValidation": "Перевірка сертифіката",
|
"CertificateValidation": "Перевірка сертифіката",
|
||||||
"ChangeHasNotBeenSavedYet": "Зміни ще не збережено",
|
"ChangeHasNotBeenSavedYet": "Зміни ще не набрали чинності",
|
||||||
"Clear": "Очистити",
|
"Clear": "Очистити",
|
||||||
"ClientPriority": "Пріоритет клієнта",
|
"ClientPriority": "Пріоритет клієнта",
|
||||||
"CloneProfile": "Клонувати профіль",
|
"CloneProfile": "Клонувати профіль",
|
||||||
@@ -57,12 +57,12 @@
|
|||||||
"BackupFolderHelpText": "Відносні шляхи будуть у каталозі AppData {appName}",
|
"BackupFolderHelpText": "Відносні шляхи будуть у каталозі AppData {appName}",
|
||||||
"BindAddressHelpText": "Дійсна адреса IP або '*' для всіх інтерфейсів",
|
"BindAddressHelpText": "Дійсна адреса IP або '*' для всіх інтерфейсів",
|
||||||
"BranchUpdate": "Гілка для оновлення {appName}",
|
"BranchUpdate": "Гілка для оновлення {appName}",
|
||||||
"AllIndexersHiddenDueToFilter": "Всі індексатори приховані відповідно до застосованого фільтра.",
|
"AllIndexersHiddenDueToFilter": "Всі фільми заховані відповідно до фільтра.",
|
||||||
"AnalyticsEnabledHelpText": "Надсилайте анонімну інформацію про використання та помилки на сервери {appName}. Це включає інформацію про ваш веб-переглядач, які сторінки {appName} WebUI ви використовуєте, звіти про помилки, а також версію ОС і часу виконання. Ми будемо використовувати цю інформацію, щоб визначити пріоритети функцій і виправлення помилок.",
|
"AnalyticsEnabledHelpText": "Надсилайте анонімну інформацію про використання та помилки на сервери {appName}. Це включає інформацію про ваш веб-переглядач, які сторінки {appName} WebUI ви використовуєте, звіти про помилки, а також версію ОС і часу виконання. Ми будемо використовувати цю інформацію, щоб визначити пріоритети функцій і виправлення помилок.",
|
||||||
"Delete": "Видалити",
|
"Delete": "Видалити",
|
||||||
"DeleteApplicationMessageText": "Ви впевнені, що хочете видалити застосунок '{name}'?",
|
"DeleteApplicationMessageText": "Ви впевнені, що хочете видалити клієнт завантаження '{0}'?",
|
||||||
"DeleteTagMessageText": "Ви впевнені, що хочете видалити тег '{label}'?",
|
"DeleteTagMessageText": "Ви впевнені, що хочете видалити тег '{label}'?",
|
||||||
"DeleteIndexerProxyMessageText": "Ви впевнені, що хочете видалити проксі індексатора '{name}'?",
|
"DeleteIndexerProxyMessageText": "Ви впевнені, що хочете видалити тег {0} ?",
|
||||||
"DeleteNotificationMessageText": "Ви впевнені, що хочете видалити сповіщення '{name}'?",
|
"DeleteNotificationMessageText": "Ви впевнені, що хочете видалити сповіщення '{name}'?",
|
||||||
"YesCancel": "Так, скасувати",
|
"YesCancel": "Так, скасувати",
|
||||||
"InstanceName": "Ім'я екземпляра",
|
"InstanceName": "Ім'я екземпляра",
|
||||||
@@ -80,8 +80,8 @@
|
|||||||
"UnableToLoadTags": "Не вдалося завантажити теги",
|
"UnableToLoadTags": "Не вдалося завантажити теги",
|
||||||
"UpdateAutomaticallyHelpText": "Автоматичне завантаження та встановлення оновлень. Ви все ще зможете встановити з System: Updates",
|
"UpdateAutomaticallyHelpText": "Автоматичне завантаження та встановлення оновлень. Ви все ще зможете встановити з System: Updates",
|
||||||
"Uptime": "Час роботи",
|
"Uptime": "Час роботи",
|
||||||
"URLBase": "Базовий URL",
|
"URLBase": "URL-адреса",
|
||||||
"DownloadClients": "Клієнти завантаження",
|
"DownloadClients": "Клієнти завантажувачів",
|
||||||
"DownloadClientSettings": "Налаштування клієнта завантаження",
|
"DownloadClientSettings": "Налаштування клієнта завантаження",
|
||||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Завантаження клієнтів недоступне через помилки: {downloadClientNames}",
|
"DownloadClientStatusSingleClientHealthCheckMessage": "Завантаження клієнтів недоступне через помилки: {downloadClientNames}",
|
||||||
"Edit": "Редагувати",
|
"Edit": "Редагувати",
|
||||||
@@ -102,8 +102,8 @@
|
|||||||
"Today": "Сьогодні",
|
"Today": "Сьогодні",
|
||||||
"Tomorrow": "Завтра",
|
"Tomorrow": "Завтра",
|
||||||
"Torrents": "Торренти",
|
"Torrents": "Торренти",
|
||||||
"OnHealthIssueHelpText": "При проблемі зі станом системи",
|
"OnHealthIssueHelpText": "Про питання здоров'я",
|
||||||
"OpenBrowserOnStart": "Відкривати браузер при запуску",
|
"OpenBrowserOnStart": "Відкрийте браузер при запуску",
|
||||||
"Options": "Опції",
|
"Options": "Опції",
|
||||||
"PackageVersion": "Версія пакета",
|
"PackageVersion": "Версія пакета",
|
||||||
"Protocol": "Протокол",
|
"Protocol": "Протокол",
|
||||||
@@ -131,12 +131,12 @@
|
|||||||
"UILanguage": "Мова інтерфейсу користувача",
|
"UILanguage": "Мова інтерфейсу користувача",
|
||||||
"UISettings": "Налаштування інтерфейсу користувача",
|
"UISettings": "Налаштування інтерфейсу користувача",
|
||||||
"EnableSSL": "Увімкнути SSL",
|
"EnableSSL": "Увімкнути SSL",
|
||||||
"HomePage": "Домашня сторінка застосунку",
|
"HomePage": "Домашня сторінка",
|
||||||
"Hostname": "Ім'я хоста",
|
"Hostname": "Ім'я хоста",
|
||||||
"DeleteNotification": "Видалити сповіщення",
|
"DeleteNotification": "Видалити сповіщення",
|
||||||
"IndexerStatusUnavailableHealthCheckMessage": "Індексатори недоступні через помилки: {indexerNames}",
|
"IndexerStatusUnavailableHealthCheckMessage": "Індексатори недоступні через помилки: {indexerNames}",
|
||||||
"Info": "Інформація",
|
"Info": "Інформація",
|
||||||
"InstanceNameHelpText": "Ім’я екземпляра на вкладці та ім’я застосунку Syslog",
|
"InstanceNameHelpText": "Ім’я екземпляра на вкладці та ім’я програми Syslog",
|
||||||
"InteractiveSearch": "Інтерактивний пошук",
|
"InteractiveSearch": "Інтерактивний пошук",
|
||||||
"KeyboardShortcuts": "Гарячі клавіши",
|
"KeyboardShortcuts": "Гарячі клавіши",
|
||||||
"Language": "Мова",
|
"Language": "Мова",
|
||||||
@@ -146,9 +146,9 @@
|
|||||||
"Name": "Ім'я",
|
"Name": "Ім'я",
|
||||||
"NoChanges": "Жодних змін",
|
"NoChanges": "Жодних змін",
|
||||||
"NoUpdatesAreAvailable": "Немає оновлень",
|
"NoUpdatesAreAvailable": "Немає оновлень",
|
||||||
"OnApplicationUpdate": "При оновленні застосунку",
|
"OnApplicationUpdate": "Оновлення програми",
|
||||||
"OnApplicationUpdateHelpText": "При оновленні застосунку",
|
"OnApplicationUpdateHelpText": "Оновлення програми",
|
||||||
"OnHealthIssue": "При проблемі зі станом",
|
"OnHealthIssue": "Про питання здоров'я",
|
||||||
"Password": "Пароль",
|
"Password": "Пароль",
|
||||||
"PendingChangesDiscardChanges": "Відкинути зміни та залишити",
|
"PendingChangesDiscardChanges": "Відкинути зміни та залишити",
|
||||||
"Port": "Порт",
|
"Port": "Порт",
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
"UnsavedChanges": "Незбережені зміни",
|
"UnsavedChanges": "Незбережені зміни",
|
||||||
"UnselectAll": "Скасувати вибір усіх",
|
"UnselectAll": "Скасувати вибір усіх",
|
||||||
"UpdateStartupNotWritableHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка запуску \"{startupFolder}\" не може бути записана користувачем \"{userName}\".",
|
"UpdateStartupNotWritableHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка запуску \"{startupFolder}\" не може бути записана користувачем \"{userName}\".",
|
||||||
"UpdateStartupTranslocationHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка запуску \"{startupFolder}\" знаходиться в папці переміщення застосунку.",
|
"UpdateStartupTranslocationHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка запуску \"{startupFolder}\" знаходиться в папці переміщення програми.",
|
||||||
"UpdateUiNotWritableHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка інтерфейсу користувача \"{uiFolder}\" не може бути записана користувачем \"{userName}\".",
|
"UpdateUiNotWritableHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка інтерфейсу користувача \"{uiFolder}\" не може бути записана користувачем \"{userName}\".",
|
||||||
"Updates": "Оновлення",
|
"Updates": "Оновлення",
|
||||||
"UrlBaseHelpText": "Для підтримки зворотного проксі-сервера значення за умовчанням порожнє",
|
"UrlBaseHelpText": "Для підтримки зворотного проксі-сервера значення за умовчанням порожнє",
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
"Exception": "Виняток",
|
"Exception": "Виняток",
|
||||||
"ExistingTag": "Існуючий тег",
|
"ExistingTag": "Існуючий тег",
|
||||||
"Failed": "Не вдалося",
|
"Failed": "Не вдалося",
|
||||||
"FeatureRequests": "Запити на функції",
|
"FeatureRequests": "Майбутні запити",
|
||||||
"Events": "Події",
|
"Events": "Події",
|
||||||
"Fixed": "Виправлено",
|
"Fixed": "Виправлено",
|
||||||
"Filters": "Фільтри",
|
"Filters": "Фільтри",
|
||||||
@@ -213,12 +213,12 @@
|
|||||||
"Folder": "Папка",
|
"Folder": "Папка",
|
||||||
"General": "Загальний",
|
"General": "Загальний",
|
||||||
"GeneralSettings": "Загальні налаштування",
|
"GeneralSettings": "Загальні налаштування",
|
||||||
"Health": "Стан системи",
|
"Health": "Здоров'я",
|
||||||
"HideAdvanced": "Сховати додаткові",
|
"HideAdvanced": "Сховати додаткові",
|
||||||
"History": "Історія",
|
"History": "Історія",
|
||||||
"IgnoredAddresses": "Ігноровані адреси",
|
"IgnoredAddresses": "Ігноровані адреси",
|
||||||
"IllRestartLater": "Я перезапущу пізніше",
|
"IllRestartLater": "Я перезапущу пізніше",
|
||||||
"IncludeHealthWarningsHelpText": "Включити попередження про стан системи",
|
"IncludeHealthWarningsHelpText": "Включайте попередження про здоров’я",
|
||||||
"Indexer": "Індексатор",
|
"Indexer": "Індексатор",
|
||||||
"IndexerPriority": "Пріоритет індексатора",
|
"IndexerPriority": "Пріоритет індексатора",
|
||||||
"LogLevel": "Рівень журналу",
|
"LogLevel": "Рівень журналу",
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
"NextExecution": "Наступне виконання",
|
"NextExecution": "Наступне виконання",
|
||||||
"NoBackupsAreAvailable": "Немає резервних копій",
|
"NoBackupsAreAvailable": "Немає резервних копій",
|
||||||
"NoLinks": "Немає посилань",
|
"NoLinks": "Немає посилань",
|
||||||
"OpenThisModal": "Відкрити це модальне вікно",
|
"OpenThisModal": "Відкрийте цей модальний вікно",
|
||||||
"ProxyBadRequestHealthCheckMessage": "Не вдалося перевірити проксі. Код стану: {statusCode}",
|
"ProxyBadRequestHealthCheckMessage": "Не вдалося перевірити проксі. Код стану: {statusCode}",
|
||||||
"ReleaseStatus": "Статус випуску",
|
"ReleaseStatus": "Статус випуску",
|
||||||
"Refresh": "Оновити",
|
"Refresh": "Оновити",
|
||||||
@@ -258,7 +258,7 @@
|
|||||||
"LastExecution": "Останнє виконання",
|
"LastExecution": "Останнє виконання",
|
||||||
"LogFiles": "Файли журналів",
|
"LogFiles": "Файли журналів",
|
||||||
"LogLevelTraceHelpTextWarning": "Журнал трасування слід увімкнути лише тимчасово",
|
"LogLevelTraceHelpTextWarning": "Журнал трасування слід увімкнути лише тимчасово",
|
||||||
"Manual": "Вручну",
|
"Manual": "Інструкція",
|
||||||
"MappedDrivesRunningAsService": "Підключені мережеві диски недоступні під час роботи як служби Windows. Щоб отримати додаткову інформацію, перегляньте FAQ",
|
"MappedDrivesRunningAsService": "Підключені мережеві диски недоступні під час роботи як служби Windows. Щоб отримати додаткову інформацію, перегляньте FAQ",
|
||||||
"MovieIndexScrollBottom": "Індекс фільму: прокрутка внизу",
|
"MovieIndexScrollBottom": "Індекс фільму: прокрутка внизу",
|
||||||
"MovieIndexScrollTop": "Індекс фільму: прокрутка вгору",
|
"MovieIndexScrollTop": "Індекс фільму: прокрутка вгору",
|
||||||
@@ -277,7 +277,7 @@
|
|||||||
"Details": "Подробиці",
|
"Details": "Подробиці",
|
||||||
"Disabled": "Вимкнено",
|
"Disabled": "Вимкнено",
|
||||||
"Discord": "Discord",
|
"Discord": "Discord",
|
||||||
"DownloadClient": "Клієнт завантаження",
|
"DownloadClient": "Клієнт завантажувача",
|
||||||
"Donations": "Пожертви",
|
"Donations": "Пожертви",
|
||||||
"DownloadClientStatusAllClientHealthCheckMessage": "Усі клієнти завантаження недоступні через збої",
|
"DownloadClientStatusAllClientHealthCheckMessage": "Усі клієнти завантаження недоступні через збої",
|
||||||
"Enable": "Увімкнути",
|
"Enable": "Увімкнути",
|
||||||
@@ -293,38 +293,38 @@
|
|||||||
"SuggestTranslationChange": "Запропонуйте зміну перекладу",
|
"SuggestTranslationChange": "Запропонуйте зміну перекладу",
|
||||||
"TableOptionsColumnsMessage": "Виберіть, які стовпці відображаються та в якому порядку вони відображаються",
|
"TableOptionsColumnsMessage": "Виберіть, які стовпці відображаються та в якому порядку вони відображаються",
|
||||||
"SystemTimeHealthCheckMessage": "Системний час вимкнено більш ніж на 1 день. Заплановані завдання можуть не працювати належним чином, доки час не буде виправлено",
|
"SystemTimeHealthCheckMessage": "Системний час вимкнено більш ніж на 1 день. Заплановані завдання можуть не працювати належним чином, доки час не буде виправлено",
|
||||||
"OnGrab": "При захопленні релізу",
|
"OnGrab": "При захопленні",
|
||||||
"SSLCertPath": "Шлях сертифіката SSL",
|
"SSLCertPath": "Шлях сертифіката SSL",
|
||||||
"UI": "Інтерфейс користувача",
|
"UI": "Інтерфейс користувача",
|
||||||
"Reddit": "Reddit",
|
"Reddit": "Reddit",
|
||||||
"Rss": "RSS-канал",
|
"Rss": "RSS",
|
||||||
"Seeders": "Сиди",
|
"Seeders": "Сиди",
|
||||||
"Wiki": "Wiki",
|
"Wiki": "Wiki",
|
||||||
"Grabbed": "Схоплено",
|
"Grabbed": "Захоплений",
|
||||||
"Logging": "Журналування",
|
"Logging": "Журналування",
|
||||||
"NetCore": ".NET",
|
"NetCore": ".NET",
|
||||||
"Peers": "Піри",
|
"Peers": "Піри",
|
||||||
"Usenet": "Usenet",
|
"Usenet": "Usenet",
|
||||||
"SSLCertPassword": "Пароль SSL сертифіката",
|
"SSLCertPassword": "Пароль SSL сертифіката",
|
||||||
"MaintenanceRelease": "Випуск обслуговування: виправлення помилок та інші покращення. Докладніше дивіться в історії комітів на Github",
|
"MaintenanceRelease": "Випуск для обслуговування: виправлення помилок та інші покращення. Щоб отримати докладнішу інформацію, перегляньте історію фіксації Github",
|
||||||
"ThemeHelpText": "Змініть тему інтерфейсу застосунку, тема 'Авто' використовуватиме вашу тему ОС, щоб установити світлий або темний режим. Натхненний {inspiredBy}.",
|
"ThemeHelpText": "Змініть тему інтерфейсу додатка, тема «Авто» використовуватиме вашу тему ОС, щоб установити світлий або темний режим. Натхненний Theme.Park",
|
||||||
"UILanguageHelpText": "Мова, яку {appName} використовуватиме для інтерфейсу користувача",
|
"UILanguageHelpText": "Мова, яку {appName} використовуватиме для інтерфейсу користувача",
|
||||||
"UpdateMechanismHelpText": "Використайте вбудоване оновлення {appName}'у або скрипт",
|
"UpdateMechanismHelpText": "Використайте вбудоване оновлення {appName}'у або скрипт",
|
||||||
"ApplicationStatusCheckSingleClientMessage": "Застосунки недоступні через помилки: {0}",
|
"ApplicationStatusCheckSingleClientMessage": "Списки недоступні через помилки: {0}",
|
||||||
"ApplicationStatusCheckAllClientMessage": "Усі застосунки недоступні через помилки",
|
"ApplicationStatusCheckAllClientMessage": "Усі списки недоступні через помилки",
|
||||||
"LaunchBrowserHelpText": " Відкрити веб-браузер і перейти на домашню сторінку {appName} під час запуску застосунку.",
|
"LaunchBrowserHelpText": " Відкрийте веб-браузер і перейдіть на домашню сторінку {appName} під час запуску програми.",
|
||||||
"Torrent": "Торрент",
|
"Torrent": "Торренти",
|
||||||
"TagsHelpText": "Застосовується до індексаторів з принаймні одним відповідним тегом",
|
"TagsHelpText": "Застосовується до фільмів із принаймні одним відповідним тегом",
|
||||||
"EnableRss": "Увімкнути RSS",
|
"EnableRss": "Увімкнути RSS",
|
||||||
"HistoryCleanupDaysHelpText": "Встановіть значення 0, щоб вимкнути автоматичне очищення",
|
"HistoryCleanupDaysHelpText": "Встановіть значення 0, щоб вимкнути автоматичне очищення",
|
||||||
"HistoryCleanupDaysHelpTextWarning": "Записи історії, старші за вибрану кількість днів, будуть очищені автоматично",
|
"HistoryCleanupDaysHelpTextWarning": "Файли в кошику, старші за вибрану кількість днів, будуть очищені автоматично",
|
||||||
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Усі індексатори недоступні через збої",
|
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Усі індексатори недоступні через збої",
|
||||||
"IndexerProxyStatusUnavailableHealthCheckMessage": "Індексатори недоступні через помилки: {indexerProxyNames}",
|
"IndexerProxyStatusUnavailableHealthCheckMessage": "Індексатори недоступні через помилки: {indexerProxyNames}",
|
||||||
"ReleaseBranchCheckOfficialBranchMessage": "Гілка {0} не є дійсною гілкою випуску {appName}, ви не отримуватимете оновлення",
|
"ReleaseBranchCheckOfficialBranchMessage": "Гілка {0} не є дійсною гілкою випуску {appName}, ви не отримуватимете оновлення",
|
||||||
"UnableToAddANewApplicationPleaseTryAgain": "Не вдалося додати новий застосунок, спробуйте ще раз.",
|
"UnableToAddANewApplicationPleaseTryAgain": "Не вдалося додати нове сповіщення, спробуйте ще раз.",
|
||||||
"UnableToAddANewAppProfilePleaseTryAgain": "Не вдалося додати новий профіль застосунку, спробуйте ще раз.",
|
"UnableToAddANewAppProfilePleaseTryAgain": "Не вдалося додати новий профіль якості, спробуйте ще раз.",
|
||||||
"UnableToAddANewIndexerProxyPleaseTryAgain": "Не вдалося додати новий проксі індексатора, спробуйте ще раз.",
|
"UnableToAddANewIndexerProxyPleaseTryAgain": "Не вдалося додати новий індексатор, спробуйте ще раз.",
|
||||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent, наданий застосунком, який викликав API",
|
"UserAgentProvidedByTheAppThatCalledTheAPI": "Агент користувача, наданий програмою, яка викликала API",
|
||||||
"EnableAutomaticSearchHelpText": "Використовуватиметься, коли автоматичний пошук виконується через інтерфейс користувача або {appName}",
|
"EnableAutomaticSearchHelpText": "Використовуватиметься, коли автоматичний пошук виконується через інтерфейс користувача або {appName}",
|
||||||
"Encoding": "Кодування",
|
"Encoding": "Кодування",
|
||||||
"ForMoreInformationOnTheIndividualDownloadClients": "Щоб отримати додаткові відомості про окремі клієнти для завантаження, натисніть кнопки додаткових відомостей.",
|
"ForMoreInformationOnTheIndividualDownloadClients": "Щоб отримати додаткові відомості про окремі клієнти для завантаження, натисніть кнопки додаткових відомостей.",
|
||||||
@@ -332,37 +332,37 @@
|
|||||||
"GrabReleases": "Захопити реліз",
|
"GrabReleases": "Захопити реліз",
|
||||||
"Grabs": "Захопити",
|
"Grabs": "Захопити",
|
||||||
"Link": "Посилання",
|
"Link": "Посилання",
|
||||||
"ApplicationLongTermStatusCheckAllClientMessage": "Усі застосунки недоступні через збої більше 6 годин",
|
"ApplicationLongTermStatusCheckAllClientMessage": "Усі індексатори недоступні через збої більше 6 годин",
|
||||||
"ApplicationLongTermStatusCheckSingleClientMessage": "Застосунки недоступні через збої більше 6 годин: {0}",
|
"ApplicationLongTermStatusCheckSingleClientMessage": "Індексатори недоступні через збої більше 6 годин: {0}",
|
||||||
"Remove": "Видалити",
|
"Remove": "Видалити",
|
||||||
"Replace": "Замінити",
|
"Replace": "Замінити",
|
||||||
"OnLatestVersion": "Остання версія {appName} вже встановлена",
|
"OnLatestVersion": "Остання версія {appName} вже встановлена",
|
||||||
"ApplicationURL": "URL застосунку",
|
"ApplicationURL": "URL програми",
|
||||||
"Theme": "Тема",
|
"Theme": "Тема",
|
||||||
"ApplyTagsHelpTextAdd": "Додати: додати теги до наявного списку тегів",
|
"ApplyTagsHelpTextAdd": "Додати: додати теги до наявного списку тегів",
|
||||||
"ApplyTagsHelpTextHowToApplyApplications": "Як застосувати теги до вибраних застосунків",
|
"ApplyTagsHelpTextHowToApplyApplications": "Як застосувати теги до вибраних фільмів",
|
||||||
"DeleteSelectedApplicationsMessageText": "Ви впевнені, що хочете видалити {count} вибраних застосунків?",
|
"DeleteSelectedApplicationsMessageText": "Ви впевнені, що хочете видалити тег {0} ?",
|
||||||
"DeleteSelectedDownloadClients": "Видалити клієнт(и) завантаження",
|
"DeleteSelectedDownloadClients": "Видалити клієнт(и) завантаження",
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Ви впевнені, що хочете видалити {count} вибраних клієнтів завантаження?",
|
"DeleteSelectedDownloadClientsMessageText": "Ви впевнені, що хочете видалити тег {0} ?",
|
||||||
"ApplyTagsHelpTextHowToApplyIndexers": "Як застосувати теги до вибраних індексаторів",
|
"ApplyTagsHelpTextHowToApplyIndexers": "Як застосувати теги до вибраних індексаторів",
|
||||||
"ApplyTagsHelpTextRemove": "Видалити: видалити введені теги",
|
"ApplyTagsHelpTextRemove": "Видалити: видалити введені теги",
|
||||||
"DeleteSelectedIndexersMessageText": "Ви впевнені, що хочете видалити {count} вибраних індексаторів?",
|
"DeleteSelectedIndexersMessageText": "Ви впевнені, що хочете видалити тег {0} ?",
|
||||||
"DownloadClientPriorityHelpText": "Надайте пріоритет кільком клієнтам завантаження. Круговий алгоритм використовується для клієнтів з таким же пріоритетом.",
|
"DownloadClientPriorityHelpText": "Надайте пріоритет кільком клієнтам завантаження. Круговий алгоритм використовується для клієнтів з таким же пріоритетом.",
|
||||||
"ApplyTagsHelpTextReplace": "Замінити: Змінити наявні теги на введені теги (залишіть порожнім, щоб очистити всі теги)",
|
"ApplyTagsHelpTextReplace": "Замінити: Змінити наявні теги на введені теги (залишіть порожнім, щоб очистити всі теги)",
|
||||||
"ApplicationUrlHelpText": "Зовнішня URL-адреса застосунку з http(s)://, портом і базовим URL",
|
"ApplicationUrlHelpText": "Зовнішня URL-адреса цієї програми, включаючи http(s)://, порт і базу URL-адрес",
|
||||||
"More": "Більше",
|
"More": "Більше",
|
||||||
"Track": "Трек",
|
"Track": "Трасувати",
|
||||||
"Year": "Рік",
|
"Year": "Рік",
|
||||||
"UpdateAvailableHealthCheckMessage": "Доступне нове оновлення: {version}",
|
"UpdateAvailableHealthCheckMessage": "Доступне нове оновлення: {version}",
|
||||||
"Genre": "Жанр",
|
"Genre": "Жанри",
|
||||||
"ConnectionLostReconnect": "{appName} спробує підключитися автоматично, або ви можете натиснути «Перезавантажити» нижче.",
|
"ConnectionLostReconnect": "{appName} спробує підключитися автоматично, або ви можете натиснути «Перезавантажити» нижче.",
|
||||||
"ConnectionLostToBackend": "{appName} втратив з’єднання з серверною частиною, і його потрібно перезавантажити, щоб відновити роботу.",
|
"ConnectionLostToBackend": "{appName} втратив з’єднання з серверною частиною, і його потрібно перезавантажити, щоб відновити роботу.",
|
||||||
"DeleteAppProfileMessageText": "Ви впевнені, що хочете видалити профіль застосунку '{name}'?",
|
"DeleteAppProfileMessageText": "Ви впевнені, що хочете видалити цей профіль затримки?",
|
||||||
"RecentChanges": "Останні зміни",
|
"RecentChanges": "Останні зміни",
|
||||||
"minutes": "Хвилин",
|
"minutes": "Хвилин",
|
||||||
"WhatsNew": "Що нового ?",
|
"WhatsNew": "Що нового ?",
|
||||||
"NotificationStatusAllClientHealthCheckMessage": "Усі сповіщення недоступні через помилки",
|
"NotificationStatusAllClientHealthCheckMessage": "Усі списки недоступні через помилки",
|
||||||
"NotificationStatusSingleClientHealthCheckMessage": "Сповіщення недоступні через помилки: {notificationNames}",
|
"NotificationStatusSingleClientHealthCheckMessage": "Списки недоступні через помилки: {notificationNames}",
|
||||||
"AuthBasic": "Основний (спливаюче вікно браузера)",
|
"AuthBasic": "Основний (спливаюче вікно браузера)",
|
||||||
"AuthForm": "Форми (сторінка входу)",
|
"AuthForm": "Форми (сторінка входу)",
|
||||||
"DisabledForLocalAddresses": "Вимкнено для локальних адрес",
|
"DisabledForLocalAddresses": "Вимкнено для локальних адрес",
|
||||||
@@ -370,21 +370,21 @@
|
|||||||
"ResetAPIKeyMessageText": "Ви впевнені, що хочете скинути свій ключ API?",
|
"ResetAPIKeyMessageText": "Ви впевнені, що хочете скинути свій ключ API?",
|
||||||
"AddConnection": "Додати Підключення",
|
"AddConnection": "Додати Підключення",
|
||||||
"RestartProwlarr": "Перезавантажити {appName}",
|
"RestartProwlarr": "Перезавантажити {appName}",
|
||||||
"EditApplicationImplementation": "Редагувати застосунок - {implementationName}",
|
"EditApplicationImplementation": "Додати умому",
|
||||||
"EditConnectionImplementation": "Редагувати підключення - {implementationName}",
|
"EditConnectionImplementation": "Додати умому",
|
||||||
"EditIndexerImplementation": "Редагувати індексатор - {implementationName}",
|
"EditIndexerImplementation": "Додати умому",
|
||||||
"AddConnectionImplementation": "Додати Підключення - {implementationName}",
|
"AddConnectionImplementation": "Додати Підключення - {implementationName}",
|
||||||
"AddApplicationImplementation": "Додати застосунок - {implementationName}",
|
"AddApplicationImplementation": "Додати умому",
|
||||||
"AddIndexerImplementation": "Додати індексатор - {implementationName}",
|
"AddIndexerImplementation": "Додати індексер - {implementationName}",
|
||||||
"AddIndexerProxyImplementation": "Додати проксі індексатора - {implementationName}",
|
"AddIndexerProxyImplementation": "Додати умому",
|
||||||
"EditIndexerProxyImplementation": "Редагувати проксі індексатора - {implementationName}",
|
"EditIndexerProxyImplementation": "Додати умому",
|
||||||
"AddCustomFilter": "Додати власний фільтр",
|
"AddCustomFilter": "Додати власний фільтр",
|
||||||
"AddDownloadClientImplementation": "Додати клієнт завантаження - {implementationName}",
|
"AddDownloadClientImplementation": "Додати клієнт завантаження - {implementationName}",
|
||||||
"Application": "Застосунок",
|
"Application": "Додатки",
|
||||||
"CountApplicationsSelected": "Вибрано {count} застосунків",
|
"CountApplicationsSelected": "Вибрано колекцій: {0}",
|
||||||
"Applications": "Застосунки",
|
"Applications": "Додатки",
|
||||||
"Categories": "Категорії",
|
"Categories": "Категорії",
|
||||||
"EditDownloadClientImplementation": "Редагувати клієнт завантаження - {implementationName}",
|
"EditDownloadClientImplementation": "Додати клієнт завантаження - {implementationName}",
|
||||||
"ApplyChanges": "Застосувати зміни",
|
"ApplyChanges": "Застосувати зміни",
|
||||||
"AuthenticationMethod": "Метод автентифікації",
|
"AuthenticationMethod": "Метод автентифікації",
|
||||||
"AuthenticationMethodHelpTextWarning": "Виберіть дійсний метод автентифікації",
|
"AuthenticationMethodHelpTextWarning": "Виберіть дійсний метод автентифікації",
|
||||||
@@ -404,7 +404,7 @@
|
|||||||
"DownloadClientFloodSettingsAdditionalTags": "Додаткові теги",
|
"DownloadClientFloodSettingsAdditionalTags": "Додаткові теги",
|
||||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Додаткова спільна папка для розміщення завантажень. Залиште поле порожнім, щоб використовувати стандартне розташування Download Station",
|
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Додаткова спільна папка для розміщення завантажень. Залиште поле порожнім, щоб використовувати стандартне розташування Download Station",
|
||||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Додає префікс до API Flood, наприклад {url}",
|
"DownloadClientFloodSettingsUrlBaseHelpText": "Додає префікс до API Flood, наприклад {url}",
|
||||||
"DownloadClientFreeboxSettingsApiUrl": "URL-адреса API",
|
"DownloadClientFreeboxSettingsApiUrl": "API URL",
|
||||||
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Спочатку завантажте першу та останню частини (qBittorrent 4.1.0+)",
|
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Спочатку завантажте першу та останню частини (qBittorrent 4.1.0+)",
|
||||||
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Завантаження в послідовному порядку (qBittorrent 4.1.0+)",
|
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Завантаження в послідовному порядку (qBittorrent 4.1.0+)",
|
||||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Використовувати безпечне з'єднання. Дивіться параметри -> Web UI -> 'Use HTTPS instead of HTTP' в qBittorrent.",
|
"DownloadClientQbittorrentSettingsUseSslHelpText": "Використовувати безпечне з'єднання. Дивіться параметри -> Web UI -> 'Use HTTPS instead of HTTP' в qBittorrent.",
|
||||||
@@ -412,17 +412,17 @@
|
|||||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Підтвердити новий пароль",
|
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Підтвердити новий пароль",
|
||||||
"DownloadClientAriaSettingsDirectoryHelpText": "Додаткове розташування для розміщення завантажень. Залиште поле порожнім, щоб використовувати стандартне розташування Aria2",
|
"DownloadClientAriaSettingsDirectoryHelpText": "Додаткове розташування для розміщення завантажень. Залиште поле порожнім, щоб використовувати стандартне розташування Aria2",
|
||||||
"ApiKeyValidationHealthCheckMessage": "Будь ласка оновіть ключ API, щоб він містив принаймні {length} символів. Ви можете зробити це в налаштуваннях або в файлі конфігурації",
|
"ApiKeyValidationHealthCheckMessage": "Будь ласка оновіть ключ API, щоб він містив принаймні {length} символів. Ви можете зробити це в налаштуваннях або в файлі конфігурації",
|
||||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "Додаткове розташування для розміщення завантажень. Залиште поле порожнім, щоб використовувати стандартне розташування rTorrent",
|
"DownloadClientRTorrentSettingsDirectoryHelpText": "Додаткове розташування для розміщення завантажень. Залиште поле порожнім, щоб використовувати стандартне розташування Aria2",
|
||||||
"IndexerHDBitsSettingsCodecs": "Кодек",
|
"IndexerHDBitsSettingsCodecs": "Кодек",
|
||||||
"DownloadClientSettingsUrlBaseHelpText": "Додає префікс до URL-адреси {clientName}, наприклад {url}",
|
"DownloadClientSettingsUrlBaseHelpText": "Додає префікс до URL-адреси {connectionName}, наприклад {url}",
|
||||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Додаткове розташування для розміщення завантажень. Залиште поле порожнім, щоб використовувати стандартне розташування Transmission",
|
"DownloadClientTransmissionSettingsDirectoryHelpText": "Додаткове розташування для розміщення завантажень. Залиште поле порожнім, щоб використовувати стандартне розташування Aria2",
|
||||||
"ProxyValidationBadRequest": "Не вдалося перевірити проксі. Код стану: {statusCode}",
|
"ProxyValidationBadRequest": "Не вдалося перевірити проксі. Код стану: {statusCode}",
|
||||||
"CustomFilter": "Користувацький фільтр",
|
"CustomFilter": "Користувацькі фільтри",
|
||||||
"IndexerHDBitsSettingsMediums": "Носії",
|
"IndexerHDBitsSettingsMediums": "Середній",
|
||||||
"Default": "За замовчуванням",
|
"Default": "За замовчуванням",
|
||||||
"GrabRelease": "Отримати реліз",
|
"GrabRelease": "Захопити реліз",
|
||||||
"Clone": "Клонування",
|
"Clone": "Клонування",
|
||||||
"CountDownloadClientsSelected": "Вибрано {count} клієнтів завантаження",
|
"CountDownloadClientsSelected": "Вибрано {count} клієнтів завантажувача",
|
||||||
"Script": "Сценарій",
|
"Script": "Сценарій",
|
||||||
"Any": "Будь-який",
|
"Any": "Будь-який",
|
||||||
"BuiltIn": "Вбудований",
|
"BuiltIn": "Вбудований",
|
||||||
@@ -437,11 +437,11 @@
|
|||||||
"NoEventsFound": "Подій не знайдено",
|
"NoEventsFound": "Подій не знайдено",
|
||||||
"RestartReloadNote": "Примітка: {appName} автоматично перезапуститься та перезавантажить інтерфейс під час процесу відновлення.",
|
"RestartReloadNote": "Примітка: {appName} автоматично перезапуститься та перезавантажить інтерфейс під час процесу відновлення.",
|
||||||
"InstallLatest": "Встановити останній",
|
"InstallLatest": "Встановити останній",
|
||||||
"Mixed": "Змішаний",
|
"Mixed": "Виправлено",
|
||||||
"CurrentlyInstalled": "В даний час встановлено",
|
"CurrentlyInstalled": "В даний час встановлено",
|
||||||
"Season": "Сезон",
|
"Season": "Причина",
|
||||||
"Stats": "Статистика",
|
"Stats": "Статус",
|
||||||
"CountIndexersSelected": "{count} індексатор(ів) обрано",
|
"CountIndexersSelected": "{count} індексер(-и) обрано",
|
||||||
"SeedRatio": "Коефіцієнт роздачі",
|
"SeedRatio": "Коефіцієнт роздачі",
|
||||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Якщо торрент заблоковано хешем, він може не бути належним чином відхилений під час RSS/пошуку для деяких індексаторів. Увімкнення цього параметра дозволить відхилити його після захоплення торента, але до його відправки клієнту.",
|
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Якщо торрент заблоковано хешем, він може не бути належним чином відхилений під час RSS/пошуку для деяких індексаторів. Увімкнення цього параметра дозволить відхилити його після захоплення торента, але до його відправки клієнту.",
|
||||||
"MinimumSeeders": "Мінімум сидерів (роздаючих)",
|
"MinimumSeeders": "Мінімум сидерів (роздаючих)",
|
||||||
@@ -452,10 +452,10 @@
|
|||||||
"days": "дні(в)",
|
"days": "дні(в)",
|
||||||
"XmlRpcPath": "Шлях XML RPC",
|
"XmlRpcPath": "Шлях XML RPC",
|
||||||
"Directory": "Тека",
|
"Directory": "Тека",
|
||||||
"DownloadClientFreeboxSettingsAppId": "ID застосунку",
|
"DownloadClientFreeboxSettingsAppId": "ID додатку",
|
||||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Перше і останнє спочатку",
|
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Перше і останнє спочатку",
|
||||||
"FailedToFetchUpdates": "Не вдалося завантажити оновлення",
|
"FailedToFetchUpdates": "Не вдалося завантажити оновлення",
|
||||||
"OverrideGrabModalTitle": "Перевизначити та отримати - {title}",
|
"OverrideGrabModalTitle": "Перевизначити та захопити - {title}",
|
||||||
"UpdaterLogFiles": "Файли журналу оновлення",
|
"UpdaterLogFiles": "Файли журналу оновлення",
|
||||||
"UseSsl": "Використовувати SSL",
|
"UseSsl": "Використовувати SSL",
|
||||||
"WouldYouLikeToRestoreBackup": "Бажаєте відновити резервну копію '{name}'?",
|
"WouldYouLikeToRestoreBackup": "Бажаєте відновити резервну копію '{name}'?",
|
||||||
@@ -479,7 +479,7 @@
|
|||||||
"EditSelectedDownloadClients": "Редагувати вибрані клієнти завантаження",
|
"EditSelectedDownloadClients": "Редагувати вибрані клієнти завантаження",
|
||||||
"IndexerHDBitsSettingsMediumsHelpText": "Якщо не вказано, використовуються всі параметри.",
|
"IndexerHDBitsSettingsMediumsHelpText": "Якщо не вказано, використовуються всі параметри.",
|
||||||
"IndexerSettingsAdditionalParameters": "Додаткові параметри",
|
"IndexerSettingsAdditionalParameters": "Додаткові параметри",
|
||||||
"IndexerSettingsCookie": "Cookies (кукі)",
|
"IndexerSettingsCookie": "Cookie",
|
||||||
"InstallMajorVersionUpdateMessageLink": "Будь ласка, перевірте [{domain}]({url}) для отримання додаткової інформації.",
|
"InstallMajorVersionUpdateMessageLink": "Будь ласка, перевірте [{domain}]({url}) для отримання додаткової інформації.",
|
||||||
"InvalidUILanguage": "У вашому інтерфейсі встановлена недопустима мова. Виправте її та збережіть налаштування",
|
"InvalidUILanguage": "У вашому інтерфейсі встановлена недопустима мова. Виправте її та збережіть налаштування",
|
||||||
"LogFilesLocation": "Файли журналу знаходяться в: {location}",
|
"LogFilesLocation": "Файли журналу знаходяться в: {location}",
|
||||||
@@ -499,44 +499,44 @@
|
|||||||
"IndexerSettingsSeedRatioHelpText": "Рейтинг, якого має досягти торрент перед зупинкою. Якщо порожньо — використовується значення за замовчуванням клієнта завантаження. Рейтинг має бути не менше 1,0 і відповідати правилам індексаторів",
|
"IndexerSettingsSeedRatioHelpText": "Рейтинг, якого має досягти торрент перед зупинкою. Якщо порожньо — використовується значення за замовчуванням клієнта завантаження. Рейтинг має бути не менше 1,0 і відповідати правилам індексаторів",
|
||||||
"IndexerSettingsSeedTimeHelpText": "Час, протягом якого торрент має залишатися на роздачі перед зупинкою, якщо порожньо — використовується значення клієнта завантаження за замовчуванням",
|
"IndexerSettingsSeedTimeHelpText": "Час, протягом якого торрент має залишатися на роздачі перед зупинкою, якщо порожньо — використовується значення клієнта завантаження за замовчуванням",
|
||||||
"NotificationsTelegramSettingsIncludeAppName": "Включити {appName} у заголовок",
|
"NotificationsTelegramSettingsIncludeAppName": "Включити {appName} у заголовок",
|
||||||
"NotificationsTelegramSettingsIncludeAppNameHelpText": "При необхідності додати до заголовка повідомлення префікс {appName}, щоб відрізняти сповіщення від різних застосунків",
|
"NotificationsTelegramSettingsIncludeAppNameHelpText": "При необхідності додати до заголовка повідомлення префікс {appName}, щоб відрізняти сповіщення від різних додатків",
|
||||||
"DownloadClientQbittorrentSettingsContentLayout": "Макет контента",
|
"DownloadClientQbittorrentSettingsContentLayout": "Макет контента",
|
||||||
"External": "Зовнішній",
|
"External": "Зовнішній",
|
||||||
"TorrentBlackholeTorrentFolder": "Тека торрента",
|
"TorrentBlackholeTorrentFolder": "Тека торрента",
|
||||||
"Donate": "Задонатити",
|
"Donate": "Задонатити",
|
||||||
"EditSelectedIndexers": "Редагувати вибраний індексатор",
|
"EditSelectedIndexers": "Редагувати вибраний індексатор",
|
||||||
"IndexerSettingsSeedTime": "Час сидування",
|
"IndexerSettingsSeedTime": "Час сидіння",
|
||||||
"Label": "Мітка",
|
"Label": "Мітка",
|
||||||
"LabelIsRequired": "Необхідна мітка",
|
"LabelIsRequired": "Необхідна мітка",
|
||||||
"UsenetBlackholeNzbFolder": "Тека NZB",
|
"UsenetBlackholeNzbFolder": "Тека NZB",
|
||||||
"NoHistoryFound": "Історія не знайдена",
|
"NoHistoryFound": "Історія не знайдена",
|
||||||
"NoIndexersFound": "Індексаторів не знайдено",
|
"NoIndexersFound": "Индексаторі не знайдено",
|
||||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Для роботи цього параметра потрібна версія NzbGet не нижче 16.0",
|
"DownloadClientNzbgetSettingsAddPausedHelpText": "Для роботи цього параметра потрібна версія NzbGet не нижче 16.0",
|
||||||
"DownloadClientPneumaticSettingsNzbFolder": "Тека NZB",
|
"DownloadClientPneumaticSettingsNzbFolder": "Тека NZB",
|
||||||
"IndexerHDBitsSettingsCodecsHelpText": "Якщо не вказано, використовуються всі параметри.",
|
"IndexerHDBitsSettingsCodecsHelpText": "Якщо не вказано, використовуються всі параметри.",
|
||||||
"DefaultNameCopiedProfile": "{name} - Копіювати",
|
"DefaultNameCopiedProfile": "{name} - Копіювати",
|
||||||
"Destination": "Місце призначення",
|
"Destination": "Місце призначення",
|
||||||
"DownloadClientFloodSettingsTagsHelpText": "Початкові теги завантаження. Щоб бути розпізнаним, завантаження повинно мати всі початкові теги. Це запобігає конфліктам з незв'язаними завантаженнями.",
|
"DownloadClientFloodSettingsTagsHelpText": "Початкові теги завантаження. Щоб бути розпізнаним, завантаження повинно мати всі початкові теги. Це запобігає конфліктам з незв'язаними завантаженнями.",
|
||||||
"DownloadClientFreeboxSettingsAppIdHelpText": "ID застосунку, отримане під час створення доступу до Freebox API (наприклад, 'app_id')",
|
"DownloadClientFreeboxSettingsAppIdHelpText": "ID програми, отримане під час створення доступу до Freebox API (наприклад, 'app_id')",
|
||||||
"DownloadClientFreeboxSettingsAppToken": "Токен застосунку",
|
"DownloadClientFreeboxSettingsAppToken": "Токен додатку",
|
||||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "Токен застосунку, отриманий під час створення доступу до Freebox API (наприклад, 'app_token')",
|
"DownloadClientFreeboxSettingsAppTokenHelpText": "Токен додатку, отриманий під час створення доступу до Freebox API (наприклад, 'app_token')",
|
||||||
"DownloadClientFreeboxSettingsHostHelpText": "Ім'я хоста або IP-адреса хоста Freebox, за замовчуванням — '{url}' (працює тільки якщо знаходиться в тій самій мережі)",
|
"DownloadClientFreeboxSettingsHostHelpText": "Ім'я хоста або IP-адреса хоста Freebox, за замовчуванням — '{url}' (працює тільки якщо знаходиться в тій самій мережі)",
|
||||||
"DownloadClientFreeboxSettingsPortHelpText": "Порт, що використовується для доступу до інтерфейсу Freebox, за замовчуванням — '{port}'",
|
"DownloadClientFreeboxSettingsPortHelpText": "Порт, що використовується для доступу до інтерфейсу Freebox, за замовчуванням — '{port}'",
|
||||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Початковий стан торрентів, доданих до qBittorrent. Зверніть увагу, що примусові торренти не дотримуються обмежень на роздачу",
|
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Початковий стан торрентів, доданих до qBittorrent. Зверніть увагу, що примусові торренти не дотримуються обмежень на роздачу",
|
||||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Завантажувати послідовно",
|
"DownloadClientQbittorrentSettingsSequentialOrder": "Завантажувати послідовно",
|
||||||
"DownloadClientRTorrentSettingsAddStopped": "Додати зупинені",
|
"DownloadClientRTorrentSettingsAddStopped": "Додати зупинені",
|
||||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Увімкнення додасть торренти та магнет-посилання в rTorrent у зупиненому стані. Це може призвести до пошкодження магнет-файлів.",
|
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Увімкнення додасть торренти та магнет-посилання в rTorrent у зупиненому стані. Це може призвести до пошкодження магнет-файлів.",
|
||||||
"DownloadClientRTorrentSettingsUrlPath": "URL-шлях",
|
"DownloadClientRTorrentSettingsUrlPath": "URL-путь",
|
||||||
"NotificationsEmailSettingsUseEncryptionHelpText": "Виберіть режим шифрування: віддавати перевагу шифруванню, якщо воно налаштоване на сервері; завжди використовувати шифрування через SSL (тільки порт 465) або StartTLS (будь-який інший порт); ніколи не використовувати шифрування",
|
"NotificationsEmailSettingsUseEncryptionHelpText": "Виберіть режим шифрування: віддавати перевагу шифруванню, якщо воно налаштоване на сервері; завжди використовувати шифрування через SSL (тільки порт 465) або StartTLS (будь-який інший порт); ніколи не використовувати шифрування",
|
||||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "Вкажіть базову URL-адресу Freebox API з версією API, наприклад, '{url}', за замовчуванням — '{defaultApiUrl}'",
|
"DownloadClientFreeboxSettingsApiUrlHelpText": "Вкажіть базову URL-адресу Freebox API з версією API, наприклад, '{url}', за замовчуванням — '{defaultApiUrl}'",
|
||||||
"DownloadClientSettingsDestinationHelpText": "Ручне налаштування місця для завантаження, залиште порожнім для використання значення за замовчуванням",
|
"DownloadClientSettingsDestinationHelpText": "Ручне налаштування місця для завантаження, залиште порожнім для використання значення за замовчуванням",
|
||||||
"DownloadClientSettingsUseSslHelpText": "Використовувати захищене з'єднання при підключенні до {clientName}",
|
"DownloadClientSettingsUseSslHelpText": "Використовувати захищене з'єднання при підключенні до {clientName}",
|
||||||
"HealthMessagesInfoBox": "Додаткову інформацію про причину появи цих повідомлень перевірки працездатності можна знайти, перейшовши за посиланням wiki (іконка книги) в кінці рядка або перевірити [журнали]({link}). Якщо у вас виникли труднощі з розумінням цих повідомлень, ви можете звернутися до нашої служби підтримки за посиланнями нижче.",
|
"HealthMessagesInfoBox": "Додаткову інформацію про причину появи цих повідомлень перевірки працездатності можна знайти, перейшовши за посиланням wiki (іконка книги) в кінці рядка або перевірити [журнали]({link}). Якщо у вас виникли труднощі з розумінням цих повідомлень, ви можете звернутися до нашої служби підтримки за посиланнями нижче.",
|
||||||
"IndexerDownloadClientHealthCheckMessage": "Індексатори з недопустимими клієнтами завантаження: {indexerNames}.",
|
"IndexerDownloadClientHealthCheckMessage": "Індексатори з недопустимими клієнтами завантаження: {indexerNames}.",
|
||||||
"Episode": "Трек",
|
"Episode": "Епізод",
|
||||||
"InstallMajorVersionUpdate": "Встановити оновлення",
|
"InstallMajorVersionUpdate": "Встановити оновлення",
|
||||||
"ManageClients": "Керування клієнтами",
|
"ManageClients": "Керування клієнтами",
|
||||||
"PrioritySettings": "Пріоритет: {priority}",
|
"PrioritySettings": "Пріоритет: {0}",
|
||||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Ці налаштування можна знайти в налаштуваннях безпеки вашого PassThePopcorn (Редагувати профіль > Безпека).",
|
"IndexerPassThePopcornSettingsApiUserHelpText": "Ці налаштування можна знайти в налаштуваннях безпеки вашого PassThePopcorn (Редагувати профіль > Безпека).",
|
||||||
"NotificationsEmailSettingsUseEncryption": "Використовувати шифрування",
|
"NotificationsEmailSettingsUseEncryption": "Використовувати шифрування",
|
||||||
"TorrentBlackholeSaveMagnetFiles": "Зберігати магнітні файли",
|
"TorrentBlackholeSaveMagnetFiles": "Зберігати магнітні файли",
|
||||||
@@ -546,10 +546,10 @@
|
|||||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Додає префікс до URL-адреси json, {url}",
|
"DownloadClientDelugeSettingsUrlBaseHelpText": "Додає префікс до URL-адреси json, {url}",
|
||||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Додає префікс до URL-адреси RPC {clientName}, наприклад {url}, за замовчуванням — '{defaultUrl}'",
|
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Додає префікс до URL-адреси RPC {clientName}, наприклад {url}, за замовчуванням — '{defaultUrl}'",
|
||||||
"IndexerSettingsSeedRatio": "Коефіцієнт роздачі",
|
"IndexerSettingsSeedRatio": "Коефіцієнт роздачі",
|
||||||
"ManualGrab": "Отримання вручну",
|
"ManualGrab": "Захват вручну",
|
||||||
"StopSelecting": "Скасувати вибір",
|
"StopSelecting": "Скасувати вибір",
|
||||||
"ActiveApps": "Активні застосунки",
|
"ActiveApps": "Активні додатки",
|
||||||
"ActiveIndexers": "Активні індексатори",
|
"ActiveIndexers": "Активні індексери",
|
||||||
"AppSettingsSummary": "Застосунки та налаштування для конфігурації взаємодії {appName} з вашими PVR-програмами",
|
"AppSettingsSummary": "Застосунки та налаштування для конфігурації взаємодії {appName} з вашими PVR-програмами",
|
||||||
"AppProfileSelectHelpText": "Профілі застосунків використовуються для керування налаштуваннями RSS, автоматичного пошуку та інтерактивного пошуку під час синхронізації застосунку",
|
"AppProfileSelectHelpText": "Профілі застосунків використовуються для керування налаштуваннями RSS, автоматичного пошуку та інтерактивного пошуку під час синхронізації застосунку",
|
||||||
"ApplicationTagsHelpText": "Синхронізувати індексатори з цим застосунком, які мають один або кілька відповідних тегів. Якщо тут не вказано жодного тегу, жоден індексатор не буде виключено із синхронізації через свої теги.",
|
"ApplicationTagsHelpText": "Синхронізувати індексатори з цим застосунком, які мають один або кілька відповідних тегів. Якщо тут не вказано жодного тегу, жоден індексатор не буде виключено із синхронізації через свої теги.",
|
||||||
@@ -559,253 +559,12 @@
|
|||||||
"AdvancedSettingsShownClickToHide": "Розширені налаштування відображено, натисніть, щоб приховати",
|
"AdvancedSettingsShownClickToHide": "Розширені налаштування відображено, натисніть, щоб приховати",
|
||||||
"AddSyncProfile": "Додати профіль синхронізації",
|
"AddSyncProfile": "Додати профіль синхронізації",
|
||||||
"AddDownloadClientToProwlarr": "Додавання клієнта завантаження дозволяє {appName} надсилати релізи безпосередньо з інтерфейсу під час ручного пошуку.",
|
"AddDownloadClientToProwlarr": "Додавання клієнта завантаження дозволяє {appName} надсилати релізи безпосередньо з інтерфейсу під час ручного пошуку.",
|
||||||
"AddNewIndexer": "Додати новий індексатор",
|
"AddNewIndexer": "Додати новий індексер",
|
||||||
"AddRemoveOnly": "Лише додати та видалити",
|
"AddRemoveOnly": "Лише додати та видалити",
|
||||||
"AddedToDownloadClient": "Реліз додано до клієнта",
|
"AddedToDownloadClient": "Реліз додано до клієнта",
|
||||||
"Apps": "Застосунки",
|
"Apps": "Застосунки",
|
||||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Синхронізувати та відхиляти заблоковані за хешем торренти під час збору",
|
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Синхронізувати та відхиляти заблоковані за хешем торренти під час збору",
|
||||||
"ApplicationTagsHelpTextWarning": "Теги слід використовувати обережно, оскільки вони можуть мати непередбачувані наслідки. Застосунок із тегом буде синхронізуватися лише з індексаторами, що мають такий самий тег.",
|
"ApplicationTagsHelpTextWarning": "Теги слід використовувати обережно, оскільки вони можуть мати непередбачувані наслідки. Застосунок із тегом буде синхронізуватися лише з індексаторами, що мають такий самий тег.",
|
||||||
"AddApplication": "Додати застосунок",
|
"AddApplication": "Додати додаток",
|
||||||
"AddCategory": "Додати Категорію",
|
"AddCategory": "Додати Категорію"
|
||||||
"Auth": "Авторизація",
|
|
||||||
"Connect": "Сповіщення",
|
|
||||||
"OverrideAndAddToDownloadClient": "Перевизначити та додати до черги завантажень",
|
|
||||||
"ProxyValidationUnableToConnect": "Не вдалося підключитися до проксі: {exceptionMessage}. Деталі дивіться в журналі цієї помилки",
|
|
||||||
"IndexerId": "ID індексатора",
|
|
||||||
"Notifications": "Сповіщення",
|
|
||||||
"Proxies": "Проксі",
|
|
||||||
"DeleteClientCategory": "Видалити категорію клієнта завантаження",
|
|
||||||
"DownloadClientSettingsDefaultCategoryHelpText": "Додавання спеціальної категорії для {appName} дозволяє уникнути конфліктів із непов’язаними завантаженнями, не пов’язаними з {appName}. Використання категорії необов’язкове, але настійно рекомендується.",
|
|
||||||
"IndexerSettingsPasskey": "Ключ індексатора",
|
|
||||||
"DeleteIndexerProxy": "Видалити проксі індексатора",
|
|
||||||
"IndexerBeyondHDSettingsRefundOnly": "Тільки відшкодування",
|
|
||||||
"IndexerBeyondHDSettingsRewindOnly": "Тільки перемотка",
|
|
||||||
"IndexerSettingsAppsMinimumSeeders": "Мінімум сидерів (роздаючих)",
|
|
||||||
"SeedTimeHelpText": "Час, протягом якого торрент має залишатися на роздачі перед зупинкою, якщо порожньо — використовується значення клієнта завантаження за замовчуванням",
|
|
||||||
"TheLogLevelDefault": "Рівень журналу за замовчуванням має значення 'Debug', і його можна змінити в [Загальних налаштуваннях](/settings/general)",
|
|
||||||
"UnableToLoadAppProfiles": "Не вдалося завантажити профілі застосунків",
|
|
||||||
"AreYouSureYouWantToDeleteCategory": "Ви впевнені, що хочете видалити зіставлену категорію?",
|
|
||||||
"UnableToLoadDevelopmentSettings": "Не вдалося завантажити налаштування розробки",
|
|
||||||
"MovieSearchTypes": "Типи пошуку фільмів",
|
|
||||||
"Notification": "Сповіщення(GUI)",
|
|
||||||
"SyncProfile": "Профіль синхронізації",
|
|
||||||
"AppsMinimumSeeders": "Мінімум сидерів для застосунків",
|
|
||||||
"DeleteSelectedApplications": "Видалити вибрані застосунки",
|
|
||||||
"IndexerProxy": "Проксі індексатора",
|
|
||||||
"IndexerStatus": "Статус індексатора",
|
|
||||||
"IndexerTagsHelpTextWarning": "Теги слід використовувати обережно, оскільки вони можуть мати непередбачувані наслідки. Застосунок із тегом буде синхронізуватися лише з індексаторами, що мають такий самий тег.",
|
|
||||||
"DeleteSelectedIndexer": "Видалити вибраний індексатор",
|
|
||||||
"MovieSearch": "Пошук фільмів",
|
|
||||||
"EditCategory": "Редагувати категорію",
|
|
||||||
"TvSearch": "Пошук серіалів",
|
|
||||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Додавання спеціальної категорії для {appName} дозволяє уникнути конфліктів із непов’язаними завантаженнями, не пов’язаними з {appName}. Використання категорії необов’язкове, але настійно рекомендується. Створює підкаталог [category] у вихідному каталозі.",
|
|
||||||
"EditSyncProfile": "Редагувати профіль синхронізації",
|
|
||||||
"IndexerDownloadClientHelpText": "Укажіть, який клієнт завантаження використовується для захоплення з цього індексатора",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Джерела",
|
|
||||||
"DeleteSelectedIndexers": "Видалити вибрані індексатори",
|
|
||||||
"SyncProfiles": "Профілі синхронізації",
|
|
||||||
"UnableToLoadIndexerProxies": "Не вдалося завантажити проксі індексаторів",
|
|
||||||
"SelectIndexers": "Вибрати індексатори",
|
|
||||||
"AddIndexerProxy": "Додати проксі індексатора",
|
|
||||||
"AppProfileInUse": "Профіль застосунку, що використовується",
|
|
||||||
"AppsMinimumSeedersHelpText": "Мінімальна кількість сідарів, необхідна для завантаження індексатором, порожнє поле означає використання значення за замовчуванням із профілю синхронізації",
|
|
||||||
"AreYouSureYouWantToDeleteIndexer": "Ви впевнені, що хочете видалити '{name}' з {appName}?",
|
|
||||||
"AudioSearch": "Аудіопошук",
|
|
||||||
"AuthQueries": "Запити автентифікації",
|
|
||||||
"IndexerInfo": "Інформація про індексатор",
|
|
||||||
"IndexerProxies": "Проксі індексаторів",
|
|
||||||
"SearchIndexers": "Пошук індексаторів",
|
|
||||||
"BookSearchTypes": "Типи пошуку книг",
|
|
||||||
"MusicSearchTypes": "Типи пошуку музики",
|
|
||||||
"SearchTypes": "Типи пошуку",
|
|
||||||
"DownloadClientCategory": "Категорія клієнта завантаження",
|
|
||||||
"PackSeedTimeHelpText": "Час, протягом якого торрент має залишатися на роздачі перед зупинкою, якщо порожньо — використовується значення клієнта завантаження за замовчуванням",
|
|
||||||
"SeedRatioHelpText": "Коефіцієнт роздачі, якого повинен досягти торрент перед зупинкою, якщо порожньо — використовується значення застосунку за замовчуванням",
|
|
||||||
"IndexerBeyondHDSettingsSearchTypes": "Типи пошуку",
|
|
||||||
"IndexerSettingsAppsMinimumSeedersHelpText": "Мінімальна кількість сідарів, необхідна для завантаження індексатором, порожнє поле означає використання значення за замовчуванням із профілю синхронізації",
|
|
||||||
"IndexerSettingsPackSeedTimeIndexerHelpText": "Час, протягом якого торрент має залишатися на роздачі перед зупинкою, якщо порожньо — використовується значення клієнта завантаження за замовчуванням",
|
|
||||||
"AverageGrabs": "Середня кількість захоплень",
|
|
||||||
"AverageQueries": "Середня кількість запитів",
|
|
||||||
"AverageResponseTimesMs": "Середній час відповіді індексатора (мс)",
|
|
||||||
"BasicSearch": "Базовий пошук",
|
|
||||||
"Book": "Книга",
|
|
||||||
"BookSearch": "Пошук книг",
|
|
||||||
"ClearHistory": "Очистити історію",
|
|
||||||
"ClearHistoryMessageText": "Ви впевнені, що хочете очистити всю історію {appName}?",
|
|
||||||
"ClickToChangeQueryOptions": "Натисніть, щоб змінити параметри запиту",
|
|
||||||
"ConnectSettingsSummary": "Сповіщення та користувацькі скрипти",
|
|
||||||
"CountIndexersAvailable": "Доступно {count} індексаторів",
|
|
||||||
"DefaultCategory": "Категорія за замовчуванням",
|
|
||||||
"DeleteAppProfile": "Видалити профіль застосунку",
|
|
||||||
"DeleteApplication": "Видалити застосунок",
|
|
||||||
"DownloadClientsSettingsSummary": "Конфігурація клієнтів завантаження для інтеграції в пошук інтерфейсу {appName}",
|
|
||||||
"ElapsedTime": "Час, що минув",
|
|
||||||
"EnableIndexer": "Увімкнути індексатор",
|
|
||||||
"EnableRssHelpText": "Увімкнути RSS-стрічку для індексатора",
|
|
||||||
"EnabledRedirected": "Увімкнено, перенаправлено",
|
|
||||||
"FilterPlaceHolder": "Пошук індексаторів",
|
|
||||||
"FoundCountReleases": "Знайдено {itemCount} релізів",
|
|
||||||
"FullSync": "Повна синхронізація",
|
|
||||||
"GoToApplication": "Перейти до застосунку",
|
|
||||||
"GrabTitle": "Захопити заголовок",
|
|
||||||
"HistoryCleanup": "Очищення історії",
|
|
||||||
"HistoryDetails": "Деталі історії",
|
|
||||||
"Id": "ID",
|
|
||||||
"IncludeManualGrabsHelpText": "Включити ручні захоплення, зроблені в {appName}",
|
|
||||||
"IndexerAlphaRatioSettingsExcludeScene": "Виключити SCENE",
|
|
||||||
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "Виключити SCENE релізи з результатів",
|
|
||||||
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Шукати лише freeleech релізи",
|
|
||||||
"IndexerAlreadySetup": "Принаймні один екземпляр індексатора вже налаштовано",
|
|
||||||
"IndexerAuth": "Авторизація індексатора",
|
|
||||||
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Шукати лише freeleech релізи",
|
|
||||||
"IndexerAvistazSettingsPasswordHelpText": "Пароль сайту",
|
|
||||||
"IndexerAvistazSettingsPidHelpText": "PID зі сторінки Мій акаунт або Мій профіль",
|
|
||||||
"IndexerAvistazSettingsUsernameHelpText": "Ім'я користувача сайту",
|
|
||||||
"IndexerAvistazSettingsUsernameHelpTextWarning": "Тільки учасники рангу member і вище можуть використовувати API на цьому індексаторі.",
|
|
||||||
"IndexerBeyondHDSettingsApiKeyHelpText": "API ключ з сайту (знаходиться в My Security => API Key)",
|
|
||||||
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Шукати лише freeleech релізи",
|
|
||||||
"IndexerBeyondHDSettingsLimitedOnly": "Тільки Limited",
|
|
||||||
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Шукати лише freeleech (Limited UL)",
|
|
||||||
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Шукати лише refund",
|
|
||||||
"IndexerBeyondHDSettingsRewindOnlyHelpText": "Шукати лише rewind",
|
|
||||||
"IndexerBeyondHDSettingsRssKeyHelpText": "RSS ключ з сайту (знаходиться в My Security => RSS Key)",
|
|
||||||
"IndexerBeyondHDSettingsSearchTypesHelpText": "Виберіть типи релізів, які вас цікавлять. Якщо нічого не вибрано, використовуються всі варіанти.",
|
|
||||||
"IndexerCategories": "Категорії індексатора",
|
|
||||||
"IndexerDetails": "Деталі індексатора",
|
|
||||||
"IndexerDisabled": "Індексатор вимкнено",
|
|
||||||
"IndexerFailureRate": "Частота помилок індексатора",
|
|
||||||
"IndexerFileListSettingsFreeleechOnlyHelpText": "Шукати лише freeleech релізи",
|
|
||||||
"IndexerFileListSettingsPasskeyHelpText": "Passkey сайту (це буквено-цифровий рядок в URL трекера, що відображається у вашому клієнті завантаження)",
|
|
||||||
"IndexerFileListSettingsUsernameHelpText": "Ім'я користувача сайту",
|
|
||||||
"IndexerGazelleGamesSettingsApiKeyHelpText": "API ключ з сайту (знаходиться в Settings => Access Settings)",
|
|
||||||
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Повинен мати права User та Torrents",
|
|
||||||
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Шукати лише freeleech релізи",
|
|
||||||
"IndexerGazelleGamesSettingsSearchGroupNames": "Пошук за назвами груп",
|
|
||||||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Шукати релізи за назвами груп",
|
|
||||||
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Показувати лише freeleech релізи",
|
|
||||||
"IndexerHDBitsSettingsPasskeyHelpText": "Passkey з деталей користувача",
|
|
||||||
"IndexerHDBitsSettingsUseFilenames": "Використовувати імена файлів",
|
|
||||||
"IndexerHDBitsSettingsUseFilenamesHelpText": "Увімкніть цю опцію, якщо хочете використовувати імена файлів торрентів як назви релізів",
|
|
||||||
"IndexerHDBitsSettingsUsernameHelpText": "Ім'я користувача сайту",
|
|
||||||
"IndexerHealthCheckNoIndexers": "Індексатори не увімкнені, {appName} не поверне результати пошуку",
|
|
||||||
"IndexerHistoryLoadError": "Помилка завантаження історії індексатора",
|
|
||||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Cookie User-Agent",
|
|
||||||
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "User-Agent, пов'язаний з cookie, що використовується з браузера",
|
|
||||||
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Шукати лише freeleech релізи",
|
|
||||||
"IndexerMTeamTpSettingsApiKeyHelpText": "API ключ з сайту (знаходиться в User Control Panel => Security => Laboratory)",
|
|
||||||
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Шукати лише freeleech релізи",
|
|
||||||
"IndexerName": "Назва індексатора",
|
|
||||||
"IndexerNebulanceSettingsApiKeyHelpText": "API ключ з User Settings > Api Keys. Ключ повинен мати права List та Download",
|
|
||||||
"IndexerNewznabSettingsApiKeyHelpText": "API ключ сайту",
|
|
||||||
"IndexerNewznabSettingsVipExpirationHelpText": "Введіть дату (yyyy-mm-dd) закінчення VIP або залиште порожнім, {appName} повідомить за 1 тиждень до закінчення VIP",
|
|
||||||
"IndexerNoDefinitionCheckHealthCheckMessage": "Індексатори не мають визначення і не працюватимуть: {indexerNames}. Будь ласка, видаліть та (або) додайте знову до {appName}.",
|
|
||||||
"IndexerNzbIndexSettingsApiKeyHelpText": "API ключ сайту",
|
|
||||||
"IndexerObsoleteCheckMessage": "Індексатори застаріли або оновлені: {0}. Будь ласка, видаліть та (або) додайте знову до {appName}",
|
|
||||||
"IndexerOrpheusSettingsApiKeyHelpText": "API ключ з сайту (знаходиться в Settings => Access Settings)",
|
|
||||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "API ключ сайту",
|
|
||||||
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Шукати лише freeleech релізи",
|
|
||||||
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Тільки Golden Popcorn",
|
|
||||||
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Шукати лише Golden Popcorn релізи",
|
|
||||||
"IndexerPriorityHelpText": "Пріоритет індексатора від 1 (найвищий) до 50 (найнижчий). За замовчуванням: 25.",
|
|
||||||
"IndexerQuery": "Запит індексатора",
|
|
||||||
"IndexerRedactedSettingsApiKeyHelpText": "API ключ з сайту (знаходиться в Settings => Access Settings)",
|
|
||||||
"IndexerRss": "RSS індексатора",
|
|
||||||
"IndexerSettingsBaseUrl": "Базова URL-адреса",
|
|
||||||
"IndexerSettingsBaseUrlHelpText": "Виберіть базову URL-адресу, яку {appName} використовуватиме для запитів до сайту",
|
|
||||||
"IndexerSettingsCookieHelpText": "Cookie сайту",
|
|
||||||
"IndexerSettingsFreeleechOnly": "Тільки Freeleech",
|
|
||||||
"IndexerSettingsGrabLimit": "Ліміт захоплень",
|
|
||||||
"IndexerSettingsGrabLimitHelpText": "Максимальна кількість захоплень за одиницю часу, яку {appName} дозволить для сайту",
|
|
||||||
"IndexerSettingsLimitsUnit": "Одиниця ліміту",
|
|
||||||
"IndexerSettingsLimitsUnitHelpText": "Одиниця часу для підрахунку лімітів на індексатор",
|
|
||||||
"IndexerSettingsPackSeedTime": "Час роздачі паку",
|
|
||||||
"IndexerSettingsPreferMagnetUrl": "Віддавати перевагу Magnet URL",
|
|
||||||
"IndexerSettingsPreferMagnetUrlHelpText": "Коли увімкнено, цей індексатор віддаватиме перевагу magnet URL для захоплень з резервним варіантом торрент-посилань",
|
|
||||||
"IndexerSettingsQueryLimit": "Ліміт запитів",
|
|
||||||
"IndexerSettingsQueryLimitHelpText": "Максимальна кількість запитів за одиницю часу, яку {appName} дозволить для сайту",
|
|
||||||
"IndexerSettingsRssKey": "RSS ключ",
|
|
||||||
"IndexerSettingsVipExpiration": "Закінчення VIP",
|
|
||||||
"IndexerSite": "Сайт індексатора",
|
|
||||||
"IndexerTagsHelpText": "Використовуйте теги, щоб вказати проксі індексаторів або з якими застосунками синхронізується індексатор.",
|
|
||||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "API ключ сайту",
|
|
||||||
"IndexerVipExpiredHealthCheckMessage": "Переваги VIP індексатора закінчились: {indexerNames}",
|
|
||||||
"IndexerVipExpiringHealthCheckMessage": "Переваги VIP індексатора скоро закінчаться: {indexerNames}",
|
|
||||||
"InitialFailure": "Початкова помилка",
|
|
||||||
"LastFailure": "Остання помилка",
|
|
||||||
"MappedCategories": "Зіставлені категорії",
|
|
||||||
"MassEditor": "Масовий редактор",
|
|
||||||
"MinimumSeedersHelpText": "Мінімальна кількість сідарів, необхідна застосунку для захоплення індексатором",
|
|
||||||
"NewznabUrl": "URL Newznab",
|
|
||||||
"NoApplicationsFound": "Застосунки не знайдено",
|
|
||||||
"NoIndexerCategories": "Категорії для цього індексатора не знайдено",
|
|
||||||
"NoIndexerHistory": "Історія для цього індексатора не знайдена",
|
|
||||||
"NoSearchResultsFound": "Результати пошуку не знайдено, спробуйте виконати новий пошук нижче.",
|
|
||||||
"NotSupported": "Не підтримується",
|
|
||||||
"OnGrabHelpText": "При захопленні релізу",
|
|
||||||
"Open": "Відкрити",
|
|
||||||
"PackSeedTime": "Час роздачі паку",
|
|
||||||
"Parameters": "Параметри",
|
|
||||||
"PreferMagnetUrl": "Віддавати перевагу Magnet URL",
|
|
||||||
"PreferMagnetUrlHelpText": "Коли увімкнено, цей індексатор віддаватиме перевагу magnet URL для захоплень з резервним варіантом торрент-посилань",
|
|
||||||
"Privacy": "Конфіденційність",
|
|
||||||
"Private": "Приватний",
|
|
||||||
"ProwlarrDownloadClientsAlert": "Якщо ви плануєте здійснювати пошук безпосередньо в {appName}, вам потрібно додати клієнти завантаження. В іншому випадку додавати їх тут не потрібно. Для пошуку з ваших застосунків використовуються налаштовані там клієнти завантаження.",
|
|
||||||
"ProwlarrDownloadClientsInAppOnlyAlert": "Клієнти завантаження призначені лише для пошуку в {appName} і не синхронізуються із застосунками. Планів додати таку функціональність немає.",
|
|
||||||
"ProwlarrSupportsAnyDownloadClient": "{appName} підтримує будь-який з перелічених нижче клієнтів завантаження.",
|
|
||||||
"ProwlarrSupportsAnyIndexer": "{appName} підтримує багато індексаторів на додаток до будь-якого індексатора, що використовує стандарт Newznab/Torznab, використовуючи 'Generic Newznab' (для usenet) або 'Generic Torznab' (для торрентів). Знайдіть і виберіть свій індексатор нижче.",
|
|
||||||
"Public": "Публічний",
|
|
||||||
"Publisher": "Видавець",
|
|
||||||
"Query": "Запит",
|
|
||||||
"QueryOptions": "Параметри запиту",
|
|
||||||
"QueryResults": "Результати запиту",
|
|
||||||
"QueryType": "Тип запиту",
|
|
||||||
"RawSearchSupported": "Підтримується сирий пошук",
|
|
||||||
"Redirect": "Перенаправлення",
|
|
||||||
"RedirectHelpText": "Перенаправити вхідний запит на завантаження для індексатора та передати захоплення напряму замість проксі через {appName}",
|
|
||||||
"Redirected": "Перенаправлено",
|
|
||||||
"RepeatSearch": "Повторити пошук",
|
|
||||||
"RssFeed": "RSS-стрічка",
|
|
||||||
"RssQueries": "RSS запити",
|
|
||||||
"SearchAllIndexers": "Шукати у всіх індексаторах",
|
|
||||||
"SearchCapabilities": "Можливості пошуку",
|
|
||||||
"SearchCountIndexers": "Шукати в {count} індексаторах",
|
|
||||||
"SearchQueries": "Пошукові запити",
|
|
||||||
"SearchType": "Тип пошуку",
|
|
||||||
"SelectedCountOfCountReleases": "Вибрано {selectedCount} з {itemCount} релізів",
|
|
||||||
"SemiPrivate": "Напівприватний",
|
|
||||||
"SettingsConsoleLogLevel": "Рівень журналу консолі",
|
|
||||||
"SettingsFilterSentryEvents": "Фільтрувати події аналітики",
|
|
||||||
"SettingsFilterSentryEventsHelpText": "Фільтрувати відомі помилки користувачів від відправки як аналітика",
|
|
||||||
"SettingsIndexerLogging": "Розширене журналювання індексаторів",
|
|
||||||
"SettingsIndexerLoggingHelpText": "Журналювати додаткові дані індексаторів, включаючи відповіді",
|
|
||||||
"SettingsLogRotate": "Ротація журналів",
|
|
||||||
"SettingsLogRotateHelpText": "Максимальна кількість файлів журналів для зберігання в папці журналів",
|
|
||||||
"SettingsLogSql": "Журналювати SQL",
|
|
||||||
"SettingsSqlLoggingHelpText": "Журналювати всі SQL-запити від {appName}",
|
|
||||||
"SyncAppIndexers": "Синхронізувати індексатори застосунку",
|
|
||||||
"SyncLevel": "Рівень синхронізації",
|
|
||||||
"SyncLevelAddRemove": "Лише додавання та видалення: коли індексатори додаються або видаляються з {appName}, він оновить цей віддалений застосунок.",
|
|
||||||
"SyncLevelFull": "Повна синхронізація: індексатори цього застосунку будуть повністю синхронізовані. Зміни, внесені до індексаторів в {appName}, синхронізуються з цим застосунком. Будь-які зміни, внесені до індексаторів віддалено в цьому застосунку, будуть перезаписані {appName} при наступній синхронізації.",
|
|
||||||
"TVSearchTypes": "Типи пошуку ТВ",
|
|
||||||
"TestAllApps": "Перевірити всі застосунки",
|
|
||||||
"TorznabUrl": "URL Torznab",
|
|
||||||
"TotalGrabs": "Всього захоплень",
|
|
||||||
"TotalHostGrabs": "Всього захоплень хоста",
|
|
||||||
"TotalHostQueries": "Всього запитів хоста",
|
|
||||||
"TotalIndexerQueries": "Всього запитів індексатора",
|
|
||||||
"TotalIndexerSuccessfulGrabs": "Всього успішних захоплень індексатора",
|
|
||||||
"TotalQueries": "Всього запитів",
|
|
||||||
"TotalUserAgentGrabs": "Всього захоплень User Agent",
|
|
||||||
"TotalUserAgentQueries": "Всього запитів User Agent",
|
|
||||||
"UISettingsSummary": "Дата, мова та параметри для людей з порушенням кольоросприйняття",
|
|
||||||
"Url": "URL",
|
|
||||||
"VipExpiration": "Закінчення VIP",
|
|
||||||
"Website": "Веб-сайт",
|
|
||||||
"CertificateValidationHelpText": "Змінити рівень суворості перевірки сертифікату HTTPS",
|
|
||||||
"Description": "Опис",
|
|
||||||
"DevelopmentSettings": "Налаштування розробки",
|
|
||||||
"DisabledUntil": "Вимкнено до",
|
|
||||||
"DownloadClientSettingsPriorityItemHelpText": "Пріоритет, що використовується при захопленні елементів",
|
|
||||||
"IndexerSettingsSummary": "Налаштування глобальних параметрів індексаторів, включаючи проксі",
|
|
||||||
"ManageApplications": "Керування застосунками"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -397,50 +397,5 @@
|
|||||||
"Season": "Lý do",
|
"Season": "Lý do",
|
||||||
"Mixed": "đã sửa",
|
"Mixed": "đã sửa",
|
||||||
"EditConnectionImplementation": "Thêm điều kiện - {implementationName}",
|
"EditConnectionImplementation": "Thêm điều kiện - {implementationName}",
|
||||||
"AddApplicationImplementation": "Thêm điều kiện - {implementationName}",
|
"AddApplicationImplementation": "Thêm điều kiện - {implementationName}"
|
||||||
"UnableToLoadDevelopmentSettings": "Không thể tải Cài đặt chung",
|
|
||||||
"IndexerId": "Người lập chỉ mục",
|
|
||||||
"EditSyncProfile": "Chỉnh sửa hồ sơ độ trễ",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "Nguyên",
|
|
||||||
"DeleteClientCategory": "Xóa ứng dụng khách tải xuống",
|
|
||||||
"DeleteIndexerProxy": "Xóa trình lập chỉ mục",
|
|
||||||
"Destination": "Đường dẫn đích",
|
|
||||||
"EditDownloadClientImplementation": "Thêm điều kiện - {implementationName}",
|
|
||||||
"EditSelectedDownloadClients": "Xóa ứng dụng khách tải xuống",
|
|
||||||
"TvSearch": "Tìm kiếm",
|
|
||||||
"Proxies": "Hồ sơ",
|
|
||||||
"SelectIndexers": "Xóa trình lập chỉ mục",
|
|
||||||
"UnableToLoadAppProfiles": "Không thể tải hồ sơ độ trễ",
|
|
||||||
"UnableToLoadIndexerProxies": "Không thể tải Trình chỉ mục",
|
|
||||||
"IndexerProxy": "Mức độ ưu tiên của người lập chỉ mục",
|
|
||||||
"AddCustomFilter": "Bộ lọc tùy chỉnh",
|
|
||||||
"AddNewIndexer": "Thêm trình lập chỉ mục",
|
|
||||||
"Donate": "Ngày",
|
|
||||||
"EditIndexerProxyImplementation": "Thêm điều kiện - {implementationName}",
|
|
||||||
"DeleteSelectedIndexersMessageText": "Bạn có chắc chắn muốn xóa các tệp phim đã chọn không?",
|
|
||||||
"Author": "Tự động",
|
|
||||||
"AddIndexerProxyImplementation": "Thêm điều kiện - {implementationName}",
|
|
||||||
"Notification": "Chứng chỉ",
|
|
||||||
"IndexerStatus": "Cài đặt trình lập chỉ mục",
|
|
||||||
"MovieSearch": "Tìm kiếm phim hàng loạt",
|
|
||||||
"ManageDownloadClients": "Tải xuống ứng dụng khách",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "Bạn có chắc chắn muốn xóa các tệp phim đã chọn không?",
|
|
||||||
"DeleteSelectedIndexer": "Xóa trình lập chỉ mục",
|
|
||||||
"DownloadClientCategory": "Xóa ứng dụng khách tải xuống",
|
|
||||||
"EditSelectedIndexers": "Xóa trình lập chỉ mục",
|
|
||||||
"Notifications": "Chứng chỉ",
|
|
||||||
"IndexerProxies": "Mức độ ưu tiên của người lập chỉ mục",
|
|
||||||
"Connect": "Chứng chỉ",
|
|
||||||
"SearchIndexers": "Xóa trình lập chỉ mục",
|
|
||||||
"DeleteSelectedApplications": "Xóa các tệp phim đã chọn",
|
|
||||||
"DeleteSelectedDownloadClientsMessageText": "Bạn có chắc chắn muốn xóa các tệp phim đã chọn không?",
|
|
||||||
"AddIndexerProxy": "Mức độ ưu tiên của người lập chỉ mục",
|
|
||||||
"SyncProfile": "Chỉnh sửa hồ sơ độ trễ",
|
|
||||||
"AddSyncProfile": "Chỉnh sửa hồ sơ độ trễ",
|
|
||||||
"DeleteSelectedIndexers": "Xóa trình lập chỉ mục",
|
|
||||||
"IndexerInfo": "Người lập chỉ mục",
|
|
||||||
"SyncProfiles": "Chỉnh sửa hồ sơ độ trễ",
|
|
||||||
"Auth": "Tự động",
|
|
||||||
"MovieSearchTypes": "Tìm kiếm phim hàng loạt",
|
|
||||||
"FilterPlaceHolder": "Xóa trình lập chỉ mục"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,7 +168,7 @@
|
|||||||
"GeneralSettings": "通用设置",
|
"GeneralSettings": "通用设置",
|
||||||
"GeneralSettingsSummary": "端口、SSL、用户名/密码、代理、分析、更新",
|
"GeneralSettingsSummary": "端口、SSL、用户名/密码、代理、分析、更新",
|
||||||
"Genre": "类型",
|
"Genre": "类型",
|
||||||
"GrabReleases": "抓取资源",
|
"GrabReleases": "抓取版本",
|
||||||
"GrabTitle": "抓取标题",
|
"GrabTitle": "抓取标题",
|
||||||
"Grabbed": "已抓取",
|
"Grabbed": "已抓取",
|
||||||
"Grabs": "抓取",
|
"Grabs": "抓取",
|
||||||
@@ -621,7 +621,7 @@
|
|||||||
"DownloadClientFreeboxSettingsAppToken": "App Token",
|
"DownloadClientFreeboxSettingsAppToken": "App Token",
|
||||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "创建访问 Freebox API 所需的 App token(即 “ app_token”)",
|
"DownloadClientFreeboxSettingsAppTokenHelpText": "创建访问 Freebox API 所需的 App token(即 “ app_token”)",
|
||||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "添加到 qBittorrent 的种子的初始状态。 请注意,强制做种不遵守种子限制",
|
"DownloadClientQbittorrentSettingsInitialStateHelpText": "添加到 qBittorrent 的种子的初始状态。 请注意,强制做种不遵守种子限制",
|
||||||
"GrabRelease": "抓取资源",
|
"GrabRelease": "抓取版本",
|
||||||
"ManualGrab": "手动抓取",
|
"ManualGrab": "手动抓取",
|
||||||
"OverrideAndAddToDownloadClient": "覆盖并添加到下载队列",
|
"OverrideAndAddToDownloadClient": "覆盖并添加到下载队列",
|
||||||
"OverrideGrabModalTitle": "覆盖并抓取 - {title}",
|
"OverrideGrabModalTitle": "覆盖并抓取 - {title}",
|
||||||
@@ -755,53 +755,5 @@
|
|||||||
"IndexerFileListSettingsFreeleechOnlyHelpText": "只搜索免费发布",
|
"IndexerFileListSettingsFreeleechOnlyHelpText": "只搜索免费发布",
|
||||||
"IndexerFileListSettingsUsernameHelpText": "网站用户名",
|
"IndexerFileListSettingsUsernameHelpText": "网站用户名",
|
||||||
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Search refund only",
|
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Search refund only",
|
||||||
"DownloadClientUTorrentProviderMessage": "uTorrent 曾经含有挖矿行为、恶意软件和广告,我们强烈建议你选择其他客户端。",
|
"DownloadClientUTorrentProviderMessage": "由于uTorrent以加密软件、恶意软件和广告而闻名,我们建议切换到更好的客户端,例如qBittorrent、Deluge或ruTorrent。"
|
||||||
"IndexerId": "索引器",
|
|
||||||
"IndexerSettingsPasskey": "通行密钥",
|
|
||||||
"IndexerBeyondHDSettingsRefundOnly": "只读",
|
|
||||||
"IndexerBeyondHDSettingsRewindOnly": "只读",
|
|
||||||
"IndexerBeyondHDSettingsRssKeyHelpText": "来自网站的API密钥(在我的安全 => API密钥)",
|
|
||||||
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "只搜索免费发布",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "原始",
|
|
||||||
"IndexerPassThePopcornSettingsApiUserHelpText": "这些设置位于 PassThePopcorn 安全设置中(编辑个人资料 > 安全,Edit Profile > Security)。",
|
|
||||||
"IndexerBeyondHDSettingsSearchTypesHelpText": "选择你感兴趣的版本类型。若无则使用所有可选项。",
|
|
||||||
"IndexerFileListSettingsPasskeyHelpText": "网站密钥(下载客户端中跟踪器链接显示的由字母和数字构成的字符串)",
|
|
||||||
"IndexerGazelleGamesSettingsApiKeyHelpText": "来自网站的 API 密钥(在设置 => 访问设置中)",
|
|
||||||
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "必须具有用户和种子权限",
|
|
||||||
"IndexerGazelleGamesSettingsSearchGroupNames": "搜索群组名",
|
|
||||||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "根据群组名搜索版本",
|
|
||||||
"IndexerHDBitsSettingsPasskeyHelpText": "用户详情中的密钥",
|
|
||||||
"IndexerHDBitsSettingsUseFilenames": "使用文件名",
|
|
||||||
"IndexerHDBitsSettingsUseFilenamesHelpText": "勾选此选项如果你想将种子文件名作为发布资源的标题",
|
|
||||||
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "浏览器中 cookie 所关联的 User-Agent",
|
|
||||||
"IndexerMTeamTpSettingsApiKeyHelpText": "站点中的 API 密钥(在用户控制面板 => 安全 => 实验室中)",
|
|
||||||
"IndexerNebulanceSettingsApiKeyHelpText": "在用户设置 > API 密钥中的API 密钥。密钥必须有列出和下载的权限",
|
|
||||||
"IndexerNewznabSettingsApiKeyHelpText": "站点 API 密钥",
|
|
||||||
"IndexerSettingsCookieHelpText": "站点 Cookie",
|
|
||||||
"IndexerSettingsFreeleechOnly": "仅免流资源",
|
|
||||||
"IndexerSettingsGrabLimit": "抓取上限",
|
|
||||||
"IndexerSettingsGrabLimitHelpText": "在该时间单位内,{appName} 对此站点所允许的最大抓取数",
|
|
||||||
"IndexerSettingsLimitsUnit": "限制单位",
|
|
||||||
"IndexerSettingsLimitsUnitHelpText": "每个索引器计算上限的时间单位",
|
|
||||||
"IndexerSettingsPreferMagnetUrl": "磁力链接优先",
|
|
||||||
"IndexerSettingsPreferMagnetUrlHelpText": "若开启,该索引器将优先使用磁力链接抓取,而种子链接作为备用",
|
|
||||||
"IndexerSettingsQueryLimit": "请求上限",
|
|
||||||
"IndexerSettingsQueryLimitHelpText": "在该时间单位内,{appName} 对此站点所允许的最大请求数",
|
|
||||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Cookie User-Agent",
|
|
||||||
"IndexerNewznabSettingsVipExpirationHelpText": "输入 VIP 到期日期 (yyyy-mm-dd) 或留空,{appName} 将在到期前 1 星期发送通知",
|
|
||||||
"IndexerNzbIndexSettingsApiKeyHelpText": "站点 API 密钥",
|
|
||||||
"IndexerOrpheusSettingsApiKeyHelpText": "站点 API 密钥(在设置 => 访问设置中)",
|
|
||||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "站点 API 密钥",
|
|
||||||
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "仅 Golden Popcorn",
|
|
||||||
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "仅搜索 Golden Popcorn 发布的资源",
|
|
||||||
"IndexerRedactedSettingsApiKeyHelpText": "站点 API 密钥(在设置 => 访问设置中)",
|
|
||||||
"IndexerSettingsBaseUrl": "基础链接",
|
|
||||||
"IndexerSettingsBaseUrlHelpText": "选择 {appName} 请求该站点所使用的基础链接",
|
|
||||||
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "站点 API 密钥",
|
|
||||||
"NoApplicationsFound": "找不到程序",
|
|
||||||
"Open": "打开",
|
|
||||||
"PreferMagnetUrl": "磁力链接优先",
|
|
||||||
"PreferMagnetUrlHelpText": "若开启,该索引器将优先使用磁力链接,种子链接作为备用",
|
|
||||||
"ProwlarrDownloadClientsAlert": "如果你想直接在 {appName} 中搜索,你需要添加下载管理器,否则你不需要在此添加。你的程序中的搜索行为将使用它自己的下载管理器配置。",
|
|
||||||
"ProwlarrDownloadClientsInAppOnlyAlert": "下载管理器仅对 {appName} 中搜索有效,而不会同步到其他程序中。目前没有添加此功能的计划。"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,13 +5,5 @@
|
|||||||
"Username": "用户名",
|
"Username": "用户名",
|
||||||
"AcceptConfirmationModal": "中文",
|
"AcceptConfirmationModal": "中文",
|
||||||
"Backup": "备份",
|
"Backup": "备份",
|
||||||
"BackupNow": "立即备份",
|
"BackupNow": "立即备份"
|
||||||
"Backups": "备份",
|
|
||||||
"UnableToAddANewAppProfilePleaseTryAgain": "添加",
|
|
||||||
"UnableToAddANewApplicationPleaseTryAgain": "添加",
|
|
||||||
"UnableToAddANewDownloadClientPleaseTryAgain": "添加",
|
|
||||||
"UnableToAddANewIndexerPleaseTryAgain": "添加",
|
|
||||||
"UnableToAddANewIndexerProxyPleaseTryAgain": "添加",
|
|
||||||
"UnableToAddANewNotificationPleaseTryAgain": "添加",
|
|
||||||
"Actions": "操作"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
"Album": "專輯",
|
"Album": "專輯",
|
||||||
"Authentication": "認證",
|
"Authentication": "認證",
|
||||||
"AutomaticSearch": "自動搜尋",
|
"AutomaticSearch": "自動搜尋",
|
||||||
"BackupFolderHelpText": "相對路徑將位於 {appName} 的 AppData 目錄下",
|
"BackupFolderHelpText": "相對路徑將位於Radarr的AppData目錄下",
|
||||||
"BackupNow": "馬上備份",
|
"BackupNow": "馬上備份",
|
||||||
"BackupRetentionHelpText": "超過保留期的自動備份將被自動清理",
|
"BackupRetentionHelpText": "超過保留期的自動備份將被自動清理",
|
||||||
"BindAddress": "綁定地址(Bind Address)",
|
"BindAddress": "綁定地址(Bind Address)",
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
"Theme": "主題",
|
"Theme": "主題",
|
||||||
"ApiKeyValidationHealthCheckMessage": "請將您的API金鑰更新為至少{length}個字元長。您可以通過設定或配置文件進行此操作。",
|
"ApiKeyValidationHealthCheckMessage": "請將您的API金鑰更新為至少{length}個字元長。您可以通過設定或配置文件進行此操作。",
|
||||||
"AppDataLocationHealthCheckMessage": "為了避免在更新過程中刪除AppData,將無法進行更新。",
|
"AppDataLocationHealthCheckMessage": "為了避免在更新過程中刪除AppData,將無法進行更新。",
|
||||||
"AuthenticationMethodHelpText": "需要使用者名稱和密碼才能存取 {appName}",
|
"AuthenticationMethodHelpText": "需要使用者名稱和密碼來存取Radarr",
|
||||||
"Backup": "備份",
|
"Backup": "備份",
|
||||||
"Enable": "啟用",
|
"Enable": "啟用",
|
||||||
"Grabs": "抓取",
|
"Grabs": "抓取",
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
"Seeders": "種子",
|
"Seeders": "種子",
|
||||||
"Settings": "設定",
|
"Settings": "設定",
|
||||||
"DownloadClients": "下載用戶端",
|
"DownloadClients": "下載用戶端",
|
||||||
"AnalyticsEnabledHelpText": "傳送匿名使用和錯誤資訊到 {appName} 的伺服器。這包括您的瀏覽器資訊、您使用的 {appName} WebUI 頁面、錯誤報告以及作業系統和執行階段版本。我們將使用這些資訊來優先處理功能和錯誤修正。",
|
"AnalyticsEnabledHelpText": "將使用和錯誤資訊匿名傳送至Radarr的伺服器。這些資訊包括您的瀏覽器資訊、使用的Radarr WebUI頁面、錯誤報告,以及作業系統和執行時版本。我們將使用這些資訊來優先處理功能和錯誤修復。",
|
||||||
"ApiKey": "API 金鑰",
|
"ApiKey": "API 金鑰",
|
||||||
"AppDataDirectory": "AppData 路徑",
|
"AppDataDirectory": "AppData 路徑",
|
||||||
"Applications": "應用程式",
|
"Applications": "應用程式",
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
"IndexerHDBitsSettingsCodecs": "編解碼器",
|
"IndexerHDBitsSettingsCodecs": "編解碼器",
|
||||||
"Directory": "目錄",
|
"Directory": "目錄",
|
||||||
"BuiltIn": "內建的",
|
"BuiltIn": "內建的",
|
||||||
"AllSearchResultsHiddenByFilter": "根據所使用的篩選器已將所有結果隱藏。",
|
"AllSearchResultsHiddenByFilter": "根據所使用的篩選器已將所有結果隱藏",
|
||||||
"AptUpdater": "使用apt安裝更新",
|
"AptUpdater": "使用apt安裝更新",
|
||||||
"Discord": "Discord",
|
"Discord": "Discord",
|
||||||
"Any": "任何",
|
"Any": "任何",
|
||||||
@@ -164,131 +164,5 @@
|
|||||||
"AuthenticationRequired": "需要驗證",
|
"AuthenticationRequired": "需要驗證",
|
||||||
"AuthenticationRequiredWarning": "為防止未經認證的遠程訪問,{appName} 現需要啟用身份認證。您可以選擇禁用本地地址的身份認證。",
|
"AuthenticationRequiredWarning": "為防止未經認證的遠程訪問,{appName} 現需要啟用身份認證。您可以選擇禁用本地地址的身份認證。",
|
||||||
"AuthenticationMethodHelpTextWarning": "請選擇一個有效的驗證方式",
|
"AuthenticationMethodHelpTextWarning": "請選擇一個有效的驗證方式",
|
||||||
"AuthenticationMethod": "驗證方式",
|
"AuthenticationMethod": "驗證方式"
|
||||||
"CountApplicationsSelected": "已選取 {count} 個收藏集",
|
|
||||||
"ProxyResolveIpHealthCheckMessage": "無法解析已設定的代理伺服器主機 {proxyHostName} 的 IP 位址",
|
|
||||||
"SSLCertPasswordHelpText": ".pfx 檔案的密碼",
|
|
||||||
"UnableToLoadIndexerProxies": "無法載入索引器",
|
|
||||||
"IndexerStatusAllUnavailableHealthCheckMessage": "所有索引器因錯誤而無法使用",
|
|
||||||
"IndexerHDBitsSettingsOriginsHelpText": "如果未指定,則使用所有選項。",
|
|
||||||
"TvSearch": "搜尋",
|
|
||||||
"SettingsTimeFormat": "時間格式",
|
|
||||||
"ProxyValidationBadRequest": "測試代理伺服器失敗,狀態碼:{statusCode}",
|
|
||||||
"IndexerId": "索引器",
|
|
||||||
"SettingsEnableColorImpairedMode": "啟用色覺辨識輔助模式",
|
|
||||||
"SettingsEnableColorImpairedModeHelpText": "改變樣式,讓色覺辨識障礙的使用者能更好地區分顏色編碼資訊",
|
|
||||||
"Stats": "狀態",
|
|
||||||
"TableOptionsColumnsMessage": "選擇要顯示的欄位並排序",
|
|
||||||
"IndexerStatus": "索引器設定",
|
|
||||||
"MappedDrivesRunningAsService": "作為 Windows 服務執行時,無法使用對應的網路磁碟機。詳情請參閱 [FAQ]({url})。",
|
|
||||||
"MinimumSeeders": "最少做種者數",
|
|
||||||
"SeedTimeHelpText": "停止前應做種的時間,留空則使用下載用戶端的預設值",
|
|
||||||
"GeneralSettingsSummary": "連接埠、SSL、使用者名稱/密碼、代理伺服器、分析、更新",
|
|
||||||
"Genre": "類型",
|
|
||||||
"FailedToFetchSettings": "更新設定失敗",
|
|
||||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "由於故障超過 6 小時,所有索引器均無法使用",
|
|
||||||
"ApplicationStatusCheckAllClientMessage": "由於故障,所有通知都無法使用",
|
|
||||||
"ApplicationStatusCheckSingleClientMessage": "由於故障,所有通知都無法使用",
|
|
||||||
"Auth": "作者",
|
|
||||||
"Author": "作者",
|
|
||||||
"DeleteClientCategory": "刪除下載用戶端",
|
|
||||||
"DeleteIndexerProxy": "刪除索引器",
|
|
||||||
"DeleteSelectedIndexers": "編輯選取的索引器",
|
|
||||||
"DockerUpdater": "更新 Docker 容器以更新應用程式",
|
|
||||||
"DownloadClientSettingsDefaultCategoryHelpText": "為 {appName} 新增專用分類可以避免與不相關的下載衝突。使用分類是可選的,但強烈建議使用。",
|
|
||||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "為 {appName} 新增專用分類可以避免與不相關的下載衝突。使用分類是可選的,但強烈建議使用。在輸出目錄中建立 [分類] 子目錄。",
|
|
||||||
"DownloadClientStatusAllClientHealthCheckMessage": "所有下載用戶端因故障均無法使用",
|
|
||||||
"DownloadClientStatusSingleClientHealthCheckMessage": "下載用戶端無法使用:{downloadClientNames}",
|
|
||||||
"ForMoreInformationOnTheIndividualDownloadClients": "若要查看關於特定下載用戶端的詳細資訊,請點擊「更多資訊」按鈕。",
|
|
||||||
"FocusSearchBox": "聚焦搜尋框",
|
|
||||||
"HistoryCleanupDaysHelpText": "設為 0 以停用自動清理",
|
|
||||||
"HistoryCleanupDaysHelpTextWarning": "回收站中的檔案在超過選擇的天數後會被自動刪除",
|
|
||||||
"IncludeHealthWarningsHelpText": "包含健康狀態警告",
|
|
||||||
"IndexerBeyondHDSettingsRefundOnly": "唯讀",
|
|
||||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "由於故障超過 6 小時,下列索引器已無法使用:{indexerNames}",
|
|
||||||
"IndexerStatusUnavailableHealthCheckMessage": "下列索引器因錯誤而無法使用:{indexerNames}",
|
|
||||||
"MovieIndexScrollBottom": "電影索引:捲動至底部",
|
|
||||||
"MovieIndexScrollTop": "電影索引:捲動至頂部",
|
|
||||||
"OpenThisModal": "開啟此對話方塊",
|
|
||||||
"PageSizeHelpText": "每頁顯示的項目數量",
|
|
||||||
"ProxyBadRequestHealthCheckMessage": "測試代理伺服器失敗,狀態碼:{statusCode}",
|
|
||||||
"ProxyFailedToTestHealthCheckMessage": "測試代理伺服器失敗:{url}",
|
|
||||||
"SSLCertPassword": "SSL 憑證密碼",
|
|
||||||
"SeedTime": "做種時間",
|
|
||||||
"SelectIndexers": "選擇索引器旗標",
|
|
||||||
"StartTypingOrSelectAPathBelow": "輸入路徑或從下方選擇",
|
|
||||||
"UILanguageHelpTextWarning": "需重新整理瀏覽器以套用變更",
|
|
||||||
"UnableToLoadGeneralSettings": "無法載入通用設定",
|
|
||||||
"UpdateStartupNotWritableHealthCheckMessage": "無法安裝更新,因為使用者「{userName}」對啟動資料夾「{startupFolder}」沒有寫入權限。",
|
|
||||||
"UpdateStartupTranslocationHealthCheckMessage": "無法安裝更新,因為啟動資料夾「{startupFolder}」位於 App Translocation 資料夾中。",
|
|
||||||
"NetCore": ".NET 版本",
|
|
||||||
"SaveSettings": "儲存設定",
|
|
||||||
"EditSyncProfile": "新增延時配置",
|
|
||||||
"SettingsShortDateFormat": "短日期格式",
|
|
||||||
"EnableSSL": "啟用 SSL",
|
|
||||||
"minutes": "分鐘",
|
|
||||||
"GrabReleases": "抓取此發行版本",
|
|
||||||
"PageSize": "每頁項目數",
|
|
||||||
"CloseCurrentModal": "關閉目前對話方塊",
|
|
||||||
"AppsMinimumSeeders": "最少做種者數",
|
|
||||||
"DeleteSelectedApplicationsMessageText": "您確定要刪除 {count} 個選定的匯入清單嗎?",
|
|
||||||
"RestartProwlarr": "重新啟動 {appName}",
|
|
||||||
"DeleteApplicationMessageText": "您確定要刪除通知「{name}」嗎?",
|
|
||||||
"DeleteIndexerProxyMessageText": "您確定要刪除索引器「{name}」嗎?",
|
|
||||||
"IndexerProxy": "新增索引器代理",
|
|
||||||
"OnHealthRestoredHelpText": "健康狀態恢復時",
|
|
||||||
"ThemeHelpText": "變更應用程式介面主題。「自動」主題將根據您的作業系統主題設定淺色或深色模式。靈感來自 Theme.Park",
|
|
||||||
"UnableToLoadNotifications": "無法載入通知連線",
|
|
||||||
"Link": "連結",
|
|
||||||
"SeedRatio": "做種分享率",
|
|
||||||
"DeleteSelectedIndexer": "編輯選取的索引器",
|
|
||||||
"TagsHelpText": "套用至至少有一個相符標籤的電影",
|
|
||||||
"SettingsLongDateFormat": "長日期格式",
|
|
||||||
"SSLPort": "SSL 連接埠",
|
|
||||||
"WhatsNew": "新功能?",
|
|
||||||
"IndexerDownloadClientHelpText": "指定從此索引器抓取的項目要使用的下載用戶端",
|
|
||||||
"IndexerHDBitsSettingsOrigins": "原始",
|
|
||||||
"MovieSearch": "批次搜尋電影",
|
|
||||||
"MovieSearchTypes": "電影比對類型",
|
|
||||||
"ApplicationLongTermStatusCheckAllClientMessage": "由於故障超過 6 小時,所有索引器均無法使用",
|
|
||||||
"ApplicationLongTermStatusCheckSingleClientMessage": "由於故障超過 6 小時,所有索引器均無法使用",
|
|
||||||
"OnApplicationUpdateHelpText": "應用程式更新時",
|
|
||||||
"OverrideAndAddToDownloadClient": "覆蓋並新增至下載佇列",
|
|
||||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "由呼叫 API 的應用程式提供的 User-Agent",
|
|
||||||
"UnableToLoadAppProfiles": "無法載入延遲設定檔",
|
|
||||||
"DeleteAppProfileMessageText": "您確定要刪除品質設定檔「{name}」嗎?",
|
|
||||||
"EditCategory": "新增類別",
|
|
||||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "抓取時拒絕被封鎖的種子雜湊值",
|
|
||||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "即使種子的雜湊值被封鎖,某些索引器在 RSS 同步或搜尋期間可能無法正確拒絕它。啟用此功能將允許在抓取種子後、但在將其傳送至下載用戶端前拒絕它。",
|
|
||||||
"OnHealthIssueHelpText": "健康狀態出現問題時",
|
|
||||||
"SSLCertPath": "SSL 憑證路徑",
|
|
||||||
"SSLCertPathHelpText": ".pfx 檔案的路徑",
|
|
||||||
"IndexerBeyondHDSettingsRewindOnly": "唯讀",
|
|
||||||
"IndexerSettingsAppsMinimumSeeders": "最少做種者數",
|
|
||||||
"IndexerSettingsPasskey": "通行金鑰 (Passkey)",
|
|
||||||
"Proxies": "設定檔",
|
|
||||||
"Columns": "欄位",
|
|
||||||
"days": "天",
|
|
||||||
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "所有索引器因錯誤而無法使用",
|
|
||||||
"SettingsShowRelativeDates": "顯示相對日期",
|
|
||||||
"SettingsShowRelativeDatesHelpText": "顯示相對日期(今天/昨天等)或絕對日期",
|
|
||||||
"IndexerProxyStatusUnavailableHealthCheckMessage": "下列索引器因錯誤而無法使用:{indexerNames}",
|
|
||||||
"UnableToLoadDevelopmentSettings": "無法載入通用設定",
|
|
||||||
"UpdateUiNotWritableHealthCheckMessage": "無法安裝更新,因為使用者「{userName}」對介面資料夾「{uiFolder}」沒有寫入權限。",
|
|
||||||
"MusicSearchTypes": "電影比對類型",
|
|
||||||
"IndexerSettingsPackSeedTimeIndexerHelpText": "停止前應做種的時間,留空則使用下載用戶端的預設值",
|
|
||||||
"PackSeedTimeHelpText": "停止前應做種的時間,留空則使用下載用戶端的預設值",
|
|
||||||
"SearchTypes": "電影比對類型",
|
|
||||||
"SearchIndexers": "選擇索引器旗標",
|
|
||||||
"BookSearchTypes": "電影比對類型",
|
|
||||||
"SeedRatioHelpText": "停止前應做種的時間,留空則使用下載用戶端的預設值",
|
|
||||||
"SyncProfiles": "新增延時配置",
|
|
||||||
"SyncProfile": "新增延時配置",
|
|
||||||
"DeleteSelectedApplications": "刪除選取項目",
|
|
||||||
"DownloadClientCategory": "刪除下載用戶端",
|
|
||||||
"IndexerProxies": "新增索引器代理",
|
|
||||||
"IndexerInfo": "索引器",
|
|
||||||
"AddSyncProfile": "新增延時配置",
|
|
||||||
"IndexerBeyondHDSettingsSearchTypes": "電影比對類型",
|
|
||||||
"FilterPlaceHolder": "選擇索引器旗標"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,23 +6,23 @@
|
|||||||
<PackageReference Include="AngleSharp.Xml" Version="1.0.0" />
|
<PackageReference Include="AngleSharp.Xml" Version="1.0.0" />
|
||||||
<PackageReference Include="Dapper" Version="2.1.66" />
|
<PackageReference Include="Dapper" Version="2.1.66" />
|
||||||
<PackageReference Include="Diacritical.Net" Version="1.0.4" />
|
<PackageReference Include="Diacritical.Net" Version="1.0.4" />
|
||||||
<PackageReference Include="MailKit" Version="4.14.0" />
|
<PackageReference Include="MailKit" Version="4.12.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="8.0.16" />
|
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="8.0.16" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="8.0.16" />
|
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="8.0.16" />
|
||||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.1.1" />
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.2" />
|
||||||
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
|
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
|
||||||
<PackageReference Include="Npgsql" Version="9.0.3" />
|
<PackageReference Include="Npgsql" Version="9.0.3" />
|
||||||
<PackageReference Include="Polly" Version="8.6.4" />
|
<PackageReference Include="Polly" Version="8.6.0" />
|
||||||
<PackageReference Include="FluentMigrator.Runner.Core" Version="6.2.0" />
|
<PackageReference Include="Servarr.FluentMigrator.Runner" Version="3.3.2.9" />
|
||||||
<PackageReference Include="FluentMigrator.Runner.Postgres" Version="6.2.0" />
|
<PackageReference Include="Servarr.FluentMigrator.Runner.Postgres" Version="3.3.2.9" />
|
||||||
<PackageReference Include="FluentMigrator.Runner.SQLite" Version="6.2.0" />
|
<PackageReference Include="Servarr.FluentMigrator.Runner.SQLite" Version="3.3.2.9" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="8.0.19" />
|
|
||||||
<PackageReference Include="System.Memory" Version="4.6.3" />
|
<PackageReference Include="System.Memory" Version="4.6.3" />
|
||||||
<PackageReference Include="System.ServiceModel.Syndication" Version="8.0.0" />
|
<PackageReference Include="System.ServiceModel.Syndication" Version="8.0.0" />
|
||||||
<PackageReference Include="FluentValidation" Version="9.5.4" />
|
<PackageReference Include="FluentValidation" Version="9.5.4" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="NLog" Version="5.4.0" />
|
<PackageReference Include="NLog" Version="5.4.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="8.0.6" />
|
<PackageReference Include="System.Data.SQLite.Core.Servarr" Version="1.0.115.5-18" />
|
||||||
|
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
||||||
<PackageReference Include="MonoTorrent" Version="2.0.7" />
|
<PackageReference Include="MonoTorrent" Version="2.0.7" />
|
||||||
<PackageReference Include="YamlDotNet" Version="16.3.0" />
|
<PackageReference Include="YamlDotNet" Version="16.3.0" />
|
||||||
<PackageReference Include="AngleSharp" Version="1.3.0" />
|
<PackageReference Include="AngleSharp" Version="1.3.0" />
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
|
||||||
using DryIoc;
|
using DryIoc;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
@@ -32,7 +31,6 @@ using Prowlarr.Http.ClientSchema;
|
|||||||
using Prowlarr.Http.ErrorManagement;
|
using Prowlarr.Http.ErrorManagement;
|
||||||
using Prowlarr.Http.Frontend;
|
using Prowlarr.Http.Frontend;
|
||||||
using Prowlarr.Http.Middleware;
|
using Prowlarr.Http.Middleware;
|
||||||
using IPNetwork = Microsoft.AspNetCore.HttpOverrides.IPNetwork;
|
|
||||||
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
|
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
|
||||||
|
|
||||||
namespace NzbDrone.Host
|
namespace NzbDrone.Host
|
||||||
@@ -61,11 +59,8 @@ namespace NzbDrone.Host
|
|||||||
services.Configure<ForwardedHeadersOptions>(options =>
|
services.Configure<ForwardedHeadersOptions>(options =>
|
||||||
{
|
{
|
||||||
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedHost;
|
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedHost;
|
||||||
options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("10.0.0.0"), 8));
|
options.KnownNetworks.Clear();
|
||||||
options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("172.16.0.0"), 12));
|
options.KnownProxies.Clear();
|
||||||
options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("192.168.0.0"), 16));
|
|
||||||
options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("fc00::"), 7));
|
|
||||||
options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("fe80::"), 10));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
services.AddRouting(options => options.LowercaseUrls = true);
|
services.AddRouting(options => options.LowercaseUrls = true);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace NzbDrone.Test.Common.AutoMoq
|
|||||||
|
|
||||||
if (behavior != MockBehavior.Default && mock.Behavior == MockBehavior.Default)
|
if (behavior != MockBehavior.Default && mock.Behavior == MockBehavior.Default)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("Unable to change be behaviour of an existing mock.");
|
throw new InvalidOperationException("Unable to change be behaviour of a an existing mock.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return mock;
|
return mock;
|
||||||
@@ -139,7 +139,7 @@ namespace NzbDrone.Test.Common.AutoMoq
|
|||||||
|
|
||||||
LoadPlatformLibrary();
|
LoadPlatformLibrary();
|
||||||
|
|
||||||
AssemblyLoader.RegisterNativeResolver(new[] { "System.Data.SQLite", "Prowlarr.Core" });
|
AssemblyLoader.RegisterSQLiteResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Mock<T> TheRegisteredMockForThisType<T>(Type type)
|
private Mock<T> TheRegisteredMockForThisType<T>(Type type)
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ namespace Prowlarr.Http.Authentication
|
|||||||
return Unauthorized();
|
return Unauthorized();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (returnUrl.IsNullOrWhiteSpace() || !Url.IsLocalUrl(returnUrl))
|
if (returnUrl.IsNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
return Redirect(_configFileProvider.UrlBase + "/");
|
return Redirect(_configFileProvider.UrlBase + "/");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,13 +15,11 @@ namespace Prowlarr.Http.Frontend.Mappers
|
|||||||
_backupService = backupService;
|
_backupService = backupService;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string FolderPath => _backupService.GetBackupFolder().TrimEnd(Path.DirectorySeparatorChar);
|
public override string Map(string resourceUrl)
|
||||||
|
|
||||||
protected override string MapPath(string resourceUrl)
|
|
||||||
{
|
{
|
||||||
var path = resourceUrl.Replace("/backup/", "").Replace('/', Path.DirectorySeparatorChar);
|
var path = resourceUrl.Replace("/backup/", "").Replace('/', Path.DirectorySeparatorChar);
|
||||||
|
|
||||||
return Path.Combine(FolderPath, path);
|
return Path.Combine(_backupService.GetBackupFolder(), path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool CanHandle(string resourceUrl)
|
public override bool CanHandle(string resourceUrl)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common.Disk;
|
using NzbDrone.Common.Disk;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
@@ -6,29 +6,29 @@ using NzbDrone.Core.Configuration;
|
|||||||
|
|
||||||
namespace Prowlarr.Http.Frontend.Mappers
|
namespace Prowlarr.Http.Frontend.Mappers
|
||||||
{
|
{
|
||||||
public class BrowserConfig : UrlBaseReplacementResourceMapperBase
|
public class BrowserConfig : StaticResourceMapperBase
|
||||||
{
|
{
|
||||||
private readonly IAppFolderInfo _appFolderInfo;
|
private readonly IAppFolderInfo _appFolderInfo;
|
||||||
private readonly IConfigFileProvider _configFileProvider;
|
private readonly IConfigFileProvider _configFileProvider;
|
||||||
|
|
||||||
public BrowserConfig(IAppFolderInfo appFolderInfo, IDiskProvider diskProvider, IConfigFileProvider configFileProvider, Logger logger)
|
public BrowserConfig(IAppFolderInfo appFolderInfo, IDiskProvider diskProvider, IConfigFileProvider configFileProvider, Logger logger)
|
||||||
: base(diskProvider, configFileProvider, logger)
|
: base(diskProvider, logger)
|
||||||
{
|
{
|
||||||
_appFolderInfo = appFolderInfo;
|
_appFolderInfo = appFolderInfo;
|
||||||
_configFileProvider = configFileProvider;
|
_configFileProvider = configFileProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string FolderPath => Path.Combine(_appFolderInfo.StartUpFolder, _configFileProvider.UiFolder);
|
public override string Map(string resourceUrl)
|
||||||
protected override string FilePath => Path.Combine(FolderPath, "Content", "browserconfig.xml");
|
|
||||||
|
|
||||||
protected override string MapPath(string resourceUrl)
|
|
||||||
{
|
{
|
||||||
return FilePath;
|
var path = resourceUrl.Replace('/', Path.DirectorySeparatorChar);
|
||||||
|
path = path.Trim(Path.DirectorySeparatorChar);
|
||||||
|
|
||||||
|
return Path.ChangeExtension(Path.Combine(_appFolderInfo.StartUpFolder, _configFileProvider.UiFolder, path), "xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool CanHandle(string resourceUrl)
|
public override bool CanHandle(string resourceUrl)
|
||||||
{
|
{
|
||||||
return resourceUrl.StartsWith("/Content/browserconfig");
|
return resourceUrl.StartsWith("/content/images/icons/browserconfig");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,12 +30,6 @@ namespace Prowlarr.Http.Frontend.Mappers
|
|||||||
|
|
||||||
var mapper = _diskMappers.Single(m => m.CanHandle(resourceUrl));
|
var mapper = _diskMappers.Single(m => m.CanHandle(resourceUrl));
|
||||||
var pathToFile = mapper.Map(resourceUrl);
|
var pathToFile = mapper.Map(resourceUrl);
|
||||||
|
|
||||||
if (pathToFile == null)
|
|
||||||
{
|
|
||||||
return resourceUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
var hash = _hashProvider.ComputeMd5(pathToFile).ToBase64();
|
var hash = _hashProvider.ComputeMd5(pathToFile).ToBase64();
|
||||||
|
|
||||||
return resourceUrl + "?h=" + hash.Trim('=');
|
return resourceUrl + "?h=" + hash.Trim('=');
|
||||||
|
|||||||
@@ -18,9 +18,7 @@ namespace Prowlarr.Http.Frontend.Mappers
|
|||||||
_configFileProvider = configFileProvider;
|
_configFileProvider = configFileProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string FolderPath => Path.Combine(_appFolderInfo.StartUpFolder, _configFileProvider.UiFolder);
|
public override string Map(string resourceUrl)
|
||||||
|
|
||||||
protected override string MapPath(string resourceUrl)
|
|
||||||
{
|
{
|
||||||
var fileName = "favicon.ico";
|
var fileName = "favicon.ico";
|
||||||
|
|
||||||
@@ -31,7 +29,7 @@ namespace Prowlarr.Http.Frontend.Mappers
|
|||||||
|
|
||||||
var path = Path.Combine("Content", "Images", "Icons", fileName);
|
var path = Path.Combine("Content", "Images", "Icons", fileName);
|
||||||
|
|
||||||
return Path.Combine(FolderPath, path);
|
return Path.Combine(_appFolderInfo.StartUpFolder, _configFileProvider.UiFolder, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool CanHandle(string resourceUrl)
|
public override bool CanHandle(string resourceUrl)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user