mirror of
https://github.com/Sonarr/Sonarr.git
synced 2026-04-17 21:26:13 -04:00
Compare commits
26 Commits
v4.0.1.101
...
v4.0.1.111
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
913b845faa | ||
|
|
6e81517d51 | ||
|
|
34e74eecd7 | ||
|
|
895eccebc5 | ||
|
|
f722d49b3a | ||
|
|
cac97c057f | ||
|
|
63e132d257 | ||
|
|
6ab1d8e16b | ||
|
|
80630bf97f | ||
|
|
904285045b | ||
|
|
1006ec6b52 | ||
|
|
4cb1100704 | ||
|
|
745b92daf4 | ||
|
|
9eafdbd1af | ||
|
|
200396ef7a | ||
|
|
c5a724f14e | ||
|
|
42b11528b4 | ||
|
|
e2210228b3 | ||
|
|
ded7c3c6e2 | ||
|
|
e1c6722aad | ||
|
|
e17655c26a | ||
|
|
e66c628241 | ||
|
|
8f0514a91d | ||
|
|
d7aea82e45 | ||
|
|
19db75b36b | ||
|
|
11a18b534a |
@@ -10,7 +10,7 @@ function createIsDownloadingSelector() {
|
||||
(state) => state.queue.details,
|
||||
(episodeIds, details) => {
|
||||
return details.items.some((item) => {
|
||||
return item.episode && episodeIds.includes(item.episode.id);
|
||||
return !!(item.episodeId && episodeIds.includes(item.episodeId));
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
@@ -428,14 +428,16 @@ class SeriesDetails extends Component {
|
||||
className={styles.detailsLabel}
|
||||
size={sizes.LARGE}
|
||||
>
|
||||
<Icon
|
||||
name={icons.FOLDER}
|
||||
size={17}
|
||||
/>
|
||||
|
||||
<span className={styles.path}>
|
||||
{path}
|
||||
</span>
|
||||
<div>
|
||||
<Icon
|
||||
name={icons.FOLDER}
|
||||
size={17}
|
||||
/>
|
||||
<span className={styles.path}>
|
||||
{path}
|
||||
</span>
|
||||
</div>
|
||||
</Label>
|
||||
|
||||
<Tooltip
|
||||
@@ -444,16 +446,18 @@ class SeriesDetails extends Component {
|
||||
className={styles.detailsLabel}
|
||||
size={sizes.LARGE}
|
||||
>
|
||||
<Icon
|
||||
name={icons.DRIVE}
|
||||
size={17}
|
||||
/>
|
||||
|
||||
<span className={styles.sizeOnDisk}>
|
||||
{
|
||||
formatBytes(sizeOnDisk || 0)
|
||||
}
|
||||
</span>
|
||||
<div>
|
||||
<Icon
|
||||
name={icons.DRIVE}
|
||||
size={17}
|
||||
/>
|
||||
<span className={styles.sizeOnDisk}>
|
||||
{
|
||||
formatBytes(sizeOnDisk || 0)
|
||||
}
|
||||
</span>
|
||||
</div>
|
||||
</Label>
|
||||
}
|
||||
tooltip={
|
||||
@@ -470,32 +474,36 @@ class SeriesDetails extends Component {
|
||||
title={translate('QualityProfile')}
|
||||
size={sizes.LARGE}
|
||||
>
|
||||
<Icon
|
||||
name={icons.PROFILE}
|
||||
size={17}
|
||||
/>
|
||||
|
||||
<span className={styles.qualityProfileName}>
|
||||
{
|
||||
<QualityProfileNameConnector
|
||||
qualityProfileId={qualityProfileId}
|
||||
/>
|
||||
}
|
||||
</span>
|
||||
<div>
|
||||
<Icon
|
||||
name={icons.PROFILE}
|
||||
size={17}
|
||||
/>
|
||||
<span className={styles.qualityProfileName}>
|
||||
{
|
||||
<QualityProfileNameConnector
|
||||
qualityProfileId={qualityProfileId}
|
||||
/>
|
||||
}
|
||||
</span>
|
||||
</div>
|
||||
</Label>
|
||||
|
||||
<Label
|
||||
className={styles.detailsLabel}
|
||||
size={sizes.LARGE}
|
||||
>
|
||||
<Icon
|
||||
name={monitored ? icons.MONITORED : icons.UNMONITORED}
|
||||
size={17}
|
||||
/>
|
||||
|
||||
<span className={styles.qualityProfileName}>
|
||||
{monitored ? translate('Monitored') : translate('Unmonitored')}
|
||||
</span>
|
||||
<div>
|
||||
<Icon
|
||||
name={monitored ? icons.MONITORED : icons.UNMONITORED}
|
||||
size={17}
|
||||
/>
|
||||
<span className={styles.qualityProfileName}>
|
||||
{monitored ? translate('Monitored') : translate('Unmonitored')}
|
||||
</span>
|
||||
</div>
|
||||
</Label>
|
||||
|
||||
<Label
|
||||
@@ -503,14 +511,16 @@ class SeriesDetails extends Component {
|
||||
title={statusDetails.message}
|
||||
size={sizes.LARGE}
|
||||
>
|
||||
<Icon
|
||||
name={statusDetails.icon}
|
||||
size={17}
|
||||
/>
|
||||
|
||||
<span className={styles.qualityProfileName}>
|
||||
{statusDetails.title}
|
||||
</span>
|
||||
<div>
|
||||
<Icon
|
||||
name={statusDetails.icon}
|
||||
size={17}
|
||||
/>
|
||||
<span className={styles.qualityProfileName}>
|
||||
{statusDetails.title}
|
||||
</span>
|
||||
</div>
|
||||
</Label>
|
||||
|
||||
{
|
||||
@@ -520,14 +530,16 @@ class SeriesDetails extends Component {
|
||||
title={translate('Network')}
|
||||
size={sizes.LARGE}
|
||||
>
|
||||
<Icon
|
||||
name={icons.NETWORK}
|
||||
size={17}
|
||||
/>
|
||||
|
||||
<span className={styles.qualityProfileName}>
|
||||
{network}
|
||||
</span>
|
||||
<div>
|
||||
<Icon
|
||||
name={icons.NETWORK}
|
||||
size={17}
|
||||
/>
|
||||
<span className={styles.qualityProfileName}>
|
||||
{network}
|
||||
</span>
|
||||
</div>
|
||||
</Label>
|
||||
}
|
||||
|
||||
@@ -537,14 +549,16 @@ class SeriesDetails extends Component {
|
||||
className={styles.detailsLabel}
|
||||
size={sizes.LARGE}
|
||||
>
|
||||
<Icon
|
||||
name={icons.EXTERNAL_LINK}
|
||||
size={17}
|
||||
/>
|
||||
|
||||
<span className={styles.links}>
|
||||
{translate('Links')}
|
||||
</span>
|
||||
<div>
|
||||
<Icon
|
||||
name={icons.EXTERNAL_LINK}
|
||||
size={17}
|
||||
/>
|
||||
<span className={styles.links}>
|
||||
{translate('Links')}
|
||||
</span>
|
||||
</div>
|
||||
</Label>
|
||||
}
|
||||
tooltip={
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
}
|
||||
|
||||
.small {
|
||||
width: 480px;
|
||||
width: 490px;
|
||||
}
|
||||
|
||||
.large {
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
.token {
|
||||
flex: 0 0 50%;
|
||||
padding: 6px 16px;
|
||||
padding: 6px 6px;
|
||||
background-color: var(--popoverTitleBackgroundColor);
|
||||
font-family: $monoSpaceFontFamily;
|
||||
}
|
||||
@@ -36,7 +36,7 @@
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex: 0 0 50%;
|
||||
padding: 6px 16px;
|
||||
padding: 6px 6px;
|
||||
background-color: var(--popoverBodyBackgroundColor);
|
||||
|
||||
.footNote {
|
||||
|
||||
@@ -191,7 +191,7 @@ class Notification extends Component {
|
||||
}
|
||||
|
||||
{
|
||||
!onGrab && !onDownload && !onRename && !onHealthIssue && !onHealthRestored && !onApplicationUpdate && !onSeriesDelete && !onEpisodeFileDelete && !onManualInteractionRequired ?
|
||||
!onGrab && !onDownload && !onRename && !onHealthIssue && !onHealthRestored && !onApplicationUpdate && !onSeriesAdd && !onSeriesDelete && !onEpisodeFileDelete && !onManualInteractionRequired ?
|
||||
<Label
|
||||
kind={kinds.DISABLED}
|
||||
outline={true}
|
||||
|
||||
@@ -15,12 +15,17 @@ function PendingChangesModal(props) {
|
||||
isOpen,
|
||||
onConfirm,
|
||||
onCancel,
|
||||
bindShortcut
|
||||
bindShortcut,
|
||||
unbindShortcut
|
||||
} = props;
|
||||
|
||||
useEffect(() => {
|
||||
bindShortcut('enter', onConfirm);
|
||||
}, [bindShortcut, onConfirm]);
|
||||
if (isOpen) {
|
||||
bindShortcut('enter', onConfirm);
|
||||
|
||||
return () => unbindShortcut('enter', onConfirm);
|
||||
}
|
||||
}, [bindShortcut, unbindShortcut, isOpen, onConfirm]);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
@@ -61,7 +66,8 @@ PendingChangesModal.propTypes = {
|
||||
kind: PropTypes.oneOf(kinds.all),
|
||||
onConfirm: PropTypes.func.isRequired,
|
||||
onCancel: PropTypes.func.isRequired,
|
||||
bindShortcut: PropTypes.func.isRequired
|
||||
bindShortcut: PropTypes.func.isRequired,
|
||||
unbindShortcut: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
PendingChangesModal.defaultProps = {
|
||||
|
||||
@@ -88,7 +88,7 @@ function EditDelayProfileModalContent(props) {
|
||||
{
|
||||
!isFetching && !!error ?
|
||||
<div>
|
||||
{translate('AddQualityProfileError')}
|
||||
{translate('AddDelayProfileError')}
|
||||
</div> :
|
||||
null
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.Extensions;
|
||||
|
||||
namespace NzbDrone.Common.Test.ExtensionTests.StringExtensionTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class ReverseFixture
|
||||
{
|
||||
[TestCase("input", "tupni")]
|
||||
[TestCase("racecar", "racecar")]
|
||||
public void should_reverse_string(string input, string expected)
|
||||
{
|
||||
input.Reverse().Should().Be(expected);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -242,5 +242,14 @@ namespace NzbDrone.Common.Extensions
|
||||
{
|
||||
return input.Contains(':') ? $"[{input}]" : input;
|
||||
}
|
||||
|
||||
public static string Reverse(this string text)
|
||||
{
|
||||
var array = text.ToCharArray();
|
||||
|
||||
Array.Reverse(array);
|
||||
|
||||
return new string(array);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
using System.Collections.Generic;
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.CustomFormats;
|
||||
using NzbDrone.Core.Languages;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
|
||||
namespace NzbDrone.Core.Test.CustomFormats.Specifications.LanguageSpecification
|
||||
{
|
||||
[TestFixture]
|
||||
public class MultiLanguageFixture : CoreTest<Core.CustomFormats.LanguageSpecification>
|
||||
{
|
||||
private CustomFormatInput _input;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_input = new CustomFormatInput
|
||||
{
|
||||
EpisodeInfo = Builder<ParsedEpisodeInfo>.CreateNew().Build(),
|
||||
Series = Builder<Series>.CreateNew().With(s => s.OriginalLanguage = Language.English).Build(),
|
||||
Size = 100.Megabytes(),
|
||||
Languages = new List<Language>
|
||||
{
|
||||
Language.English,
|
||||
Language.French
|
||||
},
|
||||
Filename = "Series.Title.S01E01"
|
||||
};
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_match_one_language()
|
||||
{
|
||||
Subject.Value = Language.French.Id;
|
||||
Subject.Negate = false;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_match_different_language()
|
||||
{
|
||||
Subject.Value = Language.Spanish.Id;
|
||||
Subject.Negate = false;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_match_negated_when_one_language_matches()
|
||||
{
|
||||
Subject.Value = Language.French.Id;
|
||||
Subject.Negate = true;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_match_negated_when_all_languages_do_not_match()
|
||||
{
|
||||
Subject.Value = Language.Spanish.Id;
|
||||
Subject.Negate = true;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.CustomFormats;
|
||||
using NzbDrone.Core.Languages;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
|
||||
namespace NzbDrone.Core.Test.CustomFormats.Specifications.LanguageSpecification
|
||||
{
|
||||
[TestFixture]
|
||||
public class OriginalLanguageFixture : CoreTest<Core.CustomFormats.LanguageSpecification>
|
||||
{
|
||||
private CustomFormatInput _input;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_input = new CustomFormatInput
|
||||
{
|
||||
EpisodeInfo = Builder<ParsedEpisodeInfo>.CreateNew().Build(),
|
||||
Series = Builder<Series>.CreateNew().With(s => s.OriginalLanguage = Language.English).Build(),
|
||||
Size = 100.Megabytes(),
|
||||
Languages = new List<Language>
|
||||
{
|
||||
Language.French
|
||||
},
|
||||
Filename = "Series.Title.S01E01"
|
||||
};
|
||||
}
|
||||
|
||||
public void GivenLanguages(params Language[] languages)
|
||||
{
|
||||
_input.Languages = languages.ToList();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_match_same_single_language()
|
||||
{
|
||||
GivenLanguages(Language.English);
|
||||
|
||||
Subject.Value = Language.Original.Id;
|
||||
Subject.Negate = false;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_match_different_single_language()
|
||||
{
|
||||
Subject.Value = Language.Original.Id;
|
||||
Subject.Negate = false;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_match_negated_same_single_language()
|
||||
{
|
||||
GivenLanguages(Language.English);
|
||||
|
||||
Subject.Value = Language.Original.Id;
|
||||
Subject.Negate = true;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_match_negated_different_single_language()
|
||||
{
|
||||
Subject.Value = Language.Original.Id;
|
||||
Subject.Negate = true;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
using System.Collections.Generic;
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.CustomFormats;
|
||||
using NzbDrone.Core.Languages;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
|
||||
namespace NzbDrone.Core.Test.CustomFormats.Specifications.LanguageSpecification
|
||||
{
|
||||
[TestFixture]
|
||||
public class SingleLanguageFixture : CoreTest<Core.CustomFormats.LanguageSpecification>
|
||||
{
|
||||
private CustomFormatInput _input;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_input = new CustomFormatInput
|
||||
{
|
||||
EpisodeInfo = Builder<ParsedEpisodeInfo>.CreateNew().Build(),
|
||||
Series = Builder<Series>.CreateNew().With(s => s.OriginalLanguage = Language.English).Build(),
|
||||
Size = 100.Megabytes(),
|
||||
Languages = new List<Language>
|
||||
{
|
||||
Language.French
|
||||
},
|
||||
Filename = "Series.Title.S01E01"
|
||||
};
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_match_same_language()
|
||||
{
|
||||
Subject.Value = Language.French.Id;
|
||||
Subject.Negate = false;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_match_different_language()
|
||||
{
|
||||
Subject.Value = Language.Spanish.Id;
|
||||
Subject.Negate = false;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_match_negated_same_language()
|
||||
{
|
||||
Subject.Value = Language.French.Id;
|
||||
Subject.Negate = true;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_match_negated_different_language()
|
||||
{
|
||||
Subject.Value = Language.Spanish.Id;
|
||||
Subject.Negate = true;
|
||||
|
||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -406,17 +406,6 @@ namespace NzbDrone.Core.Test.ImportListTests
|
||||
.Verify(v => v.AddSeries(It.Is<List<Series>>(s => s.Count == 3), true), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_search_if_series_title_and_no_series_id()
|
||||
{
|
||||
_importListFetch.Series.ForEach(m => m.ImportListId = 1);
|
||||
WithList(1, true);
|
||||
Subject.Execute(_commandAll);
|
||||
|
||||
Mocker.GetMock<ISearchForNewSeries>()
|
||||
.Verify(v => v.SearchForNewSeries(It.IsAny<string>()), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_search_if_series_title_and_series_id()
|
||||
{
|
||||
|
||||
@@ -186,6 +186,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
||||
Path.Combine(_series.Path, "Scenes", "file6.mkv").AsOsAgnostic(),
|
||||
Path.Combine(_series.Path, "Shorts", "file7.mkv").AsOsAgnostic(),
|
||||
Path.Combine(_series.Path, "Trailers", "file8.mkv").AsOsAgnostic(),
|
||||
Path.Combine(_series.Path, "Other", "file9.mkv").AsOsAgnostic(),
|
||||
Path.Combine(_series.Path, "Series Title S01E01 (1080p BluRay x265 10bit Tigole).mkv").AsOsAgnostic(),
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.CustomFormats;
|
||||
using NzbDrone.Core.MediaFiles;
|
||||
using NzbDrone.Core.Organizer;
|
||||
using NzbDrone.Core.Qualities;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
|
||||
namespace NzbDrone.Core.Test.OrganizerTests.FileNameBuilderTests
|
||||
{
|
||||
[TestFixture]
|
||||
|
||||
public class TruncatedReleaseGroupFixture : CoreTest<FileNameBuilder>
|
||||
{
|
||||
private Series _series;
|
||||
private List<Episode> _episodes;
|
||||
private EpisodeFile _episodeFile;
|
||||
private NamingConfig _namingConfig;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_series = Builder<Series>
|
||||
.CreateNew()
|
||||
.With(s => s.Title = "Series Title")
|
||||
.Build();
|
||||
|
||||
_namingConfig = NamingConfig.Default;
|
||||
_namingConfig.MultiEpisodeStyle = 0;
|
||||
_namingConfig.RenameEpisodes = true;
|
||||
|
||||
Mocker.GetMock<INamingConfigService>()
|
||||
.Setup(c => c.GetConfig()).Returns(_namingConfig);
|
||||
|
||||
_episodes = new List<Episode>
|
||||
{
|
||||
Builder<Episode>.CreateNew()
|
||||
.With(e => e.Title = "Episode Title 1")
|
||||
.With(e => e.SeasonNumber = 1)
|
||||
.With(e => e.EpisodeNumber = 1)
|
||||
.Build()
|
||||
};
|
||||
|
||||
_episodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p), ReleaseGroup = "SonarrTest" };
|
||||
|
||||
Mocker.GetMock<IQualityDefinitionService>()
|
||||
.Setup(v => v.Get(Moq.It.IsAny<Quality>()))
|
||||
.Returns<Quality>(v => Quality.DefaultQualityDefinitions.First(c => c.Quality == v));
|
||||
|
||||
Mocker.GetMock<ICustomFormatService>()
|
||||
.Setup(v => v.All())
|
||||
.Returns(new List<CustomFormat>());
|
||||
}
|
||||
|
||||
private void GivenProper()
|
||||
{
|
||||
_episodeFile.Quality.Revision.Version = 2;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_truncate_from_beginning()
|
||||
{
|
||||
_series.Title = "The Fantastic Life of Mr. Sisko";
|
||||
|
||||
_episodeFile.Quality.Quality = Quality.Bluray1080p;
|
||||
_episodeFile.ReleaseGroup = "IWishIWasALittleBitTallerIWishIWasABallerIWishIHadAGirlWhoLookedGoodIWouldCallHerIWishIHadARabbitInAHatWithABatAndASixFourImpala";
|
||||
_episodes = _episodes.Take(1).ToList();
|
||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title} {Quality Full}-{ReleaseGroup:12}";
|
||||
|
||||
var result = Subject.BuildFileName(_episodes, _series, _episodeFile, ".mkv");
|
||||
result.Length.Should().BeLessOrEqualTo(255);
|
||||
result.Should().Be("The Fantastic Life of Mr. Sisko - S01E01 - Episode Title 1 Bluray-1080p-IWishIWas....mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_truncate_from_from_end()
|
||||
{
|
||||
_series.Title = "The Fantastic Life of Mr. Sisko";
|
||||
|
||||
_episodeFile.Quality.Quality = Quality.Bluray1080p;
|
||||
_episodeFile.ReleaseGroup = "IWishIWasALittleBitTallerIWishIWasABallerIWishIHadAGirlWhoLookedGoodIWouldCallHerIWishIHadARabbitInAHatWithABatAndASixFourImpala";
|
||||
_episodes = _episodes.Take(1).ToList();
|
||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title} {Quality Full}-{ReleaseGroup:-17}";
|
||||
|
||||
var result = Subject.BuildFileName(_episodes, _series, _episodeFile, ".mkv");
|
||||
result.Length.Should().BeLessOrEqualTo(255);
|
||||
result.Should().Be("The Fantastic Life of Mr. Sisko - S01E01 - Episode Title 1 Bluray-1080p-...ASixFourImpala.mkv");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.CustomFormats;
|
||||
using NzbDrone.Core.Organizer;
|
||||
using NzbDrone.Core.Qualities;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
|
||||
namespace NzbDrone.Core.Test.OrganizerTests.FileNameBuilderTests
|
||||
{
|
||||
[TestFixture]
|
||||
|
||||
public class TruncatedSeriesTitleFixture : CoreTest<FileNameBuilder>
|
||||
{
|
||||
private Series _series;
|
||||
private NamingConfig _namingConfig;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_series = Builder<Series>
|
||||
.CreateNew()
|
||||
.With(s => s.Title = "Series Title")
|
||||
.Build();
|
||||
|
||||
_namingConfig = NamingConfig.Default;
|
||||
_namingConfig.MultiEpisodeStyle = 0;
|
||||
_namingConfig.RenameEpisodes = true;
|
||||
|
||||
Mocker.GetMock<INamingConfigService>()
|
||||
.Setup(c => c.GetConfig()).Returns(_namingConfig);
|
||||
|
||||
Mocker.GetMock<IQualityDefinitionService>()
|
||||
.Setup(v => v.Get(Moq.It.IsAny<Quality>()))
|
||||
.Returns<Quality>(v => Quality.DefaultQualityDefinitions.First(c => c.Quality == v));
|
||||
|
||||
Mocker.GetMock<ICustomFormatService>()
|
||||
.Setup(v => v.All())
|
||||
.Returns(new List<CustomFormat>());
|
||||
}
|
||||
|
||||
[TestCase("{Series Title:16}", "The Fantastic...")]
|
||||
[TestCase("{Series TitleThe:17}", "Fantastic Life...")]
|
||||
[TestCase("{Series CleanTitle:-13}", "...Mr. Sisko")]
|
||||
public void should_truncate_series_title(string format, string expected)
|
||||
{
|
||||
_series.Title = "The Fantastic Life of Mr. Sisko";
|
||||
_namingConfig.SeriesFolderFormat = format;
|
||||
|
||||
var result = Subject.GetSeriesFolder(_series, _namingConfig);
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,6 +76,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||
[TestCase("Series T Se.3 afl.3 en 4", "Series T", 3, new[] { 3, 4 })]
|
||||
[TestCase("Series Title (S15E06-08) City Sushi", "Series Title", 15, new[] { 6, 7, 8 })]
|
||||
[TestCase("Босх: Спадок (S2E1-4) / Series: Legacy (S2E1-4) (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, new[] { 1, 2, 3, 4 })]
|
||||
[TestCase("Босх: Спадок / Series: Legacy / S2E1-4 of 10 (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, new[] { 1, 2, 3, 4 })]
|
||||
|
||||
// [TestCase("", "", , new [] { })]
|
||||
public void should_parse_multiple_episodes(string postTitle, string title, int season, int[] episodes)
|
||||
|
||||
@@ -94,6 +94,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||
}
|
||||
|
||||
[TestCase("Босх: Спадок (S2E1) / Series: Legacy (S2E1) (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Босх: Спадок", "Series: Legacy")]
|
||||
[TestCase("Босх: Спадок / Series: Legacy / S2E1-4 of 10 (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Босх: Спадок", "Series: Legacy")]
|
||||
public void should_parse_multiple_series_titles(string postTitle, params string[] titles)
|
||||
{
|
||||
var seriesTitleInfo = Parser.Parser.ParseTitle(postTitle).SeriesTitleInfo;
|
||||
|
||||
@@ -83,6 +83,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||
[TestCase("Series Title (2012) - S01E01 - Episode 1 (1080p BluRay x265 r00t).mkv", "r00t")]
|
||||
[TestCase("Series Title - S01E01 - Girls Gone Wild Exposed (720p x265 EDGE2020).mkv", "EDGE2020")]
|
||||
[TestCase("Series.Title.S01E02.1080p.BluRay.Remux.AVC.FLAC.2.0-E.N.D", "E.N.D")]
|
||||
[TestCase("Show Name (2016) Season 1 S01 (1080p AMZN WEB-DL x265 HEVC 10bit EAC3 5 1 RZeroX) QxR", "RZeroX")]
|
||||
public void should_parse_exception_release_group(string title, string expected)
|
||||
{
|
||||
Parser.Parser.ParseReleaseGroup(title).Should().Be(expected);
|
||||
|
||||
@@ -165,6 +165,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||
[TestCase("Series Title [HDTV][Cap.402](website.com).avi", "Series Title", 4, 2)]
|
||||
[TestCase("Series Title [HDTV 720p][Cap.101](website.com).mkv", "Series Title", 1, 1)]
|
||||
[TestCase("Босх: Спадок (S2E1) / Series: Legacy (S2E1) (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, 1)]
|
||||
[TestCase("Босх: Спадок / Series: Legacy / S2E1 of 10 (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, 1)]
|
||||
|
||||
// [TestCase("", "", 0, 0)]
|
||||
public void should_parse_single_episode(string postTitle, string title, int seasonNumber, int episodeNumber)
|
||||
@@ -211,5 +212,19 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||
result.FullSeason.Should().BeFalse();
|
||||
result.Special.Should().BeTrue();
|
||||
}
|
||||
|
||||
[TestCase("Series.Title.S06E01b.Fade.Out.Fade.in.Part.2.1080p.DSNP.WEB-DL.AAC2.0.H.264-FLUX", "Series Title", 6, 1)]
|
||||
public void should_parse_split_episode(string postTitle, string title, int seasonNumber, int episodeNumber)
|
||||
{
|
||||
var result = Parser.Parser.ParseTitle(postTitle);
|
||||
result.Should().NotBeNull();
|
||||
result.EpisodeNumbers.Should().HaveCount(1);
|
||||
result.SeasonNumber.Should().Be(seasonNumber);
|
||||
result.EpisodeNumbers.First().Should().Be(episodeNumber);
|
||||
result.SeriesTitle.Should().Be(title);
|
||||
result.AbsoluteEpisodeNumbers.Should().BeEmpty();
|
||||
result.FullSeason.Should().BeFalse();
|
||||
result.IsSplitEpisode.Should().BeTrue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace NzbDrone.Core.CustomFormats
|
||||
|
||||
public abstract NzbDroneValidationResult Validate();
|
||||
|
||||
public bool IsSatisfiedBy(CustomFormatInput input)
|
||||
public virtual bool IsSatisfiedBy(CustomFormatInput input)
|
||||
{
|
||||
var match = IsSatisfiedByWithoutNegate(input);
|
||||
|
||||
|
||||
@@ -30,6 +30,16 @@ namespace NzbDrone.Core.CustomFormats
|
||||
[FieldDefinition(1, Label = "CustomFormatsSpecificationLanguage", Type = FieldType.Select, SelectOptions = typeof(LanguageFieldConverter))]
|
||||
public int Value { get; set; }
|
||||
|
||||
public override bool IsSatisfiedBy(CustomFormatInput input)
|
||||
{
|
||||
if (Negate)
|
||||
{
|
||||
return IsSatisfiedByWithNegate(input);
|
||||
}
|
||||
|
||||
return IsSatisfiedByWithoutNegate(input);
|
||||
}
|
||||
|
||||
protected override bool IsSatisfiedByWithoutNegate(CustomFormatInput input)
|
||||
{
|
||||
var comparedLanguage = input.EpisodeInfo != null && input.Series != null && Value == Language.Original.Id && input.Series.OriginalLanguage != Language.Unknown
|
||||
@@ -39,6 +49,15 @@ namespace NzbDrone.Core.CustomFormats
|
||||
return input.Languages?.Contains(comparedLanguage) ?? false;
|
||||
}
|
||||
|
||||
private bool IsSatisfiedByWithNegate(CustomFormatInput input)
|
||||
{
|
||||
var comparedLanguage = input.EpisodeInfo != null && input.Series != null && Value == Language.Original.Id && input.Series.OriginalLanguage != Language.Unknown
|
||||
? input.Series.OriginalLanguage
|
||||
: (Language)Value;
|
||||
|
||||
return !input.Languages?.Contains(comparedLanguage) ?? false;
|
||||
}
|
||||
|
||||
public override NzbDroneValidationResult Validate()
|
||||
{
|
||||
return new NzbDroneValidationResult(Validator.Validate(this));
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
using System.Data;
|
||||
using System.Text.RegularExpressions;
|
||||
using FluentMigrator;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Instrumentation;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration
|
||||
{
|
||||
[Maintenance(MigrationStage.BeforeAll, TransactionBehavior.None)]
|
||||
public class DatabaseEngineVersionCheck : FluentMigrator.Migration
|
||||
{
|
||||
protected readonly Logger _logger;
|
||||
|
||||
public DatabaseEngineVersionCheck()
|
||||
{
|
||||
_logger = NzbDroneLogger.GetLogger(this);
|
||||
}
|
||||
|
||||
public override void Up()
|
||||
{
|
||||
IfDatabase("sqlite").Execute.WithConnection(LogSqliteVersion);
|
||||
IfDatabase("postgres").Execute.WithConnection(LogPostgresVersion);
|
||||
}
|
||||
|
||||
public override void Down()
|
||||
{
|
||||
// No-op
|
||||
}
|
||||
|
||||
private void LogSqliteVersion(IDbConnection conn, IDbTransaction tran)
|
||||
{
|
||||
using (var versionCmd = conn.CreateCommand())
|
||||
{
|
||||
versionCmd.Transaction = tran;
|
||||
versionCmd.CommandText = "SELECT sqlite_version();";
|
||||
|
||||
using (var reader = versionCmd.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
var version = reader.GetString(0);
|
||||
|
||||
_logger.Info("SQLite {0}", version);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void LogPostgresVersion(IDbConnection conn, IDbTransaction tran)
|
||||
{
|
||||
using (var versionCmd = conn.CreateCommand())
|
||||
{
|
||||
versionCmd.Transaction = tran;
|
||||
versionCmd.CommandText = "SHOW server_version";
|
||||
|
||||
using (var reader = versionCmd.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
var version = reader.GetString(0);
|
||||
var cleanVersion = Regex.Replace(version, @"\(.*?\)", "");
|
||||
|
||||
_logger.Info("Postgres {0}", cleanVersion);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,12 +42,13 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
||||
serviceProvider = new ServiceCollection()
|
||||
.AddLogging(b => b.AddNLog())
|
||||
.AddFluentMigratorCore()
|
||||
.Configure<RunnerOptions>(cfg => cfg.IncludeUntaggedMaintenances = true)
|
||||
.ConfigureRunner(
|
||||
builder => builder
|
||||
.AddPostgres()
|
||||
.AddNzbDroneSQLite()
|
||||
.WithGlobalConnectionString(connectionString)
|
||||
.WithMigrationsIn(Assembly.GetExecutingAssembly()))
|
||||
.ScanIn(Assembly.GetExecutingAssembly()).For.All())
|
||||
.Configure<TypeFilterOptions>(opt => opt.Namespace = "NzbDrone.Core.Datastore.Migration")
|
||||
.Configure<ProcessorOptions>(opt =>
|
||||
{
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using NLog;
|
||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||
{
|
||||
public class SplitEpisodeSpecification : IDecisionEngineSpecification
|
||||
{
|
||||
private readonly Logger _logger;
|
||||
|
||||
public SplitEpisodeSpecification(Logger logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public SpecificationPriority Priority => SpecificationPriority.Default;
|
||||
public RejectionType Type => RejectionType.Permanent;
|
||||
|
||||
public virtual Decision IsSatisfiedBy(RemoteEpisode subject, SearchCriteriaBase searchCriteria)
|
||||
{
|
||||
if (subject.ParsedEpisodeInfo.IsSplitEpisode)
|
||||
{
|
||||
_logger.Debug("Split episode release {0} rejected. Not supported", subject.Release.Title);
|
||||
return Decision.Reject("Split episode releases are not supported");
|
||||
}
|
||||
|
||||
return Decision.Accept();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Cache;
|
||||
using NzbDrone.Common.Http;
|
||||
|
||||
@@ -45,11 +45,10 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
||||
[FieldToken(TokenField.HelpText, "UseSsl", "clientName", "Transmission")]
|
||||
public bool UseSsl { get; set; }
|
||||
|
||||
[FieldDefinition(3, Label = "UrlBase", Type = FieldType.Textbox, Advanced = true, HelpText = "Adds a prefix to the transmission rpc url, eg http://[host]:[port]/[urlBase]/rpc, defaults to '/transmission/'")]
|
||||
[FieldDefinition(3, Label = "UrlBase", Type = FieldType.Textbox, Advanced = true, HelpText = "DownloadClientTransmissionSettingsUrlBaseHelpText")]
|
||||
[FieldToken(TokenField.HelpText, "UrlBase", "clientName", "Transmission")]
|
||||
[FieldToken(TokenField.HelpText, "UrlBase", "url", "http://[host]:[port]/[urlBase]/rpc")]
|
||||
[FieldToken(TokenField.HelpText, "UrlBase", "defaultUrl", "/transmission/")]
|
||||
|
||||
public string UrlBase { get; set; }
|
||||
|
||||
[FieldDefinition(4, Label = "Username", Type = FieldType.Textbox, Privacy = PrivacyLevel.UserName)]
|
||||
|
||||
@@ -96,6 +96,8 @@ namespace NzbDrone.Core.Download
|
||||
if (series == null)
|
||||
{
|
||||
trackedDownload.Warn("Series title mismatch; automatic import is not possible. Check the download troubleshooting entry on the wiki for common causes.");
|
||||
SendManualInteractionRequiredNotification(trackedDownload);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -106,16 +108,7 @@ namespace NzbDrone.Core.Download
|
||||
if (seriesMatchType == SeriesMatchType.Id && releaseSource != ReleaseSourceType.InteractiveSearch)
|
||||
{
|
||||
trackedDownload.Warn("Found matching series via grab history, but release was matched to series by ID. Automatic import is not possible. See the FAQ for details.");
|
||||
|
||||
if (!trackedDownload.HasNotifiedManualInteractionRequired)
|
||||
{
|
||||
trackedDownload.HasNotifiedManualInteractionRequired = true;
|
||||
|
||||
var releaseInfo = new GrabbedReleaseInfo(grabbedHistories);
|
||||
var manualInteractionEvent = new ManualInteractionRequiredEvent(trackedDownload, releaseInfo);
|
||||
|
||||
_eventAggregator.PublishEvent(manualInteractionEvent);
|
||||
}
|
||||
SendManualInteractionRequiredNotification(trackedDownload);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -136,6 +129,8 @@ namespace NzbDrone.Core.Download
|
||||
if (trackedDownload.RemoteEpisode == null)
|
||||
{
|
||||
trackedDownload.Warn("Unable to parse download, automatic import is not possible.");
|
||||
SendManualInteractionRequiredNotification(trackedDownload);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -192,6 +187,7 @@ namespace NzbDrone.Core.Download
|
||||
if (statusMessages.Any())
|
||||
{
|
||||
trackedDownload.Warn(statusMessages.ToArray());
|
||||
SendManualInteractionRequiredNotification(trackedDownload);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,6 +254,21 @@ namespace NzbDrone.Core.Download
|
||||
return false;
|
||||
}
|
||||
|
||||
private void SendManualInteractionRequiredNotification(TrackedDownload trackedDownload)
|
||||
{
|
||||
if (!trackedDownload.HasNotifiedManualInteractionRequired)
|
||||
{
|
||||
var grabbedHistories = _historyService.FindByDownloadId(trackedDownload.DownloadItem.DownloadId).Where(h => h.EventType == EpisodeHistoryEventType.Grabbed).ToList();
|
||||
|
||||
trackedDownload.HasNotifiedManualInteractionRequired = true;
|
||||
|
||||
var releaseInfo = grabbedHistories.Count > 0 ? new GrabbedReleaseInfo(grabbedHistories) : null;
|
||||
var manualInteractionEvent = new ManualInteractionRequiredEvent(trackedDownload, releaseInfo);
|
||||
|
||||
_eventAggregator.PublishEvent(manualInteractionEvent);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetImportItem(TrackedDownload trackedDownload)
|
||||
{
|
||||
trackedDownload.ImportItem = _provideImportItemService.ProvideImportItem(trackedDownload.DownloadItem, trackedDownload.ImportItem);
|
||||
|
||||
@@ -196,31 +196,30 @@ namespace NzbDrone.Core.Download
|
||||
private async Task<ProcessedDecisionResult> ProcessDecisionInternal(DownloadDecision decision, int? downloadClientId = null)
|
||||
{
|
||||
var remoteEpisode = decision.RemoteEpisode;
|
||||
var remoteIndexer = remoteEpisode.Release.Indexer;
|
||||
|
||||
try
|
||||
{
|
||||
_logger.Trace("Grabbing from Indexer {0} at priority {1}.", remoteEpisode.Release.Indexer, remoteEpisode.Release.IndexerPriority);
|
||||
_logger.Trace("Grabbing release '{0}' from Indexer {1} at priority {2}.", remoteEpisode, remoteIndexer, remoteEpisode.Release.IndexerPriority);
|
||||
await _downloadService.DownloadReport(remoteEpisode, downloadClientId);
|
||||
|
||||
return ProcessedDecisionResult.Grabbed;
|
||||
}
|
||||
catch (ReleaseUnavailableException)
|
||||
{
|
||||
_logger.Warn("Failed to download release from indexer, no longer available. " + remoteEpisode);
|
||||
_logger.Warn("Failed to download release '{0}' from Indexer {1}. Release not available", remoteEpisode, remoteIndexer);
|
||||
return ProcessedDecisionResult.Rejected;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (ex is DownloadClientUnavailableException || ex is DownloadClientAuthenticationException)
|
||||
{
|
||||
_logger.Debug(ex,
|
||||
"Failed to send release to download client, storing until later. " + remoteEpisode);
|
||||
|
||||
_logger.Debug(ex, "Failed to send release '{0}' from Indexer {1} to download client, storing until later.", remoteEpisode, remoteIndexer);
|
||||
return ProcessedDecisionResult.Failed;
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Warn(ex, "Couldn't add report to download queue. " + remoteEpisode);
|
||||
_logger.Warn(ex, "Couldn't add release '{0}' from Indexer {1} to download queue.", remoteEpisode, remoteIndexer);
|
||||
return ProcessedDecisionResult.Skipped;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -190,19 +190,6 @@ namespace NzbDrone.Core.ImportLists
|
||||
item.Title = mappedSeries.Title;
|
||||
}
|
||||
|
||||
// Map TVDb if we only have a series name
|
||||
if (item.TvdbId <= 0 && item.Title.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
var mappedSeries = _seriesSearchService.SearchForNewSeries(item.Title)
|
||||
.FirstOrDefault();
|
||||
|
||||
if (mappedSeries != null)
|
||||
{
|
||||
item.TvdbId = mappedSeries.TvdbId;
|
||||
item.Title = mappedSeries?.Title;
|
||||
}
|
||||
}
|
||||
|
||||
// Check to see if series excluded
|
||||
var excludedSeries = listExclusions.Where(s => s.TvdbId == item.TvdbId).SingleOrDefault();
|
||||
|
||||
|
||||
@@ -402,7 +402,7 @@ namespace NzbDrone.Core.Indexers.Newznab
|
||||
searchCriteria.SeasonNumber > 0 &&
|
||||
searchCriteria.EpisodeNumber > 0;
|
||||
|
||||
if (includeAnimeStandardFormatSearch)
|
||||
if (includeAnimeStandardFormatSearch && SupportsEpisodeSearch)
|
||||
{
|
||||
AddTvIdPageableRequests(pageableRequests,
|
||||
Settings.AnimeCategories,
|
||||
@@ -419,7 +419,7 @@ namespace NzbDrone.Core.Indexers.Newznab
|
||||
"search",
|
||||
$"&q={NewsnabifyTitle(queryTitle)}+{searchCriteria.AbsoluteEpisodeNumber:00}"));
|
||||
|
||||
if (includeAnimeStandardFormatSearch)
|
||||
if (includeAnimeStandardFormatSearch && SupportsEpisodeSearch)
|
||||
{
|
||||
pageableRequests.Add(GetPagedRequests(MaxPages,
|
||||
Settings.AnimeCategories,
|
||||
|
||||
@@ -1,3 +1,21 @@
|
||||
{
|
||||
"Absolute": "Absolut"
|
||||
"Absolute": "Absolut",
|
||||
"AbsoluteEpisodeNumber": "Absolut Episode-nummer",
|
||||
"AddConditionError": "Kan ikke tilføje en ny betingelse, prøv igen.",
|
||||
"AddAutoTagError": "Kan ikke tilføje en ny liste, prøv igen.",
|
||||
"AddConnection": "Tilføj forbindelse",
|
||||
"AddCustomFormat": "Tilføj tilpasset format",
|
||||
"AddCustomFormatError": "Kunne ikke tilføje et nyt tilpasset format, prøv igen.",
|
||||
"AddDelayProfile": "Tilføj forsinkelsesprofil",
|
||||
"AddCondition": "Tilføj betingelse",
|
||||
"AddAutoTag": "Tilføj automatisk Tag",
|
||||
"AbsoluteEpisodeNumbers": "Absolutte Episode-numre",
|
||||
"Add": "Tilføj",
|
||||
"Activity": "Aktivitet",
|
||||
"About": "Om",
|
||||
"Actions": "Handlinger",
|
||||
"AddANewPath": "Tilføj en ny sti",
|
||||
"AddConditionImplementation": "Tilføj betingelse - {implementationName}",
|
||||
"AddConnectionImplementation": "Tilføj forbindelse - {implementationName}",
|
||||
"AddCustomFilter": "Tilføj tilpasset filter"
|
||||
}
|
||||
|
||||
@@ -792,5 +792,6 @@
|
||||
"Branch": "Branch",
|
||||
"Airs": "Wird ausgestrahlt",
|
||||
"AddRootFolderError": "Stammverzeichnis kann nicht hinzugefügt werden",
|
||||
"IconForCutoffUnmet": "Symbol für Schwelle nicht erreicht"
|
||||
"IconForCutoffUnmet": "Symbol für Schwelle nicht erreicht",
|
||||
"DownloadClientSettingsAddPaused": "Pausiert hinzufügen"
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"AddCustomFormat": "Add Custom Format",
|
||||
"AddCustomFormatError": "Unable to add a new custom format, please try again.",
|
||||
"AddDelayProfile": "Add Delay Profile",
|
||||
"AddDelayProfileError": "Unable to add a new delay profile, please try again.",
|
||||
"AddDownloadClient": "Add Download Client",
|
||||
"AddDownloadClientError": "Unable to add a new download client, please try again.",
|
||||
"AddDownloadClientImplementation": "Add Download Client - {implementationName}",
|
||||
@@ -767,8 +768,8 @@
|
||||
"IconForSpecials": "Icon for Specials",
|
||||
"IconForSpecialsHelpText": "Show icon for special episodes (season 0)",
|
||||
"IgnoreDownload": "Ignore Download",
|
||||
"IgnoreDownloads": "Ignore Downloads",
|
||||
"IgnoreDownloadHint": "Stops {appName} from processing this download further",
|
||||
"IgnoreDownloads": "Ignore Downloads",
|
||||
"IgnoreDownloadsHint": "Stops {appName} from processing these downloads further",
|
||||
"Ignored": "Ignored",
|
||||
"IgnoredAddresses": "Ignored Addresses",
|
||||
@@ -1624,9 +1625,9 @@
|
||||
"RemoveFromQueue": "Remove from queue",
|
||||
"RemoveMultipleFromDownloadClientHint": "Removes downloads and files from download client",
|
||||
"RemoveQueueItem": "Remove - {sourceTitle}",
|
||||
"RemoveQueueItemRemovalMethodHelpTextWarning": "'Remove from Download Client' will remove the download and the file(s) from the download client.",
|
||||
"RemoveQueueItemConfirmation": "Are you sure you want to remove '{sourceTitle}' from the queue?",
|
||||
"RemoveQueueItemRemovalMethod": "Removal Method",
|
||||
"RemoveQueueItemRemovalMethodHelpTextWarning": "'Remove from Download Client' will remove the download and the file(s) from the download client.",
|
||||
"RemoveQueueItemsRemovalMethodHelpTextWarning": "'Remove from Download Client' will remove the downloads and the files from the download client.",
|
||||
"RemoveRootFolder": "Remove root folder",
|
||||
"RemoveSelected": "Remove Selected",
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
"Condition": "Condición",
|
||||
"Component": "Componente",
|
||||
"Custom": "Personalizado",
|
||||
"Cutoff": "Requisito",
|
||||
"Cutoff": "Umbral",
|
||||
"Dates": "Fechas",
|
||||
"Debug": "Debug",
|
||||
"Date": "Fecha",
|
||||
@@ -181,7 +181,7 @@
|
||||
"AddNewSeriesError": "Falló al cargar los resultados de la búsqueda, inténtelo de nuevo.",
|
||||
"AddNewSeriesHelpText": "Es fácil añadir una nueva serie, empiece escribiendo el nombre de la serie que desea añadir.",
|
||||
"AddNewSeriesRootFolderHelpText": "La subcarpeta '{folder}' será creada automáticamente",
|
||||
"AddNewSeriesSearchForCutoffUnmetEpisodes": "Empezar la búsqueda de episodios con requisitos no cumplidos",
|
||||
"AddNewSeriesSearchForCutoffUnmetEpisodes": "Empezar la búsqueda de episodios con umbrales no alcanzados",
|
||||
"AddNewSeriesSearchForMissingEpisodes": "Empezar búsqueda de episodios faltantes",
|
||||
"AddQualityProfile": "Añadir Perfil de Calidad",
|
||||
"AddQualityProfileError": "No se pudo añadir un nuevo perfil de calidad, inténtelo de nuevo.",
|
||||
@@ -436,7 +436,7 @@
|
||||
"CustomFormatsLoadError": "No se pueden cargar formatos personalizados",
|
||||
"CustomFormatsSettings": "Configuración de formatos personalizados",
|
||||
"CustomFormatsSettingsSummary": "Formatos y configuraciones personalizados",
|
||||
"CutoffUnmet": "Límite no alcanzado",
|
||||
"CutoffUnmet": "Umbrales no alcanzados",
|
||||
"DailyEpisodeFormat": "Formato de episodio diario",
|
||||
"Database": "Base de datos",
|
||||
"DelayMinutes": "{delay} Minutos",
|
||||
@@ -469,8 +469,8 @@
|
||||
"DelayProfileProtocol": "Protocolo: {preferredProtocol}",
|
||||
"DelayProfilesLoadError": "Incapaz de cargar Perfiles de Retardo",
|
||||
"ContinuingSeriesDescription": "Se esperan más episodios u otra temporada",
|
||||
"CutoffUnmetLoadError": "Error cargando objetos con condiciones de corte incumplidas",
|
||||
"CutoffUnmetNoItems": "Sin objetos sin condiciones de corte incumplidas",
|
||||
"CutoffUnmetLoadError": "Error cargando elementos con umbrales no alcanzados",
|
||||
"CutoffUnmetNoItems": "No hay elementos con umbrales no alcanzados",
|
||||
"DelayProfile": "Perfil de retardo",
|
||||
"Delete": "Eliminar",
|
||||
"DeleteDelayProfile": "Eliminar Perfil de Retardo",
|
||||
@@ -877,5 +877,194 @@
|
||||
"EnableRssHelpText": "Se usará cuando {appName} busque periódicamente lanzamientos vía Sincronización RSS",
|
||||
"EndedSeriesDescription": "No se esperan episodios o temporadas adicionales",
|
||||
"EpisodeFileDeleted": "Archivo de episodio eliminado",
|
||||
"EpisodeFileDeletedTooltip": "Archivo de episodio eliminado"
|
||||
"EpisodeFileDeletedTooltip": "Archivo de episodio eliminado",
|
||||
"Health": "Salud",
|
||||
"Here": "aquí",
|
||||
"Host": "Host",
|
||||
"HideEpisodes": "Ocultar episodios",
|
||||
"Hostname": "Nombre de host",
|
||||
"ICalSeasonPremieresOnlyHelpText": "Solo el primer episodio de una temporada estará en el feed",
|
||||
"ImportExistingSeries": "Importar series existentes",
|
||||
"ImportErrors": "Importar errores",
|
||||
"ImportList": "Importar lista",
|
||||
"ImportListSettings": "Importar ajustes de lista",
|
||||
"ImportListsSettingsSummary": "Importar desde otra instancia de {appName} o desde listas de Trakt y gestionar listas de exclusiones",
|
||||
"IncludeCustomFormatWhenRenamingHelpText": "Incluir en formato de renombrado {Custom Formats}",
|
||||
"QualityCutoffNotMet": "Calidad del umbral que no ha sido alcanzado",
|
||||
"SearchForCutoffUnmetEpisodesConfirmationCount": "¿Estás seguro que quieres buscar los {totalRecords} episodios en Umbrales no alcanzados?",
|
||||
"IndexerOptionsLoadError": "No se pudo cargar las opciones del indexador",
|
||||
"IndexerIPTorrentsSettingsFeedUrl": "URL de feed",
|
||||
"ICalFeed": "Feed de iCal",
|
||||
"Import": "Importar",
|
||||
"ImportFailed": "La importación falló: {sourceTitle}",
|
||||
"HiddenClickToShow": "Oculto, click para mostrar",
|
||||
"HttpHttps": "HTTP(S)",
|
||||
"ICalLink": "Enlace de iCal",
|
||||
"IconForFinalesHelpText": "Muestra un icono para finales de series/temporadas basado en la información de episodio disponible",
|
||||
"HideAdvanced": "Ocultar avanzado",
|
||||
"ICalShowAsAllDayEventsHelpText": "Los eventos aparecerán como eventos para todo el día en tu calendario",
|
||||
"IRCLinkText": "#sonarr en Libera",
|
||||
"IconForSpecialsHelpText": "Muestra un icono para episodios especiales (temporada 0)",
|
||||
"IgnoredAddresses": "Ignorar direcciones",
|
||||
"ImdbId": "ID de IMDb",
|
||||
"ImportCustomFormat": "Importar formato personalizado",
|
||||
"ImportExtraFiles": "Importar archivos adicionales",
|
||||
"ImportExtraFilesEpisodeHelpText": "Importa archivos adicionales (subtítulos, nfo, etc) tras importar un archivo de episodio",
|
||||
"ImportListExclusionsLoadError": "No se pudo cargar Importar lista de exclusiones",
|
||||
"ImportListStatusUnavailableHealthCheckMessage": "Listas no disponibles debido a fallos: {importListNames}",
|
||||
"ImportListsAniListSettingsAuthenticateWithAniList": "Autenticar con AniList",
|
||||
"ImportListsAniListSettingsImportCompletedHelpText": "Lista: Vistos por completo",
|
||||
"ImportListsAniListSettingsImportDroppedHelpText": "Lista: Abandonados",
|
||||
"ImportListsAniListSettingsImportFinished": "Importación Finalizados",
|
||||
"ImportListsAniListSettingsImportDropped": "Importar Abandonados",
|
||||
"ImportListsAniListSettingsImportFinishedHelpText": "Medios: Todos los episodios se han emitido",
|
||||
"ImportListsAniListSettingsImportHiatus": "Importar En hiatus",
|
||||
"ImportListsAniListSettingsImportNotYetReleasedHelpText": "Medios: La emisión aún no ha empezado",
|
||||
"ImportListsAniListSettingsImportPausedHelpText": "Lista: En espera",
|
||||
"ImportListsAniListSettingsImportPaused": "Importar En pausa",
|
||||
"ImportListsAniListSettingsImportReleasingHelpText": "Medios: Nuevos episodios actualmente en emisión",
|
||||
"ImportListsAniListSettingsImportWatching": "Importar Viendo",
|
||||
"ImportListsAniListSettingsImportRepeatingHelpText": "Lista: Revisionando actualmente",
|
||||
"ImportListsAniListSettingsImportRepeating": "Importar Repitiendo",
|
||||
"ImportListsAniListSettingsImportReleasing": "Importar En lanzamiento",
|
||||
"ImportListsAniListSettingsUsernameHelpText": "Nombre de usuario de la lista de la que importar",
|
||||
"ImportListsCustomListSettingsUrlHelpText": "La URL para la lista de series",
|
||||
"ImportListsCustomListValidationAuthenticationFailure": "Fallo de autenticación",
|
||||
"ImportListsCustomListValidationConnectionError": "No se pudo hacer la petición a esa URL. Código de estado: {exceptionStatusCode}",
|
||||
"ImportListsImdbSettingsListId": "ID de lista",
|
||||
"ImportListsImdbSettingsListIdHelpText": "ID de lista de IMDb (p. ej. ls12345678)",
|
||||
"ImportListsLoadError": "No se pudo cargas Importar listas",
|
||||
"ImportListsPlexSettingsAuthenticateWithPlex": "Autenticar con Plex.tv",
|
||||
"ImportListsPlexSettingsWatchlistName": "Lista de seguimiento de Plex",
|
||||
"ImportListsSettingsExpires": "Expira",
|
||||
"ImportListsSettingsAccessToken": "Token de acceso",
|
||||
"ImportListsSettingsRefreshToken": "Token de refresco",
|
||||
"ImportListsSettingsAuthUser": "Autenticación de usuario",
|
||||
"ImportListsSettingsRssUrl": "URL de RSS",
|
||||
"ImportListsSimklSettingsAuthenticatewithSimkl": "Autenticar con Simkl",
|
||||
"ImportListsSimklSettingsListType": "Tipo de lista",
|
||||
"ImportListsSimklSettingsShowType": "Mostrar tipo",
|
||||
"ImportListsSimklSettingsShowTypeHelpText": "Tipo de show del que deseas importar",
|
||||
"ImportListsSimklSettingsUserListTypeCompleted": "Completados",
|
||||
"ImportListsSimklSettingsUserListTypeHold": "En espera",
|
||||
"ImportListsSimklSettingsUserListTypeDropped": "Abandonados",
|
||||
"ImportListsSimklSettingsUserListTypePlanToWatch": "Planeado ver",
|
||||
"ImportListsSimklSettingsUserListTypeWatching": "Viendo",
|
||||
"ImportListsSonarrSettingsApiKeyHelpText": "Clave API de la instancia de {appName} de la que importar",
|
||||
"ImportListsSonarrSettingsFullUrl": "URL completa",
|
||||
"ImportListsSonarrSettingsQualityProfilesHelpText": "Perfiles de calidad de la instancia de la fuente de la que importar",
|
||||
"ImportListsSonarrSettingsRootFoldersHelpText": "Carpetas raíz de la instancia de la fuente de la que importar",
|
||||
"ImportListsTraktSettingsAdditionalParameters": "Parámetros adicionales",
|
||||
"ImportListsTraktSettingsAdditionalParametersHelpText": "Parámetros adicionales de la API de Trakt",
|
||||
"ImportListsTraktSettingsAuthenticateWithTrakt": "Autenticar con Trakt",
|
||||
"ImportListsTraktSettingsGenresHelpText": "Filtrar series por género de Trakt (separados por coma) solo para listas populares",
|
||||
"ImportListsTraktSettingsGenres": "Géneros",
|
||||
"ImportListsTraktSettingsLimitHelpText": "Limita el número de series a obtener",
|
||||
"ImportListsTraktSettingsLimit": "Limitar",
|
||||
"ImportListsTraktSettingsListType": "Tipo de lista",
|
||||
"ImportListsTraktSettingsPopularListTypeRecommendedAllTimeShows": "Shows recomendados de todos los tiempos",
|
||||
"ImportListsTraktSettingsPopularListTypeRecommendedWeekShows": "Shows recomendados por semana",
|
||||
"ImportListsTraktSettingsPopularListTypeRecommendedMonthShows": "Shows recomendados por mes",
|
||||
"ImportListsTraktSettingsPopularListTypeTopAllTimeShows": "Top de series vistas de todos los tiempos",
|
||||
"ImportListsTraktSettingsPopularListTypeTopMonthShows": "Top de series vistas por mes",
|
||||
"ImportListsTraktSettingsPopularListTypeTopYearShows": "Top de series vistas por año",
|
||||
"ImportListsTraktSettingsPopularListTypeTrendingShows": "Shows en tendencia",
|
||||
"ImportListsTraktSettingsPopularName": "Lista popular de Trakt",
|
||||
"ImportListsTraktSettingsRating": "Calificación",
|
||||
"ImportListsTraktSettingsRatingHelpText": "Filtrar series por rango de calificación (0-100)",
|
||||
"ImportListsTraktSettingsUserListName": "Usuario de Trakt",
|
||||
"ImportListsTraktSettingsUserListTypeCollection": "Lista de colecciones de usuario",
|
||||
"ImportListsTraktSettingsUserListTypeWatch": "Lista de seguimiento de usuario",
|
||||
"ImportListsTraktSettingsUserListTypeWatched": "Lista de vistos de usuario",
|
||||
"ImportListsTraktSettingsUserListUsernameHelpText": "Usuario para la lista de la que importar (dejar vacío para usar Autenticación de usuario)",
|
||||
"ImportListsTraktSettingsUsernameHelpText": "Usuario para la lista de la que importar",
|
||||
"ImportListsTraktSettingsWatchedListFilter": "Filtrar lista de vistos",
|
||||
"ImportListsTraktSettingsWatchedListFilterHelpText": "Si el tipo de vista es Vistos, selecciona el tipo de series que quieres importar",
|
||||
"ImportListsTraktSettingsWatchedListSorting": "Ordenar la lista de vistos",
|
||||
"ImportListsTraktSettingsWatchedListSortingHelpText": "Si el tipo de lista es Vistos, selecciona el orden para ordenar la lista",
|
||||
"ImportListsTraktSettingsWatchedListTypeCompleted": "100% vistos",
|
||||
"ImportListsTraktSettingsWatchedListTypeAll": "Todos",
|
||||
"ImportListsTraktSettingsWatchedListTypeInProgress": "En progreso",
|
||||
"ImportListsTraktSettingsYears": "Años",
|
||||
"ImportListsValidationInvalidApiKey": "La clave API es inválida",
|
||||
"ImportListsValidationTestFailed": "El test fue abortado debido a un error: {exceptionMessage}",
|
||||
"ImportScriptPathHelpText": "La ruta al script a usar para importar",
|
||||
"ImportUsingScriptHelpText": "Copiar archivos para importar usando un script (p. ej. para transcodificación)",
|
||||
"Importing": "Importando",
|
||||
"IncludeUnmonitored": "Incluir sin monitorizar",
|
||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Ningún indexador disponible debido a fallos durante más de 6 horas",
|
||||
"IRC": "IRC",
|
||||
"ICalShowAsAllDayEvents": "Mostrar como eventos para todo el día",
|
||||
"IndexerHDBitsSettingsCategories": "Categorías",
|
||||
"IndexerHDBitsSettingsCategoriesHelpText": "Si no se especifica, se usan todas las opciones.",
|
||||
"HomePage": "Página principal",
|
||||
"ImportSeries": "Importar series",
|
||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexadores no disponibles debido a fallos durante más de 6 horas: {indexerNames}",
|
||||
"IndexerIPTorrentsSettingsFeedUrlHelpText": "La URL completa de feed RSS generada por IPTorrents, usa solo las categorías que seleccionaste (HD, SD, x264, etc...)",
|
||||
"ICalIncludeUnmonitoredEpisodesHelpText": "Incluye episodios sin monitorizar en el feed de iCal",
|
||||
"Forecast": "Previsión",
|
||||
"IndexerDownloadClientHelpText": "Especifica qué cliente de descarga es usado para capturas desde este indexador",
|
||||
"IndexerHDBitsSettingsCodecs": "Códecs",
|
||||
"IndexerHDBitsSettingsCodecsHelpText": "Si no se especifica, se usan todas las opciones.",
|
||||
"IndexerHDBitsSettingsMediumsHelpText": "Si no se especifica, se usan todas las opciones.",
|
||||
"IndexerPriority": "Prioridad del indexador",
|
||||
"IconForFinales": "Icono para Finales",
|
||||
"IgnoreDownload": "Ignorar descarga",
|
||||
"IgnoreDownloads": "Ignorar descargas",
|
||||
"IgnoreDownloadHint": "Detiene {appName} de procesar esta descarga más adelante",
|
||||
"IgnoreDownloadsHint": "Detiene {appName} de procesar estas descargas más adelante",
|
||||
"Images": "Imágenes",
|
||||
"ImportCountSeries": "Importar {selectedCount} series",
|
||||
"ImportListStatusAllUnavailableHealthCheckMessage": "Ninguna lista está disponible debido a fallos",
|
||||
"ImportLists": "Importar listas",
|
||||
"ImportListsAniListSettingsImportHiatusHelpText": "Medios: Series en hiatus",
|
||||
"ImportListsAniListSettingsImportCompleted": "Importación Completados",
|
||||
"ImportListsAniListSettingsImportCancelledHelpText": "Medios: Series que están canceladas",
|
||||
"ImportListsCustomListSettingsName": "Lista personalizada",
|
||||
"ImportListsCustomListSettingsUrl": "URL de la lista",
|
||||
"ImportListsPlexSettingsWatchlistRSSName": "RSS de lista de seguimiento de Plex",
|
||||
"ImportListsSimklSettingsListTypeHelpText": "Tipo de lista de la que deseas importar",
|
||||
"ImportListsSimklSettingsName": "Lista de seguimiento de usuario de Simkl",
|
||||
"ImportListsSonarrSettingsTagsHelpText": "Etiquetas de la instancia de la fuente de la que importar",
|
||||
"ImportListsTraktSettingsListName": "Nombre de lista",
|
||||
"ImportListsTraktSettingsListNameHelpText": "Nombre de lista para importar, la lista debe ser pública o debes tener acceso a la lista",
|
||||
"ImportListsTraktSettingsListTypeHelpText": "Tipo de lista de la que deseas importar",
|
||||
"ImportListsTraktSettingsPopularListTypeAnticipatedShows": "Shows anticipados",
|
||||
"ImportListsTraktSettingsPopularListTypePopularShows": "Shows populares",
|
||||
"ImportListsTraktSettingsPopularListTypeRecommendedYearShows": "Shows recomendados por año",
|
||||
"ImportListsTraktSettingsPopularListTypeTopWeekShows": "Top de series vistas por semana",
|
||||
"ImportListsTraktSettingsYearsHelpText": "Filtrar series por año o un rango de años",
|
||||
"ImportListsValidationUnableToConnectException": "No se pudo conectar para importar la lista: {exceptionMessage}. Comprueba el registro sobre este error para más detalles.",
|
||||
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Habilitar Gestión de descargas completadas si es posible",
|
||||
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Habilitar Gestión de descargas completadas si es posible (Multi-ordenador no soportado)",
|
||||
"ImportMechanismHandlingDisabledHealthCheckMessage": "Habilitar Gestión de descargas completadas",
|
||||
"ImportedTo": "Importar a",
|
||||
"IncludeCustomFormatWhenRenaming": "Incluir formato personalizado cuando se renombra",
|
||||
"CleanLibraryLevel": "Limpiar el nivel de la librería",
|
||||
"SearchForCutoffUnmetEpisodes": "Buscar todos los episodios en Umbrales no alcanzados",
|
||||
"IconForSpecials": "Icono para Especiales",
|
||||
"ImportListExclusions": "Importar lista de exclusiones",
|
||||
"ImportListStatusAllPossiblePartialFetchHealthCheckMessage": "Todas las listas requieren interacción manual debido a posibles búsquedas parciales",
|
||||
"ImportListsAniListSettingsImportCancelled": "Importación Cancelados",
|
||||
"ImportListsAniListSettingsImportPlanning": "Importar planeados",
|
||||
"ImportListsAniListSettingsImportPlanningHelpText": "Lista: Planeados para ver",
|
||||
"ImportListsAniListSettingsImportWatchingHelpText": "Lista: Viendo actualmente",
|
||||
"ImportListsAniListSettingsImportNotYetReleased": "Importar Aún sin lanzar",
|
||||
"ImportListsSonarrSettingsFullUrlHelpText": "URL, incluyendo puerto, de la instancia de {appName} de la que importar",
|
||||
"IndexerPriorityHelpText": "Prioridad del indexador desde 1 (la más alta) hasta 50 (la más baja). Predeterminado: 25. Usada para desempatar lanzamientos iguales cuando se capturan, {appName} seguirá usando todos los indexadores habilitados para Sincronización de RSS y Búsqueda.",
|
||||
"IncludeHealthWarnings": "Incluir avisos de salud",
|
||||
"IndexerJackettAllHealthCheckMessage": "Indexadores usan el endpoint de Jackett no soportado 'todo': {indexerNames}",
|
||||
"HourShorthand": "h",
|
||||
"ICalFeedHelpText": "Copia esta URL a tu(s) cliente(s) o haz click para suscribirte si tu navegador soportar WebCal",
|
||||
"ICalTagsSeriesHelpText": "El feed solo contendrá series con al menos una etiqueta coincidente",
|
||||
"IconForCutoffUnmet": "Icono para Umbrales no alcanzados",
|
||||
"IconForCutoffUnmetHelpText": "Mostrar icono para archivos cuando el umbral no haya sido alcanzado",
|
||||
"EpisodeCount": "Número de episodios",
|
||||
"IndexerSettings": "Ajustes de Indexador",
|
||||
"AddDelayProfileError": "No se pudo añadir un nuevo perfil de retraso, inténtelo de nuevo.",
|
||||
"IndexerRssNoIndexersAvailableHealthCheckMessage": "Todos los indexers capaces de RSS están temporalmente desactivados debido a errores recientes con el indexer",
|
||||
"IndexerRssNoIndexersEnabledHealthCheckMessage": "No hay indexadores disponibles con la sincronización RSS activada, {appName} no capturará nuevos estrenos automáticamente",
|
||||
"IndexerSearchNoAutomaticHealthCheckMessage": "No hay indexadores disponibles con Búsqueda Automática activada, {appName} no proporcionará ningún resultado de búsquedas automáticas",
|
||||
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "Todos los indexadores con capacidad de búsqueda no están disponibles temporalmente debido a errores recientes del indexadores",
|
||||
"IndexerSearchNoInteractiveHealthCheckMessage": "No hay indexadores disponibles con Búsqueda Interactiva activada, {appName} no proporcionará ningún resultado de búsquedas interactivas"
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"RecycleBinUnableToWriteHealthCheckMessage": "Määritettyyn roskakorikansioon ei voida tallentaa: {path}. Varmista että sijainti on olemassa ja että sovelluksen suorittavalla käyttäjällä on siihen kirjoitusoikeus.",
|
||||
"RemotePathMappingDownloadPermissionsEpisodeHealthCheckMessage": "{appName} näkee ladatun jakson \"{path}\", muttei voi käyttää sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
|
||||
"RemotePathMappingDownloadPermissionsEpisodeHealthCheckMessage": "{appName} näkee ladatun jakson \"{path}\", mutta ei voi avata sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
|
||||
"Added": "Lisäysaika",
|
||||
"AppDataLocationHealthCheckMessage": "Päivityksiä ei sallita, jotta AppData-kansion poistaminen päivityksen yhteydessä voidaan estää.",
|
||||
"DownloadClientSortingHealthCheckMessage": "Lataustyökalun \"{downloadClientName}\" {sortingMode} on kytketty käyttöön {appName}in kategorialle ja tuontiongelmien välttämiseksi se tulisi poistaa käytöstä.",
|
||||
"IndexerRssNoIndexersEnabledHealthCheckMessage": "RSS-synkronointia varten ei ole määritetty tietolähteitä ja tämän vuoksi {appName} ei kaappaa uusia julkaisuja automaattisesti.",
|
||||
"IndexerSearchNoInteractiveHealthCheckMessage": "Manuaalihaulle ei ole määritetty tietolähteitä, eikä se sen vuoksi löydä tuloksia.",
|
||||
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Lataustyökalu \"{downloadClientName}\" ilmoitti tiedostosijainniksi \"{path}\", mutta {appName} ei näe sitä. Kansion käyttöoikeuksia on ehkä muokattava.",
|
||||
"RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} näkee ladatauskansion \"{downloadPath}\" näkyy, muttei voi käyttää sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
|
||||
"RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} näkee ladatauskansion \"{downloadPath}\", mutta ei voi avata sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
|
||||
"RemotePathMappingImportEpisodeFailedHealthCheckMessage": "Jaksojen tuonti epäonnistui. Katso tarkemmat tiedot lokista.",
|
||||
"RemotePathMappingGenericPermissionsHealthCheckMessage": "Lataustyökalu \"{downloadClientName}\" tallentaa lataukset kohteeseen \"{path}\", mutta {appName} ei näe sitä. Kansion käyttöoikeuksia on ehkä muokattava.",
|
||||
"IndexerSearchNoAutomaticHealthCheckMessage": "Automaattihakua varten ei ole määritetty tietolähteitä ja tämän vuoksi {appName}in automaattihaku ei löydä tuloksia.",
|
||||
@@ -45,7 +45,7 @@
|
||||
"UiLanguage": "Käyttöliittymän kieli",
|
||||
"UiLanguageHelpText": "{appName}in käyttöliittymän kieli.",
|
||||
"AutomaticUpdatesDisabledDocker": "Automaattisia päivityksiä ei tueta suoraan käytettäessä Dockerin päivitysmekanismia. Docker-säiliö on päivitettävä {appName}in ulkopuolella tai päivitys on suoritettava skriptillä.",
|
||||
"AddListExclusionSeriesHelpText": "Estä sarjan poiminta {appName}iin listoilta.",
|
||||
"AddListExclusionSeriesHelpText": "Estä {appName}ia lisäämästä sarjaa listoilta.",
|
||||
"AppUpdated": "{appName} on päivitetty",
|
||||
"AuthenticationMethodHelpText": "Vaadi {appName}in käyttöön käyttäjätunnus ja salasana.",
|
||||
"ConnectionLostToBackend": "{appName} kadotti yhteyden taustajärjestelmään ja se on käynnistettävä uudelleen.",
|
||||
@@ -92,7 +92,7 @@
|
||||
"Actions": "Toiminnot",
|
||||
"Absolute": "Ehdoton",
|
||||
"AddANewPath": "Lisää uusi polku",
|
||||
"RemotePathMappingBadDockerPathHealthCheckMessage": "Käytät Dockeria ja lataustyökalu \"{downloadClientName}\" tallentaa lataukset kohteeseen \"{path}\", mutta se ei ole kelvollinen {osName}-sijainti. Tarkista etäsijaintien kartoitukset ja lataustyökalun asetukset.",
|
||||
"RemotePathMappingBadDockerPathHealthCheckMessage": "Käytät Dockeria ja lataustyökalu \"{downloadClientName}\" tallentaa lataukset kohteeseen \"{path}\", mutta se ei ole kelvollinen {osName}-sijainti. Tarkista etäsijaintien kohdistukset ja lataustyökalun asetukset.",
|
||||
"AddDownloadClientImplementation": "Lisäätään lataustyökalua - {implementationName}",
|
||||
"AddImportListExclusionError": "Virhe lisättäessä tuontilistapokkeusta. Yritä uudelleen.",
|
||||
"AddIndexerImplementation": "Lisätään tietolähdettä - {implementationName}",
|
||||
@@ -107,7 +107,7 @@
|
||||
"AnimeEpisodeFormat": "Animejaksojen kaava",
|
||||
"CheckDownloadClientForDetails": "katso lisätietoja lataustyökalusta",
|
||||
"Donations": "Lahjoitukset",
|
||||
"DownloadClientsSettingsSummary": "Lataustyökalut, latausten käsittely ja etäsijaintien kartoitukset.",
|
||||
"DownloadClientsSettingsSummary": "Lataustyökalut, latausten käsittely ja etäsijaintien kohdistukset.",
|
||||
"EpisodeFileRenamed": "Jaksotiedosto nimettiin uudelleen",
|
||||
"EpisodeImported": "Jakso tuotiin",
|
||||
"EpisodeImportedTooltip": "Jakso ladattiin ja poimittiin lataustyökalulta",
|
||||
@@ -128,10 +128,10 @@
|
||||
"AddNewRestriction": "Lisää uusi rajoitus",
|
||||
"All": "Kaikki",
|
||||
"AddReleaseProfile": "Lisää jukaisuprofiili",
|
||||
"AddRemotePathMapping": "Lisää etäsijainnin kartoitus",
|
||||
"AddRemotePathMapping": "Lisää etäsijainnin kohdistus",
|
||||
"AddQualityProfileError": "Virhe lisättäessä laatuprofiilia. Yritä uudelleen.",
|
||||
"AfterManualRefresh": "Manuaalisen päivityksen jälkeen",
|
||||
"AddRemotePathMappingError": "Virhe lisättäessä etäsijainnin kartoitusta. Yritä uudelleen.",
|
||||
"AddRemotePathMappingError": "Etäsijainnin kohdistuksen lisäys epäonnistui. Yritä uudelleen.",
|
||||
"ApplicationURL": "Sovelluksen URL",
|
||||
"AuthBasic": "Perus (ponnahdusikkuna)",
|
||||
"AuthForm": "Lomake (kirjautumissivu)",
|
||||
@@ -145,7 +145,7 @@
|
||||
"Clear": "Tyhjennä",
|
||||
"CollectionsLoadError": "Virhe ladattaessa kokoelmia",
|
||||
"CreateEmptySeriesFolders": "Luo sarjoille tyhjät kansiot",
|
||||
"CreateEmptySeriesFoldersHelpText": "Luo puuttuvien sarjojen kansiot kirjastotarkistusten yhteydessä.",
|
||||
"CreateEmptySeriesFoldersHelpText": "Luo puuttuvat sarjakansiot kirjastotarkistusten yhteydessä.",
|
||||
"CustomFormatsLoadError": "Virhe ladattaessa mukautettuja muotoja",
|
||||
"Debug": "Vianselvitys",
|
||||
"DeleteDelayProfileMessageText": "Haluatko varmasti poistaa viiveprofiilin?",
|
||||
@@ -162,7 +162,7 @@
|
||||
"MoreInfo": "Lisätietoja",
|
||||
"Network": "Kanava/tuottaja",
|
||||
"OnGrab": "Kun julkaisu kaapataan",
|
||||
"DownloadClientQbittorrentValidationCategoryAddFailureDetail": "\"{appName}\" ei voinut lisätä tunnistettä qBittorentiin.",
|
||||
"DownloadClientQbittorrentValidationCategoryAddFailureDetail": "{appName} ei voinut lisätä tunnistetta qBittorrentiin.",
|
||||
"SeriesFolderFormat": "Sarjakansioiden kaava",
|
||||
"TagDetails": "Tunnisteen \"{0}\" tiedot",
|
||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä: {downloadClientNames}",
|
||||
@@ -223,7 +223,7 @@
|
||||
"MonitorNewSeasons": "Valvo uusia kausia",
|
||||
"MonitorLastSeasonDescription": "Valvo kaikkia viimeisen kauden jaksoja.",
|
||||
"MonitorNewSeasonsHelpText": "Uusien kausien automaattivalvonnan käytäntö.",
|
||||
"MoveSeriesFoldersToRootFolder": "Haluatko siirtää sarjan tiedostot kohteeseen \"{destinationRootFolder}\"?",
|
||||
"MoveSeriesFoldersToRootFolder": "Haluatko siirtää sarjakansiot kohteeseen \"{destinationRootFolder}\"?",
|
||||
"MoreDetails": "Lisätietoja",
|
||||
"MonitoredStatus": "Valvottu/tila",
|
||||
"NegateHelpText": "Jos käytössä, ei mukautettua muotoa sovelleta tämän \"{implementationName}\" -ehdon täsmätessä.",
|
||||
@@ -238,9 +238,9 @@
|
||||
"NoLogFiles": "Lokitiedostoja ei ole",
|
||||
"RefreshSeries": "Päivitä sarja",
|
||||
"ReleaseSceneIndicatorUnknownSeries": "Tuntematon jakso tai sarja.",
|
||||
"RemotePathMappingFilesBadDockerPathHealthCheckMessage": "Käytät Dockeria ja lataustyökalu \"{downloadClientName}\" ilmoitti tiedostosijainniksi \"{path}\", mutta se ei ole kelvollinen {osName}-sijainti. Tarkista etäsijaintien kartoitukset ja lataustyökalun asetukset.",
|
||||
"RemotePathMappingFilesBadDockerPathHealthCheckMessage": "Käytät Dockeria ja lataustyökalu \"{downloadClientName}\" ilmoitti tiedostosijainniksi \"{path}\", mutta se ei ole kelvollinen {osName}-sijainti. Tarkista etäsijaintien kohdistukset ja lataustyökalun asetukset.",
|
||||
"RemoveCompletedDownloads": "Poista valmistuneet lataukset",
|
||||
"RemotePathMappingsLoadError": "Etäsijaintien kartoitusten lataus epäonnistui",
|
||||
"RemotePathMappingsLoadError": "Etäsijaintien kohdistusten lataus epäonnistui",
|
||||
"RemoveFailedDownloads": "Poista epäonnistuneet lataukset",
|
||||
"RemoveFailed": "Poisto epäonnistui",
|
||||
"RemoveFromBlocklist": "Poista estolistalta",
|
||||
@@ -280,10 +280,10 @@
|
||||
"ReleaseProfileTagSeriesHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille sarjoille. Käytä kaikille jättämällä tyhjäksi.",
|
||||
"ReleaseTitle": "Julkaisun nimike",
|
||||
"Reload": "Lataa uudelleen",
|
||||
"RemotePathMappingFilesWrongOSPathHealthCheckMessage": "Etälataustyökalu \"{downloadClientName}\" ilmoitti tiedostosijainniksi \"{path}\", mutta se ei ole kelvollinen {osName}-sijainti. Tarkista etsijaintien kartoitukset lataustyökalun asetukset.",
|
||||
"RemotePathMappingFilesWrongOSPathHealthCheckMessage": "Etälataustyökalu \"{downloadClientName}\" ilmoitti tiedostosijainniksi \"{path}\", mutta se ei ole kelvollinen {osName}-sijainti. Tarkista etsijaintien kohdistukset ja lataustyökalun asetukset.",
|
||||
"RemoveTagsAutomatically": "Poista tunnisteet automaattisesti",
|
||||
"RemotePathMappingsInfo": "Etäsijaintien kartoitusta tarvitaan harvoin ja jos {app} ja lataustyökalu suoritetaan samassa järjestelmässä, on parempi käyttää paikallisia polkuja. Lue lisää [wikistä]({wikiLink}).",
|
||||
"RemovedSeriesMultipleRemovedHealthCheckMessage": "Sarjat {series} on poistettu TheTVDB.comista",
|
||||
"RemotePathMappingsInfo": "Etäsijaintien kohdistuksia tarvitaan harvoin ja jos {appName} ja lataustyökalu suoritetaan samassa järjestelmässä, on parempi käyttää paikallisia polkuja. Lue lisää [wikistä]({wikiLink}).",
|
||||
"RemovedSeriesMultipleRemovedHealthCheckMessage": "Sarjat {series} poistettiin TheTVDB:stä.",
|
||||
"RemovedFromTaskQueue": "Poistettu tehtäväjonosta",
|
||||
"RestartNow": "Käynnistä uudelleen nyt",
|
||||
"AllTitles": "Kaikki nimikkeet",
|
||||
@@ -333,12 +333,12 @@
|
||||
"Trace": "Jäljitys",
|
||||
"TotalRecords": "Rivien kokonaismäärä: {totalRecords}",
|
||||
"TotalSpace": "Kokonaistila",
|
||||
"TvdbIdExcludeHelpText": "Ohitettavan sarjan TheTVDB ID",
|
||||
"TvdbIdExcludeHelpText": "Ohitettavan sarjan TheTVDB ID.",
|
||||
"Type": "Tyyppi",
|
||||
"TypeOfList": "{typeOfList}-lista",
|
||||
"Twitter": "X (Twitter)",
|
||||
"UiSettingsSummary": "Kalenterin, päiväyksen ja värirajoitteisten asetukset.",
|
||||
"UnmappedFolders": "Kartoittamattomat kansiot",
|
||||
"UnmappedFolders": "Kohdistamattomat kansiot",
|
||||
"UnmonitorSpecialEpisodes": "Älä valvo erikoisjaksoja",
|
||||
"UnmonitorSpecialsEpisodesDescription": "Lopeta kaikkien erikoisjaksojen valvonta muuttamatta muiden jakosojen tilaa.",
|
||||
"Unmonitored": "Valvomattomat",
|
||||
@@ -374,7 +374,7 @@
|
||||
"Downloading": "Ladataan",
|
||||
"ProgressBarProgress": "Tilapalkissa {progress} %",
|
||||
"Queue": "Jono",
|
||||
"RemotePathMappingRemotePathHelpText": "Lataustyökalun käyttämän hakemiston juurisijainti",
|
||||
"RemotePathMappingRemotePathHelpText": "Lataustyökalun käyttämän kansion juurisijainti.",
|
||||
"Restart": "Käynnistä uudelleen",
|
||||
"SizeLimit": "Kokorajoitus",
|
||||
"TestAllIndexers": "Tietolähteiden testaus",
|
||||
@@ -386,7 +386,7 @@
|
||||
"SeriesMatchType": "Sarjan kohdistustyyppi",
|
||||
"RemotePathMappingLocalPathHelpText": "Polku, jonka kautta etäsijaintia tulee käyttää paikallisesti.",
|
||||
"SonarrTags": "{appName}in tunnisteet",
|
||||
"CalendarLoadError": "Virhe ladattaessa kalenteria",
|
||||
"CalendarLoadError": "Kalenterin lataus epäonnistui.",
|
||||
"BeforeUpdate": "Ennen päivitystä",
|
||||
"Backups": "Varmuuskopiot",
|
||||
"BackupNow": "Varmuuskopioi nyt",
|
||||
@@ -480,7 +480,7 @@
|
||||
"MonitorFirstSeason": "Ensimmäinen kausi",
|
||||
"Monitoring": "Valvotaan",
|
||||
"MonitorRecentEpisodesDescription": "Valvo viimeisten 90 päivän sisällä julkaistuja jaksoja ja tulevia jaksoja.",
|
||||
"MoveSeriesFoldersToNewPath": "Haluatko, että sarjan tiedostot siirretään lähteestä \"{originalPath}\" kohteeseen \"{destinationPath}\"?",
|
||||
"MoveSeriesFoldersToNewPath": "Haluatko, että sarjan tiedostot siirretään kansiosta \"{originalPath}\" kohteeseen \"{destinationPath}\"?",
|
||||
"MonitorPilotEpisodeDescription": "Valvo vain ensimmäisen kauden ensimmäistä jaksoa.",
|
||||
"Name": "Nimi",
|
||||
"NamingSettings": "Nimeämisasetukset",
|
||||
@@ -489,7 +489,7 @@
|
||||
"DeleteSeriesFolderCountWithFilesConfirmation": "Haluatko varmasti poistaa {count} valittua sarjaa ja niiden kaiken sisällön?",
|
||||
"DeleteSeriesFoldersHelpText": "Poista sarjakansiot ja niiden kaikki sisältö.",
|
||||
"DeleteSeriesModalHeader": "Poistetaan - {title}",
|
||||
"DeletedSeriesDescription": "Sarja on poistettu TheTVDB.comista.",
|
||||
"DeletedSeriesDescription": "Sarja poistettiin TheTVDB:stä.",
|
||||
"NoUpdatesAreAvailable": "Päivityksiä ei ole saatavilla",
|
||||
"NotificationStatusSingleClientHealthCheckMessage": "Ilmoitukset eivät ole ongelmien vuoksi käytettävissä: {notificationNames}",
|
||||
"NotificationsLoadError": "Kytkösten lataus epäonnistui.",
|
||||
@@ -504,9 +504,9 @@
|
||||
"RefreshAndScan": "Päivitä ja tarkista",
|
||||
"Refresh": "Päivitä",
|
||||
"ReleaseProfilesLoadError": "Virhe ladattaessa julkaisuprofiileita",
|
||||
"RemotePathMappingLocalFolderMissingHealthCheckMessage": "Etälataustyökalu \"{0}\" tallentaa lataukset kohteeseen \"{1}\", mutta sitä ei näytä olevan olemassa. Todennäköinen syy on puuttuva tai virheellinen etäsijainnin kartoitus.",
|
||||
"DownloadClientDelugeValidationLabelPluginFailureDetail": "{appName} ei voinut lisätä tunnistetta lataustyökaluun \"{clientName}\".",
|
||||
"DownloadClientDelugeValidationLabelPluginInactive": "Label-lisäosa ei ole aktiivinen",
|
||||
"RemotePathMappingLocalFolderMissingHealthCheckMessage": "Etälataustyökalu \"{0}\" tallentaa lataukset kohteeseen \"{1}\", mutta sitä ei näytä olevan olemassa. Todennäköinen syy on puuttuva tai virheellinen etäsijainnin kohdistus.",
|
||||
"DownloadClientDelugeValidationLabelPluginFailureDetail": "{appName} ei voinut lisätä Label-tunnistetta {clientName}en.",
|
||||
"DownloadClientDelugeValidationLabelPluginInactive": "Label-tunnistelisäosa ei ole käytössä.",
|
||||
"AddConditionImplementation": "Lisätään ehtoa - {implementationName}",
|
||||
"AddCustomFilter": "Lisää oma suodatin",
|
||||
"AddConnectionImplementation": "Lisätään kytköstä - {implementationName}",
|
||||
@@ -516,7 +516,7 @@
|
||||
"RenameEpisodes": "Nimeä jaksot uudelleen",
|
||||
"RenameFiles": "Nimeä tiedostot",
|
||||
"RemoveTagsAutomaticallyHelpText": "Poista tunnisteet automaattisesti, jos ehdot eivät täyty.",
|
||||
"RemovedSeriesSingleRemovedHealthCheckMessage": "Sarja {series} on poistettu TheTVDB.comista",
|
||||
"RemovedSeriesSingleRemovedHealthCheckMessage": "Sarja {series} poistettiin TheTVDB:stä.",
|
||||
"RescanAfterRefreshHelpTextWarning": "{appName} ei tunnista tiedostomuutoksia automaattisesti, jos asetuksena ei ole \"Aina\".",
|
||||
"RequiredHelpText": "Tämän \"{implementationName}\" -ehdon on täsmättävä mukautetun muodon käyttämiseksi. Muutoin riittää yksi \"{implementationName}\" -vastaavuus.",
|
||||
"RescanSeriesFolderAfterRefresh": "Tarkista sarjan kansio päivityksen jälkeen",
|
||||
@@ -610,7 +610,7 @@
|
||||
"EditIndexerImplementation": "Muokataan tietolähdettä - {implementationName}",
|
||||
"EditListExclusion": "Muokkaa poikkeussääntöä",
|
||||
"EditSeriesModalHeader": "Muokataan - {title}",
|
||||
"EnableInteractiveSearch": "Käytä manuaalihakua",
|
||||
"EnableInteractiveSearch": "Käytä manuaalihakuun",
|
||||
"EnableRssHelpText": "Käytetään {appName}in etsiessä julkaisuja ajoitetusti RSS-synkronoinnilla.",
|
||||
"EnableSslHelpText": "Käyttöönotto vaatii {appName}in uudelleenkäynnistyksen järjestelmänvavojan oikeuksilla.",
|
||||
"EpisodeFileRenamedTooltip": "Jaksotiedosto nimettiin uudelleen",
|
||||
@@ -626,15 +626,15 @@
|
||||
"ErrorLoadingContents": "Virhe ladattaessa sisältöjä",
|
||||
"EpisodesLoadError": "Virhe ladattaessa jaksoja",
|
||||
"ErrorLoadingContent": "Virhe ladattaessa tätä sisältöä",
|
||||
"FailedToLoadCustomFiltersFromApi": "Omien suodatinten lataus API:sta epäonnistui",
|
||||
"FailedToLoadQualityProfilesFromApi": "Laatuprofiilien lataus API:sta epäonnistui",
|
||||
"FailedToLoadCustomFiltersFromApi": "Suodatinmukautusten lataus rajapinnasta epäonnistui",
|
||||
"FailedToLoadQualityProfilesFromApi": "Laatuprofiilien lataus rajapinnasta epäonnistui",
|
||||
"CalendarFeed": "{appName}in kalenterisyöte",
|
||||
"Agenda": "Agenda",
|
||||
"AnEpisodeIsDownloading": "Jaksoa ladataan",
|
||||
"ListOptionsLoadError": "Virhe ladattaessa tuontilista-asetuksia",
|
||||
"RemoveCompleted": "Poisto on suoritettu",
|
||||
"ICalShowAsAllDayEvents": "Näytä koko päivän tapahtumina",
|
||||
"FailedToLoadTagsFromApi": "Tunnisteiden lataus API:sta epäonnistui",
|
||||
"FailedToLoadTagsFromApi": "Tunnisteiden lataus rajapinnasta epäonnistui",
|
||||
"FilterContains": "sisältää",
|
||||
"FilterDoesNotContain": "ei sisällä",
|
||||
"FilterEpisodesPlaceholder": "Suodata jaksoja nimella tai numerolla",
|
||||
@@ -662,7 +662,7 @@
|
||||
"ImportListSearchForMissingEpisodesHelpText": "{appName} aloittaa automaattisesti puuttuvien jaksojen etsinnän kun sarja lisätään.",
|
||||
"InteractiveSearchModalHeaderSeason": "Manuaalihaku - {season}",
|
||||
"InteractiveImportNoImportMode": "Tuontitila on valittava.",
|
||||
"InteractiveSearch": "Manuaalihaku",
|
||||
"InteractiveSearch": "Etsi manuaalisesti",
|
||||
"InteractiveSearchModalHeader": "Manuaalihaku",
|
||||
"KeyboardShortcutsCloseModal": "Sulje nykyinen ikkuna",
|
||||
"KeyboardShortcuts": "Pikanäppäimet",
|
||||
@@ -705,8 +705,8 @@
|
||||
"IndexerOptionsLoadError": "Virhe ladattaessa tietolähdeasetuksia",
|
||||
"NoTagsHaveBeenAddedYet": "Tunnisteita ei ole vielä lisätty.",
|
||||
"PreferProtocol": "Suosi {preferredProtocol}-protokollaa",
|
||||
"RemotePathMappings": "Etäsijaintien kartoitukset",
|
||||
"RemotePathMappingRemoteDownloadClientHealthCheckMessage": "Etälataustyökalu \"{0}\" ilmoitti tiedostosijainniksi \"{1}\", mutta sitä ei näytä olevan olemassa. Todennäköinen syy on puuttuva tai virheellinen etäsijainnin kartoitus.",
|
||||
"RemotePathMappings": "Etäsijaintien kohdistukset",
|
||||
"RemotePathMappingRemoteDownloadClientHealthCheckMessage": "Etälataustyökalu \"{0}\" ilmoitti tiedostosijainniksi \"{1}\", mutta sitä ei näytä olevan olemassa. Todennäköinen syy on puuttuva tai virheellinen etäsijainnin kohdistus.",
|
||||
"Scheduled": "Ajoitukset",
|
||||
"RootFolders": "Juurikansiot",
|
||||
"RssSyncInterval": "RSS-synkronoinnin ajoitus",
|
||||
@@ -732,10 +732,10 @@
|
||||
"ChownGroupHelpTextWarning": "Toimii vain, jos {appName}in suorittava käyttäjä on tiedoston omistaja. On parempi varmistaa, että lataustyökalu käyttää samaa ryhmää kuin {appName}.",
|
||||
"IndexerSettingsSeasonPackSeedTimeHelpText": "Aika, joka tuotantokausipaketin sisältävää torrentia tulee jakaa ennen sen pysäytystä. Käytä lataustyökalun oletusta jättämällä tyhjäksi.",
|
||||
"ApplyTagsHelpTextAdd": "– \"Lisää\" syötetyt tunnisteet aiempiin tunnisteisiin",
|
||||
"RemotePathMappingDockerFolderMissingHealthCheckMessage": "Käytät Dockeria ja lataustyökalu \"{downloadClientName}\" tallentaa lataukset kohteeseen \"{path}\", mutta sitä ei löydy Docker-säiliöstä. Tarkista etäsijaintien kartoitukset ja säiliön tallennusmedian asetukset.",
|
||||
"RemotePathMappingDockerFolderMissingHealthCheckMessage": "Käytät Dockeria ja lataustyökalu \"{downloadClientName}\" tallentaa lataukset kohteeseen \"{path}\", mutta sitä ei löydy Docker-säiliöstä. Tarkista etäsijaintien kohdistukset ja säiliön tallennusmedian asetukset.",
|
||||
"TorrentBlackholeSaveMagnetFilesHelpText": "Tallenna magnet-linkki, jos .torrent-tiedostoa ei ole käytettävissä (hyödyllinen vain lataustyökalun tukiessa tiedostoon tallennettuja magnet-linkkejä).",
|
||||
"IndexerPriorityHelpText": "Tietolähteen painotus, 1– 50 (korkein-alin). Oletusarvo on 25. Käytetään muutoin tasaveroisten julkaisujen kaappauspäätökseen. Kaikkia käytössä olevia tietolähteitä käytetään edelleen RSS-synkronointiin ja hakuun.",
|
||||
"SeriesAndEpisodeInformationIsProvidedByTheTVDB": "Sarjojen ja jaksojen tiedot toimittaa TheTVDB.com. [Harkitse palvelun tukemista](https://www.thetvdb.com/subscribe)",
|
||||
"SeriesAndEpisodeInformationIsProvidedByTheTVDB": "Sarjojen ja jaksojen tiedot tarjoaa TheTVDB.com. [Harkitse palvelun tukemista](https://www.thetvdb.com/subscribe)",
|
||||
"DownloadClientQbittorrentValidationRemovesAtRatioLimitDetail": "{appName} ei voi suorittaa valmistuneiden latausten hallintaa määritetyllä tavalla. Voit korjata tämän vaihtamalla qBittorentin asetusten \"BitTorrent\"-osion \"Jakorajoitukset\"-osion toiminnoksi pysäytyksen poiston sijaan.",
|
||||
"FullColorEventsHelpText": "Vaihtoehtoinen tyyli, jossa koko tapahtuma väritetään tilavärillä pelkän vasemman laidan sijaan. Ei vaikuta agendan esitykseen.",
|
||||
"Yesterday": "Eilen",
|
||||
@@ -744,10 +744,10 @@
|
||||
"AutoTaggingRequiredHelpText": "Tämän \"{implementationName}\" -ehdon on täsmättävä automaattimerkinnän säännön käyttämiseksi. Muutoin yksittäinen \"{implementationName}\" -vastaavuus riittää.",
|
||||
"LibraryImportTipsSeriesUseRootFolder": "Osoita {appName} kaikki sarjat sisältävään kansioon, ei sarjakohtaiseen kansioon. Esim. \"`{goodFolderExample}`\" eikä \"`{badFolderExample}`\". Lisäksi jokaisen sarjan on oltava kirjasto-/juurkansion alla omissa kansioissa.",
|
||||
"SeriesDetailsGoTo": "Avaa {title}",
|
||||
"SeriesEditRootFolderHelpText": "Siirtämällä sarjat samaan juurikansioon voidaan niiden kansioiden nimet päivittää vastaamaan päivitettyä nimikettä tai nimeämistyyliä.",
|
||||
"SeriesEditRootFolderHelpText": "Siirtämällä sarjat samaan juurikansioon voidaan niiden kansioiden nimet päivittää vastaamaan päivittynyttä nimikettä tai nimeämiskaavaa.",
|
||||
"WouldYouLikeToRestoreBackup": "Haluatko palauttaa varmuuskopion \"{name}\"?",
|
||||
"SeriesLoadError": "Virhe ladattaessa sarjoja",
|
||||
"IconForCutoffUnmetHelpText": "Näytä kuvake tiedostoille, joiden katkaisutasoa ei ole vielä saavutettu.",
|
||||
"IconForCutoffUnmetHelpText": "Näytä kuvake tiedostoille, joiden määritettyä katkaisutasoa ei ole vielä saavutettu.",
|
||||
"DownloadClientOptionsLoadError": "Virhe ladattaessa lataustyökaluasetuksia",
|
||||
"UseHardlinksInsteadOfCopy": "Käytä hardlink-kytköksiä",
|
||||
"TorrentBlackholeSaveMagnetFilesReadOnlyHelpText": "Tiedostojen siirtämisen sijaan tämä ohjaa {appName}in kopioimaan tiedostot tai käyttämään hardlink-kytköksiä (asetuksista/järjesteästä riippuen).",
|
||||
@@ -797,7 +797,7 @@
|
||||
"Theme": "Teema",
|
||||
"DeleteSeriesFolderCountConfirmation": "Haluatko varmasti poistaa {count} valittua sarjaa?",
|
||||
"DownloadClientSettings": "Lataustyökalujen asetukset",
|
||||
"FailedToLoadSeriesFromApi": "Sarjan lataus API:sta epäonnistui",
|
||||
"FailedToLoadSeriesFromApi": "Sarjan lataus rajapinnasta epäonnistui",
|
||||
"OverrideGrabModalTitle": "Ohita ja kaappaa - {title}",
|
||||
"ShowEpisodeInformation": "Näytä jaksojen tiedot",
|
||||
"ShowEpisodes": "Näytä jaksot",
|
||||
@@ -842,7 +842,7 @@
|
||||
"DeleteSelectedDownloadClients": "Poista lataustyökalu(t)",
|
||||
"DeleteSelectedIndexersMessageText": "Haluatko varmasti poistaa {count} valit(un/tua) tietoläh(teen/dettä)?",
|
||||
"DeleteCustomFormatMessageText": "Haluatko varmasti poistaa mukautetun muodon \"{customFormatName}\"?",
|
||||
"DeleteRemotePathMapping": "Poista etäreittien kartoitus",
|
||||
"DeleteRemotePathMapping": "Poista etäsijainnin kohdistus",
|
||||
"DeleteSelectedImportLists": "Poista tuontilista(t)",
|
||||
"DetailedProgressBar": "Yksityiskohtainen tilapalkki",
|
||||
"DelayProfileSeriesTagsHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille sarjoille.",
|
||||
@@ -861,14 +861,14 @@
|
||||
"Details": "Tiedot",
|
||||
"DownloadClient": "Lataustyökalu",
|
||||
"DisabledForLocalAddresses": "Ei käytössä paikallisille osoitteille",
|
||||
"DownloadClientDelugeValidationLabelPluginFailure": "Tunnisteen määritys epäonnistui",
|
||||
"DownloadClientDelugeValidationLabelPluginInactiveDetail": "Kategorioiden käyttö edellyttää, että lataustyökalun \"{clientName}\" Label-lisäosa on käytössä.",
|
||||
"DownloadClientDelugeValidationLabelPluginFailure": "Label-tunnisteen määritys epäonnistui.",
|
||||
"DownloadClientDelugeValidationLabelPluginInactiveDetail": "Kategorioiden käyttö edellyttää, että {clientName}n Label-tunnistelisäosa on käytössä.",
|
||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Lisää median ominaisuuksia tunnisteina. Vihjeet ovat esimerkkejä.",
|
||||
"DownloadClientFloodSettingsTagsHelpText": "Latauksen alkuperäiset tunnisteet. Jotta se voidaa tunnistaa, on latauksella oltava sen alkuperäiset tunnisteet. Tämä välttää ristiriidat muiden latausten kanssa.",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Ensimmäinen ja viimeinen ensin",
|
||||
"Donate": "Lahjoita",
|
||||
"DiskSpace": "Levytila",
|
||||
"DownloadClientDelugeTorrentStateError": "Deluge ilmoittaa virheestä",
|
||||
"DownloadClientDelugeTorrentStateError": "Deluge ilmoittaa virhettä",
|
||||
"DownloadClientFreeboxApiError": "Freebox API palautti virheen: {errorDescription}",
|
||||
"DownloadClientFreeboxAuthenticationError": "Freebox API -todennus epäonnistui. Syy: {errorDescription}",
|
||||
"Download": "Lataa",
|
||||
@@ -1003,7 +1003,7 @@
|
||||
"Uptime": "Käyttöaika",
|
||||
"MonitorNoEpisodes": "Ei mitään",
|
||||
"MonitorNoEpisodesDescription": "Mitään jaksoja ei valvota.",
|
||||
"RemotePathMappingWrongOSPathHealthCheckMessage": "Etälataustyökalu \"{downloadClientName}\" tallentaa lataukset kohteeseen \"{path}\", mutta se ei ole kelvollinen {osName}-sijainti. Tarkista etäsijaintien kartoitukset ja lataustyökalun asetukset.",
|
||||
"RemotePathMappingWrongOSPathHealthCheckMessage": "Etälataustyökalu \"{downloadClientName}\" tallentaa lataukset kohteeseen \"{path}\", mutta se ei ole kelvollinen {osName}-sijainti. Tarkista etäsijaintien kohdistukset ja lataustyökalun asetukset.",
|
||||
"RemoveFailedDownloadsHelpText": "Poista epäonnistuneet lataukset lataustyökalun historiasta",
|
||||
"RemoveSelected": "Poista valitut",
|
||||
"RemoveSelectedBlocklistMessageText": "Haluatko varmasti poistaa valitut kohteet estolistalta?",
|
||||
@@ -1014,7 +1014,7 @@
|
||||
"SearchForAllMissingEpisodes": "Etsi kaikkia puuttuvia jaksoja",
|
||||
"Seasons": "Kaudet",
|
||||
"SearchAll": "Etsi kaikkia",
|
||||
"SearchByTvdbId": "Voit etsiä myös sarjan TVDB ID:llä, esim. \"tvdb:71663\".",
|
||||
"SearchByTvdbId": "Voit etsiä myös sarjojen TheTVDB ID-tunnisteilla (esim. \"tvdb:71663\").",
|
||||
"RootFoldersLoadError": "Virhe ladattaessa juurikansioita",
|
||||
"SearchFailedError": "Haku epäonnistui. Yritä myöhemmin uudelleen.",
|
||||
"Year": "Vuosi",
|
||||
@@ -1094,7 +1094,7 @@
|
||||
"PrefixedRange": "Etuliitealue",
|
||||
"Range": "Alue",
|
||||
"RecyclingBinCleanupHelpTextWarning": "Määritettyä päiväystä vanhemmat tiedostot poistetaan roskakorista automaattisesti.",
|
||||
"ReplaceIllegalCharacters": "Kiellettyjen merkkien korvaus",
|
||||
"ReplaceIllegalCharacters": "Korvaa kielletyt merkit",
|
||||
"AirDate": "Esitysaika",
|
||||
"AutoTagging": "Automaattinen tunnistemerkintä",
|
||||
"CloneAutoTag": "Monista automaattimerkintä",
|
||||
@@ -1111,8 +1111,8 @@
|
||||
"Connection": "Yhteys",
|
||||
"Date": "Päiväys",
|
||||
"DeleteSpecification": "Poista määritys",
|
||||
"BlackholeFolderHelpText": "Kansio, jossa {appName} säilyttää {extension}-tiedoston.",
|
||||
"BlackholeWatchFolder": "Valvottu kansio",
|
||||
"BlackholeFolderHelpText": "Kansio, jonne {appName} tallentaa {extension}-tiedoston.",
|
||||
"BlackholeWatchFolder": "Valvontakansio",
|
||||
"BlackholeWatchFolderHelpText": "Kansio, josta {appName}in tulee tuoda valmistuneet lataukset.",
|
||||
"AptUpdater": "Asenna päivitys APT-työkalun avulla",
|
||||
"Original": "Alkuperäiset",
|
||||
@@ -1156,7 +1156,7 @@
|
||||
"Directory": "Kansio",
|
||||
"PendingChangesDiscardChanges": "Hylkää muutokset ja poistu",
|
||||
"RecyclingBinHelpText": "Poistetut tiedostot siirretään tänne pysyvän poiston sijaan.",
|
||||
"ReleaseSceneIndicatorAssumingTvdb": "Oletuksena TVDB-numerointi.",
|
||||
"ReleaseSceneIndicatorAssumingTvdb": "Oletuksena TheTVDB-numerointi.",
|
||||
"ReleaseSceneIndicatorMappedNotRequested": "Valittu jakso ei sisältynyt tähän hakuun.",
|
||||
"ReplaceWithSpaceDash": "Korvaa yhdistelmällä \"välilyönti yhdysmerkki\"",
|
||||
"ReplaceWithSpaceDashSpace": "Korvaa yhdistelmällä \"välilyönti yhdysmerkki välilyönti\"",
|
||||
@@ -1219,7 +1219,7 @@
|
||||
"ColonReplacementFormatHelpText": "Määritä, mitä {appName} tekee tiedostonimien kaksoispisteille.",
|
||||
"CountSelectedFiles": "{selectedCount} tiedostoa on valittu",
|
||||
"DelayProfiles": "Viiveprofiilit",
|
||||
"DeleteRemotePathMappingMessageText": "Haluatko varmasti poistaa tämä etäsijainnin kartoituksen?",
|
||||
"DeleteRemotePathMappingMessageText": "Haluatko varmasti poistaa tämän etäsijainnin kohdistuksen?",
|
||||
"Deleted": "Poistettu",
|
||||
"DeletedReasonManual": "Tiedosto poistettiin käyttöliittymän kautta",
|
||||
"DestinationPath": "Kohdesijainti",
|
||||
@@ -1231,7 +1231,7 @@
|
||||
"DotNetVersion": ".NET",
|
||||
"DownloadClientPneumaticSettingsStrmFolder": "Strm-kansio",
|
||||
"DoNotPrefer": "Älä suosi",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Lisää etuliitteeksi Delugen JSON-URL:n. Ks {url}.",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Lisää etuliitteen Delugen JSON-URL-osoitteeseen (ks. {url}).",
|
||||
"DownloadClientDownloadStationValidationApiVersion": "Download Stationin API-versiota ei tueta. Sen tulee olla vähintään {requiredVersion} (versioita {minVersion}–{maxVersion} tuetaan).",
|
||||
"DownloadClientFloodSettingsRemovalInfo": "{appName} suorittaa torrenttien automaattisen poiston sen tietolähdeastuksissa määritettyjen jakoasetusten perusteella.",
|
||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Lisää etuliitteeksi Flood API:n (esim. {url}).",
|
||||
@@ -1240,10 +1240,10 @@
|
||||
"MultiEpisode": "Useita jaksoja",
|
||||
"Negated": "Kielletty",
|
||||
"MultiEpisodeInvalidFormat": "Useita jaksoja: virheellinen kaava",
|
||||
"AutoRedownloadFailedFromInteractiveSearch": "Uudelleenlataus manuaalihausta epäonnistui",
|
||||
"AutoRedownloadFailedFromInteractiveSearch": "Uudelleenlataus manuaalihaun tuloksista epäonnistui",
|
||||
"Blocklist": "Estolista",
|
||||
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Etsi automaattisesti ja pyri lataamaan eri julkaisu vaikka epäonnistunut julkaisu oli kaapattu manuaalihausta.",
|
||||
"StandardEpisodeFormat": "Vakiojaksojen kaava",
|
||||
"StandardEpisodeFormat": "Tavallisten jaksojen kaava",
|
||||
"SceneNumberNotVerified": "Kohtausnumeroa ei ole vielä vahvistettu",
|
||||
"Scene": "Kohtaus",
|
||||
"RssSyncIntervalHelpText": "Aikaväli minuutteina. Arvo \"0\" (nolla) kytkee toiminnon pois käytöstä pysäyttäen automaattisen julkaisukaappauksen täysin.",
|
||||
@@ -1268,7 +1268,7 @@
|
||||
"ReplaceWithDash": "Korvaa yhdysmerkillä",
|
||||
"ConnectSettingsSummary": "Ilmoitukset, kuten viestintä mediapalvelimille ja soittimille, sekä omat komentosarjat.",
|
||||
"DockerUpdater": "Hanki päivitys päivittämällä Docker-säiliö",
|
||||
"DownloadClientQbittorrentValidationCategoryRecommended": "Kategoria tulisi määrittää",
|
||||
"DownloadClientQbittorrentValidationCategoryRecommended": "Kategorian määritys on suositeltavaa",
|
||||
"NoEpisodeInformation": "Jaksotietoja ei ole saatavilla.",
|
||||
"ManualGrab": "Manuaalinen kaappaus",
|
||||
"DownloadClientDownloadStationSettingsDirectory": "Valinnainen jaettu kansio latauksille. Jätä tyhjäksi käyttääksesi Download Stationin oletussijaintia.",
|
||||
@@ -1280,7 +1280,7 @@
|
||||
"External": "Ulkoinen",
|
||||
"MaintenanceRelease": "Huoltojulkaisu: korjauksia ja muita parannuksia. Lue lisää Githubin muutoshistoriasta.",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Määrittää käytetäänkö qBittorrentista määritettyä rakennetta, torrentin alkuperäistä rakennetta vai luodaanko uusi alikansio (qBittorrent 4.3.2+).",
|
||||
"EditRemotePathMapping": "Muokkaa kartoitettua etäsijaintia",
|
||||
"EditRemotePathMapping": "Muokkaa etäsijainnin kohdistusta",
|
||||
"LastUsed": "Viimeksi käytetty",
|
||||
"Manual": "Manuaalinen",
|
||||
"MoveAutomatically": "Siirrä automaattisesti",
|
||||
@@ -1306,7 +1306,7 @@
|
||||
"Seeders": "Jakajat",
|
||||
"UpgradesAllowed": "Päivitykset sallitaan",
|
||||
"OnUpgrade": "Päivitettäessä",
|
||||
"UnmappedFilesOnly": "Vain kartoittamattomat tiedostot",
|
||||
"UnmappedFilesOnly": "Vain kohdistamattomat tiedostot",
|
||||
"Ignored": "Ohitettu",
|
||||
"PreferAndUpgrade": "Suosi ja päivitä",
|
||||
"Failed": "Epäonnistui",
|
||||
@@ -1368,7 +1368,7 @@
|
||||
"OneSeason": "1 kausi",
|
||||
"OpenBrowserOnStart": "Avaa selain käynnistettäessä",
|
||||
"Profiles": "Profiilit",
|
||||
"ProxyBypassFilterHelpText": "Käytä aliverkkotunnusten erottimena pilkkua (,) ja jokerimerkkinä tähteä ja pistettä (*.). Esimerkkejä: www.esimerkki.fi,*.esimerkki.fi.",
|
||||
"ProxyBypassFilterHelpText": "Erota aliverkkotunnukset pilkuilla ja käytä jokerimerkkinä tähteä ja pistettä (*.). Esimerkki: www.esimerkki.fi,*.esimerkki.fi).",
|
||||
"ProxyBadRequestHealthCheckMessage": "Välityspalvelintesti epäonnistui. Tilakoodi {statusCode}",
|
||||
"ProxyFailedToTestHealthCheckMessage": "Välityspalvelintesti epäonnistui: {url}",
|
||||
"Reason": "Syy",
|
||||
@@ -1471,7 +1471,7 @@
|
||||
"ImportScriptPath": "Tuontikomentosarjan sijainti",
|
||||
"NotificationsAppriseSettingsTags": "Apprisen tunnisteet",
|
||||
"NotificationsAppriseSettingsServerUrlHelpText": "Apprise-palvelimen URL-osoite. SIsällytä myös http(s):// ja portti (tarvittaessa).",
|
||||
"DownloadClientSettingsUseSslHelpText": "Yhdistä työkaluun \"{clientName}\" SSL-protokollan välityksellä.",
|
||||
"DownloadClientSettingsUseSslHelpText": "Muodosta {clientName} -yhteys käyttäen salattua yhteyttä.",
|
||||
"NotificationsKodiSettingsCleanLibraryHelpText": "Siivoa kirjasto päivityksen jälkeen.",
|
||||
"NotificationsJoinSettingsDeviceNamesHelpText": "Pilkuin eroteltu listaus täydellisistä tai osittaisista laitenimistä, joihin ilmoitukset lähetetään. Jos ei määritetty, lähetetään kaikkiin laitteisiin.",
|
||||
"FormatDateTime": "{formattedDate} {formattedTime}",
|
||||
@@ -1502,7 +1502,7 @@
|
||||
"BlocklistAndSearch": "Estolista ja haku",
|
||||
"BlocklistAndSearchHint": "Etsi korvaavaa kohdetta kun kohde lisätään estolistalle.",
|
||||
"BlocklistOnlyHint": "Lisää estolistalle etsimättä korvaavaa kohdetta.",
|
||||
"BlocklistReleaseHelpText": "Estää {appName}ia lataamasta tätä julkaisua uudelleen RSS-syötteen tai automaattihaun tulokisista.",
|
||||
"BlocklistReleaseHelpText": "Estää {appName}ia lataamasta tätä julkaisua uudelleen RSS-syötteen tai automaattihaun tuloksista.",
|
||||
"ChangeCategory": "Vaihda kategoria",
|
||||
"NotificationsPushoverSettingsDevicesHelpText": "Laitenimet, joihin ilmoitukset lähetetään (lähetä kaikkiin jättämällä tyhjäksi).",
|
||||
"NotificationsNtfySettingsTagsEmojisHelpText": "Valinnainen pilkuin eroteltu listaus käytettävistä tunnisteista tai emjeista.",
|
||||
@@ -1533,7 +1533,7 @@
|
||||
"NotificationsPushoverSettingsRetryHelpText": "Hätäilmoituksen uudelleenyritysten välinen aika.",
|
||||
"NotificationsPushoverSettingsRetry": "Uudelleenyritys",
|
||||
"NotificationsSettingsUpdateLibrary": "Päivitä kirjasto",
|
||||
"NotificationsSettingsUpdateMapPathsFrom": "Sijaintien lähdekartoitukset",
|
||||
"NotificationsSettingsUpdateMapPathsFrom": "Kohdista sijainnit lähteeseen",
|
||||
"NotificationsSignalSettingsGroupIdPhoneNumberHelpText": "Vastaanottavan ryhmän ID tai vastaanottajan puhelinnumero.",
|
||||
"NotificationsSignalValidationSslRequired": "Näyttää siltä, että SSL-yhteys vaaditaan",
|
||||
"NotificationsSignalSettingsUsernameHelpText": "Käyttäjätunnus, jolla Signal-API:lle lähetettävät pyynnöt todennetaan.",
|
||||
@@ -1621,7 +1621,7 @@
|
||||
"NotificationsSettingsWebhookUrl": "Webhook-URL-osoite",
|
||||
"NotificationsSettingsUseSslHelpText": "Muodosta yhteys SSL-protokollan välityksellä.",
|
||||
"NotificationsSettingsUpdateMapPathsToHelpText": "{serviceName}-sijainti, jonka mukaisesti sarjasijainteja muutetaan kun {serviceName} näkee kirjastosijainnin eri tavalla kuin {appName} (vaatii \"Päivitä kirjasto\" -asetuksen).",
|
||||
"NotificationsSettingsUpdateMapPathsTo": "Sijaintien kohdekartoitukset",
|
||||
"NotificationsSettingsUpdateMapPathsTo": "Kohdista sijainnit kohteeseen",
|
||||
"NotificationsTelegramSettingsChatIdHelpText": "Vastaanottaaksesi viestejä, sinun on aloitettava keskustelu botin kanssa tai lisättävä se ryhmääsi.",
|
||||
"NotificationsTraktSettingsAccessToken": "Käyttötunniste",
|
||||
"NotificationsTraktSettingsAuthUser": "Todennettu käyttäjä",
|
||||
@@ -1668,5 +1668,73 @@
|
||||
"RemoveFromDownloadClientHint": "Poistaa latauksen ja ladatut tiedostot lataustyökalusta.",
|
||||
"RemoveQueueItemRemovalMethod": "Poistotapa",
|
||||
"RemoveQueueItemsRemovalMethodHelpTextWarning": "\"Poista lataustyökalusta\" poistaa lataukset ja niiden tiedostot.",
|
||||
"Umask": "Umask"
|
||||
"Umask": "Umask",
|
||||
"FilterGreaterThan": "on suurempi kuin",
|
||||
"TheTvdb": "TheTVDB",
|
||||
"FilterIsNot": "ei ole",
|
||||
"FilterLessThan": "on pienempi kuin",
|
||||
"FilterNotEqual": "ei ole sama kuin",
|
||||
"FilterLessThanOrEqual": "on pienempi kuin tai sama",
|
||||
"FilterNotInLast": "ei kuluneina",
|
||||
"FilterNotInNext": "ei seuraavina",
|
||||
"IndexerValidationJackettNoResultsInConfiguredCategories": "Kysely onnistui, mutta tietolähteesi ei palauttanut tuloksia määrietystyistä kategorioista. Tämä voi johtua tietolähteen ongelmasta tai tietolähteelle määritetyistä kategoria-asetuksista.",
|
||||
"TvdbId": "TheTVDB ID",
|
||||
"DownloadClientSettingsInitialState": "Virheellinen tila",
|
||||
"DownloadClientSettingsRecentPriority": "Uusien painotus",
|
||||
"DownloadClientSettingsUrlBaseHelpText": "Lisää etuliite lataustuökalun {clientName} URL-osoitteeseen, kuten {url}.",
|
||||
"DownloadClientSettingsInitialStateHelpText": "Lataustyökaluun {clientName} lisättyjen torrentien aloitustila.",
|
||||
"DownloadClientSettingsPostImportCategoryHelpText": "Kategoria, jonka {appName} asettaa tuonnin jälkeen. {appName} ei poista tämän kategorian torrenteja vaikka jakaminen olisi päättynyt. Säilytä alkuperäinen kategoria jättämällä tyhjäksi.",
|
||||
"ImportListsImdbSettingsListId": "Listan ID",
|
||||
"ImportListsImdbSettingsListIdHelpText": "IMDb-listan ID (esim. \"ls12345678\").",
|
||||
"ImportListsSonarrSettingsRootFoldersHelpText": "Lähdeinstanssin juurikansiot, joista tuodaan.",
|
||||
"ImportListsTraktSettingsRatingHelpText": "Suodata sarjat arviovälin perusteella (0–100)",
|
||||
"ImportListsTraktSettingsWatchedListFilter": "Katselulistan suodatin",
|
||||
"ImportListsTraktSettingsYearsHelpText": "Suodata sarjat vuoden tai vuosivälin perusteella",
|
||||
"MetadataSettingsEpisodeImages": "Jaksojen kuvat",
|
||||
"MetadataSettingsEpisodeMetadata": "Jaksojen metatiedot",
|
||||
"MetadataSettingsSeriesImages": "Sarjojen kuvat",
|
||||
"MetadataSettingsEpisodeMetadataImageThumbs": "Jaksojen metatietojen pienoiskuvat",
|
||||
"MetadataSettingsSeasonImages": "Kausien kuvat",
|
||||
"MetadataXmbcSettingsEpisodeMetadataImageThumbsHelpText": "Sisällytä thumb-kuvien tunnisteet <filename>.nfo-tiedostoihin (vaatii \"Jaksojen metatiedot\" -asetuksen).",
|
||||
"MetadataXmbcSettingsSeriesMetadataHelpText": "Sisällytä sarjojen täydelliset metatiedot tvshow.nfo-tiedostoihin.",
|
||||
"MetadataXmbcSettingsSeriesMetadataEpisodeGuideHelpText": "Sisällytä JSON-muotoiset jakso-oppaat tvshow.nfo-tiedostoihin (vaatii \"Sarjan metatiedot\" -asetuksen).",
|
||||
"MetadataXmbcSettingsSeriesMetadataUrlHelpText": "Sisällytä sarjojen TheTVDB-URL-osoitteet tvshow.nfo-tiedostoihin (voidaan käyttään yhdessä \"Sarjan metatiedot\" -asetuksen kanssa).",
|
||||
"DownloadClientValidationCategoryMissingDetail": "Syötettyä kategoriaa ei ole lautaustyökalussa {clientName}. Luo se sinne ensin.",
|
||||
"FailedToLoadTranslationsFromApi": "Käännösten lataus rajapinnasta epäonnistui",
|
||||
"FailedToLoadUiSettingsFromApi": "Käyttöliittymäasetusten lataus rajapinnasta epäonnistui",
|
||||
"FilterEqual": "on sama kuin",
|
||||
"FilterInLast": "kuluneina",
|
||||
"Mapping": "Kohdistus",
|
||||
"RemotePathMappingFileRemovedHealthCheckMessage": "Tiedosto \"{path}\" poistettiin kesken käsittelyn.",
|
||||
"DownloadClientSettingsRecentPriorityEpisodeHelpText": "14 päivän sisällä julkaistujen elokuvien kaappauksille käytettävä painotus.",
|
||||
"FilterEndsWith": "päättyy",
|
||||
"FilterIsBefore": "on ennen",
|
||||
"FilterDoesNotStartWith": "päättyy",
|
||||
"FilterIsAfter": "on jälkeen",
|
||||
"FilterGreaterThanOrEqual": "on suurempi kuin tai sama",
|
||||
"FilterDoesNotEndWith": "ei pääty",
|
||||
"FilterInNext": "seuraavina",
|
||||
"ImdbId": "IMDb ID",
|
||||
"MaximumSingleEpisodeAgeHelpText": "Täysiä tuotantokausia etsittäessä hyväksytään vain kausipaketit, joiden uusin jakso on tätä asetusta vanhempi. Koskee vain vakiosarjoja. Poista käytöstä asettamalla arvoksi \"0\" (nolla).",
|
||||
"FailedToLoadSystemStatusFromApi": "Järjestelmän tilan lataus rajapinnasta epäonnistui",
|
||||
"DownloadClientSabnzbdValidationEnableDisableTvSortingDetail": "Sinun on poistettava televisiojärjestely käytöstä {appName}in käyttämältä kategorialta tuontiongelmien välttämiseksi. Korjaa tämä Sabnzbd:stä.",
|
||||
"IndexerValidationJackettNoRssFeedQueryAvailable": "RSS-syötekyselyä ei ole käytettävissä. Tämä voi johtua tietolähteen ongelmasta tai tietolähteelle määritetyistä kategoria-asetuksista.",
|
||||
"DownloadClientSabnzbdValidationEnableDisableDateSortingDetail": "Sinun on poistettava päiväysjärjestely käytöstä {appName}in käyttämältä kategorialta tuontiongelmien välttämiseksi. Korjaa tämä Sabnzbd:stä.",
|
||||
"DownloadClientSabnzbdValidationEnableDisableMovieSortingDetail": "Sinun on poistettava elokuvien järjestely käytöstä {appName}in käyttämältä kategorialta tuontiongelmien välttämiseksi. Korjaa tämä Sabnzbd:stä.",
|
||||
"DownloadClientSettingsCategoryHelpText": "Luomalla {appName}ille oman kategorian, erottuvat sen lataukset muiden lähteiden latauksista. Kategorian määritys on valinnaista, mutta erittäin suositeltavaa.",
|
||||
"DownloadClientSettingsDestinationHelpText": "Määrittää manuaalisen tallennuskohteen. Käytä oletusta jättämällä tyhjäksi.",
|
||||
"DownloadClientSettingsOlderPriority": "Vanhojen painotus",
|
||||
"DownloadClientSettingsOlderPriorityEpisodeHelpText": "Yli 14 päivää sitten julkaistujen jaksojen kaappauksille käytettävä painotus.",
|
||||
"ImportListsTraktSettingsGenresHelpText": "Suodata sarjoja Traktin lajityyppien Slug-määrityksen perusteella (pilkuin eroteltuna) vain suosituille listoille.",
|
||||
"ImportListsTraktSettingsWatchedListFilterHelpText": "Jos \"Listan tyyppi\" on \"Valvottu\", valitse sarjatyyppi, jonka haluat tuoda.",
|
||||
"MappedNetworkDrivesWindowsService": "Yhdistetyt verkkoasemat eivät ole käytettävissä kun sovellus suoritetaan Windows-palveluna. Saat lisätietoja [UKK:sta](https://wiki.servarr.com/sonarr/faq#why-cant-sonarr-see-my-files-on-a-remote-server).",
|
||||
"MetadataSettingsSeriesMetadata": "Sarjojen metatiedot",
|
||||
"MetadataSettingsSeriesMetadataUrl": "Sarjojen metatietojen URL",
|
||||
"MetadataSettingsSeriesMetadataEpisodeGuide": "Sarjojen metatietojen jakso-opas",
|
||||
"SomeResultsAreHiddenByTheAppliedFilter": "Aktiivinen suodatin piilottaa joitakin tuloksia.",
|
||||
"ChangeCategoryHint": "Vaihtaa latauksen kategoriaksi lataustyökalun \"Tuonnin jälkeinen kategoria\" -asetuksen kategorian.",
|
||||
"ChangeCategoryMultipleHint": "Vaihtaa latausten kategoriaksi lataustyökalun \"Tuonnin jälkeinen kategoria\" -asetuksen kategorian.",
|
||||
"DownloadClientAriaSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi.",
|
||||
"DownloadClientQbittorrentValidationQueueingNotEnabledDetail": "Torrentien jonotus ei ole käytössä qBittorent-asetuksissasi. Ota se käyttöön tai valitse painotukseksi \"Viimeiseksi\".",
|
||||
"DownloadClientSettingsCategorySubFolderHelpText": "Luomalla {appName}ille oman kategorian, erottuvat sen lataukset muiden lähteiden latauksista. Kategorian määritys on valinnaista, mutta erittäin suositeltavaa. Tämä luo latauskansioon [kategoria]-alikansion."
|
||||
}
|
||||
|
||||
@@ -314,7 +314,7 @@
|
||||
"DeleteSelectedIndexersMessageText": "Voulez-vous vraiment supprimer les {count} indexeur(s) sélectionné(s) ?",
|
||||
"DeleteRootFolder": "Supprimer le dossier racine",
|
||||
"DisabledForLocalAddresses": "Désactivée pour les adresses IP locales",
|
||||
"DeleteTagMessageText": "Voulez-vous vraiment supprimer l'étiquette « {label} » ?",
|
||||
"DeleteTagMessageText": "Voulez-vous vraiment supprimer l'étiquette '{label}' ?",
|
||||
"Filter": "Filtrer",
|
||||
"FilterContains": "contient",
|
||||
"FilterIs": "est",
|
||||
@@ -881,7 +881,7 @@
|
||||
"ReleaseProfileTagSeriesHelpText": "Les profils de version s'appliqueront aux séries avec au moins une balise correspondante. Laisser vide pour appliquer à toutes les séries",
|
||||
"RemotePathMappingLocalFolderMissingHealthCheckMessage": "Le client de téléchargement à distance {downloadClientName} place les téléchargements dans {path} mais ce répertoire ne semble pas exister. Mappage de chemin distant probablement manquant ou incorrect.",
|
||||
"RemoveCompletedDownloads": "Supprimer les téléchargements terminés",
|
||||
"RemoveQueueItemConfirmation": "Êtes-vous sûr de vouloir supprimer « {sourceTitle} » de la file d'attente ?",
|
||||
"RemoveQueueItemConfirmation": "Êtes-vous sûr de vouloir retirer '{sourceTitle}' de la file d'attente ?",
|
||||
"RemoveSelectedBlocklistMessageText": "Êtes-vous sûr de vouloir supprimer les éléments sélectionnés de la liste de blocage ?",
|
||||
"RescanAfterRefreshSeriesHelpText": "Analysez à nouveau le dossier de la série après avoir actualisé la série",
|
||||
"RetryingDownloadOn": "Nouvelle tentative de téléchargement le {date} à {time}",
|
||||
@@ -890,7 +890,7 @@
|
||||
"StandardEpisodeTypeDescription": "Épisodes publiés avec le modèle SxxEyy",
|
||||
"Rejections": "Rejets",
|
||||
"RemoveFromQueue": "Supprimer de la file d'attente",
|
||||
"RemoveQueueItem": "Supprimer – {sourceTitle}",
|
||||
"RemoveQueueItem": "Retirer - {sourceTitle}",
|
||||
"Search": "Rechercher",
|
||||
"Seeders": "Seeders",
|
||||
"SelectEpisodesModalTitle": "{modalTitle} – Sélectionnez un ou plusieurs épisodes",
|
||||
@@ -1307,7 +1307,7 @@
|
||||
"CloneAutoTag": "Cloner la balise automatique",
|
||||
"Failed": "Échoué",
|
||||
"Daily": "Tous les jours",
|
||||
"ContinuingOnly": "Continuer seulement",
|
||||
"ContinuingOnly": "Continuant uniquement",
|
||||
"CurrentlyInstalled": "Actuellement installé",
|
||||
"Donations": "Dons",
|
||||
"EpisodeCount": "Nombre d'épisodes",
|
||||
@@ -1907,5 +1907,19 @@
|
||||
"BlocklistOnly": "Liste de blocage uniquement",
|
||||
"BlocklistOnlyHint": "Liste de blocage sans recherche de remplaçant",
|
||||
"ChangeCategory": "Changer de catégorie",
|
||||
"ChangeCategoryMultipleHint": "Modifie les téléchargements dans la \"catégorie post-importation\" du client de téléchargement"
|
||||
"ChangeCategoryMultipleHint": "Modifie les téléchargements dans la \"catégorie post-importation\" du client de téléchargement",
|
||||
"RemoveFromDownloadClientHint": "Supprime le téléchargement et le(s) fichier(s) du client de téléchargement",
|
||||
"RemoveMultipleFromDownloadClientHint": "Supprime les téléchargements et les fichiers du client de téléchargement",
|
||||
"RemoveQueueItemRemovalMethod": "Méthode de suppression",
|
||||
"RemoveQueueItemRemovalMethodHelpTextWarning": "\"Supprimer du client de téléchargement\" supprimera le téléchargement et le(s) fichier(s) du client de téléchargement.",
|
||||
"RemoveQueueItemsRemovalMethodHelpTextWarning": "Supprimer du client de téléchargement\" supprimera les téléchargements et les fichiers du client de téléchargement.",
|
||||
"DoNotBlocklistHint": "Supprimer sans mettre sur liste noire",
|
||||
"DoNotBlocklist": "Ne pas mettre sur liste noire",
|
||||
"IgnoreDownloadHint": "Empêche {appName} de poursuivre le traitement de ce téléchargement",
|
||||
"IgnoreDownload": "Ignorer le téléchargement",
|
||||
"IgnoreDownloads": "Ignorer les téléchargements",
|
||||
"IgnoreDownloadsHint": "Empêche {appName} de poursuivre le traitement de ces téléchargements",
|
||||
"IndexerSettingsRejectBlocklistedTorrentHashes": "Rejeter les hachages de torrents bloqués lors de la saisie",
|
||||
"IndexerSettingsRejectBlocklistedTorrentHashesHelpText": "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.",
|
||||
"DownloadClientAriaSettingsDirectoryHelpText": "Emplacement facultatif pour les téléchargements, laisser vide pour utiliser l'emplacement par défaut Aria2"
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"ExportCustomFormat": "Egyéni formátum exportálása",
|
||||
"IndexerJackettAllHealthCheckMessage": "A nem támogatott Jackett 'all' végpontot használó indexelők: {indexerNames}",
|
||||
"Remove": "Eltávolítás",
|
||||
"RemoveFromDownloadClient": "Eltávolítás a letöltési kliensből",
|
||||
"RemoveFromDownloadClient": "Eltávolítás a Letöltési kliensből",
|
||||
"RemoveSelectedItem": "Kijelölt elem eltávolítása",
|
||||
"RemoveSelectedItemQueueMessageText": "Biztosan el akar távolítani 1 elemet a várólistáról?",
|
||||
"RemoveSelectedItems": "Kijelölt elemek eltávolítása",
|
||||
@@ -21,7 +21,7 @@
|
||||
"ApplyChanges": "Változások alkalmazása",
|
||||
"AppDataLocationHealthCheckMessage": "A frissítés nem lehetséges az alkalmazás adatok törlése nélkül",
|
||||
"AutomaticAdd": "Automatikus hozzáadás",
|
||||
"CountSeasons": "{count} évad",
|
||||
"CountSeasons": "{count} Évad",
|
||||
"DownloadClientCheckNoneAvailableHealthCheckMessage": "Nincs elérhető letöltési kliens",
|
||||
"DownloadClientRootFolderHealthCheckMessage": "A letöltési kliens {downloadClientName} a letöltéseket a gyökérmappába helyezi. Ne tölts le közvetlenül a gyökérmappába.",
|
||||
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Nem lehet kommunikálni a {downloadClientName} -val",
|
||||
@@ -352,7 +352,7 @@
|
||||
"Today": "Ma",
|
||||
"TimeFormat": "Idő formátum",
|
||||
"Torrents": "Torrentek",
|
||||
"TorrentsDisabled": "Kikapcsolt torrentek",
|
||||
"TorrentsDisabled": "Deaktivált torrentek",
|
||||
"Total": "Összesen",
|
||||
"TotalFileSize": "Összesített fájlméret",
|
||||
"Twitter": "Twitter",
|
||||
@@ -480,7 +480,7 @@
|
||||
"CustomFormatsSpecificationMaximumSizeHelpText": "A kioldásnak kisebbnek vagy egyenlőnek kell lennie ennél a méretnél",
|
||||
"CustomFormatsSpecificationMinimumSize": "Minimum méret",
|
||||
"CustomFormatsSpecificationMinimumSizeHelpText": "A kibocsátásnak nagyobbnak kell lennie ennél a méretnél",
|
||||
"CustomFormatsSpecificationRegularExpression": "Nyelv",
|
||||
"CustomFormatsSpecificationRegularExpression": "Reguláris kifejezés",
|
||||
"CustomFormatsSpecificationSource": "Forrás",
|
||||
"CustomFormatsSpecificationReleaseGroup": "Release Csoport",
|
||||
"CustomFormatsSpecificationResolution": "Felbontás",
|
||||
@@ -627,7 +627,7 @@
|
||||
"LastWriteTime": "Utolsó írási idő",
|
||||
"LogFiles": "Naplófájlok",
|
||||
"ManualImport": "Kézi importálás",
|
||||
"MappedNetworkDrivesWindowsService": "A leképezett hálózati meghajtók nem érhetők el, ha Windows szolgáltatásként futnak, lásd a [GYIK](https:",
|
||||
"MappedNetworkDrivesWindowsService": "A leképezett hálózati meghajtók nem érhetők el, ha Windows szolgáltatásként futnak, lásd a [GYIK](https://wiki.servarr.com/sonarr/faq#why-cant-sonarr-see-my-files-on-a-remote-server) for more information.",
|
||||
"MediaManagementSettingsLoadError": "Nem sikerült betölteni a médiakezelési beállításokat",
|
||||
"MediaManagementSettings": "Médiakezelési beállítások",
|
||||
"NoMonitoredEpisodesSeason": "Ebben az évadban nincsenek felügyelt epizódok",
|
||||
@@ -784,7 +784,7 @@
|
||||
"FilterDoesNotEndWith": "nem ér véget",
|
||||
"Level": "Szint",
|
||||
"LibraryImportTipsQualityInEpisodeFilename": "Győződjön meg arról, hogy a fájlok fájlnevében szerepel a minőség. például. `episode.s02e15.bluray.mkv`",
|
||||
"LibraryImportTipsSeriesUseRootFolder": "Mutasson a(z) {appName} mappára, amely az összes tévéműsorát tartalmazza, ne egy konkrétat. például. \"`{goodFolderExample}`\" és nem \"`{badFolderExample}`\". Ezenkívül minden sorozatnak saját mappájában kell lennie a gyökérben",
|
||||
"LibraryImportTipsSeriesUseRootFolder": "Mutasson a(z) {appName} mappára, amely az összes tévéműsorát tartalmazza, ne egy konkrétat. például. \"`{goodFolderExample}`\" és nem \"`{badFolderExample}`\". Ezenkívül minden sorozatnak saját mappájában kell lennie a gyökérben.",
|
||||
"Links": "Linkek",
|
||||
"MetadataSourceSettingsSeriesSummary": "Információ arról, hogy a(z) {appName} honnan szerezheti be a sorozat- és epizódinformációkat",
|
||||
"MonitorAllSeasons": "Minden évad",
|
||||
@@ -901,7 +901,7 @@
|
||||
"RemotePathMappingHostHelpText": "Ugyanaz a gazdagép, amelyet a távoli letöltési klienshez megadott",
|
||||
"SelectQuality": "Minőség kiválasztása",
|
||||
"SeriesIndexFooterEnded": "Befejeződött (az összes epizód letöltve)",
|
||||
"SeriesAndEpisodeInformationIsProvidedByTheTVDB": "A sorozatokkal és epizódokkal kapcsolatos információkat a TheTVDB.com biztosítja. [Kérjük, fontolja meg támogatásukat](https:",
|
||||
"SeriesAndEpisodeInformationIsProvidedByTheTVDB": "A sorozatokkal és epizódokkal kapcsolatos információkat a TheTVDB.com biztosítja. [Kérjük, fontolja meg támogatásukat](https://www.thetvdb.com/subscribe).",
|
||||
"SeriesDetailsCountEpisodeFiles": "{episodeFileCount} epizódfájl",
|
||||
"SeriesIsMonitored": "A sorozatot figyelik",
|
||||
"SeriesTitle": "Sorozat címe",
|
||||
@@ -972,5 +972,61 @@
|
||||
"ShowSeriesTitleHelpText": "Mutasd a sorozat címét a plakát alatt",
|
||||
"ShowSizeOnDisk": "Méret megjelenítése a lemezen",
|
||||
"SizeLimit": "Méretkorlát",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Biztosan törölni szeretné a kiválasztott {count} letöltési klienst?"
|
||||
"DeleteSelectedDownloadClientsMessageText": "Biztosan törölni szeretné a kiválasztott {count} letöltési klienst?",
|
||||
"Tba": "TBA",
|
||||
"SpecialsFolderFormat": "Különleges mappa formátum",
|
||||
"TablePageSizeMinimum": "A relatív elérési utak a(z) {appName} AppData könyvtárában találhatók",
|
||||
"TorrentDelay": "Torrent Késleltetés",
|
||||
"TorrentBlackhole": "Torrent Blackhole",
|
||||
"TorrentDelayHelpText": "Percek késése, hogy várjon, mielőtt megragad egy torrentet",
|
||||
"StartImport": "Indítsa el az Importálást",
|
||||
"SupportedListsMoreInfo": "Az egyes listákkal kapcsolatos további információkért kattintson a további információ gombokra.",
|
||||
"TestAllClients": "Minden ügyfél tesztelése",
|
||||
"UiSettings": "Felület Beállítások",
|
||||
"Security": "Biztonság",
|
||||
"SetTags": "Címkék beállítása",
|
||||
"SslCertPathHelpText": "A pfx fájl elérési útja",
|
||||
"TestAllLists": "Minden lista tesztelése",
|
||||
"ToggleUnmonitoredToMonitored": "Nem figyelt, kattintson a figyeléshez",
|
||||
"UiLanguage": "Felület nyelv",
|
||||
"UiLanguageHelpText": "Nyelv, amelyet a {appName} a felhasználói felülethez fog használni",
|
||||
"SelectAll": "Mindet kiválaszt",
|
||||
"SelectReleaseGroup": "Release csoport kiválasztása",
|
||||
"SourcePath": "Forrás útvonala",
|
||||
"TableOptionsButton": "Táblázat opciók gomb",
|
||||
"TheTvdb": "TheTVDB",
|
||||
"ToggleMonitoredSeriesUnmonitored ": "Nem lehet átkapcsolni a figyelt állapotot, ha a sorozat nem figyelhető",
|
||||
"Ui": "Felület",
|
||||
"UiSettingsLoadError": "Nem sikerült betölteni a felhasználói felület beállításait",
|
||||
"SelectDropdown": "Válassz...",
|
||||
"SelectEpisodes": "Epizód(ok) kiválasztása",
|
||||
"SkipFreeSpaceCheckWhenImportingHelpText": "Akkor használja, ha a(z) {appName} nem tud szabad helyet észlelni a gyökérmappában a fájlimportálás során",
|
||||
"SkipRedownloadHelpText": "Megakadályozza, hogy {appName} megpróbáljon letölteni egy alternatív kiadást ehhez az elemhez",
|
||||
"Specials": "Különlegességek",
|
||||
"SslCertPasswordHelpText": "Jelszó a pfx fájlhoz",
|
||||
"StandardEpisodeTypeDescription": "SxxEyy mintával megjelent epizódok",
|
||||
"StopSelecting": "Kiválasztás leállítása",
|
||||
"SupportedIndexersMoreInfo": "Az egyes indexelőkkel kapcsolatos további információkért kattintson a további információ gombokra.",
|
||||
"TableColumnsHelpText": "Válassza ki, hogy mely oszlopok legyenek láthatók, és milyen sorrendben jelenjenek meg",
|
||||
"TvdbIdExcludeHelpText": "A kizárandó sorozat TVDB azonosítója",
|
||||
"StandardEpisodeTypeFormat": "Évad- és epizódszámok ({format})",
|
||||
"StartupDirectory": "Indítási könyvtár",
|
||||
"SubtitleLanguages": "Feliratnyelvek",
|
||||
"SourceRelativePath": "Forrás relatív elérési útja",
|
||||
"True": "Igaz",
|
||||
"TvdbId": "TVDB ID",
|
||||
"TorrentBlackholeSaveMagnetFilesExtension": "Magnet Files kiterjesztés mentése",
|
||||
"TorrentBlackholeSaveMagnetFilesReadOnly": "Csak olvasható",
|
||||
"Trace": "Nyom",
|
||||
"TagsSettingsSummary": "Tekintse meg az összes címkét és azok felhasználási módját. A fel nem használt címkék eltávolíthatók",
|
||||
"TestAllIndexers": "Tesztelje az összes indexelőt",
|
||||
"TaskUserAgentTooltip": "Az API-t hívó alkalmazás által biztosított felhasználói ügynök",
|
||||
"ThemeHelpText": "Változtassa 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. A Theme.Park ihlette",
|
||||
"TablePageSizeHelpText": "Az egyes oldalakon megjelenítendő elemek száma",
|
||||
"ToggleMonitoredToUnmonitored": "Felügyelt, kattintson a figyelés megszüntetéséhez",
|
||||
"Standard": "Alapértelmezett",
|
||||
"StandardEpisodeFormat": "Alapértelmezett epizód formátum",
|
||||
"StartProcessing": "Indítsa el a feldolgozást",
|
||||
"SelectFolder": "Mappa kiválasztása",
|
||||
"ShowUnknownSeriesItemsHelpText": "Sorozat nélküli elemek megjelenítése a sorban, idetartozhatnak az eltávolított sorozatok, filmek vagy bármi más a(z) {appName} kategóriájában"
|
||||
}
|
||||
|
||||
@@ -7,5 +7,6 @@
|
||||
"Add": "Legg til",
|
||||
"Absolute": "Absolutt",
|
||||
"Activity": "Aktivitet",
|
||||
"About": "Om"
|
||||
"About": "Om",
|
||||
"CalendarOptions": "Kalenderinnstillinger"
|
||||
}
|
||||
|
||||
@@ -392,8 +392,8 @@
|
||||
"SelectFolder": "Selecionar Pasta",
|
||||
"Unavailable": "Indisponível",
|
||||
"UnmappedFolders": "Pastas não mapeadas",
|
||||
"AutoTaggingNegateHelpText": "Se marcada, a regra de tagging automática não será aplicada se esta condição {implementationName} corresponder.",
|
||||
"AutoTaggingRequiredHelpText": "Esta condição {implementationName} deve corresponder para que a regra de tagging automática seja aplicada. Caso contrário, uma única correspondência de {implementationName} será suficiente.",
|
||||
"AutoTaggingNegateHelpText": "se marcada, a regra de etiqueta automática não será aplicada se esta condição {implementationName} corresponder.",
|
||||
"AutoTaggingRequiredHelpText": "Esta condição {implementationName} deve corresponder para que a regra de etiqueta automática seja aplicada. Caso contrário, uma única correspondência de {implementationName} será suficiente.",
|
||||
"SomeResultsAreHiddenByTheAppliedFilter": "Alguns resultados estão ocultos pelo filtro aplicado",
|
||||
"UnableToLoadAutoTagging": "Não foi possível carregar a marcação automática",
|
||||
"IndexerDownloadClientHealthCheckMessage": "Indexadores com clientes de download inválidos: {indexerNames}.",
|
||||
@@ -417,7 +417,7 @@
|
||||
"AddNotificationError": "Não foi possível adicionar uma nova notificação, tente novamente.",
|
||||
"AddQualityProfile": "Adicionar perfil de qualidade",
|
||||
"AddQualityProfileError": "Não foi possível adicionar uma nova notificação, tente novamente.",
|
||||
"AddReleaseProfile": "Adicionar Perfil de Lançamento",
|
||||
"AddReleaseProfile": "Adicionar um Perfil de Lançamento",
|
||||
"AddRemotePathMapping": "Adicionar Mapeamento de Caminho Remoto",
|
||||
"AddRemotePathMappingError": "Não foi possível adicionar um novo mapeamento de caminho remoto, tente novamente.",
|
||||
"AfterManualRefresh": "Depois da Atualização Manual",
|
||||
@@ -477,7 +477,7 @@
|
||||
"ColonReplacementFormatHelpText": "Mude como o {appName} lida com a substituição do dois-pontos",
|
||||
"CompletedDownloadHandling": "Gerenciamento de Downloads Completos",
|
||||
"Condition": "Condição",
|
||||
"ConditionUsingRegularExpressions": "Esta condição corresponde ao uso de expressões regulares. Observe que os caracteres `\\^$.|?*+()[{` têm significados especiais e precisam ser escapados com um `\\`",
|
||||
"ConditionUsingRegularExpressions": "Esta condição corresponde ao uso de Expressões Regulares. Observe que os caracteres `\\^$.|?*+()[{` têm significados especiais e precisam escape com um `\\`",
|
||||
"ConnectSettings": "Configurações de Conexão",
|
||||
"ConnectSettingsSummary": "Notificações, conexões com servidores/reprodutores de mídia e scripts personalizados",
|
||||
"Connections": "Conexões",
|
||||
@@ -488,7 +488,7 @@
|
||||
"CreateGroup": "Criar Grupo",
|
||||
"Custom": "Personalizar",
|
||||
"CustomFormat": "Formato personalizado",
|
||||
"CustomFormatUnknownCondition": "Condição de formato personalizado desconhecido '{implementation}'",
|
||||
"CustomFormatUnknownCondition": "Condição de Formato Personalizado desconhecida '{implementation}'",
|
||||
"CustomFormatUnknownConditionOption": "Opção desconhecida '{key}' para a condição '{implementation}'",
|
||||
"CustomFormatsLoadError": "Não foi possível carregar Formatos Personalizados",
|
||||
"CustomFormatsSettings": "Configurações de Formatos Personalizados",
|
||||
@@ -501,7 +501,7 @@
|
||||
"DefaultDelayProfileSeries": "Este é o perfil padrão. Aplica-se a todas as séries que não possuem um perfil explícito.",
|
||||
"DelayMinutes": "{delay} Minutos",
|
||||
"DelayProfile": "Perfil de Atraso",
|
||||
"DefaultCase": "Minúscula ou maiúscula",
|
||||
"DefaultCase": "Padrão Maiúscula ou Minúscula",
|
||||
"DelayProfileSeriesTagsHelpText": "Aplica-se a séries com pelo menos uma tag correspondente",
|
||||
"DelayProfiles": "Perfis de Atraso",
|
||||
"DelayProfilesLoadError": "Não foi possível carregar perfis de atraso",
|
||||
@@ -544,7 +544,7 @@
|
||||
"EditGroups": "Editar Grupos",
|
||||
"EditImportListExclusion": "Editar Exclusão de Lista de Importação",
|
||||
"EditListExclusion": "Editar Exclusão da Lista",
|
||||
"EditMetadata": "Editar metadados {metadataType}",
|
||||
"EditMetadata": "Editar {metadataType} Metadados",
|
||||
"EditQualityProfile": "Editar Perfil de Qualidade",
|
||||
"EditReleaseProfile": "Editar Perfil de Lançamento",
|
||||
"EditRemotePathMapping": "Editar Mapeamento do Caminho Remoto",
|
||||
@@ -574,7 +574,7 @@
|
||||
"Extend": "Estender",
|
||||
"ExtraFileExtensionsHelpTextsExamples": "Exemplos: '.sub, .nfo' or 'sub,nfo'",
|
||||
"FileManagement": "Gerenciamento de Arquivo",
|
||||
"FileNameTokens": "Tokens de Nome de Arquivo",
|
||||
"FileNameTokens": "Tokens de nome de arquivo",
|
||||
"FileNames": "Nomes de Arquivo",
|
||||
"FirstDayOfWeek": "Primeiro Dia da Semana",
|
||||
"Folders": "Pastas",
|
||||
@@ -605,7 +605,7 @@
|
||||
"Importing": "Importando",
|
||||
"IncludeCustomFormatWhenRenaming": "Incluir formato personalizado ao renomear",
|
||||
"IncludeCustomFormatWhenRenamingHelpText": "Incluir no formato de renomeação {Custom Formats}",
|
||||
"IncludeHealthWarnings": "Incluir avisos de integridade",
|
||||
"IncludeHealthWarnings": "Incluir Advertências de Saúde",
|
||||
"IndexerDownloadClientHelpText": "Especifique qual cliente de download é usado para baixar deste indexador",
|
||||
"IndexerOptionsLoadError": "Não foi possível carregar as opções do indexador",
|
||||
"IndexerPriority": "Prioridade do indexador",
|
||||
@@ -620,8 +620,8 @@
|
||||
"LanguagesLoadError": "Não foi possível carregar os idiomas",
|
||||
"ListExclusionsLoadError": "Não foi possível carregar as exclusões de lista",
|
||||
"ListOptionsLoadError": "Não foi possível carregar as opções de lista",
|
||||
"ListQualityProfileHelpText": "Os itens da lista de perfil de qualidade serão adicionados com",
|
||||
"ListRootFolderHelpText": "Os itens da lista da pasta raiz serão adicionados a",
|
||||
"ListQualityProfileHelpText": "Os itens da lista de Perfil de Qualidade que serão adicionados com",
|
||||
"ListRootFolderHelpText": "Os itens da lista da pasta raiz que serão adicionados",
|
||||
"ListTagsHelpText": "Tags que serão adicionadas ao importar esta lista",
|
||||
"ListWillRefreshEveryInterval": "A lista será atualizada a cada {refreshInterval}",
|
||||
"ListsLoadError": "Não foi possível carregar as listas",
|
||||
@@ -631,7 +631,7 @@
|
||||
"LogLevelTraceHelpTextWarning": "O registro em log deve ser habilitado apenas temporariamente",
|
||||
"Logging": "Registro em log",
|
||||
"LongDateFormat": "Formato longo de data",
|
||||
"Lowercase": "Minúsculas",
|
||||
"Lowercase": "Minúscula",
|
||||
"ManualImportItemsLoadError": "Não foi possível carregar itens de importação manual",
|
||||
"Max": "Máx.",
|
||||
"MaximumLimits": "Limites máximos",
|
||||
@@ -668,12 +668,12 @@
|
||||
"MultiEpisodeStyle": "Estilo de multiepisódio",
|
||||
"MustContain": "Deve conter",
|
||||
"MustNotContain": "Não deve conter",
|
||||
"MustNotContainHelpText": "O lançamento será rejeitado se contiver um ou mais destes termos (sem distinção entre maiúsculas e minúsculas)",
|
||||
"MustNotContainHelpText": "O lançamento será rejeitado se contiver um ou mais termos (não diferenciar maiúsculas e minúsculas)",
|
||||
"NamingSettings": "Configurações de nomenclatura",
|
||||
"NamingSettingsLoadError": "Não foi possível carregar as configurações de nomenclatura",
|
||||
"Never": "Nunca",
|
||||
"NoChanges": "Sem alterações",
|
||||
"NoDelay": "Sem atraso",
|
||||
"NoDelay": "Sem Atraso",
|
||||
"NoLinks": "Sem links",
|
||||
"NoTagsHaveBeenAddedYet": "Nenhuma tag foi adicionada ainda",
|
||||
"None": "Nenhum",
|
||||
@@ -703,7 +703,7 @@
|
||||
"Password": "Senha",
|
||||
"PendingChangesDiscardChanges": "Descartar mudanças e sair",
|
||||
"PendingChangesStayReview": "Ficar e revisar mudanças",
|
||||
"Period": "Período",
|
||||
"Period": "Ponto",
|
||||
"Permissions": "Permissões",
|
||||
"PortNumber": "Número da Porta",
|
||||
"PreferAndUpgrade": "Preferir e Atualizar",
|
||||
@@ -737,7 +737,7 @@
|
||||
"RecyclingBinCleanupHelpTextWarning": "Os arquivos na lixeira mais antigos do que o número de dias selecionado serão limpos automaticamente",
|
||||
"RecyclingBinHelpText": "Os arquivos irão para cá quando excluídos, em vez de serem excluídos permanentemente",
|
||||
"AbsoluteEpisodeNumber": "Número Absoluto do Episódio",
|
||||
"AddAutoTagError": "Não foi possível adicionar uma nova tag automática, por favor, tente novamente.",
|
||||
"AddAutoTagError": "Não foi possível adicionar uma nova etiqueta automática, tente novamente.",
|
||||
"AnalyseVideoFilesHelpText": "Extraia informações de vídeo, como resolução, tempo de execução e informações de codec de arquivos. Isso requer que o {appName} leia partes do arquivo que podem causar alta atividade no disco ou na rede durante as varreduras.",
|
||||
"AuthenticationRequiredHelpText": "Altere para quais solicitações a autenticação é necessária. Não mude a menos que você entenda os riscos.",
|
||||
"AuthenticationRequiredWarning": "Para evitar o acesso remoto sem autenticação, {appName} agora exige que a autenticação esteja habilitada. Opcionalmente, você pode desabilitar a autenticação de endereços locais.",
|
||||
@@ -753,9 +753,9 @@
|
||||
"ExtraFileExtensionsHelpText": "Lista separada por vírgulas de arquivos extras para importar (.nfo será importado como .nfo-orig)",
|
||||
"HistoryLoadError": "Não foi possível carregar o histórico",
|
||||
"IndexerTagSeriesHelpText": "Usar este indexador apenas para séries com pelo menos uma tag correspondente. Deixe em branco para usar com todas as séries.",
|
||||
"MediaInfoFootNote": "MediaInfo Full/AudioLanguages/SubtitleLanguages oferece suporte a um sufixo \":EN+DE\", permitindo que você filtre os idiomas inclusos no nome do arquivo. Use \"-DE\" para excluir idiomas específicos. Usar \"+\" (p. ex.: \":EN+\") resultará em \"[EN]\"/\"[EN+--]\"/\"[--]\" dependendo dos idiomas excluídos. P. ex.: \"{MediaInfo Full:EN+DE}\".",
|
||||
"MediaInfoFootNote": "MediaInfo Full/AudioLanguages/SubtitleLanguages suporta um sufixo `:EN+DE` permitindo filtrar os idiomas incluídos no nome do arquivo. Use `-DE` para excluir idiomas específicos. Anexar `+` (por exemplo, `:EN+`) resultará em `[EN]`/`[EN+--]`/`[--]` dependendo dos idiomas excluídos. Por exemplo, `{MediaInfo Full:EN+DE}`.",
|
||||
"MinimumFreeSpaceHelpText": "Impedir a importação se deixar menos do que esta quantidade de espaço em disco disponível",
|
||||
"MustContainHelpText": "O lançamento deve conter pelo menos um desses termos (sem distinção entre maiúsculas e minúsculas)",
|
||||
"MustContainHelpText": "O lançamento deve conter pelo menos um destes termos (não diferenciar maiúsculas e minúsculas)",
|
||||
"NegateHelpText": "Se marcado, o formato personalizado não será aplicado se esta condição {implementationName} corresponder.",
|
||||
"NoLimitForAnyRuntime": "Sem limite para qualquer duração",
|
||||
"NoMinimumForAnyRuntime": "Sem mínimo para qualquer duração",
|
||||
@@ -772,7 +772,7 @@
|
||||
"RegularExpressionsTutorialLink": "Mais detalhes sobre expressões regulares podem ser encontrados [aqui](https://www.regular-expressions.info/tutorial.html).",
|
||||
"ReleaseProfile": "Perfil de Lançamento",
|
||||
"ReleaseProfileIndexerHelpText": "Especifique a qual indexador o perfil se aplica",
|
||||
"ReleaseProfileIndexerHelpTextWarning": "O uso de um indexador específico com perfis de lançamento pode levar à obtenção de lançamentos duplicados",
|
||||
"ReleaseProfileIndexerHelpTextWarning": "Usar um indexador específico com perfis de lançamento pode levar à captura de lançamentos duplicados",
|
||||
"ReleaseProfileTagSeriesHelpText": "Os perfis de lançamento serão aplicados a séries com pelo menos uma tag correspondente. Deixe em branco para aplicar a todas as séries",
|
||||
"ReleaseProfiles": "Perfis de Lançamentos",
|
||||
"ReleaseProfilesLoadError": "Não foi possível carregar perfis de lançamentos",
|
||||
@@ -799,8 +799,8 @@
|
||||
"RestartLater": "Vou reiniciar mais tarde",
|
||||
"RestartNow": "Reiniciar Agora",
|
||||
"RestartRequiredHelpTextWarning": "Requer reinicialização para entrar em vigor",
|
||||
"RestartRequiredToApplyChanges": "O {appName} requer uma reinicialização para aplicar as alterações. Deseja reiniciar agora?",
|
||||
"RestartRequiredWindowsService": "Dependendo de qual usuário está executando o serviço {appName}, pode ser necessário reiniciar o {appName} como administrador uma vez antes que o serviço seja iniciado automaticamente.",
|
||||
"RestartRequiredToApplyChanges": "{appName} requer reinicialização para aplicar as alterações. Deseja reiniciar agora?",
|
||||
"RestartRequiredWindowsService": "Dependendo de qual usuário está executando o serviço {appName}, pode ser necessário reiniciar {appName} como administrador uma vez antes que o serviço seja iniciado automaticamente.",
|
||||
"RestartSonarr": "Reiniciar {appName}",
|
||||
"RestrictionsLoadError": "Não foi possível carregar as Restrições",
|
||||
"Retention": "Retenção",
|
||||
@@ -901,7 +901,7 @@
|
||||
"UpgradeUntilThisQualityIsMetOrExceeded": "Atualize até que essa qualidade seja atendida ou excedida",
|
||||
"UpgradesAllowed": "Atualizações Permitidas",
|
||||
"UpgradesAllowedHelpText": "se as qualidades desativadas não forem atualizadas",
|
||||
"Uppercase": "Maiúsculo",
|
||||
"Uppercase": "Maiuscula",
|
||||
"UrlBase": "URL base",
|
||||
"UrlBaseHelpText": "Para suporte a proxy reverso, o padrão é vazio",
|
||||
"UseProxy": "Usar Proxy",
|
||||
@@ -1198,7 +1198,7 @@
|
||||
"InteractiveImportNoLanguage": "Defina um idioma para cada arquivo selecionado",
|
||||
"InteractiveImportNoQuality": "Defina a qualidade para cada arquivo selecionado",
|
||||
"InteractiveImportNoSeries": "A série deve ser escolhida para cada arquivo selecionado",
|
||||
"KeyboardShortcuts": "Atalhos de teclado",
|
||||
"KeyboardShortcuts": "Atalhos do Teclado",
|
||||
"KeyboardShortcutsCloseModal": "Fechar pop-up atual",
|
||||
"KeyboardShortcutsConfirmModal": "Aceitar o pop-up de confirmação",
|
||||
"KeyboardShortcutsOpenModal": "Abrir este pop-up",
|
||||
@@ -1484,7 +1484,7 @@
|
||||
"QueueFilterHasNoItems": "O filtro de fila selecionado não possui itens",
|
||||
"BlackholeFolderHelpText": "Pasta na qual {appName} armazenará o arquivo {extension}",
|
||||
"Destination": "Destinação",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL json do deluge, consulte {url}",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Adiciona um prefixo aURL json do Deluge, consulte {url}",
|
||||
"DownloadClientDelugeValidationLabelPluginFailure": "Falha na configuração do rótulo",
|
||||
"DownloadClientDelugeValidationLabelPluginFailureDetail": "{appName} não conseguiu adicionar o rótulo ao {clientName}.",
|
||||
"DownloadClientDownloadStationProviderMessage": "{appName} não consegue se conectar ao Download Station se a autenticação de dois fatores estiver habilitada em sua conta DSM",
|
||||
@@ -1496,74 +1496,74 @@
|
||||
"DownloadClientNzbgetValidationKeepHistoryOverMax": "A configuração NzbGet KeepHistory deve ser menor que 25.000",
|
||||
"DownloadClientNzbgetValidationKeepHistoryZeroDetail": "A configuração KeepHistory do NzbGet está definida como 0. O que impede que {appName} veja os downloads concluídos.",
|
||||
"DownloadClientSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL {clientName}, como {url}",
|
||||
"DownloadClientSettingsUseSslHelpText": "Use conexão segura ao conectar-se a {clientName}",
|
||||
"DownloadClientSettingsUseSslHelpText": "Usar conexão segura ao conectar-se a {clientName}",
|
||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Local opcional para colocar downloads, deixe em branco para usar o local padrão do Transmission",
|
||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL rpc {clientName}, por exemplo, {url}, o padrão é '{defaultUrl}'",
|
||||
"DownloadClientValidationAuthenticationFailureDetail": "Por favor, verifique seu nome de usuário e senha. Verifique também se o host que executa {appName} não está impedido de acessar {clientName} pelas limitações da WhiteList na configuração de {clientName}.",
|
||||
"DownloadClientValidationAuthenticationFailureDetail": "Por favor verifique seu nome de usuário e senha. Verifique também se o host que executa {appName} não está impedido de acessar {clientName} pelas limitações da WhiteList na configuração de {clientName}.",
|
||||
"DownloadClientValidationSslConnectFailureDetail": "{appName} não consegue se conectar a {clientName} usando SSL. Este problema pode estar relacionado ao computador. Tente configurar {appName} e {clientName} para não usar SSL.",
|
||||
"NzbgetHistoryItemMessage": "Status PAR: {parStatus} - Status de descompactação: {unpackStatus} - Status de movimentação: {moveStatus} - Status do script: {scriptStatus} - Status de exclusão: {deleteStatus} - Status de marcação: {markStatus}",
|
||||
"PostImportCategory": "Categoria Pós-Importação",
|
||||
"SecretToken": "Token Secreto",
|
||||
"TorrentBlackhole": "Torrent Blackhole",
|
||||
"TorrentBlackholeSaveMagnetFiles": "Salvar arquivos magnéticos",
|
||||
"TorrentBlackholeSaveMagnetFilesHelpText": "Salve o link magnético se nenhum arquivo .torrent estiver disponível (útil apenas se o cliente de download suportar magnets salvos em um arquivo)",
|
||||
"TorrentBlackholeSaveMagnetFiles": "Salvar Arquivos Magnéticos",
|
||||
"TorrentBlackholeSaveMagnetFilesHelpText": "Salve o link magnético se nenhum arquivo .torrent estiver disponível (útil apenas se o cliente de download suportar magnético salvos em um arquivo)",
|
||||
"UnknownDownloadState": "Estado de download desconhecido: {state}",
|
||||
"UsenetBlackhole": "Usenet Blackhole",
|
||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Estado inicial para torrents adicionados ao qBittorrent. Observe que os Torrents Forçados não obedecem às restrições de sementes",
|
||||
"DownloadClientQbittorrentTorrentStatePathError": "Não foi possível importar. O caminho corresponde ao diretório de download da base do cliente, é possível que 'Manter pasta de nível superior' esteja desativado para este torrent ou 'Layout de conteúdo do torrent' NÃO esteja definido como 'Original' ou 'Criar subpasta'?",
|
||||
"DownloadClientQbittorrentTorrentStatePathError": "Não foi possível importar. O caminho corresponde ao diretório de download da base do cliente, é possível que 'Manter pasta de nível superior' esteja desabilitado para este torrent ou 'Layout de conteúdo de torrent' NÃO esteja definido como 'Original' ou 'Criar subpasta'?",
|
||||
"DownloadClientQbittorrentValidationCategoryUnsupportedDetail": "As categorias não são suportadas até a versão 3.3.0 do qBittorrent. Atualize ou tente novamente com uma categoria vazia.",
|
||||
"DownloadClientQbittorrentValidationRemovesAtRatioLimit": "qBittorrent está configurado para remover torrents quando eles atingem seu limite de proporção de compartilhamento",
|
||||
"DownloadClientQbittorrentValidationRemovesAtRatioLimitDetail": "{appName} não poderá realizar o tratamento de download concluído conforme configurado. Você pode corrigir isso no qBittorrent ('Ferramentas - Opções...' no menu) alterando 'Opções - BitTorrent - Limitação da proporção de compartilhamento' de 'Removê-los' para 'Pausá-los'",
|
||||
"DownloadClientQbittorrentValidationRemovesAtRatioLimitDetail": "{appName} não poderá realizar o tratamento de download concluído conforme configurado. Você pode corrigir isso no qBittorrent ('Ferramentas -> Opções...' no menu) alterando 'Opções -> BitTorrent -> Limitação da proporção de compartilhamento' de 'Removê-los' para 'Pausá-los'",
|
||||
"DownloadClientRTorrentSettingsUrlPathHelpText": "Caminho para o endpoint XMLRPC, consulte {url}. Geralmente é RPC2 ou [caminho para ruTorrent]{url2} ao usar o ruTorrent.",
|
||||
"DownloadClientSabnzbdValidationCheckBeforeDownloadDetail": "Usar 'Verificar antes do download' afeta a capacidade do {appName} de rastrear novos downloads. Além disso, o Sabnzbd recomenda 'Abortar trabalhos que não podem ser concluídos', pois é mais eficaz.",
|
||||
"DownloadClientSabnzbdValidationEnableDisableMovieSortingDetail": "Você deve desativar a ordenação de filmes para a categoria usada por {appName} para evitar problemas de importação. Vá para Sabnzbd para consertar.",
|
||||
"DownloadClientSabnzbdValidationEnableDisableMovieSortingDetail": "Você deve desativar a classificação de filmes para a categoria usada por {appName} para evitar problemas de importação. Vá para Sabnzbd para consertar.",
|
||||
"DownloadClientSabnzbdValidationEnableJobFoldersDetail": "{appName} prefere que cada download tenha uma pasta separada. Com * anexado à pasta/caminho, o Sabnzbd não criará essas pastas de trabalho. Vá para Sabnzbd para consertar.",
|
||||
"DownloadClientSettingsCategorySubFolderHelpText": "Adicionar uma categoria específica para {appName} evita conflitos com downloads não relacionados que não sejam de {appName}. Usar uma categoria é opcional, mas altamente recomendado. Cria um subdiretório [categoria] no diretório de saída.",
|
||||
"XmlRpcPath": "Caminho RPC XML",
|
||||
"DownloadClientFloodSettingsTagsHelpText": "Etiquetas iniciais de um download. Para ser reconhecido, um download deve ter todas as tags iniciais. Isso evita conflitos com downloads não relacionados.",
|
||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Adiciona propriedades de mídia como tags. As dicas são exemplos.",
|
||||
"DownloadClientFloodSettingsPostImportTagsHelpText": "Acrescenta tags após a importação de um download.",
|
||||
"BlackholeWatchFolder": "Pasta Monitorada",
|
||||
"DownloadClientFloodSettingsTagsHelpText": "Etiquetas iniciais de um download. Para ser reconhecido, um download deve ter todas as etiquetas iniciais. Isso evita conflitos com downloads não relacionados.",
|
||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Adiciona propriedades de mídia como etiquetas. As dicas são exemplos.",
|
||||
"DownloadClientFloodSettingsPostImportTagsHelpText": "Acrescenta etiquetas após a importação de um download.",
|
||||
"BlackholeWatchFolder": "Pasta de Monitoramento",
|
||||
"BlackholeWatchFolderHelpText": "Pasta da qual {appName} deve importar downloads concluídos",
|
||||
"Category": "Categoria",
|
||||
"Directory": "Diretório",
|
||||
"DownloadClientDelugeTorrentStateError": "Deluge está relatando um erro",
|
||||
"DownloadClientDelugeValidationLabelPluginInactiveDetail": "Você deve ter o plugin Rotulo habilitado em {clientName} para usar categorias.",
|
||||
"DownloadClientDelugeValidationLabelPluginInactiveDetail": "Você deve ter o plugin rótulo habilitado no {clientName} para usar categorias.",
|
||||
"DownloadClientDownloadStationSettingsDirectory": "Pasta compartilhada opcional para colocar downloads, deixe em branco para usar o local padrão do Download Station",
|
||||
"DownloadClientDownloadStationValidationApiVersion": "A versão da API do Download Station não é suportada; deve ser pelo menos {requiredVersion}. Suporta de {minVersion} a {maxVersion}",
|
||||
"DownloadClientDownloadStationValidationFolderMissing": "A pasta não existe",
|
||||
"DownloadClientDownloadStationValidationNoDefaultDestination": "Nenhum destino padrão",
|
||||
"DownloadClientDownloadStationValidationNoDefaultDestinationDetail": "Você deve fazer login em seu Diskstation como {username} e configurá-lo manualmente nas configurações do DownloadStation em BT/HTTP/FTP/NZB - Localização.",
|
||||
"DownloadClientDownloadStationValidationNoDefaultDestinationDetail": "Você deve fazer login em seu Diskstation como {username} e configurá-lo manualmente nas configurações do DownloadStation em BT/HTTP/FTP/NZB -> Localização.",
|
||||
"DownloadClientDownloadStationValidationSharedFolderMissing": "A pasta compartilhada não existe",
|
||||
"DownloadClientFloodSettingsAdditionalTags": "Etiquetas Adicionais",
|
||||
"DownloadClientFloodSettingsPostImportTags": "Etiquetas Pós-Importação",
|
||||
"DownloadClientFloodSettingsRemovalInfo": "{appName} cuidará da remoção automática de torrents com base nos critérios de propagação atuais em Configurações - Indexadores",
|
||||
"DownloadClientFloodSettingsStartOnAdd": "Comece em Adicionar",
|
||||
"DownloadClientFloodSettingsRemovalInfo": "{appName} cuidará da remoção automática de torrents com base nos critérios de propagação atuais em Configurações -> Indexadores",
|
||||
"DownloadClientFloodSettingsStartOnAdd": "Comece ao Adicionar",
|
||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Adiciona um prefixo à API Flood, como {url}",
|
||||
"DownloadClientFreeboxApiError": "A API Freebox retornou um erro: {errorDescription}",
|
||||
"DownloadClientFreeboxAuthenticationError": "A autenticação na API Freebox falhou. Motivo: {errorDescription}",
|
||||
"DownloadClientFreeboxNotLoggedIn": "Não logado",
|
||||
"DownloadClientFreeboxSettingsApiUrl": "URL da API",
|
||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "Defina o URL base da API Freebox com a versão da API, por exemplo, '{url}', o padrão é '{defaultApiUrl}'",
|
||||
"DownloadClientFreeboxSettingsAppId": "ID do App",
|
||||
"DownloadClientFreeboxSettingsAppToken": "Token do App",
|
||||
"DownloadClientFreeboxSettingsAppId": "ID do Aplicativo",
|
||||
"DownloadClientFreeboxSettingsAppToken": "Token do Aplicativo",
|
||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "Token do aplicativo recuperado ao criar acesso à API Freebox (ou seja, 'app_token')",
|
||||
"DownloadClientFreeboxSettingsHostHelpText": "Nome do host ou endereço IP do host do Freebox, o padrão é '{url}' (só funcionará se estiver na mesma rede)",
|
||||
"DownloadClientFreeboxUnableToReachFreebox": "Não foi possível acessar a API Freebox. Verifique as configurações de 'Host', 'Porta' ou 'Usar SSL'. (Erro: {exceptionMessage})",
|
||||
"DownloadClientNzbVortexMultipleFilesMessage": "O download contém vários arquivos e não está em uma pasta de trabalho: {outputPath}",
|
||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Esta opção requer pelo menos NzbGet versão 16.0",
|
||||
"DownloadClientDelugeValidationLabelPluginInactive": "Plugin de tag não está ativado",
|
||||
"DownloadClientDelugeValidationLabelPluginInactive": "Plugin de rótulo não ativado",
|
||||
"DownloadClientNzbgetValidationKeepHistoryOverMaxDetail": "A configuração KeepHistory do NzbGet está muito alta.",
|
||||
"DownloadClientNzbgetValidationKeepHistoryZero": "A configuração KeepHistory do NzbGet deve ser maior que 0",
|
||||
"DownloadClientPneumaticSettingsNzbFolder": "Pasta Nzb",
|
||||
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Esta pasta precisará estar acessível no XBMC",
|
||||
"DownloadClientPneumaticSettingsStrmFolder": "Pasta Strm",
|
||||
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Os arquivos .strm nesta pasta serão importados pelo drone",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Primeiro e último primeiro",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Baixe a primeira e a última peças primeiro (qBittorrent 4.1.0+)",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Ordem sequencial",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Primeiro e Último Primeiro",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Baixe a primeira e a última partes primeiro (qBittorrent 4.1.0+)",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Ordem Sequencial",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Baixe em ordem sequencial (qBittorrent 4.1.0+)",
|
||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Use uma conexão segura. Consulte Opções - UI da Web - 'Usar HTTPS em vez de HTTP' no qBittorrent.",
|
||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Use uma conexão segura. Consulte Opções -> UI da Web -> 'Usar HTTPS em vez de HTTP' em qBittorrent.",
|
||||
"DownloadClientQbittorrentTorrentStateDhtDisabled": "qBittorrent não pode resolver o link magnético com DHT desativado",
|
||||
"DownloadClientQbittorrentTorrentStateError": "qBittorrent está relatando um erro",
|
||||
"DownloadClientQbittorrentTorrentStateMetadata": "qBittorrent está baixando metadados",
|
||||
@@ -1574,55 +1574,55 @@
|
||||
"DownloadClientQbittorrentValidationCategoryRecommended": "Categoria é recomendada",
|
||||
"DownloadClientQbittorrentValidationCategoryRecommendedDetail": "{appName} não tentará importar downloads concluídos sem uma categoria.",
|
||||
"DownloadClientQbittorrentValidationCategoryUnsupported": "A categoria não é suportada",
|
||||
"DownloadClientQbittorrentValidationQueueingNotEnabled": "Fila não habilitada",
|
||||
"DownloadClientQbittorrentValidationQueueingNotEnabledDetail": "O Filas de Torrent não está habilitado nas configurações do qBittorrent. Habilite-o no qBittorrent ou selecione ‘Último’ como prioridade.",
|
||||
"DownloadClientRTorrentProviderMessage": "O rTorrent não pausará os torrents quando eles atenderem aos critérios de seed. {appName} lidará com a remoção automática de torrents com base nos critérios de propagação atuais em Configurações - Indexadores somente quando a remoção concluída estiver ativada.",
|
||||
"DownloadClientRTorrentSettingsAddStopped": "Adicionar parado",
|
||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "A ativação adicionará torrents e magnets ao rTorrent em um estado parado. Isso pode quebrar os arquivos magnéticos.",
|
||||
"DownloadClientQbittorrentValidationQueueingNotEnabled": "Fila Não Habilitada",
|
||||
"DownloadClientQbittorrentValidationQueueingNotEnabledDetail": "O Fila de Torrent não está habilitado nas configurações do qBittorrent. Habilite-o no qBittorrent ou selecione ‘Último’ como prioridade.",
|
||||
"DownloadClientRTorrentProviderMessage": "O rTorrent não pausará os torrents quando eles atenderem aos critérios de seed. {appName} lidará com a remoção automática de torrents com base nos critérios de propagação atuais em Configurações->Indexadores somente quando Remover Concluído estiver habilitado. · · Após a importação, ele também definirá {importedView} como uma visualização rTorrent, que pode ser usada em scripts rTorrent para personalizar o comportamento.",
|
||||
"DownloadClientRTorrentSettingsAddStopped": "Adicionar Parado",
|
||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "A ativação adicionará torrents e ímãs ao rTorrent em um estado parado. Isso pode quebrar os arquivos magnéticos.",
|
||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "Local opcional para colocar downloads, deixe em branco para usar o local padrão do rTorrent",
|
||||
"DownloadClientRTorrentSettingsUrlPath": "Caminho da URL",
|
||||
"DownloadClientSabnzbdValidationCheckBeforeDownload": "Desative a opção ‘Verificar antes do download’ no Sabnbzd",
|
||||
"DownloadClientSabnzbdValidationDevelopVersion": "Versão de desenvolvimento do Sabnzbd, assumindo a versão 3.0.0 ou superior.",
|
||||
"DownloadClientSabnzbdValidationDevelopVersionDetail": "{appName} pode não ser compatível com novos recursos adicionados ao SABnzbd ao executar versões de desenvolvimento.",
|
||||
"DownloadClientSabnzbdValidationEnableDisableDateSorting": "Desabilitar ordenação por data",
|
||||
"DownloadClientSabnzbdValidationEnableDisableDateSortingDetail": "Você deve desativar a ordenação por data para a categoria usada por {appName} para evitar problemas de importação. Vá para Sabnzbd para consertar.",
|
||||
"DownloadClientSabnzbdValidationEnableDisableMovieSorting": "Desabilitar Ordenação de Filmes",
|
||||
"DownloadClientSabnzbdValidationEnableDisableTvSorting": "Desabilitar Ordenação para TV",
|
||||
"DownloadClientSabnzbdValidationEnableDisableTvSortingDetail": "Você deve desativar a ordenação de TV para a categoria usada por {appName} para evitar problemas de importação. Vá para Sabnzbd para consertar.",
|
||||
"DownloadClientSabnzbdValidationEnableDisableDateSorting": "Desativar Classificação por Data",
|
||||
"DownloadClientSabnzbdValidationEnableDisableDateSortingDetail": "Você deve desativar a classificação por data para a categoria usada por {appName} para evitar problemas de importação. Vá para Sabnzbd para consertar.",
|
||||
"DownloadClientSabnzbdValidationEnableDisableMovieSorting": "Desabilitar Classificação de Filmes",
|
||||
"DownloadClientSabnzbdValidationEnableDisableTvSorting": "Desabilitar Classificação de TV",
|
||||
"DownloadClientSabnzbdValidationEnableDisableTvSortingDetail": "Você deve desativar a classificação de TV para a categoria usada por {appName} para evitar problemas de importação. Vá para Sabnzbd para consertar.",
|
||||
"DownloadClientSabnzbdValidationEnableJobFolders": "Habilitar pastas de trabalho",
|
||||
"DownloadClientSabnzbdValidationUnknownVersion": "Versão desconhecida: {rawVersion}",
|
||||
"DownloadClientSabnzbdValidationUnknownVersion": "Versão Desconhecida: {rawVersion}",
|
||||
"DownloadClientSettingsAddPaused": "Adicionar Pausado",
|
||||
"DownloadClientSettingsCategoryHelpText": "Adicionar uma categoria específica para {appName} evita conflitos com downloads não relacionados que não sejam de {appName}. Usar uma categoria é opcional, mas altamente recomendado.",
|
||||
"DownloadClientSettingsDestinationHelpText": "Especifica manualmente o destino do download, deixe em branco para usar o padrão",
|
||||
"DownloadClientSettingsInitialState": "Estado Inicial",
|
||||
"DownloadClientSettingsInitialStateHelpText": "Estado inicial dos torrents adicionados ao {clientName}",
|
||||
"DownloadClientSettingsInitialStateHelpText": "Estado inicial dos torrents adicionados a {clientName}",
|
||||
"DownloadClientSettingsOlderPriorityEpisodeHelpText": "Prioridade de uso ao baixar episódios que foram ao ar há mais de 14 dias",
|
||||
"DownloadClientSettingsPostImportCategoryHelpText": "Categoria para {appName} definir após importar o download. {appName} não removerá torrents nessa categoria mesmo que a propagação seja concluída. Deixe em branco para manter a mesma categoria.",
|
||||
"DownloadClientSettingsRecentPriorityEpisodeHelpText": "Prioridade de uso ao baixar episódios que foram ao ar nos últimos 14 dias",
|
||||
"DownloadClientSettingsOlderPriority": "Prioridade para os mais antigos",
|
||||
"DownloadClientSettingsRecentPriority": "Prioridade para os mais recentes",
|
||||
"DownloadClientSettingsOlderPriority": "Priorizar Mais Antigos",
|
||||
"DownloadClientSettingsRecentPriority": "Priorizar Recentes",
|
||||
"DownloadClientUTorrentTorrentStateError": "uTorrent está relatando um erro",
|
||||
"DownloadClientValidationApiKeyIncorrect": "Chave de API incorreta",
|
||||
"DownloadClientValidationApiKeyRequired": "Chave de API necessária",
|
||||
"DownloadClientValidationAuthenticationFailure": "Falha de autenticação",
|
||||
"DownloadClientValidationAuthenticationFailure": "Falha de Autenticação",
|
||||
"DownloadClientValidationCategoryMissing": "A categoria não existe",
|
||||
"DownloadClientValidationCategoryMissingDetail": "A categoria inserida não existe em {clientName}. Crie-a primeiro em {clientName}.",
|
||||
"DownloadClientValidationCategoryMissingDetail": "A categoria inserida não existe em {clientName}. Crie-o primeiro em {clientName}.",
|
||||
"DownloadClientValidationErrorVersion": "A versão de {clientName} deve ser pelo menos {requiredVersion}. A versão informada é {reportedVersion}",
|
||||
"DownloadClientValidationGroupMissing": "O grupo não existe",
|
||||
"DownloadClientValidationGroupMissingDetail": "O grupo inserido não existe em {clientName}. Crie-a primeiro em {clientName}.",
|
||||
"DownloadClientValidationGroupMissingDetail": "O grupo inserido não existe em {clientName}. Crie-o primeiro em {clientName}.",
|
||||
"DownloadClientValidationSslConnectFailure": "Não é possível conectar através de SSL",
|
||||
"DownloadClientValidationTestNzbs": "Falha ao obter a lista de NZBs: {exceptionMessage}",
|
||||
"DownloadClientValidationTestTorrents": "Falha ao obter a lista de torrents: {exceptionMessage}",
|
||||
"DownloadClientValidationUnableToConnect": "Não foi possível conectar-se a {clientName}",
|
||||
"DownloadClientValidationUnableToConnectDetail": "Verifique o nome do host e a porta.",
|
||||
"DownloadClientValidationUnknownException": "Exceção desconhecida: {exception}",
|
||||
"DownloadClientValidationUnknownException": "Exceção desconhecida: {exceção}",
|
||||
"DownloadClientValidationVerifySsl": "Verifique as configurações de SSL",
|
||||
"DownloadClientValidationVerifySslDetail": "Verifique sua configuração SSL em {clientName} e {appName}",
|
||||
"DownloadClientVuzeValidationErrorVersion": "Versão do protocolo não suportada, use Vuze 5.0.0.0 ou superior com o plugin Vuze Web Remote.",
|
||||
"DownloadStationStatusExtracting": "Extraindo: {progress}%",
|
||||
"TorrentBlackholeSaveMagnetFilesExtension": "Salvar extensão de arquivos magnéticos",
|
||||
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "Extensão a ser usada para links magnéticos, o padrão é '.magnet'",
|
||||
"TorrentBlackholeSaveMagnetFilesReadOnly": "Somente para Leitura",
|
||||
"TorrentBlackholeSaveMagnetFilesReadOnly": "Só Leitura",
|
||||
"TorrentBlackholeSaveMagnetFilesReadOnlyHelpText": "Em vez de mover arquivos, isso instruirá {appName} a copiar ou vincular (dependendo das configurações/configuração do sistema)",
|
||||
"TorrentBlackholeTorrentFolder": "Pasta do Torrent",
|
||||
"UseSsl": "Usar SSL",
|
||||
@@ -2029,5 +2029,15 @@
|
||||
"BlocklistAndSearch": "Lista de Bloqueio e Pesquisa",
|
||||
"BlocklistAndSearchHint": "Inicie uma busca por um substituto após adicionar a lista de bloqueio",
|
||||
"BlocklistOnlyHint": "Adiciona a Lista de bloqueio sem procurar um substituto",
|
||||
"IgnoreDownload": "Ignorar Download"
|
||||
"IgnoreDownload": "Ignorar Download",
|
||||
"ImportListStatusAllPossiblePartialFetchHealthCheckMessage": "Todas as listas requerem interação manual devido a possíveis buscas parciais",
|
||||
"KeepAndTagSeries": "Manter e Etiquetar Séries",
|
||||
"KeepAndUnmonitorSeries": "Manter e Desmonitorar Séries",
|
||||
"ListSyncLevelHelpText": "As séries na biblioteca serão tratadas com base na sua seleção se elas caírem ou não aparecerem na(s) sua(s) lista(s)",
|
||||
"ListSyncTag": "Etiqueta de Sincronização de Lista",
|
||||
"ListSyncTagHelpText": "Esta etiqueta será adicionada quando uma série cair ou não estiver mais na(s) sua(s) lista(s)",
|
||||
"LogOnly": "Só Registro",
|
||||
"UnableToLoadListOptions": "Não foi possível carregar as opções da lista",
|
||||
"CleanLibraryLevel": "Limpar Nível da Biblioteca",
|
||||
"AddDelayProfileError": "Não foi possível adicionar um novo perfil de atraso. Tente novamente."
|
||||
}
|
||||
|
||||
@@ -21,5 +21,22 @@
|
||||
"AddCustomFilter": "Додати власний фільтр",
|
||||
"AddCustomFormat": "Додати власний формат",
|
||||
"AddDelayProfile": "Додати Профіль Затримки",
|
||||
"AddCustomFormatError": "Неможливо додати новий власний формат, спробуйте ще раз."
|
||||
"AddCustomFormatError": "Неможливо додати новий власний формат, спробуйте ще раз.",
|
||||
"AddListExclusion": "Додати виняток зі списку",
|
||||
"AbsoluteEpisodeNumbers": "Загальні номери епізодів",
|
||||
"AbsoluteEpisodeNumber": "Загальний номер епізоду",
|
||||
"AddImportList": "Додати список імпорту",
|
||||
"AddIndexer": "Додати Індексер",
|
||||
"AddNew": "Додати",
|
||||
"AddNewRestriction": "Додати нове обмеження",
|
||||
"AddNewSeries": "Додати новий серіал",
|
||||
"AddDownloadClientImplementation": "Додати клієнт завантаження - {implementationName}",
|
||||
"AddImportListExclusionError": "Не вдалось додати виняток нового списку імпорту, спробуйте ще раз.",
|
||||
"AddImportListImplementation": "Додати список імпорту - {implementationName}",
|
||||
"AddIndexerError": "Неможливо додати новий індексер, спробуйте ще раз.",
|
||||
"AddIndexerImplementation": "Додати індексер - {implementationName}",
|
||||
"AddList": "Додати список",
|
||||
"AddListError": "Неможливо додати новий список, спробуйте ще раз.",
|
||||
"AddListExclusionError": "Неможливо додати новий виняток зі списку, спробуйте ще раз.",
|
||||
"AddListExclusionSeriesHelpText": "Заборонити додавання серіалів до {appName} зі списків"
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace NzbDrone.Core.MediaFiles
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
private static readonly Regex ExcludedExtrasSubFolderRegex = new Regex(@"(?:\\|\/|^)(?:extras|extrafanart|behind the scenes|deleted scenes|featurettes|interviews|scenes|samples|shorts|trailers)(?:\\|\/)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
private static readonly Regex ExcludedExtrasSubFolderRegex = new Regex(@"(?:\\|\/|^)(?:extras|extrafanart|behind the scenes|deleted scenes|featurettes|interviews|other|scenes|samples|shorts|trailers)(?:\\|\/)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
private static readonly Regex ExcludedSubFoldersRegex = new Regex(@"(?:\\|\/|^)(?:@eadir|\.@__thumb|plex versions|\.[^\\/]+)(?:\\|\/)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
private static readonly Regex ExcludedExtraFilesRegex = new Regex(@"(-(trailer|other|behindthescenes|deleted|featurette|interview|scene|short)\.[^.]+$)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
private static readonly Regex ExcludedFilesRegex = new Regex(@"^\._|^Thumbs\.db$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
using NLog;
|
||||
using NzbDrone.Core.DecisionEngine;
|
||||
using NzbDrone.Core.Download;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications
|
||||
{
|
||||
public class SplitEpisodeSpecification : IImportDecisionEngineSpecification
|
||||
{
|
||||
private readonly Logger _logger;
|
||||
|
||||
public SplitEpisodeSpecification(Logger logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public Decision IsSatisfiedBy(LocalEpisode localEpisode, DownloadClientItem downloadClientItem)
|
||||
{
|
||||
if (localEpisode.FileEpisodeInfo == null)
|
||||
{
|
||||
return Decision.Accept();
|
||||
}
|
||||
|
||||
if (localEpisode.FileEpisodeInfo.IsSplitEpisode)
|
||||
{
|
||||
_logger.Debug("Single episode split into multiple files");
|
||||
return Decision.Reject("Single episode split into multiple files");
|
||||
}
|
||||
|
||||
return Decision.Accept();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -72,7 +72,11 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications
|
||||
currentFormats != null ? currentFormats.ConcatToString() : "",
|
||||
currentFormatScore);
|
||||
|
||||
return Decision.Reject("Not a Custom Format upgrade for existing episode file(s)");
|
||||
return Decision.Reject("Not a Custom Format upgrade for existing episode file(s). New: [{0}] ({1}) do not improve on Existing: [{2}] ({3})",
|
||||
newFormats != null ? newFormats.ConcatToString() : "",
|
||||
newFormatScore,
|
||||
currentFormats != null ? currentFormats.ConcatToString() : "",
|
||||
currentFormatScore);
|
||||
}
|
||||
|
||||
_logger.Debug("New item's custom formats [{0}] ({1}) improve on [{2}] ({3}), accepting",
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
namespace NzbDrone.Core.Organizer
|
||||
{
|
||||
public class BasicNamingConfig
|
||||
{
|
||||
public bool IncludeSeriesTitle { get; set; }
|
||||
public bool IncludeEpisodeTitle { get; set; }
|
||||
public bool IncludeQuality { get; set; }
|
||||
public bool ReplaceSpaces { get; set; }
|
||||
public string Separator { get; set; }
|
||||
public string NumberStyle { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,6 @@ namespace NzbDrone.Core.Organizer
|
||||
string BuildFileName(List<Episode> episodes, Series series, EpisodeFile episodeFile, string extension = "", NamingConfig namingConfig = null, List<CustomFormat> customFormats = null);
|
||||
string BuildFilePath(List<Episode> episodes, Series series, EpisodeFile episodeFile, string extension, NamingConfig namingConfig = null, List<CustomFormat> customFormats = null);
|
||||
string BuildSeasonPath(Series series, int seasonNumber);
|
||||
BasicNamingConfig GetBasicNamingConfig(NamingConfig nameSpec);
|
||||
string GetSeriesFolder(Series series, NamingConfig namingConfig = null);
|
||||
string GetSeasonFolder(Series series, int seasonNumber, NamingConfig namingConfig = null);
|
||||
bool RequiresEpisodeTitle(Series series, List<Episode> episodes);
|
||||
@@ -68,7 +67,7 @@ namespace NzbDrone.Core.Organizer
|
||||
|
||||
public static readonly Regex AirDateRegex = new Regex(@"\{Air(\s|\W|_)Date\}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
public static readonly Regex SeriesTitleRegex = new Regex(@"(?<token>\{(?:Series)(?<separator>[- ._])(Clean)?Title(The)?(Without)?(Year)?\})",
|
||||
public static readonly Regex SeriesTitleRegex = new Regex(@"(?<token>\{(?:Series)(?<separator>[- ._])(Clean)?Title(The)?(Without)?(Year)?(?::(?<customFormat>[0-9-]+))?\})",
|
||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
private static readonly Regex FileNameCleanupRegex = new Regex(@"([- ._])(\1)+", RegexOptions.Compiled);
|
||||
@@ -253,52 +252,6 @@ namespace NzbDrone.Core.Organizer
|
||||
return path;
|
||||
}
|
||||
|
||||
public BasicNamingConfig GetBasicNamingConfig(NamingConfig nameSpec)
|
||||
{
|
||||
var episodeFormat = GetEpisodeFormat(nameSpec.StandardEpisodeFormat).LastOrDefault();
|
||||
|
||||
if (episodeFormat == null)
|
||||
{
|
||||
return new BasicNamingConfig();
|
||||
}
|
||||
|
||||
var basicNamingConfig = new BasicNamingConfig
|
||||
{
|
||||
Separator = episodeFormat.Separator,
|
||||
NumberStyle = episodeFormat.SeasonEpisodePattern
|
||||
};
|
||||
|
||||
var titleTokens = TitleRegex.Matches(nameSpec.StandardEpisodeFormat);
|
||||
|
||||
foreach (Match match in titleTokens)
|
||||
{
|
||||
var separator = match.Groups["separator"].Value;
|
||||
var token = match.Groups["token"].Value;
|
||||
|
||||
if (!separator.Equals(" "))
|
||||
{
|
||||
basicNamingConfig.ReplaceSpaces = true;
|
||||
}
|
||||
|
||||
if (token.StartsWith("{Series", StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
basicNamingConfig.IncludeSeriesTitle = true;
|
||||
}
|
||||
|
||||
if (token.StartsWith("{Episode", StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
basicNamingConfig.IncludeEpisodeTitle = true;
|
||||
}
|
||||
|
||||
if (token.StartsWith("{Quality", StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
basicNamingConfig.IncludeQuality = true;
|
||||
}
|
||||
}
|
||||
|
||||
return basicNamingConfig;
|
||||
}
|
||||
|
||||
public string GetSeriesFolder(Series series, NamingConfig namingConfig = null)
|
||||
{
|
||||
if (namingConfig == null)
|
||||
@@ -315,6 +268,7 @@ namespace NzbDrone.Core.Organizer
|
||||
|
||||
folderName = CleanFolderName(folderName);
|
||||
folderName = ReplaceReservedDeviceNames(folderName);
|
||||
folderName = folderName.Replace("{ellipsis}", "...");
|
||||
|
||||
return folderName;
|
||||
}
|
||||
@@ -337,6 +291,7 @@ namespace NzbDrone.Core.Organizer
|
||||
|
||||
folderName = CleanFolderName(folderName);
|
||||
folderName = ReplaceReservedDeviceNames(folderName);
|
||||
folderName = folderName.Replace("{ellipsis}", "...");
|
||||
|
||||
return folderName;
|
||||
}
|
||||
@@ -492,19 +447,19 @@ namespace NzbDrone.Core.Organizer
|
||||
|
||||
private void AddSeriesTokens(Dictionary<string, Func<TokenMatch, string>> tokenHandlers, Series series)
|
||||
{
|
||||
tokenHandlers["{Series Title}"] = m => series.Title;
|
||||
tokenHandlers["{Series CleanTitle}"] = m => CleanTitle(series.Title);
|
||||
tokenHandlers["{Series TitleYear}"] = m => TitleYear(series.Title, series.Year);
|
||||
tokenHandlers["{Series CleanTitleYear}"] = m => CleanTitle(TitleYear(series.Title, series.Year));
|
||||
tokenHandlers["{Series TitleWithoutYear}"] = m => TitleWithoutYear(series.Title);
|
||||
tokenHandlers["{Series CleanTitleWithoutYear}"] = m => CleanTitle(TitleWithoutYear(series.Title));
|
||||
tokenHandlers["{Series TitleThe}"] = m => TitleThe(series.Title);
|
||||
tokenHandlers["{Series CleanTitleThe}"] = m => CleanTitleThe(series.Title);
|
||||
tokenHandlers["{Series TitleTheYear}"] = m => TitleYear(TitleThe(series.Title), series.Year);
|
||||
tokenHandlers["{Series CleanTitleTheYear}"] = m => CleanTitleTheYear(series.Title, series.Year);
|
||||
tokenHandlers["{Series TitleTheWithoutYear}"] = m => TitleWithoutYear(TitleThe(series.Title));
|
||||
tokenHandlers["{Series CleanTitleTheWithoutYear}"] = m => CleanTitleThe(TitleWithoutYear(series.Title));
|
||||
tokenHandlers["{Series TitleFirstCharacter}"] = m => TitleFirstCharacter(TitleThe(series.Title));
|
||||
tokenHandlers["{Series Title}"] = m => Truncate(series.Title, m.CustomFormat);
|
||||
tokenHandlers["{Series CleanTitle}"] = m => Truncate(CleanTitle(series.Title), m.CustomFormat);
|
||||
tokenHandlers["{Series TitleYear}"] = m => Truncate(TitleYear(series.Title, series.Year), m.CustomFormat);
|
||||
tokenHandlers["{Series CleanTitleYear}"] = m => Truncate(CleanTitle(TitleYear(series.Title, series.Year)), m.CustomFormat);
|
||||
tokenHandlers["{Series TitleWithoutYear}"] = m => Truncate(TitleWithoutYear(series.Title), m.CustomFormat);
|
||||
tokenHandlers["{Series CleanTitleWithoutYear}"] = m => Truncate(CleanTitle(TitleWithoutYear(series.Title)), m.CustomFormat);
|
||||
tokenHandlers["{Series TitleThe}"] = m => Truncate(TitleThe(series.Title), m.CustomFormat);
|
||||
tokenHandlers["{Series CleanTitleThe}"] = m => Truncate(CleanTitleThe(series.Title), m.CustomFormat);
|
||||
tokenHandlers["{Series TitleTheYear}"] = m => Truncate(TitleYear(TitleThe(series.Title), series.Year), m.CustomFormat);
|
||||
tokenHandlers["{Series CleanTitleTheYear}"] = m => Truncate(CleanTitleTheYear(series.Title, series.Year), m.CustomFormat);
|
||||
tokenHandlers["{Series TitleTheWithoutYear}"] = m => Truncate(TitleWithoutYear(TitleThe(series.Title)), m.CustomFormat);
|
||||
tokenHandlers["{Series CleanTitleTheWithoutYear}"] = m => Truncate(CleanTitleThe(TitleWithoutYear(series.Title)), m.CustomFormat);
|
||||
tokenHandlers["{Series TitleFirstCharacter}"] = m => Truncate(TitleFirstCharacter(TitleThe(series.Title)), m.CustomFormat);
|
||||
tokenHandlers["{Series Year}"] = m => series.Year.ToString();
|
||||
}
|
||||
|
||||
@@ -659,15 +614,15 @@ namespace NzbDrone.Core.Organizer
|
||||
|
||||
private void AddEpisodeTitleTokens(Dictionary<string, Func<TokenMatch, string>> tokenHandlers, List<Episode> episodes, int maxLength)
|
||||
{
|
||||
tokenHandlers["{Episode Title}"] = m => GetEpisodeTitle(GetEpisodeTitles(episodes), "+", maxLength);
|
||||
tokenHandlers["{Episode CleanTitle}"] = m => GetEpisodeTitle(GetEpisodeTitles(episodes).Select(CleanTitle).ToList(), "and", maxLength);
|
||||
tokenHandlers["{Episode Title}"] = m => GetEpisodeTitle(GetEpisodeTitles(episodes), "+", maxLength, m.CustomFormat);
|
||||
tokenHandlers["{Episode CleanTitle}"] = m => GetEpisodeTitle(GetEpisodeTitles(episodes).Select(CleanTitle).ToList(), "and", maxLength, m.CustomFormat);
|
||||
}
|
||||
|
||||
private void AddEpisodeFileTokens(Dictionary<string, Func<TokenMatch, string>> tokenHandlers, EpisodeFile episodeFile, bool useCurrentFilenameAsFallback)
|
||||
{
|
||||
tokenHandlers["{Original Title}"] = m => GetOriginalTitle(episodeFile, useCurrentFilenameAsFallback);
|
||||
tokenHandlers["{Original Filename}"] = m => GetOriginalFileName(episodeFile, useCurrentFilenameAsFallback);
|
||||
tokenHandlers["{Release Group}"] = m => episodeFile.ReleaseGroup ?? m.DefaultValue("Sonarr");
|
||||
tokenHandlers["{Release Group}"] = m => Truncate(episodeFile.ReleaseGroup, m.CustomFormat) ?? m.DefaultValue("Sonarr");
|
||||
}
|
||||
|
||||
private void AddQualityTokens(Dictionary<string, Func<TokenMatch, string>> tokenHandlers, Series series, EpisodeFile episodeFile)
|
||||
@@ -1046,8 +1001,15 @@ namespace NzbDrone.Core.Organizer
|
||||
return titles;
|
||||
}
|
||||
|
||||
private string GetEpisodeTitle(List<string> titles, string separator, int maxLength)
|
||||
private string GetEpisodeTitle(List<string> titles, string separator, int maxLength, string formatter)
|
||||
{
|
||||
var maxFormatterLength = GetMaxLengthFromFormatter(formatter);
|
||||
|
||||
if (maxFormatterLength > 0)
|
||||
{
|
||||
maxLength = Math.Min(maxLength, maxFormatterLength);
|
||||
}
|
||||
|
||||
separator = $" {separator.Trim()} ";
|
||||
|
||||
var joined = string.Join(separator, titles);
|
||||
@@ -1144,6 +1106,7 @@ namespace NzbDrone.Core.Organizer
|
||||
var tokenHandlers = new Dictionary<string, Func<TokenMatch, string>>(FileNameBuilderTokenEqualityComparer.Instance);
|
||||
tokenHandlers["{Episode Title}"] = m => string.Empty;
|
||||
tokenHandlers["{Episode CleanTitle}"] = m => string.Empty;
|
||||
tokenHandlers["{ellipsis}"] = m => "...";
|
||||
|
||||
var result = ReplaceTokens(pattern, tokenHandlers, namingConfig);
|
||||
|
||||
@@ -1202,6 +1165,30 @@ namespace NzbDrone.Core.Organizer
|
||||
|
||||
return result.TrimStart(' ', '.').TrimEnd(' ');
|
||||
}
|
||||
|
||||
private string Truncate(string input, string formatter)
|
||||
{
|
||||
var maxLength = GetMaxLengthFromFormatter(formatter);
|
||||
|
||||
if (maxLength == 0 || input.Length <= Math.Abs(maxLength))
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
if (maxLength < 0)
|
||||
{
|
||||
return $"{{ellipsis}}{input.Reverse().Truncate(Math.Abs(maxLength) - 3).TrimEnd(' ', '.').Reverse()}";
|
||||
}
|
||||
|
||||
return $"{input.Truncate(maxLength - 3).TrimEnd(' ', '.')}{{ellipsis}}";
|
||||
}
|
||||
|
||||
private int GetMaxLengthFromFormatter(string formatter)
|
||||
{
|
||||
int.TryParse(formatter, out var maxCustomLength);
|
||||
|
||||
return maxCustomLength;
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class TokenMatch
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace NzbDrone.Core.Parser.Model
|
||||
public bool IsPartialSeason { get; set; }
|
||||
public bool IsMultiSeason { get; set; }
|
||||
public bool IsSeasonExtra { get; set; }
|
||||
public bool IsSplitEpisode { get; set; }
|
||||
public bool Special { get; set; }
|
||||
public string ReleaseGroup { get; set; }
|
||||
public string ReleaseHash { get; set; }
|
||||
|
||||
@@ -74,6 +74,10 @@ namespace NzbDrone.Core.Parser
|
||||
new Regex(@"^(?:S?(?<season>(?<!\d+)(?:\d{1,2}|\d{4})(?!\d+))(?:(?:[-_]|[ex]){1,2}(?<episode>\d{2,3}(?!\d+))){2,})",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Split episodes (S01E05a, S01E05b, etc)
|
||||
new Regex(@"^(?<title>.+?)(?:S?(?<season>(?<!\d+)(?:\d{1,2}|\d{4})(?!\d+))(?:(?:[-_ ]?[ex])(?<episode>\d{2,3}(?!\d+))(?<splitepisode>[a-d])(?:[ _.])))",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Episodes without a title, Single (S01E05, 1x05)
|
||||
new Regex(@"^(?:S?(?<season>(?<!\d+)(?:\d{1,2}|\d{4})(?!\d+))(?:(?:[-_ ]?[ex])(?<episode>\d{2,3}(?!\d+))))",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
@@ -178,6 +182,10 @@ namespace NzbDrone.Core.Parser
|
||||
new Regex(@"^(?<title>.+?)?\W*(?<airyear>\d{4})\W+(?<airmonth>[0-1][0-9])\W+(?<airday>[0-3][0-9])(?!\W+[0-3][0-9]).+?(?:s?(?<season>(?<!\d+)(?:\d{1,2})(?!\d+)))(?:[ex](?<episode>(?<!\d+)(?:\d{1,3})(?!\d+)))",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Single or multi episode releases with multiple titles, then season and episode numbers after the last title. (Title1 / Title2 / ... / S1E1-2 of 6)
|
||||
new Regex(@"^((?<title>.*?)[ ._]\/[ ._])+\(?S(?<season>(?<!\d+)\d{1,2}(?!\d+))(?:\W|_)?E?[ ._]?(?<episode>(?<!\d+)\d{1,2}(?!\d+))(?:-(?<episode>(?<!\d+)\d{1,2}(?!\d+)))?([ ._]of[ ._]\d+)?\)?[ ._][\(\[]",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Multi-episode with title (S01E05-06, S01E05-6)
|
||||
new Regex(@"^(?<title>.+?)(?:[-_\W](?<![()\[!]))+S(?<season>(?<!\d+)(?:\d{1,2})(?!\d+))E(?<episode>\d{1,2}(?!\d+))(?:-(?<episode>\d{1,2}(?!\d+)))+(?:[-_. ]|$)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
@@ -521,7 +529,7 @@ namespace NzbDrone.Core.Parser
|
||||
private static readonly Regex ExceptionReleaseGroupRegexExact = new Regex(@"(?<releasegroup>(?:D\-Z0N3|Fight-BB|VARYG|E\.N\.D)\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
// groups whose releases end with RlsGroup) or RlsGroup]
|
||||
private static readonly Regex ExceptionReleaseGroupRegex = new Regex(@"(?<releasegroup>(Silence|afm72|Panda|Ghost|MONOLITH|Tigole|Joy|ImE|UTR|t3nzin|Anime Time|Project Angel|Hakata Ramen|HONE|Vyndros|SEV|Garshasp|Kappa|Natty|RCVR|SAMPA|YOGI|r00t|EDGE2020)(?=\]|\)))", RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
private static readonly Regex ExceptionReleaseGroupRegex = new Regex(@"(?<releasegroup>(Silence|afm72|Panda|Ghost|MONOLITH|Tigole|Joy|ImE|UTR|t3nzin|Anime Time|Project Angel|Hakata Ramen|HONE|Vyndros|SEV|Garshasp|Kappa|Natty|RCVR|SAMPA|YOGI|r00t|EDGE2020|RZeroX)(?=\]|\)))", RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
private static readonly Regex YearInTitleRegex = new Regex(@"^(?<title>.+?)[-_. ]+?[\(\[]?(?<year>\d{4})[\]\)]?",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
@@ -966,6 +974,11 @@ namespace NzbDrone.Core.Parser
|
||||
{
|
||||
result.Special = true;
|
||||
}
|
||||
|
||||
if (matchGroup.Groups["splitepisode"].Success)
|
||||
{
|
||||
result.IsSplitEpisode = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (absoluteEpisodeCaptures.Any())
|
||||
|
||||
@@ -105,11 +105,12 @@ namespace NzbDrone.Core.Update
|
||||
return false;
|
||||
}
|
||||
|
||||
var tempFolder = _appFolderInfo.TempFolder;
|
||||
var updateSandboxFolder = _appFolderInfo.GetUpdateSandboxFolder();
|
||||
|
||||
if (_diskProvider.GetTotalSize(updateSandboxFolder) < 1.Gigabytes())
|
||||
if (_diskProvider.GetTotalSize(tempFolder) < 1.Gigabytes())
|
||||
{
|
||||
_logger.Warn("Temporary location '{0}' has less than 1 GB free space, Sonarr may not be able to update itself.", updateSandboxFolder);
|
||||
_logger.Warn("Temporary location '{0}' has less than 1 GB free space, Sonarr may not be able to update itself.", tempFolder);
|
||||
}
|
||||
|
||||
var packageDestination = Path.Combine(updateSandboxFolder, updatePackage.FileName);
|
||||
|
||||
@@ -49,12 +49,6 @@ namespace Sonarr.Api.V3.Config
|
||||
var nameSpec = _namingConfigService.GetConfig();
|
||||
var resource = nameSpec.ToResource();
|
||||
|
||||
if (resource.StandardEpisodeFormat.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
var basicConfig = _filenameBuilder.GetBasicNamingConfig(nameSpec);
|
||||
basicConfig.AddToResource(resource);
|
||||
}
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,11 +14,5 @@ namespace Sonarr.Api.V3.Config
|
||||
public string SeriesFolderFormat { get; set; }
|
||||
public string SeasonFolderFormat { get; set; }
|
||||
public string SpecialsFolderFormat { get; set; }
|
||||
public bool IncludeSeriesTitle { get; set; }
|
||||
public bool IncludeEpisodeTitle { get; set; }
|
||||
public bool IncludeQuality { get; set; }
|
||||
public bool ReplaceSpaces { get; set; }
|
||||
public string Separator { get; set; }
|
||||
public string NumberStyle { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,26 +32,9 @@ namespace Sonarr.Api.V3.Config
|
||||
SeriesFolderFormat = model.SeriesFolderFormat,
|
||||
SeasonFolderFormat = model.SeasonFolderFormat,
|
||||
SpecialsFolderFormat = model.SpecialsFolderFormat
|
||||
|
||||
// IncludeSeriesTitle
|
||||
// IncludeEpisodeTitle
|
||||
// IncludeQuality
|
||||
// ReplaceSpaces
|
||||
// Separator
|
||||
// NumberStyle
|
||||
};
|
||||
}
|
||||
|
||||
public static void AddToResource(this BasicNamingConfig basicNamingConfig, NamingConfigResource resource)
|
||||
{
|
||||
resource.IncludeSeriesTitle = basicNamingConfig.IncludeSeriesTitle;
|
||||
resource.IncludeEpisodeTitle = basicNamingConfig.IncludeEpisodeTitle;
|
||||
resource.IncludeQuality = basicNamingConfig.IncludeQuality;
|
||||
resource.ReplaceSpaces = basicNamingConfig.ReplaceSpaces;
|
||||
resource.Separator = basicNamingConfig.Separator;
|
||||
resource.NumberStyle = basicNamingConfig.NumberStyle;
|
||||
}
|
||||
|
||||
public static NamingConfig ToModel(this NamingConfigResource resource)
|
||||
{
|
||||
return new NamingConfig
|
||||
|
||||
@@ -4737,48 +4737,6 @@
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "includeSeriesTitle",
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "includeEpisodeTitle",
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "includeQuality",
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "replaceSpaces",
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "separator",
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "numberStyle",
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "id",
|
||||
"in": "query",
|
||||
@@ -9825,26 +9783,6 @@
|
||||
"specialsFolderFormat": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"includeSeriesTitle": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"includeEpisodeTitle": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"includeQuality": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"replaceSpaces": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"separator": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"numberStyle": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
@@ -12082,4 +12020,4 @@
|
||||
"apikey": [ ]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Authentication;
|
||||
using NzbDrone.Core.Configuration;
|
||||
|
||||
@@ -46,7 +47,17 @@ namespace Sonarr.Http.Authentication
|
||||
|
||||
await HttpContext.SignInAsync(AuthenticationType.Forms.ToString(), new ClaimsPrincipal(new ClaimsIdentity(claims, "Cookies", "user", "identifier")), authProperties);
|
||||
|
||||
return Redirect(_configFileProvider.UrlBase + "/");
|
||||
if (returnUrl.IsNullOrWhiteSpace())
|
||||
{
|
||||
return Redirect(_configFileProvider.UrlBase + "/");
|
||||
}
|
||||
|
||||
if (_configFileProvider.UrlBase.IsNullOrWhiteSpace() || returnUrl.StartsWith(_configFileProvider.UrlBase))
|
||||
{
|
||||
return Redirect(returnUrl);
|
||||
}
|
||||
|
||||
return Redirect(_configFileProvider.UrlBase + returnUrl);
|
||||
}
|
||||
|
||||
[HttpGet("logout")]
|
||||
|
||||
Reference in New Issue
Block a user