mirror of
https://github.com/Sonarr/Sonarr.git
synced 2026-04-17 21:26:13 -04:00
Compare commits
16 Commits
v4.0.5.177
...
v4.0.6.182
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
04f8595498 | ||
|
|
81ac73299a | ||
|
|
a779a5fad2 | ||
|
|
bfe6a740fa | ||
|
|
c9ea40b874 | ||
|
|
4ee0ae1418 | ||
|
|
ac1da45ecd | ||
|
|
5c327d5be3 | ||
|
|
55c1ce2e3d | ||
|
|
fd7f0ea973 | ||
|
|
d5dff8e8d6 | ||
|
|
8099ba10af | ||
|
|
143ccb1e2a | ||
|
|
29480d9544 | ||
|
|
6de536a7ad | ||
|
|
bce848facf |
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -22,7 +22,7 @@ env:
|
||||
FRAMEWORK: net6.0
|
||||
RAW_BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
||||
SONARR_MAJOR_VERSION: 4
|
||||
VERSION: 4.0.5
|
||||
VERSION: 4.0.6
|
||||
|
||||
jobs:
|
||||
backend:
|
||||
|
||||
@@ -77,7 +77,7 @@ class HistoryRow extends Component {
|
||||
onMarkAsFailedPress
|
||||
} = this.props;
|
||||
|
||||
if (!episode) {
|
||||
if (!series || !episode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -217,6 +217,7 @@ class Queue extends Component {
|
||||
>
|
||||
<TableOptionsModalWrapper
|
||||
columns={columns}
|
||||
maxPageSize={200}
|
||||
{...otherProps}
|
||||
optionsComponent={QueueOptionsConnector}
|
||||
>
|
||||
|
||||
@@ -49,11 +49,12 @@ class TableOptionsModal extends Component {
|
||||
|
||||
onPageSizeChange = ({ value }) => {
|
||||
let pageSizeError = null;
|
||||
const maxPageSize = this.props.maxPageSize ?? 250;
|
||||
|
||||
if (value < 5) {
|
||||
pageSizeError = translate('TablePageSizeMinimum', { minimumValue: '5' });
|
||||
} else if (value > 250) {
|
||||
pageSizeError = translate('TablePageSizeMaximum', { maximumValue: '250' });
|
||||
} else if (value > maxPageSize) {
|
||||
pageSizeError = translate('TablePageSizeMaximum', { maximumValue: `${maxPageSize}` });
|
||||
} else {
|
||||
this.props.onTableOptionChange({ pageSize: value });
|
||||
}
|
||||
@@ -248,6 +249,7 @@ TableOptionsModal.propTypes = {
|
||||
isOpen: PropTypes.bool.isRequired,
|
||||
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
pageSize: PropTypes.number,
|
||||
maxPageSize: PropTypes.number,
|
||||
canModifyColumns: PropTypes.bool.isRequired,
|
||||
optionsComponent: PropTypes.elementType,
|
||||
onTableOptionChange: PropTypes.func.isRequired,
|
||||
|
||||
@@ -88,8 +88,7 @@ function DeleteSeriesModalContent(props: DeleteSeriesModalContentProps) {
|
||||
|
||||
const { totalEpisodeFileCount, totalSizeOnDisk } = useMemo(() => {
|
||||
return series.reduce(
|
||||
(acc, s) => {
|
||||
const { statistics = { episodeFileCount: 0, sizeOnDisk: 0 } } = s;
|
||||
(acc, { statistics = {} }) => {
|
||||
const { episodeFileCount = 0, sizeOnDisk = 0 } = statistics;
|
||||
|
||||
acc.totalEpisodeFileCount += episodeFileCount;
|
||||
@@ -155,17 +154,17 @@ function DeleteSeriesModalContent(props: DeleteSeriesModalContentProps) {
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
{series.map((s) => {
|
||||
const { episodeFileCount = 0, sizeOnDisk = 0 } = s.statistics;
|
||||
{series.map(({ title, path, statistics = {} }) => {
|
||||
const { episodeFileCount = 0, sizeOnDisk = 0 } = statistics;
|
||||
|
||||
return (
|
||||
<li key={s.title}>
|
||||
<span>{s.title}</span>
|
||||
<li key={title}>
|
||||
<span>{title}</span>
|
||||
|
||||
{deleteFiles && (
|
||||
<span>
|
||||
<span className={styles.pathContainer}>
|
||||
-<span className={styles.path}>{s.path}</span>
|
||||
-<span className={styles.path}>{path}</span>
|
||||
</span>
|
||||
|
||||
{!!episodeFileCount && (
|
||||
|
||||
@@ -64,6 +64,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||
[TestCase("Title.S01.720p.VFF.WEB-DL.AAC2.0.H.264-BTN")]
|
||||
[TestCase("Title.S01.720p.VFQ.WEB-DL.AAC2.0.H.264-BTN")]
|
||||
[TestCase("Title.S01.720p.TRUEFRENCH.WEB-DL.AAC2.0.H.264-BTN")]
|
||||
[TestCase("Series In The Middle S01 Multi VFI VO 1080p WEB x265 HEVC AAC 5.1-Papaya")]
|
||||
public void should_parse_language_french(string postTitle)
|
||||
{
|
||||
var result = LanguageParser.ParseLanguages(postTitle);
|
||||
|
||||
@@ -35,6 +35,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||
[TestCase("Series Title / S2E1-16 of 16 [2022, WEB-DL] RUS", "Series Title", 2)]
|
||||
[TestCase("[hchcsen] Mobile Series 00 S01 [BD Remux Dual Audio 1080p AVC 2xFLAC] (Kidou Senshi Gundam 00 Season 1)", "Mobile Series 00", 1)]
|
||||
[TestCase("[HorribleRips] Mobile Series 00 S1 [1080p]", "Mobile Series 00", 1)]
|
||||
[TestCase("[Zoombie] Zom 100: Bucket List of the Dead S01 [Web][MKV][h265 10-bit][1080p][AC3 2.0][Softsubs (Zoombie)]", "Zom 100: Bucket List of the Dead", 1)]
|
||||
public void should_parse_full_season_release(string postTitle, string title, int season)
|
||||
{
|
||||
var result = Parser.Parser.ParseTitle(postTitle);
|
||||
|
||||
@@ -168,6 +168,10 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||
[TestCase("Босх: Спадок / Series: Legacy / S2E1 of 10 (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, 1)]
|
||||
[TestCase("Titles.s06e01.1999.BDRip.1080p.Ukr.Eng.AC3.Hurtom.TNU.Tenax555", "Titles", 6, 1)]
|
||||
[TestCase("Titles.s06.01.1999.BDRip.1080p.Ukr.Eng.AC3.Hurtom.TNU.Tenax555", "Titles", 6, 1)]
|
||||
[TestCase("[Judas] Series Title (2024) - S01E14", "Series Title (2024)", 1, 14)]
|
||||
[TestCase("[ReleaseGroup] SeriesTitle S01E1 Webdl 1080p", "SeriesTitle", 1, 1)]
|
||||
[TestCase("[SubsPlus+] Series no Chill - S02E01 (NF WEB 1080p AVC AAC)", "Series no Chill", 2, 1)]
|
||||
[TestCase("[SubsPlus+] Series no Chill - S02E01v2 (NF WEB 1080p AVC AAC)", "Series no Chill", 2, 1)]
|
||||
|
||||
// [TestCase("", "", 0, 0)]
|
||||
public void should_parse_single_episode(string postTitle, string title, int seasonNumber, int episodeNumber)
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace NzbDrone.Core.Test.QueueTests
|
||||
|
||||
_trackedDownloads = Builder<TrackedDownload>.CreateListOfSize(1)
|
||||
.All()
|
||||
.With(v => v.IsTrackable = true)
|
||||
.With(v => v.DownloadItem = downloadItem)
|
||||
.With(v => v.RemoteEpisode = remoteEpisode)
|
||||
.Build()
|
||||
|
||||
@@ -73,8 +73,8 @@ namespace NzbDrone.Core.Download
|
||||
|
||||
public void Check(TrackedDownload trackedDownload)
|
||||
{
|
||||
// Only process tracked downloads that are still downloading
|
||||
if (trackedDownload.State != TrackedDownloadState.Downloading)
|
||||
// Only process tracked downloads that are still downloading or import is blocked (if they fail after attempting to be processed)
|
||||
if (trackedDownload.State != TrackedDownloadState.Downloading && trackedDownload.State != TrackedDownloadState.ImportBlocked)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ namespace NzbDrone.Core.Download.TrackedDownloads
|
||||
_trackedDownloadService.TrackDownload((DownloadClientDefinition)downloadClient.Definition,
|
||||
downloadItem);
|
||||
|
||||
if (trackedDownload != null && trackedDownload.State == TrackedDownloadState.Downloading)
|
||||
if (trackedDownload is { State: TrackedDownloadState.Downloading or TrackedDownloadState.ImportBlocked })
|
||||
{
|
||||
_failedDownloadService.Check(trackedDownload);
|
||||
_completedDownloadService.Check(trackedDownload);
|
||||
|
||||
@@ -1,18 +1,26 @@
|
||||
using NzbDrone.Core.Instrumentation;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Instrumentation;
|
||||
|
||||
namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||
{
|
||||
public class TrimLogDatabase : IHousekeepingTask
|
||||
{
|
||||
private readonly ILogRepository _logRepo;
|
||||
private readonly IConfigFileProvider _configFileProvider;
|
||||
|
||||
public TrimLogDatabase(ILogRepository logRepo)
|
||||
public TrimLogDatabase(ILogRepository logRepo, IConfigFileProvider configFileProvider)
|
||||
{
|
||||
_logRepo = logRepo;
|
||||
_configFileProvider = configFileProvider;
|
||||
}
|
||||
|
||||
public void Clean()
|
||||
{
|
||||
if (!_configFileProvider.LogDbEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_logRepo.Trim();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ namespace NzbDrone.Core.ImportLists.Custom
|
||||
{
|
||||
public class CustomSeries
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public int TvdbId { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ namespace NzbDrone.Core.ImportLists.Custom
|
||||
{
|
||||
series.Add(new ImportListItemInfo
|
||||
{
|
||||
Title = item.Title.IsNullOrWhiteSpace() ? $"TvdbId: {item.TvdbId}" : item.Title,
|
||||
TvdbId = item.TvdbId
|
||||
});
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"AudioLanguages": "Idiomas de Audio",
|
||||
"Episode": "Episodio",
|
||||
"Activity": "Actividad",
|
||||
"AddNew": "Añadir Nuevo",
|
||||
"AddNew": "Añadir nuevo",
|
||||
"ApplyTagsHelpTextAdd": "Añadir: Añade las etiquetas a la lista de etiquetas existente",
|
||||
"ApplyTagsHelpTextRemove": "Eliminar: Elimina las etiquetas introducidas",
|
||||
"Blocklist": "Lista de bloqueos",
|
||||
@@ -287,7 +287,7 @@
|
||||
"History": "Historial",
|
||||
"MonitorNoNewSeasonsDescription": "No monitorizar automáticamente ninguna temporada nueva",
|
||||
"HistoryLoadError": "No se pudo cargar el historial",
|
||||
"LibraryImport": "Importar Librería",
|
||||
"LibraryImport": "Importar biblioteca",
|
||||
"RescanSeriesFolderAfterRefresh": "Volver a escanear la carpeta de series tras actualizar",
|
||||
"Wanted": "Buscado",
|
||||
"MonitorPilotEpisodeDescription": "Sólo monitorizar el primer episodio de la primera temporada",
|
||||
@@ -2078,5 +2078,8 @@
|
||||
"TomorrowAt": "Mañana a las {time}",
|
||||
"YesterdayAt": "Ayer a las {time}",
|
||||
"TodayAt": "Hoy a las {time}",
|
||||
"DayOfWeekAt": "{day} a las {time}"
|
||||
"DayOfWeekAt": "{day} a las {time}",
|
||||
"UnableToImportAutomatically": "No se pudo importar automáticamente",
|
||||
"NotificationsPlexSettingsServer": "Servidor",
|
||||
"NotificationsPlexSettingsServerHelpText": "Selecciona el servidor desde una cuenta de plex.tv después de autenticarse"
|
||||
}
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
"SkipFreeSpaceCheck": "Ignorer la vérification de l'espace libre",
|
||||
"Sunday": "Dimanche",
|
||||
"TorrentDelay": "Retard du torrent",
|
||||
"DownloadClients": "Clients de téléchargement",
|
||||
"DownloadClients": "Clients de télécharg.",
|
||||
"CustomFormats": "Formats perso.",
|
||||
"NoIndexersFound": "Aucun indexeur n'a été trouvé",
|
||||
"Profiles": "Profils",
|
||||
@@ -550,7 +550,7 @@
|
||||
"LastWriteTime": "Heure de la dernière écriture",
|
||||
"LatestSeason": "Dernière saison",
|
||||
"LibraryImportTipsDontUseDownloadsFolder": "Ne l'utilisez pas pour importer des téléchargements à partir de votre client de téléchargement, cela concerne uniquement les bibliothèques organisées existantes, pas les fichiers non triés.",
|
||||
"ListWillRefreshEveryInterval": "La liste sera actualisée tous les {refreshInterval}",
|
||||
"ListWillRefreshEveryInterval": "La liste se rafraîchira toutes les {refreshInterval}",
|
||||
"ListsLoadError": "Impossible de charger les listes",
|
||||
"Local": "Locale",
|
||||
"LocalPath": "Chemin local",
|
||||
@@ -849,7 +849,7 @@
|
||||
"MinimumFreeSpaceHelpText": "Empêcher l'importation si elle laisse moins d'espace disque disponible",
|
||||
"MinimumLimits": "Limites minimales",
|
||||
"MinutesFortyFive": "45 Minutes : {fortyFive}",
|
||||
"Monitor": "Surveillé",
|
||||
"Monitor": "Surveiller",
|
||||
"MonitorAllEpisodesDescription": "Surveillez tous les épisodes sauf les spéciaux",
|
||||
"MonitorExistingEpisodes": "Épisodes existants",
|
||||
"MonitorExistingEpisodesDescription": "Surveiller les épisodes contenant des fichiers ou qui n'ont pas encore été diffusés",
|
||||
@@ -1131,7 +1131,7 @@
|
||||
"NotSeasonPack": "Pas de pack saisonnier",
|
||||
"NotificationTriggersHelpText": "Sélectionnez les événements qui doivent déclencher cette notification",
|
||||
"NotificationsTagsSeriesHelpText": "N'envoyer des notifications que pour les séries avec au moins une balise correspondante",
|
||||
"OnApplicationUpdate": "Sur la mise à jour de l'application",
|
||||
"OnApplicationUpdate": "Lors de la mise à jour de l'application",
|
||||
"OnEpisodeFileDelete": "Lors de la suppression du fichier de l'épisode",
|
||||
"OnHealthIssue": "Sur la question de la santé",
|
||||
"OnManualInteractionRequired": "Sur l'interaction manuelle requise",
|
||||
@@ -1779,7 +1779,7 @@
|
||||
"NotificationsPushoverSettingsDevicesHelpText": "Liste des noms des appareils (laisser vide pour envoyer à tous les appareils)",
|
||||
"NotificationsPushoverSettingsDevices": "Appareils",
|
||||
"NotificationsPushcutSettingsTimeSensitiveHelpText": "Activer pour marquer la notification comme « Time Sensitive »",
|
||||
"NotificationsPushcutSettingsTimeSensitive": "Time Sensitive",
|
||||
"NotificationsPushcutSettingsTimeSensitive": "Sensible au temps",
|
||||
"NotificationsPushcutSettingsNotificationNameHelpText": "Nom de la notification de l'onglet Notifications de l'app Pushcut",
|
||||
"NotificationsPushcutSettingsNotificationName": "Nom de la notification",
|
||||
"NotificationsPushcutSettingsApiKeyHelpText": "Les clés API peuvent être gérées dans la vue Compte de l'app Pushcut",
|
||||
@@ -2071,5 +2071,13 @@
|
||||
"NotificationsTelegramSettingsIncludeAppName": "Inclure {appName} dans le Titre",
|
||||
"NotificationsTelegramSettingsIncludeAppNameHelpText": "Préfixer éventuellement le titre du message par {appName} pour différencier les notifications des différentes applications",
|
||||
"IndexerSettingsMultiLanguageRelease": "Multilingue",
|
||||
"IndexerSettingsMultiLanguageReleaseHelpText": "Quelles langues sont normalement présentes dans une version multiple de l'indexeur ?"
|
||||
"IndexerSettingsMultiLanguageReleaseHelpText": "Quelles langues sont normalement présentes dans une version multiple de l'indexeur ?",
|
||||
"DownloadClientQbittorrentTorrentStateMissingFiles": "qBittorrent signale des fichiers manquants",
|
||||
"BlocklistFilterHasNoItems": "La liste de blocage sélectionnée ne contient aucun élément",
|
||||
"HasUnmonitoredSeason": "A une saison non surveillée",
|
||||
"YesterdayAt": "Hier à {time}",
|
||||
"UnableToImportAutomatically": "Impossible d'importer automatiquement",
|
||||
"DayOfWeekAt": "{day} à {time}",
|
||||
"TomorrowAt": "Demain à {time}",
|
||||
"TodayAt": "Aujourd'hui à {time}"
|
||||
}
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
{}
|
||||
{
|
||||
"About": "के बारे में",
|
||||
"Absolute": "पूर्ण"
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"ApplyChanges": "Applica Cambiamenti",
|
||||
"ApplyTags": "Applica Etichette",
|
||||
"BackupNow": "Esegui backup ora",
|
||||
"Backups": "Backups",
|
||||
"Backups": "Backup",
|
||||
"Blocklist": "Lista dei Blocchi",
|
||||
"Activity": "Attività",
|
||||
"About": "Info",
|
||||
@@ -59,12 +59,12 @@
|
||||
"AppUpdated": "{appName} Aggiornato",
|
||||
"AppUpdatedVersion": "{appName} è stato aggiornato alla versione `{version}`, per vedere le modifiche devi ricaricare {appName} ",
|
||||
"ApplicationURL": "URL Applicazione",
|
||||
"AuthenticationMethodHelpText": "Inserisci Username e Password per accedere a {appName}",
|
||||
"AuthenticationMethodHelpText": "Utilizza nome utente e password per accedere a {appName}",
|
||||
"BindAddressHelpText": "Indirizzi IP validi, localhost o '*' per tutte le interfacce",
|
||||
"BeforeUpdate": "Prima dell'aggiornamento",
|
||||
"CalendarFeed": "Feed calendario {appName}",
|
||||
"CalendarOptions": "Opzioni del Calendario",
|
||||
"ChooseImportMode": "Selezionare Metodo di Importazione",
|
||||
"ChooseImportMode": "Seleziona Metodo di Importazione",
|
||||
"CollapseMultipleEpisodes": "Collassa Episodi Multipli",
|
||||
"Conditions": "Condizioni",
|
||||
"Continuing": "In Corso",
|
||||
@@ -147,7 +147,7 @@
|
||||
"CreateGroup": "Crea gruppo",
|
||||
"DeleteEmptyFolders": "Cancella le cartelle vuote",
|
||||
"Enabled": "Abilitato",
|
||||
"UpdateMechanismHelpText": "Usa il sistema di aggiornamento interno di {appName} o uno script",
|
||||
"UpdateMechanismHelpText": "Usa il sistema di aggiornamento incorporato di {appName} o uno script",
|
||||
"AllResultsAreHiddenByTheAppliedFilter": "Tutti i risultati sono nascosti dal filtro applicato",
|
||||
"EditSelectedDownloadClients": "Modifica i Client di Download Selezionati",
|
||||
"EditSelectedImportLists": "Modifica le Liste di Importazione Selezionate",
|
||||
@@ -250,13 +250,13 @@
|
||||
"AutoRedownloadFailed": "Download fallito",
|
||||
"AddDelayProfileError": "Impossibile aggiungere un nuovo profilo di ritardo, riprova.",
|
||||
"Cutoff": "Taglio",
|
||||
"AddListExclusion": "Aggiungi elenco esclusioni",
|
||||
"AddListExclusion": "Aggiungi Lista esclusioni",
|
||||
"DownloadClientValidationApiKeyRequired": "API Key Richiesta",
|
||||
"Donate": "Dona",
|
||||
"DownloadClientDownloadStationValidationNoDefaultDestination": "Nessuna destinazione predefinita",
|
||||
"ImportListSettings": "Impostazioni delle Liste",
|
||||
"DownloadClientFreeboxSettingsAppId": "App ID",
|
||||
"DownloadClientFreeboxSettingsAppToken": "App Token",
|
||||
"DownloadClientFreeboxSettingsAppId": "ID App",
|
||||
"DownloadClientFreeboxSettingsAppToken": "Token App",
|
||||
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Questa cartella dovrà essere raggiungibile da XBMC",
|
||||
"DownloadClientPneumaticSettingsNzbFolder": "Cartella Nzb",
|
||||
"DownloadClientSabnzbdValidationEnableDisableDateSorting": "Disattiva ordinamento per data",
|
||||
@@ -277,5 +277,591 @@
|
||||
"Destination": "Destinazione",
|
||||
"DownloadClientDownloadStationValidationSharedFolderMissing": "Cartella condivisa non esiste",
|
||||
"DownloadClientQbittorrentValidationCategoryRecommendedDetail": "{appName} non tenterà di importare i download completati senza una categoria.",
|
||||
"DownloadClientValidationGroupMissing": "Gruppo non esistente"
|
||||
"DownloadClientValidationGroupMissing": "Gruppo non esistente",
|
||||
"DownloadWarning": "Avviso di download: {warningMessage}",
|
||||
"IndexerSettingsAdditionalParameters": "Parametri Addizionali",
|
||||
"IndexerSettingsCookie": "Cookie",
|
||||
"BlackholeWatchFolderHelpText": "Cartella da cui {appName} dovrebbe importare i download completati",
|
||||
"NotificationsEmailSettingsServer": "Server",
|
||||
"NotificationsNtfySettingsPasswordHelpText": "Password opzionale",
|
||||
"NotificationsPlexSettingsAuthenticateWithPlexTv": "Autentica con Plex.tv",
|
||||
"NotificationsPushcutSettingsNotificationName": "Nome Notifica",
|
||||
"NotificationsTraktSettingsExpires": "Scadenze",
|
||||
"NotificationsTraktSettingsAuthenticateWithTrakt": "Autentica con Trakt",
|
||||
"NotificationsValidationUnableToConnectToApi": "Impossibile connettersi alle API di {service}. Connessione al server fallita: ({responseCode}) {exceptionMessage}",
|
||||
"InteractiveImportNoFilesFound": "Nessun video trovato nella castella selezionata",
|
||||
"Or": "o",
|
||||
"ManageLists": "Gestisci Liste",
|
||||
"OriginalLanguage": "Lingua Originale",
|
||||
"OverrideGrabNoQuality": "Qualità deve essere selezionata",
|
||||
"XmlRpcPath": "Percorso XML RPC",
|
||||
"WouldYouLikeToRestoreBackup": "Vuoi ripristinare il backup '{name}'?",
|
||||
"PendingDownloadClientUnavailable": "In Attesa - Client di Download in attesa",
|
||||
"PreviouslyInstalled": "Precedentemente Installato",
|
||||
"MissingLoadError": "Errore caricando elementi mancanti",
|
||||
"MonitorSelected": "Monitora Selezionati",
|
||||
"Period": "Periodo",
|
||||
"RemoveFailedDownloads": "Rimuovi Download Falliti",
|
||||
"RemoveMultipleFromDownloadClientHint": "Rimuovi i download e i file dal client di download",
|
||||
"RemoveSelectedItemQueueMessageText": "Sei sicuro di voler rimuovere 1 elemento dalla coda?",
|
||||
"TagDetails": "Dettagli Etichetta - {label}",
|
||||
"BranchUpdate": "Branca da usare per aggiornare {appName}",
|
||||
"DefaultNotFoundMessage": "Ti devi essere perso, non c'è nulla da vedere qui.",
|
||||
"DeleteIndexerMessageText": "Sicuro di voler eliminare l'indicizzatore '{name}'?",
|
||||
"Socks5": "Socks5 (Supporto TOR)",
|
||||
"DeleteEpisodeFileMessage": "Sei sicuro di volere eliminare '{path}'?",
|
||||
"NotificationsKodiSettingsCleanLibraryHelpText": "Pulisci libreria dopo l'aggiornamento",
|
||||
"PreferProtocol": "Preferisci {preferredProtocol}",
|
||||
"RetryingDownloadOn": "Riprovando il download il {date} alle {time}",
|
||||
"DeleteNotificationMessageText": "Sei sicuro di voler eliminare la notifica '{name}'?",
|
||||
"RemoveCompletedDownloads": "Rimuovi Download Completati",
|
||||
"DownloadClientFloodSettingsAdditionalTags": "Tag addizionali",
|
||||
"DelayingDownloadUntil": "Ritardare il download fino al {date} alle {time}",
|
||||
"DeleteDownloadClientMessageText": "Sei sicuro di voler eliminare il client di download '{name}'?",
|
||||
"NoHistoryFound": "Nessun storico trovato",
|
||||
"OneMinute": "1 Minuto",
|
||||
"OptionalName": "Nome opzionale",
|
||||
"DeleteSelectedIndexers": "Elimina Indicizzatore/i",
|
||||
"Branch": "Branca",
|
||||
"Debug": "Debug",
|
||||
"Never": "Mai",
|
||||
"UsenetDelayTime": "Ritardo Usenet: {usenetDelay}",
|
||||
"OrganizeModalHeader": "Organizza & Rinomina",
|
||||
"Parse": "Analizza",
|
||||
"RemoveFromDownloadClient": "Rimuovi dal client di download",
|
||||
"RemoveQueueItemConfirmation": "Sei sicuro di voler rimuovere '{sourceTitle}' dalla coda?",
|
||||
"NoIndexersFound": "Nessun indicizzatore trovato",
|
||||
"DeleteImportListMessageText": "Sei sicuro di volere eliminare la lista '{name}'?",
|
||||
"DeleteDelayProfile": "Elimina Profilo di Ritardo",
|
||||
"DeleteTagMessageText": "Sei sicuro di voler eliminare l'etichetta '{label}'?",
|
||||
"MinutesSixty": "60 Minuti: {sixty}",
|
||||
"NotificationsCustomScriptSettingsName": "Script personalizzato",
|
||||
"NotificationsCustomScriptValidationFileDoesNotExist": "File non esiste",
|
||||
"Database": "Database",
|
||||
"NotificationsPushoverSettingsExpire": "Scadenza",
|
||||
"NotificationsSettingsWebhookMethod": "Metodo",
|
||||
"NotificationsSynologyValidationInvalidOs": "Deve essere un Synology",
|
||||
"NotificationsTraktSettingsRefreshToken": "Refresh Token",
|
||||
"CouldNotFindResults": "Nessun risultato trovato per '{term}'",
|
||||
"IndexerSettingsApiPath": "Percorso API",
|
||||
"AutoTaggingSpecificationMaximumYear": "Anno Massimo",
|
||||
"AutoTaggingSpecificationGenre": "Genere/i",
|
||||
"AutoTaggingSpecificationMinimumYear": "Anno Minimo",
|
||||
"AutoTaggingSpecificationOriginalLanguage": "Lingua",
|
||||
"AutoTaggingSpecificationQualityProfile": "Profilo Qualità",
|
||||
"AutoTaggingSpecificationRootFolder": "Cartella Radice",
|
||||
"AutoTaggingSpecificationStatus": "Stato",
|
||||
"CustomFormatsSpecificationLanguage": "Linguaggio",
|
||||
"CustomFormatsSpecificationMaximumSize": "Dimensione Massima",
|
||||
"CustomFormatsSpecificationMinimumSize": "Dimensione Minima",
|
||||
"DelayProfile": "Profilo di Ritardo",
|
||||
"DeleteBackupMessageText": "Sei sicuro di voler cancellare il backup '{name}'?",
|
||||
"DeleteDelayProfileMessageText": "Sei sicuro di volere eliminare questo profilo di ritardo?",
|
||||
"NotificationsTelegramSettingsSendSilentlyHelpText": "Invia il messaggio silenziosamente. L'utente riceverà una notifica senza suono",
|
||||
"NotificationsPushoverSettingsRetry": "Riprova",
|
||||
"NotificationsSettingsWebhookUrl": "URL Webhook",
|
||||
"PackageVersionInfo": "{packageVersion} di {packageAuthor}",
|
||||
"RemoveQueueItem": "Rimuovi - {sourceTitle}",
|
||||
"ParseModalErrorParsing": "Errore durante l'analisi, per favore prova di nuovo.",
|
||||
"OverrideGrabNoLanguage": "Almeno una lingua deve essere selezionata",
|
||||
"PasswordConfirmation": "Conferma Password",
|
||||
"RemoveSelectedItemsQueueMessageText": "Sei sicuro di voler rimuovere {selectedCount} elementi dalla coda?",
|
||||
"ConnectionLostToBackend": "{appName} ha perso la connessione al backend e dovrà essere ricaricato per ripristinare la funzionalità.",
|
||||
"CountIndexersSelected": "{count} indicizzatore(i) selezionato(i)",
|
||||
"CountDownloadClientsSelected": "{count} client di download selezionato/i",
|
||||
"PrioritySettings": "Priorità: {priority}",
|
||||
"OverrideAndAddToDownloadQueue": "Sovrascrivi e aggiungi alla coda di download",
|
||||
"NotificationsSettingsUseSslHelpText": "Connetti a {serviceName} tramite HTTPS indece di HTTP",
|
||||
"OrganizeRelativePaths": "Tutti i percorsi sono relativi a: `{path}`",
|
||||
"CurrentlyInstalled": "Attualmente Installato",
|
||||
"NotificationsEmailSettingsName": "Email",
|
||||
"NotificationsNtfySettingsServerUrl": "URL Server",
|
||||
"NotificationsPushoverSettingsSound": "Suono",
|
||||
"NotificationsSignalValidationSslRequired": "SSL sembra essere richiesto",
|
||||
"TorrentDelayTime": "Ritardo torrent: {torrentDelay}",
|
||||
"NotificationsTwitterSettingsMention": "Menziona",
|
||||
"NotificationsPushoverSettingsDevices": "Dispositivi",
|
||||
"NotificationsTelegramSettingsSendSilently": "Invia Silenziosamente",
|
||||
"DatabaseMigration": "Migrazione Database",
|
||||
"AutoTaggingSpecificationTag": "Etichetta",
|
||||
"CustomFormatUnknownConditionOption": "Opzione sconosciuta '{key}' per la condizione '{implementation}'",
|
||||
"CustomFormatsSpecificationResolution": "Risoluzione",
|
||||
"CustomFormatsSpecificationSource": "Fonte",
|
||||
"BlocklistAndSearch": "Lista dei Blocchi e Ricerca",
|
||||
"NotificationsEmbySettingsSendNotifications": "Invia Notifiche",
|
||||
"IndexerHDBitsSettingsMediumsHelpText": "Se non specificato, saranno utilizzate tutte le opzioni.",
|
||||
"DeleteQualityProfile": "Elimina Profilo Qualità",
|
||||
"DeleteSelectedEpisodeFiles": "Elimina i File degli Episodi Selezionati",
|
||||
"DeleteEpisodesFiles": "Elimina i File di {episodeFileCount} Episodi",
|
||||
"CustomFilter": "Filtro Personalizzato",
|
||||
"NotificationsTelegramSettingsIncludeAppName": "Includi {appName} nel Titolo",
|
||||
"IndexerHDBitsSettingsCodecsHelpText": "Se non specificato, saranno utilizzate tutte le opzioni.",
|
||||
"NotificationsGotifySettingsAppToken": "App Token",
|
||||
"InfoUrl": "URL Info",
|
||||
"ConnectionLostReconnect": "{appName} cercherà di connettersi automaticamente, oppure clicca su ricarica qui sotto.",
|
||||
"ListWillRefreshEveryInterval": "Le liste verranno aggiornate ogni {refreshInterval}",
|
||||
"NotificationsNtfySettingsServerUrlHelpText": "Lascia vuoto per usare il server pubblico {url}",
|
||||
"NotificationsTwitterSettingsMentionHelpText": "Menziona questo utente nei tweet inviati",
|
||||
"NotificationsValidationUnableToSendTestMessageApiResponse": "Impossibile inviare messaggio di prova. Risposta dalle API: {error}",
|
||||
"RemoveFromDownloadClientHint": "Rimuovi il download e i file dal client di download",
|
||||
"DayOfWeekAt": "{day} alle {time}",
|
||||
"DeleteRootFolder": "Elimina Cartella Radice",
|
||||
"DeleteRootFolderMessageText": "Sei sicuro di volere eliminare la cartella radice '{path}'?",
|
||||
"ManageIndexers": "Gestisci Indicizzatori",
|
||||
"MissingNoItems": "Nessun elemento mancante",
|
||||
"NotificationsKodiSettingsCleanLibrary": "Pulisci Libreria",
|
||||
"NotificationsNtfySettingsUsernameHelpText": "Nome utente opzionale",
|
||||
"NotificationsSettingsUpdateLibrary": "Aggiorna Libreria",
|
||||
"NotificationsSlackSettingsChannel": "Canale",
|
||||
"NotificationsSlackSettingsIcon": "Icona",
|
||||
"NotificationsTelegramSettingsBotToken": "Token Bot",
|
||||
"NotificationsTwitterSettingsAccessToken": "Access Token",
|
||||
"NotificationsTwitterSettingsConnectToTwitter": "Connetti a Twitter / X",
|
||||
"NotificationsTwitterSettingsDirectMessage": "Messaggio Diretto",
|
||||
"NotificationsValidationInvalidUsernamePassword": "Nome Utente o password non validi",
|
||||
"NotificationsValidationUnableToConnect": "Impossibile connettersi: {exceptionMessage}",
|
||||
"NotificationsValidationUnableToConnectToService": "Impossibile connettersi a {serviceName}",
|
||||
"NotificationsValidationUnableToSendTestMessage": "Impossibile inviare messaggio di prova: {exceptionMessage}",
|
||||
"ThemeHelpText": "Cambia il Tema dell'interfaccia dell’applicazione, il Tema 'Auto' userà il suo Tema di Sistema per impostare la modalità Chiara o Scura. Ispirato da Theme.Park",
|
||||
"Torrents": "Torrents",
|
||||
"Upcoming": "In arrivo",
|
||||
"DownloadClientUTorrentTorrentStateError": "uTorrent sta segnalando un errore",
|
||||
"DownloadClientValidationSslConnectFailure": "Impossibile connettersi tramite SSL",
|
||||
"ErrorLoadingContent": "Si è verificato un errore caricando questo contenuto",
|
||||
"FilterDoesNotStartWith": "non inizia con",
|
||||
"Filters": "Filtri",
|
||||
"IgnoreDownloads": "Ignora Download",
|
||||
"IndexerSettingsApiPathHelpText": "Percorso API, solitamente {url}",
|
||||
"BlackholeFolderHelpText": "Cartella nella quale {appName} salverà i file di tipo {extension}",
|
||||
"UseSeasonFolder": "Usa Cartella Stagione",
|
||||
"Monday": "Lunedì",
|
||||
"DetailedProgressBarHelpText": "Mostra testo sulla barra di avanzamento",
|
||||
"DownloadClientValidationUnknownException": "Eccezione sconosciuta: {exception}",
|
||||
"OnlyTorrent": "Solo Torrent",
|
||||
"OpenBrowserOnStart": "Apri browser all'avvio",
|
||||
"OnlyUsenet": "Solo Usenet",
|
||||
"OpenSeries": "Apri Serie",
|
||||
"Organize": "Organizza",
|
||||
"Other": "Altri",
|
||||
"Yesterday": "Ieri",
|
||||
"Paused": "In Pausa",
|
||||
"Priority": "Priorità",
|
||||
"Metadata": "Metadati",
|
||||
"Quality": "Qualità",
|
||||
"MidseasonFinale": "Finale di Metà Stagione",
|
||||
"QualityProfile": "Profilo Qualità",
|
||||
"MinimumAge": "Età Minima",
|
||||
"ShowAdvanced": "Mostra Avanzate",
|
||||
"MonitorFirstSeason": "Prima Stagione",
|
||||
"MonitoredOnly": "Solo Monitorati",
|
||||
"MoreInfo": "Ulteriori Informazioni",
|
||||
"FormatRuntimeMinutes": "{minutes}m",
|
||||
"Options": "Opzioni",
|
||||
"PartialSeason": "Stagione Parziale",
|
||||
"Port": "Porta",
|
||||
"PreferTorrent": "Preferisci Torrent",
|
||||
"Reset": "Reimposta",
|
||||
"RssIsNotSupportedWithThisIndexer": "RSS non è supportato con questo indicizzatore",
|
||||
"PublishedDate": "Data Pubblicazione",
|
||||
"SeriesDetailsGoTo": "Vai a {title}",
|
||||
"Security": "Sicurezza",
|
||||
"Settings": "Impostazioni",
|
||||
"ShowDateAdded": "Mostra Data Aggiunta",
|
||||
"Reason": "Ragione",
|
||||
"RecyclingBin": "Cestino",
|
||||
"SpecialEpisode": "Episodio Speciale",
|
||||
"Space": "Spazio",
|
||||
"SslPort": "Porta SSL",
|
||||
"StartImport": "Inizia Importazione",
|
||||
"Test": "Prova",
|
||||
"Titles": "Titoli",
|
||||
"Result": "Risultato",
|
||||
"Unavailable": "Non disponibile",
|
||||
"SearchSelected": "Ricerca Selezionate",
|
||||
"SeasonCount": "Conteggio Stagioni",
|
||||
"Season": "Stagione",
|
||||
"SeriesType": "Tipo Serie",
|
||||
"ShowNetwork": "Mostra Rete",
|
||||
"MoveSeriesFoldersMoveFiles": "Sì, Sposta i File",
|
||||
"Negated": "Negato",
|
||||
"SizeOnDisk": "Dimensione sul disco",
|
||||
"Sort": "Ordina",
|
||||
"FilterSeriesPlaceholder": "Filtra serie",
|
||||
"FormatShortTimeSpanHours": "{hours} ora/e",
|
||||
"Monitoring": "Monitorando",
|
||||
"Month": "Mese",
|
||||
"MonitoredEpisodesHelpText": "Scarica gli episodi monitorati in questa serie",
|
||||
"NoChanges": "Nessun Cambiamento",
|
||||
"NotificationsNtfyValidationAuthorizationRequired": "Autorizzazione richiesta",
|
||||
"PreferredProtocol": "Protocollo Preferito",
|
||||
"QualitiesHelpText": "Qualità più alte nella lista sono quelle preferite. Qualità all'interno dello stesso gruppo sono equivalenti. Solo le qualità selezionate saranno ricercate",
|
||||
"Real": "Reale",
|
||||
"RefreshAndScanTooltip": "Aggiorna informazioni e scansiona disco",
|
||||
"SeriesIndexFooterMissingMonitored": "Episodi Mancanti (Serie monitorate)",
|
||||
"SingleEpisode": "Episodio Singolo",
|
||||
"Shutdown": "Spegnimento",
|
||||
"Wiki": "Wiki",
|
||||
"True": "Vero",
|
||||
"WhatsNew": "Cosa c'è di nuovo?",
|
||||
"SelectQuality": "Seleziona Qualità",
|
||||
"SelectLanguages": "Seleziona Lingue",
|
||||
"TableOptions": "Opzioni Tabella",
|
||||
"Tba": "TBA",
|
||||
"TablePageSizeMinimum": "La dimensione della pagina deve essere almeno {minimumValue}",
|
||||
"Theme": "Tema",
|
||||
"Updates": "Aggiornamenti",
|
||||
"VersionNumber": "Versione {version}",
|
||||
"EditSelectedIndexers": "Modifica Indicizzatori Selezionati",
|
||||
"Example": "Esempio",
|
||||
"FilterContains": "contiene",
|
||||
"FilterDoesNotContain": "non contiene",
|
||||
"FilterIsAfter": "è dopo",
|
||||
"FilterIsBefore": "è prima",
|
||||
"FilterIs": "è",
|
||||
"FilterLessThanOrEqual": "meno o uguale di",
|
||||
"FilterNotEqual": "non uguale",
|
||||
"DownloadClientFreeboxApiError": "Le API di Freebox hanno segnalato un errore: {errorDescription}",
|
||||
"DailyEpisodeFormat": "Formato Episodi Giornalieri",
|
||||
"FileManagement": "Gestione File",
|
||||
"MissingEpisodes": "Episodi Mancanti",
|
||||
"Mode": "Modalità",
|
||||
"MonitorAllEpisodesDescription": "Monitora tutti gli episodi esclusi gli speciali",
|
||||
"MonitorAllEpisodes": "Tutti gli Episodi",
|
||||
"MonitorExistingEpisodes": "Episodi Esistenti",
|
||||
"Preferred": "Preferito",
|
||||
"Scene": "Scene",
|
||||
"SizeLimit": "Limite Dimensione",
|
||||
"Twitter": "Twitter",
|
||||
"Type": "Tipo",
|
||||
"DownloadClientNzbgetSettingsAddPausedHelpText": "Questa opzione richiede almeno la versione 16.0 di NzbGet",
|
||||
"System": "Sistema",
|
||||
"CollectionsLoadError": "Impossibile caricare le collezioni",
|
||||
"ConnectSettingsSummary": "Notifiche, connessioni a media servers/players, e script personalizzati",
|
||||
"Folders": "Cartelle",
|
||||
"PreferredSize": "Dimensione Preferita",
|
||||
"Proxy": "Proxy",
|
||||
"DownloadClientQbittorrentSettingsUseSslHelpText": "Usa una connessione sicura. Vedi Opzioni -> Web UI -> 'Usa HTTPS invece di HTTP' in qBittorrent.",
|
||||
"DownloadClientQbittorrentTorrentStateError": "qBittorrent sta segnalando un errore",
|
||||
"TimeLeft": "Tempo Rimasto",
|
||||
"Unlimited": "Illimitato",
|
||||
"Title": "Titolo",
|
||||
"Original": "Originale",
|
||||
"Path": "Percorso",
|
||||
"MaximumSize": "Dimensione Massima",
|
||||
"ProgressBarProgress": "Barra Progressi al {progress}%",
|
||||
"RootFolderSelectFreeSpace": "{freeSpace} Libero",
|
||||
"RssSync": "Sincronizza RSS",
|
||||
"SaveSettings": "Salva Impostazioni",
|
||||
"Search": "Ricerca",
|
||||
"SearchForMissing": "Ricerca dei Mancanti",
|
||||
"SearchForMonitoredEpisodes": "Ricerca degli episodi monitorati",
|
||||
"SeasonFolder": "Cartella della Stagione",
|
||||
"SeasonNumber": "Numero Stagione",
|
||||
"SelectLanguageModalTitle": "{modalTitle} - Seleziona Lingua",
|
||||
"SeriesDetailsRuntime": "{runtime} Minuti",
|
||||
"SeriesIsUnmonitored": "Serie non monitorata",
|
||||
"SeriesProgressBarText": "{episodeFileCount} / {episodeCount} (Totale: {totalEpisodeCount}, Scaricando: {downloadingCount})",
|
||||
"ShowEpisodes": "Mostra Episodi",
|
||||
"ShowEpisodeInformationHelpText": "Mostra titolo e numero dell'episodio",
|
||||
"Source": "Fonte",
|
||||
"Unknown": "Sconosciuto",
|
||||
"UseSsl": "Usa SSL",
|
||||
"DownloadClientSettingsDestinationHelpText": "Specifica manualmente la destinazione dei download, lascia vuoti per usare la predefinita",
|
||||
"DownloadClientSettingsInitialState": "Stato Iniziale",
|
||||
"Folder": "Cartella",
|
||||
"TorrentBlackholeSaveMagnetFilesReadOnly": "Solo Lettura",
|
||||
"Ui": "Interfaccia",
|
||||
"UiLanguage": "Lingua Interfaccia",
|
||||
"UiSettingsLoadError": "Impossibile caricare le impostazioni interfaccia",
|
||||
"MustNotContain": "Non Deve Contenere",
|
||||
"Network": "Rete",
|
||||
"ReadTheWikiForMoreInformation": "Leggi la Wiki per più informazioni",
|
||||
"RecentChanges": "Cambiamenti Recenti",
|
||||
"Refresh": "Aggiorna",
|
||||
"DownloadClientSettingsUseSslHelpText": "Usa connessione sicura quando connetti a {clientName}",
|
||||
"SelectEpisodes": "Seleziona Episodio/i",
|
||||
"TestAll": "Prova Tutto",
|
||||
"SelectFolder": "Seleziona Cartella",
|
||||
"DownloadStationStatusExtracting": "Estrazione: {progress}&",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrder": "Ordine Sequenziale",
|
||||
"DownloadClientQbittorrentValidationCategoryAddFailureDetail": "{appName} non è stato in grado di aggiungere l'etichetta a qBittorrent.",
|
||||
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Scarica in ordine sequenziale (qBittorrent 4.1.0+)",
|
||||
"MegabytesPerMinute": "Megabyte Per Minuto",
|
||||
"MonitorFirstSeasonDescription": "Monitora tutti gli episodi delle prima stagione. Tutte le altre stagioni saranno ignorate",
|
||||
"MustContain": "Deve Contenere",
|
||||
"PreferUsenet": "Preferisci Usenet",
|
||||
"NoChange": "Nessun Cambio",
|
||||
"RestoreBackup": "Ripristina Backup",
|
||||
"SelectAll": "Seleziona Tutto",
|
||||
"SelectSeries": "Seleziona Serie",
|
||||
"SeriesTitle": "Titolo Serie",
|
||||
"ShowPath": "Mostra Percorso",
|
||||
"Table": "Tabella",
|
||||
"TheTvdb": "TheTVDB",
|
||||
"Total": "Totale",
|
||||
"TotalFileSize": "Totale Dimensione File",
|
||||
"DownloadClientQbittorrentTorrentStateMetadata": "qBittorrent sta scaricando i metadati",
|
||||
"DownloadClientQbittorrentTorrentStateUnknown": "Stato di download sconosciuto: {state}",
|
||||
"External": "Esterno",
|
||||
"Failed": "Fallito",
|
||||
"FilterLessThan": "meno di",
|
||||
"FilterDoesNotEndWith": "non termina con",
|
||||
"FilterEqual": "uguale",
|
||||
"FormatDateTimeRelative": "{relativeDay}, {formattedDate} {formattedTime}",
|
||||
"FormatShortTimeSpanMinutes": "{minutes} minuto/i",
|
||||
"InvalidUILanguage": "L'interfaccia è impostata in una lingua non valida, correggi e salva le tue impostazioni",
|
||||
"Max": "Massimo",
|
||||
"MinutesFortyFive": "45 Minuti: {fortyFive}",
|
||||
"NoDownloadClientsFound": "Nessun client di download trovato",
|
||||
"MassSearchCancelWarning": "Questo non può essere cancellato una volta avviato senza riavviare {appName} o disattivando tutti i tuoi indicizzatori.",
|
||||
"Profiles": "Profili",
|
||||
"Qualities": "Qualità",
|
||||
"QualityProfilesLoadError": "Impossibile caricare Profili Qualità",
|
||||
"QueueLoadError": "Impossibile caricare la Coda",
|
||||
"Queued": "In Coda",
|
||||
"SaveChanges": "Salva Cambiamenti",
|
||||
"Seasons": "Stagioni",
|
||||
"Series": "Serie",
|
||||
"MonitorRecentEpisodes": "Episodi Recenti",
|
||||
"MoreDetails": "Ulteriore dettagli",
|
||||
"MonitorSpecialEpisodes": "Monitora Speciali",
|
||||
"TimeFormat": "Formato Orario",
|
||||
"UsenetDisabled": "Usenet Disabilitato",
|
||||
"Version": "Versione",
|
||||
"WithFiles": "Con i File",
|
||||
"Username": "Nome Utente",
|
||||
"YesCancel": "Sì, Cancella",
|
||||
"Yes": "Sì",
|
||||
"DownloadClientRTorrentSettingsAddStopped": "Aggiungi Fermato",
|
||||
"Restart": "Riavvia",
|
||||
"Rss": "RSS",
|
||||
"ProxyBadRequestHealthCheckMessage": "Test del proxy fallito: Status Code: {statusCode}",
|
||||
"ProxyBypassFilterHelpText": "Usa ',' come separatore, e '*.' come wildcard per i sottodomini",
|
||||
"RestartRequiredToApplyChanges": "{appName} richiede un riavvio per applicare i cambiamenti, vuoi riavviare ora?",
|
||||
"SearchMonitored": "Ricerca Monitorate",
|
||||
"SeasonDetails": "Dettagli Stagione",
|
||||
"SelectDownloadClientModalTitle": "{modalTitle} - Seleziona Client di Download",
|
||||
"SelectDropdown": "Seleziona...",
|
||||
"SeriesIsMonitored": "Serie monitorata",
|
||||
"Special": "Speciale",
|
||||
"TablePageSizeMaximum": "La dimensione della pagina non deve superare {maximumValue}",
|
||||
"TablePageSize": "Dimensione Pagina",
|
||||
"UnknownDownloadState": "Stato download sconosciuto: {state}",
|
||||
"UsenetBlackholeNzbFolder": "Cartella Nzb",
|
||||
"From": "Da",
|
||||
"QualityProfiles": "Profili Qualità",
|
||||
"RecyclingBinCleanupHelpText": "Imposta a 0 per disattivare la pulizia automatica",
|
||||
"RefreshAndScan": "Aggiorna & Scansiona",
|
||||
"HourShorthand": "h",
|
||||
"InteractiveImportNoImportMode": "Una modalità di importazione deve essere selezionata",
|
||||
"MyComputer": "Mio Computer",
|
||||
"Posters": "Locandine",
|
||||
"SeasonNumberToken": "Stagione {seasonNumber}",
|
||||
"ShowTitle": "Mostra Titolo",
|
||||
"TorrentBlackholeTorrentFolder": "Cartella Torrent",
|
||||
"UiLanguageHelpText": "Lingua che {appName} userà per l'interfaccia",
|
||||
"DownloadIgnored": "Download Ignorato",
|
||||
"CustomFormatsSpecificationMaximumSizeHelpText": "La release deve essere minore o uguale a questa dimensione",
|
||||
"CustomFormatsSpecificationMinimumSizeHelpText": "La release deve essere maggiore di questa dimensione",
|
||||
"CustomFormatsSpecificationRegularExpression": "Espressione Regolare",
|
||||
"DefaultDelayProfileSeries": "Questo è il profilo di default. Viene Applicato a tutte le serie che non hanno in profilo esplicito.",
|
||||
"DownloadClientDelugeTorrentStateError": "Deluge sta segnalando un errore",
|
||||
"DownloadClientDelugeSettingsUrlBaseHelpText": "Aggiungi un prefisso all'url del json di deluge, vedi {url}",
|
||||
"FilterEpisodesPlaceholder": "Filtra episodi per titolo o numero",
|
||||
"FilterGreaterThanOrEqual": "più grande o uguale di",
|
||||
"FilterIsNot": "non è",
|
||||
"FilterGreaterThan": "più grande di",
|
||||
"Formats": "Formati",
|
||||
"FormatRuntimeHours": "{hours}h",
|
||||
"FirstDayOfWeek": "Primo Giorno della Settimana",
|
||||
"FreeSpace": "Spazio Libero",
|
||||
"FormatDateTime": "{formattedDate} {formattedTime}",
|
||||
"FormatTimeSpanDays": "{days}d {time}",
|
||||
"MetadataSettingsSeriesImages": "Immagini della Serie",
|
||||
"MetadataSettingsSeriesMetadata": "Metadati della Serie",
|
||||
"MetadataSettingsSeasonImages": "Immagini della Stagione",
|
||||
"NotificationsEmailSettingsBccAddress": "Indirizzo/i BCC",
|
||||
"OrganizeLoadError": "Errore caricando le anteprime",
|
||||
"OrganizeSelectedSeriesModalHeader": "Organizza Serie Selezionate",
|
||||
"Today": "Oggi",
|
||||
"Specials": "Speciali",
|
||||
"NotificationsLoadError": "Impossibile caricare Notifiche",
|
||||
"SeasonPassTruncated": "Solo le ultime 25 stagione sono mostrate, vai ai dettagli per vedere tutte le stagioni",
|
||||
"SeriesCannotBeFound": "Scusa, quella serie non può essere trovata.",
|
||||
"Style": "Stile",
|
||||
"NotificationsEmailSettingsCcAddress": "Indirizzo/i CC",
|
||||
"NotificationsMailgunSettingsUseEuEndpoint": "Usa Endpoint EU",
|
||||
"Pending": "In Attesa",
|
||||
"PendingChangesStayReview": "Rimani e rivedi i cambiamenti",
|
||||
"FormatAgeDays": "giorni",
|
||||
"FormatAgeHour": "ora",
|
||||
"FormatAgeHours": "ore",
|
||||
"FormatAgeMinute": "minuto",
|
||||
"FormatAgeMinutes": "minuti",
|
||||
"FormatAgeDay": "giorno",
|
||||
"MetadataPlexSettingsSeriesPlexMatchFileHelpText": "Crea un file .plexmatch nella cartella della serie",
|
||||
"MonitorMissingEpisodes": "Episodi Mancanti",
|
||||
"New": "Nuovo",
|
||||
"NoBackupsAreAvailable": "Nessun backup disponibile",
|
||||
"MetadataSettingsEpisodeImages": "Immagini dell'Episodio",
|
||||
"PosterSize": "Dimensioni Locandina",
|
||||
"Restore": "Ripristina",
|
||||
"RestartReloadNote": "Nota: {appName} si riavvierà automaticamente e ricaricherà l'interfaccia durante il processo di ripristino.",
|
||||
"SeasonPassEpisodesDownloaded": "{episodeFileCount}/{totalEpisodeCount} episodi scaricati",
|
||||
"SelectLanguage": "Seleziona Lingua",
|
||||
"SeriesIndexFooterDownloading": "Scaricando (Uno o più episodi)",
|
||||
"SeriesTypes": "Tipi Serie",
|
||||
"SetPermissions": "Imposta Permessi",
|
||||
"StartupDirectory": "Cartella di Avvio",
|
||||
"Tomorrow": "Domani",
|
||||
"UnknownEventTooltip": "Evento sconosciuto",
|
||||
"UseProxy": "Usa Proxy",
|
||||
"InteractiveImportNoQuality": "Una qualità deve essere scelta per ogni file selezionato",
|
||||
"PortNumber": "Numero Porta",
|
||||
"MonitorAllSeasons": "Tutte le Stagioni",
|
||||
"DownloadClientValidationUnableToConnect": "Impossibile connettersi a {clientName}",
|
||||
"DownloadClientValidationVerifySslDetail": "Per favore verifica la tua configurazione SSL su entrambi {clientName} e {appName}",
|
||||
"IndexerDownloadClientHealthCheckMessage": "Indicizzatori con client di download non validi: {indexerNames}.",
|
||||
"MonitorAllSeasonsDescription": "Monitora tutte le nuove stagioni automaticamente",
|
||||
"MonitorFutureEpisodes": "Episodi Futuri",
|
||||
"No": "No",
|
||||
"MonitorLastSeason": "Ultima Stagione",
|
||||
"NoEpisodesInThisSeason": "Nessun episodio in questa stagione",
|
||||
"OrganizeModalHeaderSeason": "Organizza & Rinomina - {season}",
|
||||
"Save": "Salva",
|
||||
"More": "Altro",
|
||||
"MonitorLastSeasonDescription": "Monitora tutti gli episodi della ultima stagione",
|
||||
"RestartSonarr": "Riavvia {appName}",
|
||||
"SeasonFinale": "Finale di Stagione",
|
||||
"RestartNow": "Riavvia ora",
|
||||
"TablePageSizeHelpText": "Numero di elementi da mostrare in ogni pagina",
|
||||
"UiSettings": "Impostazioni Interfaccia",
|
||||
"TvdbId": "ID TVDB",
|
||||
"Wanted": "Ricercato",
|
||||
"CustomFormatsLoadError": "Impossibile a caricare Formati Personalizzati",
|
||||
"FilterEndsWith": "termina con",
|
||||
"MetadataSource": "Fonte Metadati",
|
||||
"Monitored": "Monitorato",
|
||||
"MoveSeriesFoldersDontMoveFiles": "No, Sposterò i File da Solo",
|
||||
"RemoveQueueItemRemovalMethod": "Metodo di Rimozione",
|
||||
"SecretToken": "Secret Token",
|
||||
"UrlBase": "Base Url",
|
||||
"NotificationsEmailSettingsFromAddress": "Dall'Indirizzo",
|
||||
"NotificationsGotifySettingsServer": "Server Gotify",
|
||||
"NotificationsGotifySettingsPriorityHelpText": "Priorità della notifica",
|
||||
"Score": "Punteggio",
|
||||
"SelectSeasonModalTitle": "{modalTitle} - Seleziona Stagione",
|
||||
"UpdateAvailableHealthCheckMessage": "Nuovo aggiornamento disponibile",
|
||||
"Permissions": "Permessi",
|
||||
"Scheduled": "Pianificato",
|
||||
"SearchAll": "Ricerca tutto",
|
||||
"VisitTheWikiForMoreDetails": "Visita la wiki per ulteriori dettagli: ",
|
||||
"Week": "Settimana",
|
||||
"DownloadClientValidationSslConnectFailureDetail": "{appName} non è in grado di connettersi a {clientName} usando SSL. Questo problema potrebbe essere legato al computer. Prova a configurare entrambi {appName} e {clientName} senza usare SSL.",
|
||||
"LogFilesLocation": "File di Log localizzati in: {location}",
|
||||
"PendingChangesMessage": "Hai dei cambiamenti non salvati, sei sicuro di volere lasciare questa pagina?",
|
||||
"NotificationsEmailSettingsUseEncryption": "Usa Crittografia",
|
||||
"DailyEpisodeTypeDescription": "Episodi rilasciati giornalmente o meno frequentemente che usano anno-mese-giorno (2023-08-04)",
|
||||
"DownloadClientQbittorrentTorrentStateMissingFiles": "qBittorrent sta segnalando dei file mancanti",
|
||||
"NoEventsFound": "Nessun evento trovato",
|
||||
"SearchIsNotSupportedWithThisIndexer": "Ricerca non supportata con questo indicizzatore",
|
||||
"SelectReleaseType": "Seleziona Tipo Release",
|
||||
"Uppercase": "Maiuscolo",
|
||||
"False": "Falso",
|
||||
"Files": "File",
|
||||
"Filter": "Filtro",
|
||||
"OverrideGrabNoEpisode": "Almeno un episodio deve essere selezionato",
|
||||
"FilterStartsWith": "inizia con",
|
||||
"FinaleTooltip": "Serie o finale di stagione",
|
||||
"QualitySettings": "Impostazioni Qualità",
|
||||
"Queue": "Coda",
|
||||
"QueueIsEmpty": "La coda è vuota",
|
||||
"QuickSearch": "Ricerca Veloce",
|
||||
"RefreshSeries": "Aggiorna Serie",
|
||||
"Year": "Anno",
|
||||
"LanguagesLoadError": "Impossibile caricare le lingue",
|
||||
"MetadataLoadError": "Impossibile caricare i Metadati",
|
||||
"MetadataSettings": "Impostazioni Metadati",
|
||||
"MetadataSettingsEpisodeMetadata": "Metadati dell'Episodio",
|
||||
"Status": "Stato",
|
||||
"DeleteQualityProfileMessageText": "Sicuro di voler cancellare il profilo di qualità '{name}'?",
|
||||
"NotificationsGotifySettingsServerHelpText": "URL server Gotify, includendo http(s):// e porta se necessario",
|
||||
"Time": "Orario",
|
||||
"Password": "Password",
|
||||
"OrganizeNothingToRename": "Successo! Il mio lavoro è finito, nessun file da rinominare.",
|
||||
"PosterOptions": "Opzioni Locandina",
|
||||
"Progress": "Progressi",
|
||||
"Protocol": "Protocollo",
|
||||
"ProxyFailedToTestHealthCheckMessage": "Test del proxy fallito: {url}",
|
||||
"ProxyType": "Tipo Proxy",
|
||||
"QualitiesLoadError": "Impossibile caricare qualità",
|
||||
"RecyclingBinCleanup": "Pulizia Cestino",
|
||||
"SelectFolderModalTitle": "{modalTitle} - Seleziona Cartella",
|
||||
"ResetTitles": "Reimposta Titoli",
|
||||
"RestartLater": "Lo riavvierò dopo",
|
||||
"RssSyncInterval": "Intervallo Sincronizzazione RSS",
|
||||
"Runtime": "Tempo di esecuzione",
|
||||
"SearchByTvdbId": "Puoi anche ricercare usando l'ID TVDB di uno show. Es. tvdb:71663",
|
||||
"SearchForMonitoredEpisodesSeason": "Ricerca degli episodi monitorati in questa stagione",
|
||||
"SelectEpisodesModalTitle": "{modalTitle} - Seleziona Episodio/i",
|
||||
"SelectSeason": "Seleziona Stagione",
|
||||
"SeriesIndexFooterMissingUnmonitored": "Episodi Mancanti (Serie non monitorate)",
|
||||
"ShowEpisodeInformation": "Mostra Informazioni Episodio",
|
||||
"Size": "Dimensione",
|
||||
"YesterdayAt": "Ieri alle {time}",
|
||||
"UnableToImportAutomatically": "Impossibile Importare Automaticamente",
|
||||
"Small": "Piccolo",
|
||||
"Socks4": "Socks4",
|
||||
"Standard": "Standard",
|
||||
"Started": "Iniziato",
|
||||
"TorrentsDisabled": "Torrent Disattivati",
|
||||
"UnsavedChanges": "Cambiamenti Non Salvati",
|
||||
"UnselectAll": "Deseleziona Tutto",
|
||||
"UpdateAll": "Aggiorna Tutto",
|
||||
"UpdateSonarrDirectlyLoadError": "Impossibile aggiornare {appName} direttamente,",
|
||||
"UseSeasonFolderHelpText": "Ordina episodi dentro all cartella della stagione",
|
||||
"VideoCodec": "Codec Video",
|
||||
"DownloadClientValidationCategoryMissingDetail": "La categoria che ha inserito non esiste in {clientName}. Crealo prima su {clientName}.",
|
||||
"RestrictionsLoadError": "Impossibile caricare le Restrizioni",
|
||||
"SearchFailedError": "Ricerca fallita, per favore riprova nuovamente dopo.",
|
||||
"DownloadClientDelugeValidationLabelPluginFailureDetail": "{appName} non è stato in grado di aggiungere l'etichetta a {clientName}.",
|
||||
"DownloadClientFreeboxAuthenticationError": "Autenticazione alle API di Freebox fallita. Ragione: {errorDescription}",
|
||||
"DownloadClientQbittorrentValidationCategoryUnsupportedDetail": "Categorie non supportate fino alla versione 3.3.0 di qBittorrent. Per favore aggiorna o prova con una Categoria vuota.",
|
||||
"DownloadClientSettingsInitialStateHelpText": "Stato iniziale per i torrent aggiunti a {clientName}",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Sei sicuro di voler eliminare i '{count}' client di download selezionato/i?",
|
||||
"DownloadClientSettingsAddPaused": "Aggiungi In Pausa",
|
||||
"DownloadClientValidationUnableToConnectDetail": "Per favore verifica nome host e porta.",
|
||||
"FormatShortTimeSpanSeconds": "{seconds} secondo/i",
|
||||
"IgnoreDownload": "Ignora Download",
|
||||
"Implementation": "Implementazione",
|
||||
"File": "File",
|
||||
"LabelIsRequired": "Etichetta richiesta",
|
||||
"IndexerSettingsSeedRatio": "Rapporto Seed",
|
||||
"ManageClients": "Gestisci Clients",
|
||||
"ManageDownloadClients": "Gestisci Clients di Download",
|
||||
"Message": "Messaggio",
|
||||
"Min": "Min",
|
||||
"MinutesThirty": "30 Minuti: {thirty}",
|
||||
"Missing": "Mancante",
|
||||
"MonitorNewItems": "Monitora Nuovi Elementi",
|
||||
"MonitorNewSeasons": "Monitora Nuove Stagioni",
|
||||
"MonitorNewSeasonsHelpText": "Quali nuove stagioni devono essere monitorati automaticamente",
|
||||
"MonitorNoEpisodes": "Nessuno",
|
||||
"MonitorNoEpisodesDescription": "Nessun episodio sarà monitorato",
|
||||
"NotificationsDiscordSettingsAvatar": "Avatar",
|
||||
"NotificationsMailgunSettingsUseEuEndpointHelpText": "Abilita per usare l'endpoint EU di MailGun",
|
||||
"MonitorNoNewSeasonsDescription": "Non monitorare nessuna nuova stagione automaticamente",
|
||||
"MonitorPilotEpisode": "Episodio Pilota",
|
||||
"MonitorPilotEpisodeDescription": "Monitora solo il primo episodio della prima stagione",
|
||||
"MonitorSeries": "Monitora Serie",
|
||||
"MonitoredStatus": "Monitorato/Stato",
|
||||
"MoveFiles": "Sposta File",
|
||||
"Name": "Nome",
|
||||
"Negate": "Nega",
|
||||
"SubtitleLanguages": "Lingua Sottotitoli",
|
||||
"Sunday": "Domenica",
|
||||
"TableColumns": "Colonne",
|
||||
"TodayAt": "Oggi alle {time}",
|
||||
"TomorrowAt": "Domani alle {time}",
|
||||
"TotalSpace": "Totale Spazio"
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
"SeasonNumber": "Número da Temporada",
|
||||
"SeriesTitle": "Título da Série",
|
||||
"Special": "Especial",
|
||||
"TestParsing": "Testar Análise",
|
||||
"TestParsing": "Análise de teste",
|
||||
"About": "Sobre",
|
||||
"Actions": "Ações",
|
||||
"AppDataDirectory": "Diretório AppData",
|
||||
@@ -891,7 +891,7 @@
|
||||
"UnmonitorDeletedEpisodes": "Cancelar Monitoramento de Episódios Excluídos",
|
||||
"UnsavedChanges": "Alterações Não Salvas",
|
||||
"UpdateAutomaticallyHelpText": "Baixe e instale atualizações automaticamente. Você ainda poderá instalar a partir do Sistema: Atualizações",
|
||||
"UpdateMechanismHelpText": "Use o atualizador integrado do {appName} ou um script",
|
||||
"UpdateMechanismHelpText": "Usar o atualizador integrado do {appName} ou um script",
|
||||
"UpdateSonarrDirectlyLoadError": "Incapaz de atualizar o {appName} diretamente,",
|
||||
"UpdateUiNotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de IU '{uiFolder}' não pode ser salva pelo usuário '{userName}'.",
|
||||
"UpgradeUntil": "Atualizar Até",
|
||||
@@ -2078,5 +2078,6 @@
|
||||
"TodayAt": "Hoje às {time}",
|
||||
"TomorrowAt": "Amanhã às {time}",
|
||||
"HasUnmonitoredSeason": "Tem Temporada Não Monitorada",
|
||||
"YesterdayAt": "Ontem às {time}"
|
||||
"YesterdayAt": "Ontem às {time}",
|
||||
"UnableToImportAutomatically": "Não foi possível importar automaticamente"
|
||||
}
|
||||
|
||||
@@ -846,5 +846,6 @@
|
||||
"AllResultsAreHiddenByTheAppliedFilter": "Tüm sonuçlar, uygulanan filtre tarafından gizlenir",
|
||||
"AllSeriesInRootFolderHaveBeenImported": "{path} içerisindeki tüm diziler içeri aktarıldı",
|
||||
"AlternateTitles": "Alternatif Başlıklar",
|
||||
"AnEpisodeIsDownloading": "Bir bölüm indiriliyor"
|
||||
"AnEpisodeIsDownloading": "Bir bölüm indiriliyor",
|
||||
"UnableToImportAutomatically": "Otomatikman İçe Aktarılamıyor"
|
||||
}
|
||||
|
||||
@@ -395,14 +395,6 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
||||
item.Name = Path.GetFileNameWithoutExtension(decision.LocalEpisode.Path);
|
||||
item.DownloadId = downloadId;
|
||||
|
||||
if (decision.LocalEpisode.Series != null)
|
||||
{
|
||||
item.Series = decision.LocalEpisode.Series;
|
||||
|
||||
item.CustomFormats = _formatCalculator.ParseCustomFormat(decision.LocalEpisode);
|
||||
item.CustomFormatScore = item.Series.QualityProfile?.Value.CalculateCustomFormatScore(item.CustomFormats) ?? 0;
|
||||
}
|
||||
|
||||
if (decision.LocalEpisode.Episodes.Any() && decision.LocalEpisode.Episodes.Select(c => c.SeasonNumber).Distinct().Count() == 1)
|
||||
{
|
||||
var seasons = decision.LocalEpisode.Episodes.Select(c => c.SeasonNumber).Distinct().ToList();
|
||||
@@ -430,6 +422,14 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
||||
item.IndexerFlags = (int)decision.LocalEpisode.IndexerFlags;
|
||||
item.ReleaseType = decision.LocalEpisode.ReleaseType;
|
||||
|
||||
if (decision.LocalEpisode.Series != null)
|
||||
{
|
||||
item.Series = decision.LocalEpisode.Series;
|
||||
|
||||
item.CustomFormats = _formatCalculator.ParseCustomFormat(decision.LocalEpisode);
|
||||
item.CustomFormatScore = item.Series.QualityProfile?.Value.CalculateCustomFormatScore(item.CustomFormats) ?? 0;
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -506,8 +506,6 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
||||
|
||||
// Augment episode file so imported files have all additional information an automatic import would
|
||||
localEpisode = _aggregationService.Augment(localEpisode, trackedDownload?.DownloadItem);
|
||||
localEpisode.CustomFormats = _formatCalculator.ParseCustomFormat(localEpisode);
|
||||
localEpisode.CustomFormatScore = localEpisode.Series.QualityProfile?.Value.CalculateCustomFormatScore(localEpisode.CustomFormats) ?? 0;
|
||||
|
||||
// Apply the user-chosen values.
|
||||
localEpisode.Series = series;
|
||||
@@ -518,6 +516,9 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
||||
localEpisode.IndexerFlags = (IndexerFlags)file.IndexerFlags;
|
||||
localEpisode.ReleaseType = file.ReleaseType;
|
||||
|
||||
localEpisode.CustomFormats = _formatCalculator.ParseCustomFormat(localEpisode);
|
||||
localEpisode.CustomFormatScore = localEpisode.Series.QualityProfile?.Value.CalculateCustomFormatScore(localEpisode.CustomFormats) ?? 0;
|
||||
|
||||
// TODO: Cleanup non-tracked downloads
|
||||
|
||||
var importDecision = new ImportDecision(localEpisode);
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace NzbDrone.Core.Parser
|
||||
new RegexReplace(@".*?[_. ](S\d{2}(?:E\d{2,4})*[_. ].*)", "$1", RegexOptions.Compiled | RegexOptions.IgnoreCase)
|
||||
};
|
||||
|
||||
private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?<english>\b(?:ing|eng)\b)|(?<italian>\b(?:ita|italian)\b)|(?<german>german\b|videomann|ger[. ]dub)|(?<flemish>flemish)|(?<greek>greek)|(?<french>(?:\W|_)(?:FR|VF|VF2|VFF|VFQ|TRUEFRENCH)(?:\W|_))|(?<russian>\b(?:rus|ru)\b)|(?<hungarian>\b(?:HUNDUB|HUN)\b)|(?<hebrew>\bHebDub\b)|(?<polish>\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)|(?<chinese>\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)|(?<bulgarian>\bbgaudio\b)|(?<spanish>\b(?:español|castellano|esp|spa(?!\(Latino\)))\b)|(?<ukrainian>\b(?:\dx?)?(?:ukr))|(?<thai>\b(?:THAI)\b)|(?<romanian>\b(?:RoDubbed|ROMANIAN)\b)|(?<catalan>[-,. ]cat[. ](?:DD|subs)|\b(?:catalan|catalán)\b)|(?<latvian>\b(?:lat|lav|lv)\b)|(?<turkish>\b(?:tur)\b)",
|
||||
private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?<english>\b(?:ing|eng)\b)|(?<italian>\b(?:ita|italian)\b)|(?<german>german\b|videomann|ger[. ]dub)|(?<flemish>flemish)|(?<greek>greek)|(?<french>(?:\W|_)(?:FR|VF|VF2|VFF|VFI|VFQ|TRUEFRENCH)(?:\W|_))|(?<russian>\b(?:rus|ru)\b)|(?<hungarian>\b(?:HUNDUB|HUN)\b)|(?<hebrew>\bHebDub\b)|(?<polish>\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)|(?<chinese>\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)|(?<bulgarian>\bbgaudio\b)|(?<spanish>\b(?:español|castellano|esp|spa(?!\(Latino\)))\b)|(?<ukrainian>\b(?:\dx?)?(?:ukr))|(?<thai>\b(?:THAI)\b)|(?<romanian>\b(?:RoDubbed|ROMANIAN)\b)|(?<catalan>[-,. ]cat[. ](?:DD|subs)|\b(?:catalan|catalán)\b)|(?<latvian>\b(?:lat|lav|lv)\b)|(?<turkish>\b(?:tur)\b)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?<!SUB[\W|_|^]))(?:(?<lithuanian>\bLT\b)|(?<czech>\bCZ\b)|(?<polish>\bPL\b)|(?<bulgarian>\bBG\b)|(?<slovak>\bSK\b))(?:(?i)(?![\W|_|^]SUB))",
|
||||
|
||||
@@ -83,7 +83,7 @@ namespace NzbDrone.Core.Parser
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Anime - [SubGroup] Title Season+Episode
|
||||
new Regex(@"^(?:\[(?<subgroup>.+?)\](?:_|-|\s|\.)?)(?<title>.+?)(?:[-_\W](?<![()\[!]))+(?:S?(?<season>(?<!\d+)\d{1,2}(?!\d+))(?:(?:[ex]|\W[ex]){1,2}(?<episode>\d{2}(?!\d+)))+)(?:[_. ](?!\d+)).*?(?<hash>[(\[]\w{8}[)\]])?$",
|
||||
new Regex(@"^(?:\[(?<subgroup>.+?)\](?:_|-|\s|\.)?)(?<title>.+?)(?:[-_\W](?<![()\[!]))+(?:S?(?<season>(?<!\d+)\d{1,2}(?!\d+))(?:(?:[ex]|\W[ex]){1,2}(?<episode>\d{2}(?!\d+)))+)(?:v\d+)?(?:[_. ](?!\d+)).*?(?<hash>[(\[]\w{8}[)\]])?$",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Anime - [SubGroup] Title Episode Absolute Episode Number ([SubGroup] Series Title Episode 01)
|
||||
@@ -114,6 +114,10 @@ namespace NzbDrone.Core.Parser
|
||||
new Regex(@"^\[(?<subgroup>.+?)\][-_. ]?(?<title>[^]]+?)(?:[-_. ]{3}?(?<absoluteepisode>\d{2}(\.\d{1,2})?(?!-?\d+|-[a-z]+)))+(?:[-_. ]+(?<special>special|ova|ovd))?.*?(?<hash>[(\[]\w{8}[)\]])?(?:$|\.mkv)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Anime - [SubGroup] Title with trailing number S## (Full season)
|
||||
new Regex(@"^\[(?<subgroup>.+?)\][-_. ]?(?<title>.+?)[-_. ]+(?:S(?<season>(?<!\d+)(?:\d{1,2}|\d{4})(?![ex]?\d+))).+?(?:$|\.mkv)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Anime - [SubGroup] Title with trailing number Absolute Episode Number
|
||||
new Regex(@"^\[(?<subgroup>.+?)\][-_. ]?(?<title>[^-]+?)(?:(?<![-_. ]|\b[0]\d+)[_ ]+)(?:[-_. ]?(?<absoluteepisode>\d{3}(\.\d{1,2})?(?!\d+|-[a-z]+)))+(?:[-_. ]+(?<special>special|ova|ovd))?.*?(?<hash>[(\[]\w{8}[)\]])?(?:$|\.mkv)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
@@ -126,10 +130,6 @@ namespace NzbDrone.Core.Parser
|
||||
new Regex(@"^\[(?<subgroup>.+?)\][-_. ]?(?<title>.+?)(?:(?<!\b[0]\d+))(?<absoluteepisode>\d{2,3}(\.\d{1,2})?(?!\d+|[-]))[. ]-[. ](?<absoluteepisode>\d{2,3}(\.\d{1,2})?(?!\d+|[-]))(?:[-_. ]+(?<special>special|ova|ovd))?.*?(?<hash>[(\[]\w{8}[)\]])?(?:$|\.mkv)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Anime - [SubGroup] Title with trailing number S## (Full season)
|
||||
new Regex(@"^\[(?<subgroup>.+?)\][-_. ]?(?<title>.+?)[-_. ]+(?:S(?<season>(?<!\d+)(?:\d{1,2}|\d{4})(?!\d+))).+?(?:$|\.mkv)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
|
||||
// Anime - [SubGroup] Title Absolute Episode Number
|
||||
new Regex(@"^\[(?<subgroup>.+?)\][-_. ]?(?<title>.+?)[-_. ]+\(?(?:[-_. ]?#?(?<absoluteepisode>\d{2,3}(\.\d{1,2})?(?!\d+|-[a-z]+)))+\)?(?:[-_. ]+(?<special>special|ova|ovd))?.*?(?<hash>[(\[]\w{8}[)\]])?(?:$|\.mkv)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
@@ -745,7 +745,7 @@ namespace NzbDrone.Core.Parser
|
||||
Logger.Trace(regex);
|
||||
try
|
||||
{
|
||||
var result = ParseMatchCollection(match, simpleTitle);
|
||||
var result = ParseMatchCollection(match, releaseTitle);
|
||||
|
||||
if (result != null)
|
||||
{
|
||||
@@ -1209,8 +1209,7 @@ namespace NzbDrone.Core.Parser
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: This needs to check the modified title
|
||||
if (lastSeasonEpisodeStringIndex != releaseTitle.Length)
|
||||
if (lastSeasonEpisodeStringIndex < releaseTitle.Length)
|
||||
{
|
||||
result.ReleaseTokens = releaseTitle.Substring(lastSeasonEpisodeStringIndex);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace NzbDrone.Core.Queue
|
||||
public class QueueService : IQueueService, IHandle<TrackedDownloadRefreshedEvent>
|
||||
{
|
||||
private readonly IEventAggregator _eventAggregator;
|
||||
private static List<Queue> _queue = new List<Queue>();
|
||||
private static List<Queue> _queue = new ();
|
||||
|
||||
public QueueService(IEventAggregator eventAggregator)
|
||||
{
|
||||
@@ -96,8 +96,11 @@ namespace NzbDrone.Core.Queue
|
||||
|
||||
public void Handle(TrackedDownloadRefreshedEvent message)
|
||||
{
|
||||
_queue = message.TrackedDownloads.OrderBy(c => c.DownloadItem.RemainingTime).SelectMany(MapQueue)
|
||||
.ToList();
|
||||
_queue = message.TrackedDownloads
|
||||
.Where(t => t.IsTrackable)
|
||||
.OrderBy(c => c.DownloadItem.RemainingTime)
|
||||
.SelectMany(MapQueue)
|
||||
.ToList();
|
||||
|
||||
_eventAggregator.PublishEvent(new QueueUpdatedEvent());
|
||||
}
|
||||
|
||||
@@ -34,7 +34,6 @@ namespace Sonarr.Api.V3.Episodes
|
||||
public bool UnverifiedSceneNumbering { get; set; }
|
||||
public DateTime? EndTime { get; set; }
|
||||
public DateTime? GrabDate { get; set; }
|
||||
public string SeriesTitle { get; set; }
|
||||
public SeriesResource Series { get; set; }
|
||||
|
||||
public List<MediaCover> Images { get; set; }
|
||||
@@ -79,7 +78,6 @@ namespace Sonarr.Api.V3.Episodes
|
||||
SceneEpisodeNumber = model.SceneEpisodeNumber,
|
||||
SceneSeasonNumber = model.SceneSeasonNumber,
|
||||
UnverifiedSceneNumbering = model.UnverifiedSceneNumbering,
|
||||
SeriesTitle = model.SeriesTitle,
|
||||
|
||||
// Series = model.Series.MapToResource(),
|
||||
};
|
||||
|
||||
@@ -8483,10 +8483,6 @@
|
||||
"format": "date-time",
|
||||
"nullable": true
|
||||
},
|
||||
"seriesTitle": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"series": {
|
||||
"$ref": "#/components/schemas/SeriesResource"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user