mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2026-04-16 21:35:04 -04:00
Compare commits
10 Commits
v2.0.2.511
...
v2.0.4.513
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8664fc095d | ||
|
|
23b9973ef7 | ||
|
|
d9f1d96e00 | ||
|
|
d9d045a548 | ||
|
|
c417c41133 | ||
|
|
d5853735ac | ||
|
|
dbc159f536 | ||
|
|
231cc91f97 | ||
|
|
1a075f201c | ||
|
|
de7f42cf30 |
@@ -9,7 +9,7 @@ variables:
|
||||
testsFolder: './_tests'
|
||||
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
||||
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
||||
majorVersion: '2.0.2'
|
||||
majorVersion: '2.0.4'
|
||||
minorVersion: $[counter('minorVersion', 1)]
|
||||
prowlarrVersion: '$(majorVersion).$(minorVersion)'
|
||||
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
|
||||
|
||||
@@ -202,6 +202,7 @@ namespace NzbDrone.Common.Instrumentation
|
||||
c.ForLogger("Microsoft.*").WriteToNil(LogLevel.Warn);
|
||||
c.ForLogger("Microsoft.Hosting.Lifetime*").WriteToNil(LogLevel.Info);
|
||||
c.ForLogger("Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware").WriteToNil(LogLevel.Fatal);
|
||||
c.ForLogger("Prowlarr.Http.Authentication.ApiKeyAuthenticationHandler").WriteToNil(LogLevel.Info);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.Datastore.Migration;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Test.Datastore.Migration
|
||||
{
|
||||
[TestFixture]
|
||||
public class newznab_indexers_enable_redirectFixture : MigrationTest<newznab_indexers_enable_redirect>
|
||||
{
|
||||
[Test]
|
||||
public void should_update_redirect_setting_to_true_if_false()
|
||||
{
|
||||
var db = WithMigrationTestDb(c =>
|
||||
{
|
||||
c.Insert.IntoTable("Indexers").Row(new
|
||||
{
|
||||
Id = 1,
|
||||
Name = "Test",
|
||||
Implementation = "Newznab",
|
||||
Settings = "{\"baseUrl\":\"https://example.com\",\"apiKey\":\"testapikey\"}",
|
||||
ConfigContract = "NewznabSettings",
|
||||
Enable = true,
|
||||
Priority = 1,
|
||||
Added = System.DateTime.UtcNow,
|
||||
Redirect = false,
|
||||
AppProfileId = 1,
|
||||
Tags = "[]",
|
||||
DownloadClientId = 0
|
||||
});
|
||||
});
|
||||
|
||||
var items = db.Query<IndexerDefinition043>("SELECT * FROM \"Indexers\"");
|
||||
|
||||
items.Should().HaveCount(1);
|
||||
items.First().Implementation.Should().Be("Newznab");
|
||||
items.First().Redirect.Should().BeTrue(); // Validate Redirect is updated
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_change_redirect_setting_if_already_true()
|
||||
{
|
||||
var db = WithMigrationTestDb(c =>
|
||||
{
|
||||
c.Insert.IntoTable("Indexers").Row(new
|
||||
{
|
||||
Id = 1,
|
||||
Name = "Test",
|
||||
Implementation = "Newznab",
|
||||
Settings = "{\"baseUrl\":\"https://example.com\",\"apiKey\":\"testapikey\"}",
|
||||
ConfigContract = "NewznabSettings",
|
||||
Enable = true,
|
||||
Priority = 2,
|
||||
Added = System.DateTime.UtcNow,
|
||||
Redirect = true,
|
||||
AppProfileId = 1,
|
||||
Tags = "[]",
|
||||
DownloadClientId = 0
|
||||
});
|
||||
});
|
||||
|
||||
var items = db.Query<IndexerDefinition043>("SELECT * FROM \"Indexers\"");
|
||||
|
||||
items.Should().HaveCount(1);
|
||||
items.First().Implementation.Should().Be("Newznab");
|
||||
items.First().Redirect.Should().BeTrue(); // Validate Redirect remains true
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_affect_non_newznab_indexers()
|
||||
{
|
||||
var db = WithMigrationTestDb(c =>
|
||||
{
|
||||
c.Insert.IntoTable("Indexers").Row(new
|
||||
{
|
||||
Id = 1,
|
||||
Name = "Test",
|
||||
Implementation = "OtherIndexer",
|
||||
Settings = "{\"baseUrl\":\"https://otherindexer.com\"}",
|
||||
ConfigContract = "OtherIndexerSettings",
|
||||
Enable = true,
|
||||
Priority = 3,
|
||||
Added = System.DateTime.UtcNow,
|
||||
Redirect = false,
|
||||
AppProfileId = 1,
|
||||
Tags = "[]",
|
||||
DownloadClientId = 0
|
||||
});
|
||||
});
|
||||
|
||||
var items = db.Query<IndexerDefinition043>("SELECT * FROM \"Indexers\"");
|
||||
|
||||
items.Should().HaveCount(1);
|
||||
items.First().Implementation.Should().Be("OtherIndexer");
|
||||
items.First().Redirect.Should().BeFalse(); // Validate Redirect is not changed
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_handle_multiple_indexers()
|
||||
{
|
||||
var db = WithMigrationTestDb(c =>
|
||||
{
|
||||
c.Insert.IntoTable("Indexers").Row(new
|
||||
{
|
||||
Id = 1,
|
||||
Name = "Test 1",
|
||||
Implementation = "Newznab",
|
||||
Settings = "{\"baseUrl\":\"https://example1.com\",\"apiKey\":\"testapikey1\"}",
|
||||
ConfigContract = "NewznabSettings",
|
||||
Enable = true,
|
||||
Priority = 4,
|
||||
Added = System.DateTime.UtcNow,
|
||||
Redirect = false,
|
||||
AppProfileId = 1,
|
||||
Tags = "[]",
|
||||
DownloadClientId = 0
|
||||
});
|
||||
c.Insert.IntoTable("Indexers").Row(new
|
||||
{
|
||||
Id = 2,
|
||||
Name = "Test 2",
|
||||
Implementation = "Newznab",
|
||||
Settings = "{\"baseUrl\":\"https://example2.com\",\"apiKey\":\"testapikey2\"}",
|
||||
ConfigContract = "NewznabSettings",
|
||||
Enable = true,
|
||||
Priority = 5,
|
||||
Added = System.DateTime.UtcNow,
|
||||
Redirect = false,
|
||||
AppProfileId = 1,
|
||||
Tags = "[]",
|
||||
DownloadClientId = 0
|
||||
});
|
||||
c.Insert.IntoTable("Indexers").Row(new
|
||||
{
|
||||
Id = 3,
|
||||
Name = "Test 3",
|
||||
Implementation = "Newznab",
|
||||
Settings = "{\"baseUrl\":\"https://example3.com\",\"apiKey\":\"testapikey3\"}",
|
||||
ConfigContract = "NewznabSettings",
|
||||
Enable = true,
|
||||
Priority = 6,
|
||||
Added = System.DateTime.UtcNow,
|
||||
Redirect = true,
|
||||
AppProfileId = 1,
|
||||
Tags = "[]",
|
||||
DownloadClientId = 0
|
||||
});
|
||||
c.Insert.IntoTable("Indexers").Row(new
|
||||
{
|
||||
Id = 4,
|
||||
Name = "Test 4",
|
||||
Implementation = "OtherIndexer",
|
||||
Settings = "{\"baseUrl\":\"https://otherindexer.com\"}",
|
||||
ConfigContract = "OtherIndexerSettings",
|
||||
Enable = true,
|
||||
Priority = 7,
|
||||
Added = System.DateTime.UtcNow,
|
||||
Redirect = false,
|
||||
AppProfileId = 1,
|
||||
Tags = "[]",
|
||||
DownloadClientId = 0
|
||||
});
|
||||
});
|
||||
|
||||
var items = db.Query<IndexerDefinition043>("SELECT * FROM \"Indexers\"");
|
||||
|
||||
items.Should().HaveCount(4);
|
||||
items.First(i => i.Id == 1).Redirect.Should().BeTrue(); // Validate Redirect is updated
|
||||
items.First(i => i.Id == 2).Redirect.Should().BeTrue(); // Validate Redirect is updated
|
||||
items.First(i => i.Id == 3).Redirect.Should().BeTrue(); // Validate Redirect remains true
|
||||
items.First(i => i.Id == 4).Redirect.Should().BeFalse(); // Validate Redirect is not changed
|
||||
}
|
||||
}
|
||||
|
||||
public class IndexerDefinition043
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Implementation { get; set; }
|
||||
public string Settings { get; set; }
|
||||
public string ConfigContract { get; set; }
|
||||
public bool Enable { get; set; }
|
||||
public int Priority { get; set; }
|
||||
public DateTime Added { get; set; }
|
||||
public bool Redirect { get; set; }
|
||||
public int AppProfileId { get; set; }
|
||||
public string Tags { get; set; }
|
||||
public int DownloadClientId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System.Data;
|
||||
using Dapper;
|
||||
using FluentMigrator;
|
||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration
|
||||
{
|
||||
[Migration(043)]
|
||||
public class newznab_indexers_enable_redirect : NzbDroneMigrationBase
|
||||
{
|
||||
protected override void MainDbUpgrade()
|
||||
{
|
||||
Execute.WithConnection(UpdateNewznabRedirectSetting);
|
||||
}
|
||||
|
||||
private void UpdateNewznabRedirectSetting(IDbConnection conn, IDbTransaction tran)
|
||||
{
|
||||
var updateSql = "UPDATE \"Indexers\" SET \"Redirect\" = @Redirect WHERE \"Implementation\" = 'Newznab' AND \"Redirect\" = false";
|
||||
conn.Execute(updateSql, new { Redirect = true }, transaction: tran);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -121,53 +121,49 @@ public class XSpeeds : TorrentIndexerBase<XSpeedsSettings>
|
||||
caps.Categories.AddCategoryMapping(112, NewznabStandardCategory.MoviesOther, "Anime Movies");
|
||||
caps.Categories.AddCategoryMapping(111, NewznabStandardCategory.MoviesOther, "Anime TV");
|
||||
caps.Categories.AddCategoryMapping(150, NewznabStandardCategory.PC, "Apps");
|
||||
caps.Categories.AddCategoryMapping(156, NewznabStandardCategory.TV, "AV1");
|
||||
caps.Categories.AddCategoryMapping(156, NewznabStandardCategory.Movies, "AV1");
|
||||
caps.Categories.AddCategoryMapping(159, NewznabStandardCategory.Movies, "Movie Boxsets AV1");
|
||||
caps.Categories.AddCategoryMapping(158, NewznabStandardCategory.Movies, "Movies AV1");
|
||||
caps.Categories.AddCategoryMapping(157, NewznabStandardCategory.TV, "TV AV1");
|
||||
caps.Categories.AddCategoryMapping(160, NewznabStandardCategory.TV, "TV Boxsets AV1");
|
||||
caps.Categories.AddCategoryMapping(153, NewznabStandardCategory.Books, "Books");
|
||||
caps.Categories.AddCategoryMapping(154, NewznabStandardCategory.AudioAudiobook, "Audiobooks");
|
||||
caps.Categories.AddCategoryMapping(155, NewznabStandardCategory.Books, "Books & Magazines");
|
||||
caps.Categories.AddCategoryMapping(154, NewznabStandardCategory.AudioAudiobook, "Books Audiobooks");
|
||||
caps.Categories.AddCategoryMapping(155, NewznabStandardCategory.Books, "Books eBooks & Magazines");
|
||||
caps.Categories.AddCategoryMapping(68, NewznabStandardCategory.MoviesOther, "Cams/TS");
|
||||
caps.Categories.AddCategoryMapping(140, NewznabStandardCategory.TVDocumentary, "Documentary");
|
||||
caps.Categories.AddCategoryMapping(10, NewznabStandardCategory.MoviesDVD, "DVDR");
|
||||
caps.Categories.AddCategoryMapping(109, NewznabStandardCategory.MoviesBluRay, "Bluray Disc");
|
||||
caps.Categories.AddCategoryMapping(109, NewznabStandardCategory.MoviesBluRay, "DVDR Bluray Disc");
|
||||
caps.Categories.AddCategoryMapping(131, NewznabStandardCategory.TVSport, "Fighting");
|
||||
caps.Categories.AddCategoryMapping(134, NewznabStandardCategory.TVSport, "Fighting/Boxing");
|
||||
caps.Categories.AddCategoryMapping(133, NewznabStandardCategory.TVSport, "Fighting/MMA");
|
||||
caps.Categories.AddCategoryMapping(132, NewznabStandardCategory.TVSport, "Fighting/Wrestling");
|
||||
caps.Categories.AddCategoryMapping(134, NewznabStandardCategory.TVSport, "Fighting Boxing");
|
||||
caps.Categories.AddCategoryMapping(133, NewznabStandardCategory.TVSport, "Fighting MMA");
|
||||
caps.Categories.AddCategoryMapping(132, NewznabStandardCategory.TVSport, "Fighting Wrestling");
|
||||
caps.Categories.AddCategoryMapping(72, NewznabStandardCategory.MoviesForeign, "Foreign");
|
||||
caps.Categories.AddCategoryMapping(116, NewznabStandardCategory.TVForeign, "Foreign Boxsets");
|
||||
caps.Categories.AddCategoryMapping(114, NewznabStandardCategory.MoviesForeign, "Foreign Movies");
|
||||
caps.Categories.AddCategoryMapping(115, NewznabStandardCategory.TVForeign, "Foreign TV");
|
||||
caps.Categories.AddCategoryMapping(103, NewznabStandardCategory.ConsoleOther, "Games Console");
|
||||
caps.Categories.AddCategoryMapping(105, NewznabStandardCategory.ConsoleOther, "Games Console/Nintendo");
|
||||
caps.Categories.AddCategoryMapping(104, NewznabStandardCategory.ConsolePS4, "Games Console/Playstation");
|
||||
caps.Categories.AddCategoryMapping(106, NewznabStandardCategory.ConsoleXBox, "Games Console/XBOX");
|
||||
caps.Categories.AddCategoryMapping(105, NewznabStandardCategory.ConsoleOther, "Games Console Nintendo");
|
||||
caps.Categories.AddCategoryMapping(104, NewznabStandardCategory.ConsolePS4, "Games Console Playstation");
|
||||
caps.Categories.AddCategoryMapping(106, NewznabStandardCategory.ConsoleXBox, "Games Console XBOX");
|
||||
caps.Categories.AddCategoryMapping(6, NewznabStandardCategory.PCGames, "Games PC");
|
||||
caps.Categories.AddCategoryMapping(108, NewznabStandardCategory.PC, "Games PC/Linux");
|
||||
caps.Categories.AddCategoryMapping(107, NewznabStandardCategory.PCMac, "Games PC/Mac");
|
||||
caps.Categories.AddCategoryMapping(108, NewznabStandardCategory.PC, "Games PC Linux");
|
||||
caps.Categories.AddCategoryMapping(107, NewznabStandardCategory.PCMac, "Games PC Mac");
|
||||
caps.Categories.AddCategoryMapping(11, NewznabStandardCategory.Movies, "Movie Boxsets");
|
||||
caps.Categories.AddCategoryMapping(118, NewznabStandardCategory.MoviesUHD, "Movie Boxsets/Boxset 4K");
|
||||
caps.Categories.AddCategoryMapping(143, NewznabStandardCategory.MoviesHD, "Movie Boxsets/Boxset HD");
|
||||
caps.Categories.AddCategoryMapping(119, NewznabStandardCategory.MoviesHD, "Movie Boxsets/Boxset HEVC");
|
||||
caps.Categories.AddCategoryMapping(144, NewznabStandardCategory.MoviesSD, "Movie Boxsets/Boxset SD");
|
||||
caps.Categories.AddCategoryMapping(118, NewznabStandardCategory.MoviesUHD, "Movie Boxsets 4K");
|
||||
caps.Categories.AddCategoryMapping(162, NewznabStandardCategory.MoviesHD, "Movie Boxsets AV1");
|
||||
caps.Categories.AddCategoryMapping(143, NewznabStandardCategory.MoviesHD, "Movie Boxsets HD");
|
||||
caps.Categories.AddCategoryMapping(119, NewznabStandardCategory.MoviesHD, "Movie Boxsets HEVC");
|
||||
caps.Categories.AddCategoryMapping(144, NewznabStandardCategory.MoviesSD, "Movie Boxsets SD");
|
||||
caps.Categories.AddCategoryMapping(12, NewznabStandardCategory.Movies, "Movies");
|
||||
caps.Categories.AddCategoryMapping(117, NewznabStandardCategory.MoviesUHD, "Movies 4K");
|
||||
caps.Categories.AddCategoryMapping(163, NewznabStandardCategory.MoviesHD, "Movies AV1");
|
||||
caps.Categories.AddCategoryMapping(145, NewznabStandardCategory.MoviesHD, "Movies HD");
|
||||
caps.Categories.AddCategoryMapping(100, NewznabStandardCategory.MoviesHD, "Movies HEVC");
|
||||
caps.Categories.AddCategoryMapping(146, NewznabStandardCategory.MoviesSD, "Movies SD");
|
||||
caps.Categories.AddCategoryMapping(13, NewznabStandardCategory.Audio, "Music");
|
||||
caps.Categories.AddCategoryMapping(135, NewznabStandardCategory.AudioLossless, "Music/FLAC");
|
||||
caps.Categories.AddCategoryMapping(151, NewznabStandardCategory.Audio, "Karaoke");
|
||||
caps.Categories.AddCategoryMapping(135, NewznabStandardCategory.AudioLossless, "Music FLAC");
|
||||
caps.Categories.AddCategoryMapping(151, NewznabStandardCategory.Audio, "Music Karaoke");
|
||||
caps.Categories.AddCategoryMapping(136, NewznabStandardCategory.Audio, "Music Boxset");
|
||||
caps.Categories.AddCategoryMapping(148, NewznabStandardCategory.AudioVideo, "Music Videos");
|
||||
caps.Categories.AddCategoryMapping(9, NewznabStandardCategory.Other, "Other");
|
||||
caps.Categories.AddCategoryMapping(125, NewznabStandardCategory.Other, "Other/Pictures");
|
||||
caps.Categories.AddCategoryMapping(54, NewznabStandardCategory.TVOther, "Soaps");
|
||||
caps.Categories.AddCategoryMapping(83, NewznabStandardCategory.TVOther, "Specials");
|
||||
caps.Categories.AddCategoryMapping(125, NewznabStandardCategory.Other, "Other Pictures");
|
||||
caps.Categories.AddCategoryMapping(54, NewznabStandardCategory.TVOther, "Other Soaps");
|
||||
caps.Categories.AddCategoryMapping(83, NewznabStandardCategory.TVOther, "Other Specials");
|
||||
caps.Categories.AddCategoryMapping(139, NewznabStandardCategory.TV, "TOTM (Freeleech)");
|
||||
caps.Categories.AddCategoryMapping(138, NewznabStandardCategory.TV, "TOTW (x2 upload)");
|
||||
caps.Categories.AddCategoryMapping(139, NewznabStandardCategory.Movies, "TOTM (Freeleech)");
|
||||
@@ -177,16 +173,18 @@ public class XSpeeds : TorrentIndexerBase<XSpeedsSettings>
|
||||
caps.Categories.AddCategoryMapping(86, NewznabStandardCategory.TVSport, "Sports/MotorSports");
|
||||
caps.Categories.AddCategoryMapping(89, NewznabStandardCategory.TVSport, "Sports/Olympics");
|
||||
caps.Categories.AddCategoryMapping(126, NewznabStandardCategory.TV, "TV");
|
||||
caps.Categories.AddCategoryMapping(149, NewznabStandardCategory.TV, "TV Specials");
|
||||
caps.Categories.AddCategoryMapping(127, NewznabStandardCategory.TVUHD, "TV 4K");
|
||||
caps.Categories.AddCategoryMapping(164, NewznabStandardCategory.TVHD, "TV AV1");
|
||||
caps.Categories.AddCategoryMapping(129, NewznabStandardCategory.TVHD, "TV HD");
|
||||
caps.Categories.AddCategoryMapping(130, NewznabStandardCategory.TVHD, "TV HEVC");
|
||||
caps.Categories.AddCategoryMapping(128, NewznabStandardCategory.TVSD, "TV SD");
|
||||
caps.Categories.AddCategoryMapping(149, NewznabStandardCategory.TV, "TV Specials");
|
||||
caps.Categories.AddCategoryMapping(21, NewznabStandardCategory.TVSD, "TV Boxsets");
|
||||
caps.Categories.AddCategoryMapping(120, NewznabStandardCategory.TVUHD, "Boxset TV 4K");
|
||||
caps.Categories.AddCategoryMapping(76, NewznabStandardCategory.TVHD, "Boxset TV HD");
|
||||
caps.Categories.AddCategoryMapping(97, NewznabStandardCategory.TVHD, "Boxset TV HEVC");
|
||||
caps.Categories.AddCategoryMapping(147, NewznabStandardCategory.TVSD, "Boxset TV SD");
|
||||
caps.Categories.AddCategoryMapping(120, NewznabStandardCategory.TVUHD, "TV Boxset 4K");
|
||||
caps.Categories.AddCategoryMapping(165, NewznabStandardCategory.TVUHD, "TV Boxset AV1");
|
||||
caps.Categories.AddCategoryMapping(76, NewznabStandardCategory.TVHD, "TV Boxset HD");
|
||||
caps.Categories.AddCategoryMapping(97, NewznabStandardCategory.TVHD, "TV Boxset HEVC");
|
||||
caps.Categories.AddCategoryMapping(147, NewznabStandardCategory.TVSD, "TV Boxset SD");
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
@@ -668,7 +668,7 @@
|
||||
"DownloadClientFreeboxSettingsPortHelpText": "Freebox-liittymän portti. Oletus on {port}.",
|
||||
"DownloadClientPneumaticSettingsNzbFolder": "NZB-kansio",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Peräkkäinen järjestys",
|
||||
"CustomFilter": "Oma suodatin",
|
||||
"CustomFilter": "Mukautettu suodatin",
|
||||
"DownloadClientFreeboxSettingsAppIdHelpText": "Freebox-rajapinnan käyttöoikeutta määritettäessä käytettävä App ID -sovellustunniste.",
|
||||
"DownloadClientFreeboxSettingsAppToken": "Sovellustietue",
|
||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Tämä vaatii vähintään NzbGetin version 16.0.",
|
||||
|
||||
@@ -785,7 +785,7 @@
|
||||
"Logout": "Se déconnecter",
|
||||
"NoEventsFound": "Aucun événement trouvé",
|
||||
"RestartReloadNote": "Remarque : {appName} redémarrera et rechargera automatiquement l'interface utilisateur pendant le processus de restauration.",
|
||||
"TheLogLevelDefault": "Le niveau de journalisation est par défaut à « Information » et peut être modifié dans les [paramètres généraux](/settings/general)",
|
||||
"TheLogLevelDefault": "Le niveau de journalisation est par défaut à «Debug» et peut être modifié dans les [paramètres généraux](/settings/general)",
|
||||
"UpdateAppDirectlyLoadError": "Impossible de mettre à jour directement {appName},",
|
||||
"UpdaterLogFiles": "Journaux du programme de mise à jour",
|
||||
"WouldYouLikeToRestoreBackup": "Souhaitez-vous restaurer la sauvegarde « {name} » ?",
|
||||
|
||||
@@ -88,13 +88,13 @@
|
||||
"Delete": "Verwijder",
|
||||
"DeleteAppProfile": "App-profiel verwijderen",
|
||||
"DeleteApplication": "Applicatie verwijderen",
|
||||
"DeleteApplicationMessageText": "Weet u zeker dat u de applicatie '{0}' wilt verwijderen?",
|
||||
"DeleteApplicationMessageText": "Weet u zeker dat u de applicatie '{name}' wilt verwijderen?",
|
||||
"DeleteBackup": "Verwijder Backup",
|
||||
"DeleteBackupMessageText": "Bent u zeker dat u de veiligheidskopie '{name}' wilt verwijderen?",
|
||||
"DeleteDownloadClient": "Verwijder Downloader",
|
||||
"DeleteDownloadClientMessageText": "Bent u zeker dat u de downloader '{name}' wilt verwijderen?",
|
||||
"DeleteIndexerProxy": "Indexeerproxy verwijderen",
|
||||
"DeleteIndexerProxyMessageText": "Weet u zeker dat u de proxy '{0}' wilt verwijderen?",
|
||||
"DeleteIndexerProxyMessageText": "Weet u zeker dat u de proxy '{name}' wilt verwijderen?",
|
||||
"DeleteNotification": "Verwijder Notificatie",
|
||||
"DeleteNotificationMessageText": "Weet je zeker dat je de notificatie ‘{name}’ wil verwijderen?",
|
||||
"DeleteTag": "Verwijder Tag",
|
||||
@@ -123,7 +123,7 @@
|
||||
"EnableInteractiveSearch": "Schakel interactief zoeken in",
|
||||
"EnableInteractiveSearchHelpText": "Zal worden gebruikt wanneer interactief zoeken wordt gebruikt",
|
||||
"EnableRss": "RSS inschakelen",
|
||||
"EnableRssHelpText": "Rss-feed voor Indexer inschakelen",
|
||||
"EnableRssHelpText": "RSS-feed voor Indexeerder inschakelen",
|
||||
"EnableSSL": "Activeer SSL",
|
||||
"EnableSslHelpText": " Vereist herstart als administrator om in werking te treden",
|
||||
"Enabled": "Ingeschakeld",
|
||||
@@ -162,7 +162,7 @@
|
||||
"HomePage": "Startpagina",
|
||||
"Host": "Host",
|
||||
"Hostname": "Hostnaam",
|
||||
"Id": "Id",
|
||||
"Id": "ID",
|
||||
"IgnoredAddresses": "Genegeerde Adressen",
|
||||
"IllRestartLater": "Ik zal later herstarten",
|
||||
"IncludeHealthWarningsHelpText": "Voeg Gezondheidswaarschuwingen Toe",
|
||||
@@ -180,7 +180,7 @@
|
||||
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Alle proxy's zijn niet beschikbaar vanwege storingen",
|
||||
"IndexerProxyStatusUnavailableHealthCheckMessage": "Proxy's niet beschikbaar vanwege storingen: {indexerProxyNames}",
|
||||
"IndexerQuery": "Indexeer zoekopdracht",
|
||||
"IndexerRss": "Indexeer RSS",
|
||||
"IndexerRss": "Indexeerder RSS",
|
||||
"IndexerSettingsSummary": "Configureer verschillende globale Indexer-instellingen, waaronder proxy's.",
|
||||
"IndexerStatusAllUnavailableHealthCheckMessage": "Alle indexeerders zijn onbeschikbaar wegens fouten",
|
||||
"IndexerStatusUnavailableHealthCheckMessage": "Indexeerders onbeschikbaar wegens fouten: {indexerNames}",
|
||||
@@ -426,15 +426,15 @@
|
||||
"ApplyTagsHelpTextRemove": "Verwijderen: Verwijder de ingevoerde tags",
|
||||
"ApplyTagsHelpTextReplace": "Vervangen: Vervang de tags met de ingevoerde tags (vul geen tags in om alle tags te wissen)",
|
||||
"CountIndexersSelected": "{count} Indexer(s) Geselecteerd",
|
||||
"DeleteSelectedApplicationsMessageText": "Bent u zeker dat u de indexeerder '{0}' wilt verwijderen?",
|
||||
"DeleteSelectedApplicationsMessageText": "Bent u zeker dat u de indexeerder '{count}' wilt verwijderen?",
|
||||
"DeleteSelectedDownloadClients": "Verwijder Downloader",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Bent u zeker dat u de indexeerder '{0}' wilt verwijderen?",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Bent u zeker dat u de indexeerder '{count}' wilt verwijderen?",
|
||||
"Season": "Seizoen",
|
||||
"SelectIndexers": "Zoek indexeerders",
|
||||
"More": "Meer",
|
||||
"Theme": "Thema",
|
||||
"Track": "Spoor",
|
||||
"DeleteSelectedIndexersMessageText": "Bent u zeker dat u de indexeerder '{0}' wilt verwijderen?",
|
||||
"DeleteSelectedIndexersMessageText": "Bent u zeker dat u de indexeerder '{count}' wilt verwijderen?",
|
||||
"DownloadClientPriorityHelpText": "Geef prioriteit aan meerdere downloaders. Round-Robin wordt gebruikt voor downloaders met dezelfde prioriteit.",
|
||||
"Genre": "Genres",
|
||||
"Year": "Jaar",
|
||||
@@ -512,5 +512,155 @@
|
||||
"Download": "Downloaden",
|
||||
"InstallLatest": "Installeer Nieuwste Versie",
|
||||
"CurrentlyInstalled": "Momenteel Geïnstalleerd",
|
||||
"Mixed": "Opgelost"
|
||||
"Mixed": "Opgelost",
|
||||
"AverageQueries": "Gemiddelde Queries",
|
||||
"AverageGrabs": "Gemiddeld aantal downloads",
|
||||
"AverageResponseTimesMs": "Gemiddelde Indexer Responsetijden (ms)",
|
||||
"Book": "Boek",
|
||||
"CountIndexersAvailable": "{count} indexer(s) beschikbaar",
|
||||
"Donate": "Doneer",
|
||||
"DownloadClientFreeboxSettingsHostHelpText": "Hostnaam of IP-adres van de Freebox, standaard '{url}' (werkt alleen als je op hetzelfde netwerk zit)",
|
||||
"DownloadClientFreeboxSettingsPortHelpText": "Poort die wordt gebruikt om toegang te krijgen tot de Freebox-interface, standaard '{port}'",
|
||||
"DefaultCategory": "Standaardcategorie",
|
||||
"DownloadClientRTorrentSettingsUrlPathHelpText": "Pad naar het XMLRPC-eindpunt, zie {url}. Dit is meestal RPC2 of [pad naar ruTorrent]{url2} bij gebruik van ruTorrent.",
|
||||
"DownloadClientSettingsAddPaused": "Toevoegen gepauzeerd",
|
||||
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Doorzoek freeleech releases",
|
||||
"IndexerId": "Indexeerder ID",
|
||||
"EditCategory": "Categorie bewerken",
|
||||
"ApplicationsLoadError": "Kan de applicatielijst niet laden",
|
||||
"DownloadClientAriaSettingsDirectoryHelpText": "Optionele locatie om downloads op te slaan, leeg laten om de standaardlocatie van Aria2 te gebruiken",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Voegt een voorvoegsel toe aan de Deluge JSON-URL, zie {url}",
|
||||
"FailedToFetchSettings": "Instellingen ophalen mislukt",
|
||||
"HistoryCleanup": "Geschiedenis opschonen",
|
||||
"Implementation": "Implementatie",
|
||||
"IndexerHDBitsSettingsOrigins": "Herkomst",
|
||||
"IndexerMTeamTpSettingsApiKeyHelpText": "API-sleutel van de site (te vinden in Gebruikerspaneel => Beveiliging => Laboratorium)",
|
||||
"IndexerFileListSettingsFreeleechOnlyHelpText": "Alleen freeleech-releases doorzoeken",
|
||||
"Default": "Standaard",
|
||||
"DownloadClientFloodSettingsUrlBaseHelpText": "Voegt een voorvoegsel toe aan de Flood API, zoals {url}",
|
||||
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Als je dit inschakelt, worden torrents en magnet-links in rTorrent in een gestopte staat toegevoegd. Dit kan magnet-bestanden laten mislukken.",
|
||||
"IndexerNoDefinitionCheckHealthCheckMessage": "Indexeerders hebben geen definitie en zullen niet werken: {indexerNames}. Verwijder ze alstublieft en voeg ze opnieuw toe aan {appName}.",
|
||||
"AppsMinimumSeedersHelpText": "Minimum aantal vereiste seeders door de applicaties voordat de indexer iets ophaalt. Leeg laten gebruikt de standaardwaarde van het synchronisatieprofiel",
|
||||
"Author": "Auteur",
|
||||
"BookSearch": "Boek zoeken",
|
||||
"IndexerSettingsCookieHelpText": "Site Cookie",
|
||||
"DownloadClientTransmissionSettingsDirectoryHelpText": "Optionele locatie om downloads op te slaan, laat leeg om de standaardlocatie van Transmission te gebruiken",
|
||||
"DeleteSelectedIndexers": "Verwijder geselecteerde indexeerders",
|
||||
"Destination": "Bestemming",
|
||||
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Optionele gedeelde map om downloads in te plaatsen, leeg laten om de standaardlocatie van Download Station te gebruiken",
|
||||
"DownloadClientFloodSettingsAdditionalTags": "Additionele Tags",
|
||||
"DownloadClientFreeboxSettingsApiUrl": "API URL",
|
||||
"DownloadClientFreeboxSettingsApiUrlHelpText": "Stel de basis-URL van de Freebox API in met API-versie, bijvoorbeeld '{url}', standaard is '{defaultApiUrl}'",
|
||||
"DownloadClientFreeboxSettingsAppId": "App ID",
|
||||
"DownloadClientFreeboxSettingsAppToken": "App Token",
|
||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Deze optie vereist minimaal NzbGet versie 16.0",
|
||||
"DownloadClientPneumaticSettingsNzbFolder": "Nzb map",
|
||||
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Deze map moet bereikbaar zijn vanuit XBMC",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "Inhoudsindeling",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Download eerste en laatste stukjes eerst (qBittorrent 4.1.0+)",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Download in opeenvolgende volgorde (qBittorrent 4.1.0+)",
|
||||
"DownloadClientRTorrentSettingsAddStopped": "Toevoegen gestopt",
|
||||
"DownloadClientRTorrentSettingsDirectoryHelpText": "Optionele locatie om downloads op te slaan, leeg laten om de standaardlocatie van rTorrent te gebruiken",
|
||||
"DownloadClientRTorrentSettingsUrlPath": "Url pad",
|
||||
"ElapsedTime": "Verstreken tijd",
|
||||
"External": "Extern",
|
||||
"FailedToFetchUpdates": "Updates ophalen mislukt",
|
||||
"FoundCountReleases": "{itemCount} releases gevonden",
|
||||
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "SCENE-releases uitsluiten van resultaten",
|
||||
"IndexerBeyondHDSettingsApiKeyHelpText": "API-sleutel van de site (te vinden onder Mijn Beveiliging => API-sleutel)",
|
||||
"IndexerBeyondHDSettingsLimitedOnly": "Alleen beperkt",
|
||||
"IndexerBeyondHDSettingsSearchTypesHelpText": "Selecteer de soorten releases waarin je geïnteresseerd bent. Als er geen selectie is gemaakt, worden alle opties gebruikt.",
|
||||
"IndexerFileListSettingsPasskeyHelpText": "Site Passkey (Dit is de alfanumerieke reeks in de tracker-URL die in je downloadclient wordt weergegeven)",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNames": "Zoek groepnamen",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgent": "Cookie User-Agent",
|
||||
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Doorzoek alleen freeleech releases",
|
||||
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Doorzoek alleen freeleech releases",
|
||||
"IndexerNewznabSettingsApiKeyHelpText": "Site API-sleutel",
|
||||
"IndexerRedactedSettingsApiKeyHelpText": "API-sleutel van de site (te vinden onder Instellingen => Toegangsinstellingen)",
|
||||
"IndexerSettingsFreeleechOnly": "Alleen Freeleech",
|
||||
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Eerste en laatste eerst",
|
||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Voegt een voorvoegsel toe aan de {clientName} RPC-URL, bijvoorbeeld {url}, standaard is '{defaultUrl}'",
|
||||
"AreYouSureYouWantToDeleteCategory": "Weet je zeker dat je de gekoppelde categorie wilt verwijderen?",
|
||||
"DownloadClientCategory": "Downloadclientcategorie",
|
||||
"DeleteSelectedIndexer": "Verwijder geselecteerde indexeerder",
|
||||
"EditSelectedDownloadClients": "Geselecteerde downloadclients bewerken",
|
||||
"IndexerDownloadClientHelpText": "Geef aan welke downloadclient wordt gebruikt voor downloads die binnen {appName} van deze indexer worden opgehaald",
|
||||
"GoToApplication": "Ga naar applicatie",
|
||||
"IndexerName": "Indexeerdernaam",
|
||||
"AreYouSureYouWantToDeleteIndexer": "Weet je zeker dat je '{name}' uit {appName} wilt verwijderen?",
|
||||
"AuthQueries": "Autorisatiequeries",
|
||||
"IndexerAlreadySetup": "Tenminste één instantie van de indexeerder is al ingesteld",
|
||||
"IndexerCategories": "Indexeerdercategorieën",
|
||||
"ApplicationTagsHelpText": "Sync indexers met deze applicatie die één of meer overeenkomende tags hebben. Als er hier geen tags worden opgegeven, worden er geen indexers van synchronisatie uitgesloten op basis van hun tags.",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Of de ingestelde inhoudsindeling van qBittorrent gebruikt moet worden, de originele indeling van de torrent, of altijd een submap moet worden aangemaakt (qBittorrent 4.3.2+)",
|
||||
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Begintoestand voor torrents die aan qBittorrent worden toegevoegd. Let op: Gedwongen torrents houden zich niet aan seeding-beperkingen",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Opeenvolgende volgorde",
|
||||
"DownloadClientSettingsDestinationHelpText": "Geef handmatig de downloadbestemming op, laat leeg om de standaardlocatie te gebruiken",
|
||||
"DownloadClientSettingsInitialState": "Initiële staat",
|
||||
"DownloadClientSettingsUseSslHelpText": "Gebruik een beveiligde verbinding bij het verbinden met {clientName}",
|
||||
"EnabledRedirected": "Ingeschakeld, Omgeleid",
|
||||
"HistoryDetails": "Geschiedenis details",
|
||||
"IndexerHDBitsSettingsUsernameHelpText": "Site Gebruikersnaam",
|
||||
"IndexerDetails": "Indexeerder details",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Als een torrent wordt geblokkeerd op basis van de hash, kan het zijn dat deze niet correct wordt geweigerd tijdens RSS/Search bij sommige indexers. Als je deze optie inschakelt, wordt de torrent alsnog geweigerd nadat hij is opgehaald, maar voordat hij naar de client wordt gestuurd.",
|
||||
"BasicSearch": "Basiszoekopdracht",
|
||||
"DefaultNameCopiedProfile": "{name} - Kopie",
|
||||
"DeleteClientCategory": "Categorie van downloadclient verwijderen",
|
||||
"DisabledUntil": "Uitgeschakeld tot",
|
||||
"DownloadClientFreeboxSettingsAppIdHelpText": "App ID die wordt gegeven bij het aanmaken van toegang tot de Freebox API (bijv. 'app_id')",
|
||||
"DownloadClientPneumaticSettingsStrmFolder": "Strm Map",
|
||||
"EditSelectedIndexers": "Geselecteerde indexeerders bewerken",
|
||||
"GrabTitle": "Grijp Titel",
|
||||
"IndexerHDBitsSettingsMediumsHelpText": "Als niet gespecificeerd, worden alle opties gebruikt.",
|
||||
"IndexerHDBitsSettingsUseFilenames": "Gebruik bestandsnamen",
|
||||
"IndexerHDBitsSettingsPasskeyHelpText": "Passkey vanuit gebruikerdetails",
|
||||
"ClickToChangeQueryOptions": "Klik om zoekopties te wijzigen",
|
||||
"DownloadClientFreeboxSettingsAppTokenHelpText": "App token dat wordt verkregen bij het aanmaken van toegang tot de Freebox API (bijv. 'app_token')",
|
||||
"DownloadClientSettingsInitialStateHelpText": "Begintoestand voor torrents die aan {clientName} worden toegevoegd",
|
||||
"DownloadClientSettingsPriorityItemHelpText": "Prioriteit om te gebruiken bij het ophalen van items",
|
||||
"IncludeManualGrabsHelpText": "Handmatige downloads uitgevoerd binnen {appName} meenemen",
|
||||
"IndexerDisabled": "Indexeerder Uitgeschakeld",
|
||||
"IndexerDownloadClientHealthCheckMessage": "Indexeerders met ongeldige downloadclients: {indexerNames}.",
|
||||
"IndexerFailureRate": "Faalpercentage van de indexeerder",
|
||||
"IndexerFileListSettingsUsernameHelpText": "Site Gebruikersnaam",
|
||||
"IndexerHDBitsSettingsUseFilenamesHelpText": "Vink deze optie aan als je torrentbestandsnamen als releasetitels wilt gebruiken",
|
||||
"IndexerHistoryLoadError": "Fout bij het laden van de indexeerder-geschiedenis",
|
||||
"IndexerInfo": "Indexeerder info",
|
||||
"IndexerAlphaRatioSettingsExcludeScene": "SCENE uitsluiten",
|
||||
"IndexerBeyondHDSettingsSearchTypes": "Zoek types",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpText": "API-sleutel van de site (te vinden onder Instellingen => Toegangsinstellingen)",
|
||||
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Moet over Gebruikers- en Torrents-machtigingen beschikken",
|
||||
"IndexerHDBitsSettingsCodecsHelpText": "Als niet gespecificeerd, worden alle opties gebruikt.",
|
||||
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "User-Agent die gekoppeld is aan de cookie gebruikt vanuit de browser",
|
||||
"IndexerNewznabSettingsAdditionalParametersHelpText": "Aanvullende Newznab-parameters",
|
||||
"IndexerNzbIndexSettingsApiKeyHelpText": "Site API-sleutel",
|
||||
"IndexerPassThePopcornSettingsApiKeyHelpText": "Site API-sleutel",
|
||||
"IndexerOrpheusSettingsApiKeyHelpText": "API-sleutel van de site (te vinden onder Instellingen => Toegangsinstellingen)",
|
||||
"IndexerSettingsBaseUrlHelpText": "Selecteer welke basis-URL {appName} gebruikt voor verzoeken aan de site",
|
||||
"IndexerSettingsApiPathHelpText": "Pad naar de API, meestal {url}",
|
||||
"IndexerSettingsApiUser": "API Gebruiker",
|
||||
"IndexerSettingsBaseUrl": "Basisurl",
|
||||
"IndexerSettingsCookie": "Cookie",
|
||||
"IndexerSettingsAdditionalParameters": "Aanvullende parameters",
|
||||
"IndexerSettingsApiPath": "API pad",
|
||||
"IndexerAvistazSettingsPidHelpText": "PID van de pagina Mijn Account of Mijn Profiel",
|
||||
"IndexerAvistazSettingsUsernameHelpText": "Site Gebruikersnaam",
|
||||
"IndexerAvistazSettingsUsernameHelpTextWarning": "Alleen leden met de rang 'member' of hoger kunnen de API van deze indexeerder gebruiken.",
|
||||
"IndexerBeyondHDSettingsRssKeyHelpText": "RSS-sleutel van de site (te vinden onder Mijn Beveiliging => RSS-sleutel)",
|
||||
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Zoek releases op groepsnaam",
|
||||
"IndexerAvistazSettingsPasswordHelpText": "Site Wachtwoord",
|
||||
"IndexerHDBitsSettingsOriginsHelpText": "Als niet gespecificeerd, worden alle opties gebruikt.",
|
||||
"ApplicationTagsHelpTextWarning": "Gebruik tags met voorzichtigheid, ze kunnen onbedoelde effecten hebben. Een app met een tag zal alleen synchroniseren met indexers die dezelfde tag hebben.",
|
||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Gebruik een beveiligde verbinding. Zie Opties -> Web UI -> 'Gebruik HTTPS in plaats van HTTP' in qBittorrent.",
|
||||
"DeleteSelectedApplications": "Verwijder geselecteerde applicaties",
|
||||
"DownloadClientUTorrentProviderMessage": "uTorrent heeft een geschiedenis van het bevatten van cryptominers, malware en advertenties. We raden je sterk aan om een andere client te kiezen.",
|
||||
"HealthMessagesInfoBox": "Je kunt meer informatie over de oorzaak van deze gezondheidscontroleberichten vinden door op de wiki-link (boekicoon) aan het einde van de rij te klikken, of door je [logboeken]({link}) te bekijken. Als je moeite hebt met het interpreteren van deze berichten, kun je contact opnemen met onze ondersteuning via de onderstaande links",
|
||||
"IndexerNebulanceSettingsApiKeyHelpText": "API-sleutel te vinden onder Gebruikersinstellingen > API-sleutels. De sleutel moet de machtigingen Lijst en Download hebben",
|
||||
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Voegt eigenschappen van media toe als tags. Hints zijn voorbeelden.",
|
||||
"DownloadClientPneumaticSettingsStrmFolderHelpText": ".strm-bestanden in deze map worden geïmporteerd door Drone",
|
||||
"DownloadClientSettingsDefaultCategoryHelpText": "Standaard fallback-categorie als er geen gekoppelde categorie bestaat voor een release. Het toevoegen van een categorie specifiek voor {appName} voorkomt conflicten met niet-gerelateerde downloads van andere applicaties dan {appName}. Het gebruik van een categorie is optioneel, maar wordt sterk aanbevolen.",
|
||||
"DownloadClientFloodSettingsTagsHelpText": "Initiële tags van een download. Om herkend te worden, moet een download alle initiële tags hebben. Dit voorkomt conflicten met niet-gerelateerde downloads.",
|
||||
"IndexerNewznabSettingsVipExpirationHelpText": "Voer de datum in (jjjj-mm-dd) voor VIP-vervaldatum of laat leeg. {appName} zal 1 week voor het verstrijken van de VIP-periode een melding geven",
|
||||
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Standaard fallback-categorie als er geen gekoppelde categorie bestaat voor een release. Het toevoegen van een categorie specifiek voor {appName} voorkomt conflicten met niet-gerelateerde downloads die niet van {appName} zijn. Het gebruik van een categorie is optioneel, maar wordt sterk aanbevolen. Er wordt een [categorie]-submap aangemaakt in de uitvoermap.",
|
||||
"IndexerPassThePopcornSettingsApiUserHelpText": "Deze instellingen vind je in je PassThePopcorn beveiligingsinstellingen (Profiel bewerken > Beveiliging)."
|
||||
}
|
||||
|
||||
@@ -547,5 +547,24 @@
|
||||
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Додає префікс до URL-адреси RPC {clientName}, наприклад {url}, за замовчуванням — '{defaultUrl}'",
|
||||
"IndexerSettingsSeedRatio": "Коефіцієнт роздачі",
|
||||
"ManualGrab": "Захват вручну",
|
||||
"StopSelecting": "Скасувати вибір"
|
||||
"StopSelecting": "Скасувати вибір",
|
||||
"ActiveApps": "Активні додатки",
|
||||
"ActiveIndexers": "Активні індексери",
|
||||
"AppSettingsSummary": "Застосунки та налаштування для конфігурації взаємодії {appName} з вашими PVR-програмами",
|
||||
"AppProfileSelectHelpText": "Профілі застосунків використовуються для керування налаштуваннями RSS, автоматичного пошуку та інтерактивного пошуку під час синхронізації застосунку",
|
||||
"ApplicationTagsHelpText": "Синхронізувати індексатори з цим застосунком, які мають один або кілька відповідних тегів. Якщо тут не вказано жодного тегу, жоден індексатор не буде виключено із синхронізації через свої теги.",
|
||||
"ApplicationsLoadError": "Не вдалося завантажити список застосунків",
|
||||
"AddToDownloadClient": "Додати реліз в клієнт завантаження",
|
||||
"AdvancedSettingsHiddenClickToShow": "Розширені налаштування приховано, натисніть, щоб показати",
|
||||
"AdvancedSettingsShownClickToHide": "Розширені налаштування відображено, натисніть, щоб приховати",
|
||||
"AddSyncProfile": "Додати профіль синхронізації",
|
||||
"AddDownloadClientToProwlarr": "Додавання клієнта завантаження дозволяє {appName} надсилати релізи безпосередньо з інтерфейсу під час ручного пошуку.",
|
||||
"AddNewIndexer": "Додати новий індексер",
|
||||
"AddRemoveOnly": "Лише додати та видалити",
|
||||
"AddedToDownloadClient": "Реліз додано до клієнта",
|
||||
"Apps": "Застосунки",
|
||||
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Синхронізувати та відхиляти заблоковані за хешем торренти під час збору",
|
||||
"ApplicationTagsHelpTextWarning": "Теги слід використовувати обережно, оскільки вони можуть мати непередбачувані наслідки. Застосунок із тегом буде синхронізуватися лише з індексаторами, що мають такий самий тег.",
|
||||
"AddApplication": "Додати додаток",
|
||||
"AddCategory": "Додати Категорію"
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace NzbDrone.Host
|
||||
b.ClearProviders();
|
||||
b.SetMinimumLevel(LogLevel.Trace);
|
||||
b.AddFilter("Microsoft.AspNetCore", LogLevel.Warning);
|
||||
b.AddFilter("Prowlarr.Http.Authentication", LogLevel.Information);
|
||||
b.AddFilter("Prowlarr.Http.Authentication.ApiKeyAuthenticationHandler", LogLevel.Information);
|
||||
b.AddFilter("Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager", LogLevel.Error);
|
||||
b.AddNLog();
|
||||
});
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using FluentValidation;
|
||||
using FluentValidation.Results;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Validation;
|
||||
using NzbDrone.SignalR;
|
||||
@@ -24,5 +26,21 @@ namespace Prowlarr.Api.V1.Indexers
|
||||
SharedValidator.RuleFor(c => c.Priority).InclusiveBetween(1, 50);
|
||||
SharedValidator.RuleFor(c => c.DownloadClientId).SetValidator(downloadClientExistsValidator);
|
||||
}
|
||||
|
||||
protected override void Validate(IndexerDefinition definition, bool includeWarnings)
|
||||
{
|
||||
var instance = _providerFactory.GetInstance(definition);
|
||||
|
||||
// Ensure Redirect is true for Usenet protocols
|
||||
if (instance is { Protocol: DownloadProtocol.Usenet, SupportsRedirect: true } && definition is { Redirect: false })
|
||||
{
|
||||
throw new ValidationException(new List<ValidationFailure>
|
||||
{
|
||||
new("Redirect", "Redirect must be enabled for Usenet indexers")
|
||||
});
|
||||
}
|
||||
|
||||
base.Validate(definition, includeWarnings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -262,8 +262,8 @@ namespace NzbDrone.Api.V1.Indexers
|
||||
throw new BadRequestException("Failed to normalize provided link");
|
||||
}
|
||||
|
||||
// If Indexer is set to download via Redirect then just redirect to the link
|
||||
if (indexer.SupportsRedirect && indexerDef.Redirect)
|
||||
// If Indexer is set to download via Redirect then just redirect to the link unless it's a Usenet indexer at which point it forces Redirect.
|
||||
if (indexer.Protocol == DownloadProtocol.Usenet || (indexer.SupportsRedirect && indexerDef.Redirect))
|
||||
{
|
||||
_downloadService.RecordRedirect(unprotectedLink, id, source, host, file);
|
||||
return RedirectPermanent(unprotectedLink);
|
||||
|
||||
@@ -271,7 +271,7 @@ namespace Prowlarr.Api.V1
|
||||
BroadcastResourceChange(ModelAction.Deleted, message.ProviderId);
|
||||
}
|
||||
|
||||
private void Validate(TProviderDefinition definition, bool includeWarnings)
|
||||
protected virtual void Validate(TProviderDefinition definition, bool includeWarnings)
|
||||
{
|
||||
var validationResult = definition.Settings.Validate();
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace Prowlarr.Http.Authentication
|
||||
|
||||
private void LogSuccess(HttpRequest context, string username)
|
||||
{
|
||||
_authLogger.Info("Auth-Success ip {0} username '{1}'", context.GetRemoteIP(), username);
|
||||
_authLogger.Debug("Auth-Success ip {0} username '{1}'", context.GetRemoteIP(), username);
|
||||
}
|
||||
|
||||
private void LogLogout(HttpRequest context, string username)
|
||||
|
||||
Reference in New Issue
Block a user