mirror of
https://github.com/Readarr/Readarr.git
synced 2026-03-22 17:04:16 -04:00
Compare commits
9 Commits
v0.2.2.194
...
v0.2.3.195
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
690e0b5d96 | ||
|
|
212eedd345 | ||
|
|
0b38743292 | ||
|
|
1def54f246 | ||
|
|
0eeaa1e443 | ||
|
|
7beee07a2c | ||
|
|
924f739d1f | ||
|
|
b187fb23e3 | ||
|
|
ca043b3820 |
@@ -9,7 +9,7 @@ variables:
|
||||
testsFolder: './_tests'
|
||||
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
||||
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
||||
majorVersion: '0.2.2'
|
||||
majorVersion: '0.2.3'
|
||||
minorVersion: $[counter('minorVersion', 1)]
|
||||
readarrVersion: '$(majorVersion).$(minorVersion)'
|
||||
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
|
||||
|
||||
@@ -16,6 +16,12 @@
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.customFormatScore {
|
||||
composes: cell from '~Components/Table/Cells/TableRowCell.css';
|
||||
|
||||
width: 55px;
|
||||
}
|
||||
|
||||
.actions {
|
||||
composes: cell from '~Components/Table/Cells/TableRowCell.css';
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Please do not change this file!
|
||||
interface CssExports {
|
||||
'actions': string;
|
||||
'customFormatScore': string;
|
||||
'progress': string;
|
||||
'protocol': string;
|
||||
'quality': string;
|
||||
|
||||
@@ -17,6 +17,7 @@ import Popover from 'Components/Tooltip/Popover';
|
||||
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
|
||||
import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal';
|
||||
import formatBytes from 'Utilities/Number/formatBytes';
|
||||
import formatPreferredWordScore from 'Utilities/Number/formatPreferredWordScore';
|
||||
import translate from 'Utilities/String/translate';
|
||||
import QueueStatusCell from './QueueStatusCell';
|
||||
import RemoveQueueItemModal from './RemoveQueueItemModal';
|
||||
@@ -91,6 +92,7 @@ class QueueRow extends Component {
|
||||
book,
|
||||
quality,
|
||||
customFormats,
|
||||
customFormatScore,
|
||||
protocol,
|
||||
indexer,
|
||||
outputPath,
|
||||
@@ -222,6 +224,17 @@ class QueueRow extends Component {
|
||||
);
|
||||
}
|
||||
|
||||
if (name === 'customFormatScore') {
|
||||
return (
|
||||
<TableRowCell
|
||||
key={name}
|
||||
className={styles.customFormatScore}
|
||||
>
|
||||
{formatPreferredWordScore(customFormatScore)}
|
||||
</TableRowCell>
|
||||
);
|
||||
}
|
||||
|
||||
if (name === 'protocol') {
|
||||
return (
|
||||
<TableRowCell key={name}>
|
||||
@@ -392,6 +405,7 @@ QueueRow.propTypes = {
|
||||
book: PropTypes.object,
|
||||
quality: PropTypes.object.isRequired,
|
||||
customFormats: PropTypes.arrayOf(PropTypes.object),
|
||||
customFormatScore: PropTypes.number.isRequired,
|
||||
protocol: PropTypes.string.isRequired,
|
||||
indexer: PropTypes.string,
|
||||
outputPath: PropTypes.string,
|
||||
|
||||
@@ -258,7 +258,9 @@ class InteractiveImportRow extends Component {
|
||||
>
|
||||
{
|
||||
showReleaseGroupPlaceholder ?
|
||||
<InteractiveImportRowCellPlaceholder /> :
|
||||
<InteractiveImportRowCellPlaceholder
|
||||
isOptional={true}
|
||||
/> :
|
||||
releaseGroup
|
||||
}
|
||||
</TableRowCellButton>
|
||||
|
||||
@@ -5,3 +5,7 @@
|
||||
height: 25px;
|
||||
border: 2px dashed var(--dangerColor);
|
||||
}
|
||||
|
||||
.optional {
|
||||
border: 2px dashed var(--gray);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// This file is automatically generated.
|
||||
// Please do not change this file!
|
||||
interface CssExports {
|
||||
'optional': string;
|
||||
'placeholder': string;
|
||||
}
|
||||
export const cssExports: CssExports;
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
import React from 'react';
|
||||
import styles from './InteractiveImportRowCellPlaceholder.css';
|
||||
|
||||
function InteractiveImportRowCellPlaceholder() {
|
||||
return (
|
||||
<span className={styles.placeholder} />
|
||||
);
|
||||
}
|
||||
|
||||
export default InteractiveImportRowCellPlaceholder;
|
||||
@@ -0,0 +1,22 @@
|
||||
import classNames from 'classnames';
|
||||
import React from 'react';
|
||||
import styles from './InteractiveImportRowCellPlaceholder.css';
|
||||
|
||||
interface InteractiveImportRowCellPlaceholderProps {
|
||||
isOptional?: boolean;
|
||||
}
|
||||
|
||||
function InteractiveImportRowCellPlaceholder(
|
||||
props: InteractiveImportRowCellPlaceholderProps
|
||||
) {
|
||||
return (
|
||||
<span
|
||||
className={classNames(
|
||||
styles.placeholder,
|
||||
props.isOptional && styles.optional
|
||||
)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export default InteractiveImportRowCellPlaceholder;
|
||||
@@ -1,7 +1,9 @@
|
||||
import _ from 'lodash';
|
||||
import React from 'react';
|
||||
import { createAction } from 'redux-actions';
|
||||
import { batchActions } from 'redux-batched-actions';
|
||||
import { sortDirections } from 'Helpers/Props';
|
||||
import Icon from 'Components/Icon';
|
||||
import { icons, sortDirections } from 'Helpers/Props';
|
||||
import { createThunk, handleThunks } from 'Store/thunks';
|
||||
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
||||
@@ -93,6 +95,15 @@ export const defaultState = {
|
||||
isSortable: false,
|
||||
isVisible: true
|
||||
},
|
||||
{
|
||||
name: 'customFormatScore',
|
||||
columnLabel: translate('CustomFormatScore'),
|
||||
label: React.createElement(Icon, {
|
||||
name: icons.SCORE,
|
||||
title: translate('CustomFormatScore')
|
||||
}),
|
||||
isVisible: false
|
||||
},
|
||||
{
|
||||
name: 'protocol',
|
||||
label: translate('Protocol'),
|
||||
|
||||
28
package.json
28
package.json
@@ -86,27 +86,27 @@
|
||||
"typescript": "4.9.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.21.8",
|
||||
"@babel/eslint-parser": "7.21.8",
|
||||
"@babel/core": "7.22.9",
|
||||
"@babel/eslint-parser": "7.22.9",
|
||||
"@babel/plugin-proposal-class-properties": "7.18.6",
|
||||
"@babel/plugin-proposal-export-default-from": "7.18.10",
|
||||
"@babel/plugin-proposal-export-default-from": "7.22.5",
|
||||
"@babel/plugin-proposal-export-namespace-from": "7.18.9",
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6",
|
||||
"@babel/plugin-proposal-optional-chaining": "7.21.0",
|
||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||
"@babel/preset-env": "7.21.5",
|
||||
"@babel/preset-react": "7.18.6",
|
||||
"@babel/preset-typescript": "7.21.5",
|
||||
"@typescript-eslint/eslint-plugin": "5.59.7",
|
||||
"@typescript-eslint/parser": "5.59.7",
|
||||
"@babel/preset-env": "7.22.9",
|
||||
"@babel/preset-react": "7.22.5",
|
||||
"@babel/preset-typescript": "7.22.5",
|
||||
"@typescript-eslint/eslint-plugin": "6.0.0",
|
||||
"@typescript-eslint/parser": "6.0.0",
|
||||
"autoprefixer": "10.4.14",
|
||||
"babel-loader": "9.1.2",
|
||||
"babel-loader": "9.1.3",
|
||||
"babel-plugin-inline-classnames": "2.0.1",
|
||||
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
|
||||
"core-js": "3.30.2",
|
||||
"core-js": "3.31.1",
|
||||
"css-loader": "6.7.3",
|
||||
"css-modules-typescript-loader": "4.0.1",
|
||||
"eslint": "8.40.0",
|
||||
"eslint": "8.44.0",
|
||||
"eslint-config-prettier": "8.8.0",
|
||||
"eslint-plugin-filenames": "1.3.2",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
@@ -136,12 +136,12 @@
|
||||
"style-loader": "3.3.2",
|
||||
"stylelint": "15.10.1",
|
||||
"stylelint-order": "6.0.3",
|
||||
"terser-webpack-plugin": "5.3.8",
|
||||
"terser-webpack-plugin": "5.3.9",
|
||||
"ts-loader": "9.4.3",
|
||||
"typescript-plugin-css-modules": "5.0.1",
|
||||
"url-loader": "4.1.1",
|
||||
"webpack": "5.82.1",
|
||||
"webpack-cli": "5.1.1",
|
||||
"webpack": "5.88.1",
|
||||
"webpack-cli": "5.1.4",
|
||||
"webpack-livereload-plugin": "3.0.2",
|
||||
"worker-loader": "3.0.8"
|
||||
},
|
||||
|
||||
@@ -49,10 +49,15 @@ namespace NzbDrone.Core.ImportLists
|
||||
var importListLocal = importList;
|
||||
var importListStatus = _importListStatusService.GetLastSyncListInfo(importListLocal.Definition.Id);
|
||||
|
||||
if (importListStatus.HasValue && DateTime.UtcNow < importListStatus + importListLocal.MinRefreshInterval)
|
||||
if (importListStatus.HasValue)
|
||||
{
|
||||
_logger.Trace("Skipping refresh of Import List {0} due to minimum refresh inverval", importListLocal.Definition.Name);
|
||||
continue;
|
||||
var importListNextSync = importListStatus.Value + importListLocal.MinRefreshInterval;
|
||||
|
||||
if (DateTime.UtcNow < importListNextSync)
|
||||
{
|
||||
_logger.Trace("Skipping refresh of Import List {0} ({1}) due to minimum refresh interval. Next sync after {2}", importList.Name, importListLocal.Definition.Name, importListNextSync);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
var task = taskFactory.StartNew(() =>
|
||||
@@ -63,7 +68,7 @@ namespace NzbDrone.Core.ImportLists
|
||||
|
||||
lock (result)
|
||||
{
|
||||
_logger.Debug("Found {0} from {1}", importListReports.Count, importList.Name);
|
||||
_logger.Debug("Found {0} reports from {1} ({2})", importListReports.Count, importList.Name, importListLocal.Definition.Name);
|
||||
|
||||
result.AddRange(importListReports);
|
||||
}
|
||||
@@ -72,7 +77,7 @@ namespace NzbDrone.Core.ImportLists
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Error(e, "Error during Import List Sync");
|
||||
_logger.Error(e, "Error during Import List Sync of {0} ({1})", importList.Name, importListLocal.Definition.Name);
|
||||
}
|
||||
}).LogExceptions();
|
||||
|
||||
@@ -83,7 +88,7 @@ namespace NzbDrone.Core.ImportLists
|
||||
|
||||
result = result.DistinctBy(r => new { r.Author, r.Book }).ToList();
|
||||
|
||||
_logger.Debug("Found {0} reports", result.Count);
|
||||
_logger.Debug("Found {0} total reports from {1} lists", result.Count, importLists.Count);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -96,7 +101,7 @@ namespace NzbDrone.Core.ImportLists
|
||||
|
||||
if (importList == null || !definition.EnableAutomaticAdd)
|
||||
{
|
||||
_logger.Debug("Import list not enabled, skipping.");
|
||||
_logger.Debug("Import List {0} ({1}) is not enabled, skipping.", importList.Name, importList.Definition.Name);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -121,7 +126,7 @@ namespace NzbDrone.Core.ImportLists
|
||||
|
||||
lock (result)
|
||||
{
|
||||
_logger.Debug("Found {0} from {1}", importListReports.Count, importList.Name);
|
||||
_logger.Debug("Found {0} reports from {1} ({2})", importListReports.Count, importList.Name, importListLocal.Definition.Name);
|
||||
|
||||
result.AddRange(importListReports);
|
||||
}
|
||||
@@ -130,7 +135,7 @@ namespace NzbDrone.Core.ImportLists
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Error(e, "Error during Import List Sync");
|
||||
_logger.Error(e, "Error during Import List Sync of {0} ({1})", importList.Name, importListLocal.Definition.Name);
|
||||
}
|
||||
}).LogExceptions();
|
||||
|
||||
|
||||
@@ -19,15 +19,15 @@
|
||||
"AnalyticsEnabledHelpText": "Lähetä nimettömiä käyttö- ja virhetietoja sovelluksen palvelimille. Tämä sisältää tietoja selaimestasi, verkkokäyttöliittymän sivujen käytöstä, virheraportoinnista sekä käyttöjärjestelmästäsi ja versiosta. Käytämme näitä tietoja ominaisuuksien ja virhekorjauksien painotukseen.",
|
||||
"AppDataDirectory": "AppData-kansio",
|
||||
"ApplyTags": "Tunnistetoimenpide",
|
||||
"ApplyTagsHelpTexts1": "Miten tunnisteita sovelletaan valittuun kirjailijaan",
|
||||
"ApplyTagsHelpTexts2": "– 'Lisää' syötetyt tunnisteet aiempiin tunnisteisiin",
|
||||
"ApplyTagsHelpTexts3": "- \"Poista\" tyhjentää syötetyt tunnisteet.",
|
||||
"ApplyTagsHelpTexts4": "- \"Korvaa\" nykyiset tunnisteet syötetyillä tai tyhjennä kaikki tunnisteet jättämällä tyhjäksi.",
|
||||
"ApplyTagsHelpTexts1": "Tunnistetoimenpiteiden selitykset:",
|
||||
"ApplyTagsHelpTexts2": "– \"Lisää\" syötetyt tunnisteet aiempiin tunnisteisiin",
|
||||
"ApplyTagsHelpTexts3": "– \"Poista\" tyhjentää syötetyt tunnisteet",
|
||||
"ApplyTagsHelpTexts4": "– \"Korvaa\" nykyiset tunnisteet syötetyillä tai tyhjennä kaikki jättämällä tyhjäksi",
|
||||
"Authentication": "Todennus",
|
||||
"AuthenticationMethodHelpText": "Vaadi käyttäjätunnus ja salasana.",
|
||||
"AuthorClickToChangeBook": "Vaihda kirjaa painamalla",
|
||||
"AutoRedownloadFailedHelpText": "Etsi ja yritä ladata toinen julkaisu automaattisesti",
|
||||
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Levyltä poistettuja kirjoja ei poisteta Radarrin seurannasta automaattisesti",
|
||||
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Levyltä poistettavien kirjojen valvonta lopetetaan automaattisesti.",
|
||||
"Automatic": "Automaattinen",
|
||||
"BackupFolderHelpText": "Suhteelliset polut kohdistuvat sovelluksen AppData-kansioon.",
|
||||
"BackupNow": "Varmuuskopioi nyt",
|
||||
@@ -264,7 +264,7 @@
|
||||
"RSSSyncInterval": "RSS-synkronointiväli",
|
||||
"ReadTheWikiForMoreInformation": "Lue lisätietoja Wikistä",
|
||||
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Readarr tukee Newznab- ja Torznab-yhteensopivien tietolähteiden ohella myös monia muita alla lueteltuja tietolähteitä.",
|
||||
"ReadarrTags": "Radarr-tunnisteet",
|
||||
"ReadarrTags": "Tunnisteet",
|
||||
"Real": "Todellinen",
|
||||
"Reason": "Syy",
|
||||
"RecycleBinCleanupDaysHelpText": "Poista automaattinen tyhjennys käytöstä asettamalla arvoksi '0'.",
|
||||
@@ -476,13 +476,13 @@
|
||||
"SkipBooksWithMissingReleaseDate": "Ohita kirjat, joilta puuttuu julkaisupäivä",
|
||||
"UrlBaseHelpText": "Lisää Calibren URL-osoitteeseen etuliitteen, (esim. 'http://[host]:[port]/[urlBase]').",
|
||||
"Author": "Kirjailija",
|
||||
"BackupIntervalHelpText": "Readarrin tietokannan ja asetusten automaattisen varmuuskopioinnin suoritusaikaväli.",
|
||||
"BackupIntervalHelpText": "Tietokannan ja asetusten automaattisen varmuuskopioinnin ajoitus.",
|
||||
"TagsHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille kirjailijoille. Käytä kaikille jättämällä tyhjäksi.",
|
||||
"WriteAudioTagsScrubHelp": "Poista olemassa olevat tagit tiedostoista säilyttäen vain Readarrin lisäämät tagit.",
|
||||
"DefaultTagsHelpText": "Kansiosta löydetyille kirjailijoille oletusarvoisesti määritettävät tunnisteet.",
|
||||
"DefaultReadarrTags": "Oletustunnisteet",
|
||||
"ExistingTagsScrubbed": "Olemassa olevat tunnisteet on poistettu",
|
||||
"WriteAudioTagsScrub": "Tyhjennä tagit",
|
||||
"WriteAudioTagsScrub": "Tyhjennä olemassa olevat tunnisteet",
|
||||
"WriteBookTagsHelpTextWarning": "'Kaikki tiedostot' -valinnat käsittelevät myös olemassa olevien tiedostojen tagit tuonnin yhteydessä.",
|
||||
"WriteAudioTags": "Tallenna metatiedot äänitiedostoihin",
|
||||
"WriteTagsNew": "Vain uudet lataukset",
|
||||
@@ -525,7 +525,7 @@
|
||||
"Label": "Tunniste",
|
||||
"LogRotateHelpText": "Lokien tallennuskansiossa säilytettävien lokitiedostojen enimmäismäärä",
|
||||
"LogRotation": "Lokitiedostojen kierrätys",
|
||||
"LogSqlHelpText": "Kirjaa kaikki Prowlarrin SQL-kyselyt",
|
||||
"LogSqlHelpText": "Kirjaa kaikki SQL-kyselyt",
|
||||
"Publisher": "Julkasija",
|
||||
"SelectAll": "Valitse kaikki",
|
||||
"SelectedCountBooksSelectedInterp": "{0} elokuva(a) valittu",
|
||||
@@ -568,7 +568,7 @@
|
||||
"IndexerPriorityHelpText": "Tietolähteen painotus: 1 (korkein) - 50 (matalin). Oletusarvo on 25. Käytetään muutoin tasaveroisten julkaisujen sieppauspäätökseen. Kaikkia käytössä olevia tietolähteitä käytetään edelleen RSS-synkronointiin ja hakuun.",
|
||||
"IndexerLongTermStatusCheckSingleClientMessage": "Tietolähteet eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi: {0}",
|
||||
"IndexerLongTermStatusCheckAllClientMessage": "Mikään tietolähde ei ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi.",
|
||||
"IndexerSearchCheckNoInteractiveMessage": "Tietolähteitä ei ole määritetty vuorovaikutteiselle haulle, eikä sillä tämän vuoksi löydy tuloksia.",
|
||||
"IndexerSearchCheckNoInteractiveMessage": "Manuaalista hakua varten ei ole määritetty tietolähteitä, jonka vuoksi haku ei löydä tuloksia.",
|
||||
"IsCalibreLibraryHelpText": "Hallinnoi kirjastoa Calibren sisältöpalvelimen avulla.",
|
||||
"IsInUseCantDeleteAMetadataProfileThatIsAttachedToAnAuthorOrImportList": "Kirjailijaan tai tuontilistaan liitettyä metatietoprofiilia ei voi poistaa.",
|
||||
"IsInUseCantDeleteAQualityProfileThatIsAttachedToAnAuthorOrImportList": "Kirjailijaan tai tuontilistaan liitettyä laatuprofiilia ei voi poistaa.",
|
||||
@@ -626,23 +626,23 @@
|
||||
"ProxyCheckFailedToTestMessage": "Välityspalvelintesti epäonnistui: {0}",
|
||||
"Queued": "Jonossa",
|
||||
"SearchFiltered": "Etsi suodatettuja",
|
||||
"RemotePathMappingCheckFilesGenericPermissions": "Lataustyökalu '{0}' ilmoitti tiedostosijainniksi '{1}', mutta Radarr ei näe sitä. Saata joutua muokkaamaan kansion käyttöoikeuksia.",
|
||||
"RemotePathMappingCheckImportFailed": "Radarr ei voinut tuoda elokuvaa. Tarkista loki saadaksesi lisätietoja.",
|
||||
"RemotePathMappingCheckFilesGenericPermissions": "Lataustyökalu \"{0}\" ilmoitti tiedostosijainniksi \"{1}\", mutta kansiota ei nähdä. Saatat joutua muokkaamaan kansion käyttöoikeuksia.",
|
||||
"RemotePathMappingCheckImportFailed": "Kirjan tuonti epäonnistui. Katso tarkemmat tiedot lokista.",
|
||||
"CouldntFindAnyResultsForTerm": "Haku '{0}' ei tuottanut tuloksia.",
|
||||
"IndexerSearchCheckNoAutomaticMessage": "Automaattihaussa käytettäviä tietolähteitä ei ole käytettävissä, eikä automaattisia hakutuloksia ole tämän vuoksi saatavilla.",
|
||||
"IndexerSearchCheckNoAutomaticMessage": "Automaattista hakua varten ei ole määritetty tietolähteitä, jonka vuoksi haku ei löydä tuloksia.",
|
||||
"IndexerSearchCheckNoAvailableIndexersMessage": "Kaikki hakukelpoiset tietolähteet ovat tilapaisesti tavoittamattomissa viimeaikaisten tietolähdevirheiden vuoksi.",
|
||||
"RemotePathMappingCheckDockerFolderMissing": "Käytät Dockeria ja lataustyökalu '{0}' sijoittaa lataukset kohteeseen '{1}', mutta kansiota ei näytä olevan olemassa containerissa. Tarkista etäsijaintiesi kartoitukset ja containerin tallennusmedia-asetukset.",
|
||||
"RemotePathMappingCheckDownloadPermissions": "Radarr näkee, muttei voi käyttää ladattua elokuvaa '{0}'. Todennäköinen syy on sijainnin käyttöoikeusvirhe.",
|
||||
"RemotePathMappingCheckDownloadPermissions": "Ladattu kirja \"{0}\" näkyy, mutta sitä ei voida käyttää. Todennäköinen syy on sijainnin käyttöoikeusvirhe.",
|
||||
"RemotePathMappingCheckFilesBadDockerPath": "Käytät Dockeria ja lataustyökalu '{0}' ilmoitti latauskohteeksi '{1}', mutta se ei ole kelvollinen '{2}' -sijainti. Tarkista etäsijaintiesi kartoitukset ja lataustyökalun asetukset.",
|
||||
"RemotePathMappingCheckFolderPermissions": "Radarr näkee, muttei voi käyttää latauskansiota '{0}'. Todennäköinen syy on sijainnin käyttöoikeusvirhe.",
|
||||
"RemotePathMappingCheckFolderPermissions": "Ladatauskansio \"{1}\" näkyy, mutta sitä ei voida käyttää. Todennäköinen syy on sijainnin käyttöoikeusvirhe.",
|
||||
"RemotePathMappingCheckFilesLocalWrongOSPath": "Paikallinen lataustyökalu '{0}' ilmoitti tiedostosijainniksi '{1}', mutta se ei ole kelvollinen '{2}' -sijainti. Tarkista lataustyökalusi asetukset.",
|
||||
"RemotePathMappingCheckFilesWrongOSPath": "Etälataustyökalu '{0}' ilmoitti tiedostosijainniksi '{1}', mutta se ei ole kelvollinen '{2}' -sijainti. Tarkista etsijaintiesi kartoitukset lataustyökalusi asetukset.",
|
||||
"RemotePathMappingCheckGenericPermissions": "Lataustyökalu '{0}' sijoittaa lataukset kansioon '{1}', mutta Readarr ei näe sitä. Saatat joutua muokkaamaan kansion käyttöoikeuksia.",
|
||||
"RemotePathMappingCheckGenericPermissions": "Lataustyökalu \"{0}\" tallentaa lataukset sijaintiin \"{1}\", mutta kansiota ei nähdä. Saatat joutua muokkaamaan kansion käyttöoikeuksia.",
|
||||
"RemotePathMappingCheckLocalFolderMissing": "Etälataustyökalu '{0}' sijoittaa lataukset kohteeseen '{1}', mutta kansiota ei näytä olevan olemassa. Todennäköinen syy on puuttuva tai virheellinen etäsijainnin kartoitus.",
|
||||
"RemotePathMappingCheckLocalWrongOSPath": "Paikallinen lataustyökalu '{0}' sijoittaa lataukset kohteeseen '{1}', mutta se ei ole kelvollinen '{2}' -sijainti. Tarkista lataustyökalun asetukset.",
|
||||
"RemotePathMappingCheckRemoteDownloadClient": "Etälataustyökalu '{0}' ilmoitti tiedostosijainniksi '{1}', mutta kansiota ei näytä olevan olemassa. Todennäköinen syy on puuttuva tai virheellinen etäsijainnin kartoitus.",
|
||||
"RemotePathMappingCheckWrongOSPath": "Etälataustyökalu '{0}' sijoittaa lataukset kohteeseen '{1}', mutta se ei ole kelvollinen '{2}' -sijainti. Tarkista etäsijaintiesi kartoitukset ja lataustyökalun asetukset.",
|
||||
"RestartReloadNote": "Huomautus: Radarr käynnistää ja lataa käyttöliittymän automaattisesti palautusprosessin aikana.",
|
||||
"RestartReloadNote": "Huomioi: Sovellus käynnistyy palautusprosessin aikana automaattisesti uudelleen.",
|
||||
"DownloadClientStatusCheckAllClientMessage": "Yhtään lataustyökalua ei ole virheiden vuoksi käytettävissä",
|
||||
"DownloadClientsSettingsSummary": "Lataustyökalut, latausten käsittely ja etäsijaintien kartoitukset.",
|
||||
"Connect": "Kytkennät",
|
||||
@@ -655,9 +655,9 @@
|
||||
"FileWasDeletedByUpgrade": "Tiedosto poistettiin päivityksen tuontia varten.",
|
||||
"HealthNoIssues": "Kokoonpanossasi ei ole ongelmia.",
|
||||
"IndexerRssHealthCheckNoAvailableIndexers": "Kaikki RSS-tietolähteet ovat tilapaisesti tavoittamattomissa viimeaikaisten tietolähdevirheiden vuoksi.",
|
||||
"IndexerRssHealthCheckNoIndexers": "Yhtään RSS-synkronointia käyttävää tietolähdettä ei ole käytettävissä, eikä uusia julkaisuja sen vuoksi siepata automaattisesti.",
|
||||
"IndexerRssHealthCheckNoIndexers": "RSS-synkronointia käyttäviä tietolähteitä määritetty, jonka vuoksi uusia julkaisuja ei siepata automaattisesti.",
|
||||
"IndexerStatusCheckSingleClientMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi: {0}",
|
||||
"MissingFromDisk": "Radarr ei löytänyt tiedostoa levyltä, joten sen kytkös kirjaston elokuvaan poistettiin",
|
||||
"MissingFromDisk": "Koska tiedostoa ei löytynyt levyltä, sen kytkös kirjastossa olevaan kirjaan poistettiin.",
|
||||
"Monitor": "Valvo",
|
||||
"MountCheckMessage": "Elokuvareitin sisältävä kiinnike on asennettu vain luku -tilaan: ",
|
||||
"OnBookFileDelete": "Kun elokuvatiedosto poistetaan",
|
||||
@@ -670,12 +670,12 @@
|
||||
"ProxyCheckResolveIpMessage": "Määritetyn välityspalvelimen '{0}' IP-osoitteen selvitys epäonnistui.",
|
||||
"QualitySettingsSummary": "Laatumääritykset erilaisia sisältömuotoja ja tiedostokokoja varten.",
|
||||
"QueueIsEmpty": "Jono on tyhjä",
|
||||
"ReadarrSupportsAnyDownloadClient": "Radarr tukee kaikkien Newznab-yhteensopivien lataustyökalujen ohella myös monia muita alla listattuja torrent- ja Usenet-lataustyökaluja.",
|
||||
"ReadarrSupportsAnyDownloadClient": "Monet torrent- ja Usenet-lataustyökalut ovat tuettuja.",
|
||||
"RefreshAndScan": "Päivitä ja tarkista",
|
||||
"RemotePathMappingCheckBadDockerPath": "Käytät Dockeria ja lataustyökalu '{0}' sijoittaa lataukset kohteeseen '{1}', mutta se ei ole kelvollinen '{2}' -sijainti. Tarkista etäsijaintiesi kartoitukset ja lataustyökalun asetukset.",
|
||||
"RootFolderCheckMultipleMessage": "Useita juurikansioita puuttuu: {0}",
|
||||
"SettingsRemotePathMappingLocalPath": "Paikallinen sijainti",
|
||||
"SettingsRemotePathMappingLocalPathHelpText": "Polku, jota Radarrin tulisi käyttää päästäksesi etäpolulle paikallisesti",
|
||||
"SettingsRemotePathMappingLocalPathHelpText": "Polku, jonka kautta etäsijaintia tulee käyttää paikallisesti.",
|
||||
"SettingsRemotePathMappingRemotePath": "Etäsijainti",
|
||||
"SettingsRemotePathMappingRemotePathHelpText": "Lataustyökalun käyttämän hakemiston juurisijainti",
|
||||
"SizeLimit": "Kokorajoitus",
|
||||
@@ -832,5 +832,6 @@
|
||||
"ResetQualityDefinitions": "Palauta laatumääritykset",
|
||||
"ResetQualityDefinitionsMessageText": "Haluatko varmasti palauttaa laatumääritykset?",
|
||||
"NoEventsFound": "Tapahtumia ei löytynyt",
|
||||
"BlocklistReleaseHelpText": "Estää julkaisun automaattisen uudelleensieppauksen."
|
||||
"BlocklistReleaseHelpText": "Estää julkaisun automaattisen uudelleensieppauksen.",
|
||||
"RecycleBinUnableToWriteHealthCheck": "Määritettyyn roskakorikansioon ei voi tallentaa: {0}. Varmista, että sijainti on olemassa ja että käyttäjällä on kirjoitusoikeus kansioon."
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"SslPortHelpTextWarning": "Nécessite un redémarrage pour prendre effet",
|
||||
"SslCertPathHelpTextWarning": "Nécessite un redémarrage pour prendre effet",
|
||||
"UnableToLoadMetadataProfiles": "Impossible de charger les profils de délai",
|
||||
"AddingTag": "Ajouter un tag",
|
||||
"AddingTag": "Ajout d'un tag",
|
||||
"AgeWhenGrabbed": "Age (au moment du téléchargement)",
|
||||
"AlreadyInYourLibrary": "Déjà présent dans votre collection",
|
||||
"AlternateTitles": "Titre alternatif",
|
||||
@@ -31,7 +31,7 @@
|
||||
"AnalyticsEnabledHelpText": "Envoyer des informations anonymes sur l'utilisation et les erreurs vers les serveurs de Readarr. Cela inclut des informations sur votre navigateur, quelle page de l'interface web Readarr vous utilisez, les rapports d'erreur ainsi que le SE et sa version. Nous utiliserons ces informations pour prioriser les nouvelles fonctionnalités et les corrections de bugs.",
|
||||
"AnalyticsEnabledHelpTextWarning": "Nécessite un redémarrage pour prendre effet",
|
||||
"AppDataDirectory": "Dossier AppData",
|
||||
"ApplyTags": "Appliquer les Étiquettes",
|
||||
"ApplyTags": "Appliquer les tags",
|
||||
"ApplyTagsHelpTexts1": "Comment appliquer des tags à l'auteur sélectionné",
|
||||
"ApplyTagsHelpTexts2": "Ajouter : Ajouter les étiquettes à la liste des étiquettes existantes",
|
||||
"ApplyTagsHelpTexts3": "Retirer : Retire les étiquettes renseignées",
|
||||
|
||||
@@ -29,11 +29,11 @@
|
||||
"Analytics": "Análises",
|
||||
"AnalyticsEnabledHelpText": "Envie informações anônimas de uso e erro para os servidores do Readarr. Isso inclui informações sobre seu navegador, quais páginas da interface Web do Readarr você usa, relatórios de erros, e a versão do sistema operacional e do tempo de execução. Usaremos essas informações para priorizar recursos e correções de bugs.",
|
||||
"AppDataDirectory": "Diretório AppData",
|
||||
"ApplyTags": "Aplicar tags",
|
||||
"ApplyTags": "Aplicar Tags",
|
||||
"ApplyTagsHelpTexts1": "Como aplicar tags ao autor selecionado",
|
||||
"ApplyTagsHelpTexts2": "Adicionar: adiciona as etiquetas à lista existente de etiquetas",
|
||||
"ApplyTagsHelpTexts3": "Remover: excluir as tags inseridas",
|
||||
"ApplyTagsHelpTexts4": "Substituir: sobrepor as tags existentes pelas inseridas (deixe em branco para limpar todas as tags)",
|
||||
"ApplyTagsHelpTexts2": "Adicionar: adicione as tags à lista existente de tags",
|
||||
"ApplyTagsHelpTexts3": "Remover: remove as tags inseridas",
|
||||
"ApplyTagsHelpTexts4": "Substituir: Substitua as tags pelas tags inseridas (não digite nenhuma tag para limpar todas as tags)",
|
||||
"Authentication": "Autenticação",
|
||||
"AuthenticationMethodHelpText": "Exigir nome de usuário e senha para acessar o Readarr",
|
||||
"AuthorClickToChangeBook": "Clique para alterar o livro",
|
||||
@@ -692,7 +692,7 @@
|
||||
"Monitoring": "Monitorando",
|
||||
"SeriesTotal": "Séries ({0})",
|
||||
"TooManyBooks": "Livros ausentes ou muitos? Modifique ou crie um novo",
|
||||
"BlocklistRelease": "Lista de Bloqueio de Lançamentos",
|
||||
"BlocklistRelease": "Lançamento na lista de bloqueio",
|
||||
"NoHistoryBlocklist": "Nenhum histórico na lista de bloqueio",
|
||||
"Blocklist": "Lista de bloqueio",
|
||||
"RemoveFromBlocklist": "Remover da lista de bloqueio",
|
||||
@@ -890,14 +890,14 @@
|
||||
"MinFormatScoreHelpText": "Pontuação mínima de formato personalizado permitida para download",
|
||||
"RecycleBinUnableToWriteHealthCheck": "Não é possível gravar na pasta da lixeira configurada: {0}. Certifique-se de que este caminho exista e seja gravável pelo usuário executando o Readarr",
|
||||
"Clone": "Clonar",
|
||||
"CloneCustomFormat": "Clonar Formato Personalizado",
|
||||
"CloneCustomFormat": "Clonar formato personalizado",
|
||||
"Conditions": "'Condições'",
|
||||
"CopyToClipboard": "Copiar para área de transferência",
|
||||
"CustomFormat": "Formato Personalizado",
|
||||
"CustomFormatSettings": "Configurações do Formato Personalizado",
|
||||
"CustomFormats": "Formatos Personalizados",
|
||||
"CutoffFormatScoreHelpText": "Depois que essa pontuação de formato personalizado for alcançada, Readarr não obterá mais lançamentos de livros",
|
||||
"DeleteCustomFormat": "Excluir Formato Personalizado",
|
||||
"DeleteCustomFormat": "Excluir formato personalizado",
|
||||
"ExportCustomFormat": "Exportar Formato Personalizado",
|
||||
"Formats": "Formatos",
|
||||
"Loading": "carregando",
|
||||
@@ -926,11 +926,11 @@
|
||||
"SmartReplace": "Substituição Inteligente",
|
||||
"ReplaceWithSpaceDashSpace": "Substituir com Espaço e Traço e Espaço",
|
||||
"DeleteRemotePathMapping": "Excluir Mapeamento de Caminho Remoto",
|
||||
"BlocklistReleases": "Lista de Bloqueio de Lançamentos",
|
||||
"CloneCondition": "Condição de Clone",
|
||||
"BlocklistReleases": "Lançamentos na lista de bloqueio",
|
||||
"CloneCondition": "Condição de clone",
|
||||
"DeleteConditionMessageText": "Tem certeza de que deseja excluir a condição '{0}'?",
|
||||
"DeleteRemotePathMappingMessageText": "Tem certeza de que deseja excluir este mapeamento de caminho remoto?",
|
||||
"DeleteCondition": "Excluir Condição",
|
||||
"DeleteCondition": "Excluir condição",
|
||||
"Negated": "Negado",
|
||||
"RemoveSelectedItem": "Remover Item Selecionado",
|
||||
"RemoveSelectedItemBlocklistMessageText": "Tem certeza de que deseja remover os itens selecionados da lista de bloqueio?",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"ApplyTags": "应用标签",
|
||||
"ApplyTagsHelpTexts1": "如何给选中的电影添加标签",
|
||||
"ApplyTagsHelpTexts2": "添加:将标签添加到现有标签列表",
|
||||
"ApplyTagsHelpTexts3": "删除:移除输入的标签",
|
||||
"ApplyTagsHelpTexts3": "删除:删除输入的标签",
|
||||
"ApplyTagsHelpTexts4": "替换:用输入的标签替换标签(不输入标签将清除所有标签)",
|
||||
"Authentication": "认证",
|
||||
"AuthenticationMethodHelpText": "您需要用户名和密码来访问Radarr",
|
||||
@@ -290,7 +290,7 @@
|
||||
"RescanAuthorFolderAfterRefresh": "刷新后重新扫描作者文件夹",
|
||||
"Reset": "重置",
|
||||
"ResetAPIKey": "重置API Key",
|
||||
"ResetAPIKeyMessageText": "您确定要重置您的API密钥吗?",
|
||||
"ResetAPIKeyMessageText": "您确定要重置您的 API 密钥吗?",
|
||||
"Restart": "重启",
|
||||
"RestartNow": "马上重启",
|
||||
"RestartReadarr": "重启Radarr",
|
||||
@@ -796,7 +796,7 @@
|
||||
"MinPopularityHelpText": "人气是平均评分*票",
|
||||
"MonitorBookExistingOnlyWarning": "这是对每本书籍的监控设置的一次性调整 使用作者/编辑下的选项来控制新添加的书籍将如何",
|
||||
"NameFirstLast": "姓名",
|
||||
"NoHistoryBlocklist": "没有历史黑名单列表",
|
||||
"NoHistoryBlocklist": "没有历史黑名单",
|
||||
"OnAuthorDelete": "在作者删除时",
|
||||
"OnBookRetagHelpText": "在书籍重加标签时",
|
||||
"OnImportFailure": "在导入失败时",
|
||||
@@ -906,10 +906,19 @@
|
||||
"CustomFormatScore": "自定义格式分数",
|
||||
"DataFutureBooks": "监控尚未发布的书籍",
|
||||
"ExportCustomFormat": "已有自定义格式",
|
||||
"ResetDefinitionTitlesHelpText": "重置定义标题与参数值",
|
||||
"ResetDefinitionTitlesHelpText": "重置定义标题和值",
|
||||
"DeleteRemotePathMappingMessageText": "是否确实要删除此远程路径映射?",
|
||||
"ListRefreshInterval": "列表刷新间隔",
|
||||
"CloneCondition": "克隆条件",
|
||||
"DeleteCondition": "删除条件",
|
||||
"ApiKeyValidationHealthCheckMessage": "请将API密钥更新为至少{0}个字符长。您可以通过设置或配置文件执行此操作"
|
||||
"ApiKeyValidationHealthCheckMessage": "请将API密钥更新为至少{0}个字符长。您可以通过设置或配置文件执行此操作",
|
||||
"HiddenClickToShow": "隐藏,点击显示",
|
||||
"HideAdvanced": "隐藏高级",
|
||||
"ListWillRefreshEveryInterp": "列表将每 {0} 刷新一次",
|
||||
"ShowAdvanced": "显示高级",
|
||||
"ShownClickToHide": "显示,点击隐藏",
|
||||
"RemoveSelectedItemQueueMessageText": "您确定要从队列中删除 1 项吗?",
|
||||
"RemoveSelectedItemBlocklistMessageText": "您确定要从阻止列表中删除所选项目吗?",
|
||||
"RemoveSelectedItemsQueueMessageText": "您确定要从队列中删除 {0} 个项目吗?",
|
||||
"ResetQualityDefinitionsMessageText": "您确定要重置质量定义吗?"
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace Readarr.Api.V1.Queue
|
||||
public BookResource Book { get; set; }
|
||||
public QualityModel Quality { get; set; }
|
||||
public List<CustomFormatResource> CustomFormats { get; set; }
|
||||
public int CustomFormatScore { get; set; }
|
||||
public decimal Size { get; set; }
|
||||
public string Title { get; set; }
|
||||
public decimal Sizeleft { get; set; }
|
||||
@@ -47,6 +48,9 @@ namespace Readarr.Api.V1.Queue
|
||||
return null;
|
||||
}
|
||||
|
||||
var customFormats = model.RemoteBook?.CustomFormats;
|
||||
var customFormatScore = model.RemoteBook?.Author?.QualityProfile?.Value?.CalculateCustomFormatScore(customFormats) ?? 0;
|
||||
|
||||
return new QueueResource
|
||||
{
|
||||
Id = model.Id,
|
||||
@@ -55,7 +59,8 @@ namespace Readarr.Api.V1.Queue
|
||||
Author = includeAuthor && model.Author != null ? model.Author.ToResource() : null,
|
||||
Book = includeBook && model.Book != null ? model.Book.ToResource() : null,
|
||||
Quality = model.Quality,
|
||||
CustomFormats = model.RemoteBook?.CustomFormats?.ToResource(false),
|
||||
CustomFormats = customFormats?.ToResource(false),
|
||||
CustomFormatScore = customFormatScore,
|
||||
Size = model.Size,
|
||||
Title = model.Title,
|
||||
Sizeleft = model.Sizeleft,
|
||||
|
||||
@@ -11930,6 +11930,10 @@
|
||||
},
|
||||
"nullable": true
|
||||
},
|
||||
"customFormatScore": {
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
"size": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
|
||||
Reference in New Issue
Block a user