mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-18 21:34:28 -04:00
Compare commits
20 Commits
v0.3.19.24
...
v0.3.20.24
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3407cc9a7a | ||
|
|
4829916f0a | ||
|
|
c505eafd30 | ||
|
|
07f218f294 | ||
|
|
42751b598b | ||
|
|
5e7e0eb50b | ||
|
|
d6c631457c | ||
|
|
12ee76d222 | ||
|
|
3ea80038d3 | ||
|
|
55404cdf24 | ||
|
|
83a9cd4f3e | ||
|
|
3572d7330d | ||
|
|
a9b652a280 | ||
|
|
8efb2eb71a | ||
|
|
17094f1998 | ||
|
|
ddf5dc25a1 | ||
|
|
fa2614954b | ||
|
|
2e2894b3d3 | ||
|
|
59ff407e76 | ||
|
|
bbd7b9f92e |
@@ -9,14 +9,14 @@ variables:
|
|||||||
testsFolder: './_tests'
|
testsFolder: './_tests'
|
||||||
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
||||||
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
||||||
majorVersion: '0.3.19'
|
majorVersion: '0.3.20'
|
||||||
minorVersion: $[counter('minorVersion', 1)]
|
minorVersion: $[counter('minorVersion', 1)]
|
||||||
readarrVersion: '$(majorVersion).$(minorVersion)'
|
readarrVersion: '$(majorVersion).$(minorVersion)'
|
||||||
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
|
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
|
||||||
sentryOrg: 'servarr'
|
sentryOrg: 'servarr'
|
||||||
sentryUrl: 'https://sentry.servarr.com'
|
sentryUrl: 'https://sentry.servarr.com'
|
||||||
dotnetVersion: '6.0.417'
|
dotnetVersion: '6.0.417'
|
||||||
nodeVersion: '16.X'
|
nodeVersion: '20.X'
|
||||||
innoVersion: '6.2.0'
|
innoVersion: '6.2.0'
|
||||||
windowsImage: 'windows-2022'
|
windowsImage: 'windows-2022'
|
||||||
linuxImage: 'ubuntu-20.04'
|
linuxImage: 'ubuntu-20.04'
|
||||||
|
|||||||
@@ -218,10 +218,12 @@ class HistoryRow extends Component {
|
|||||||
key={name}
|
key={name}
|
||||||
className={styles.details}
|
className={styles.details}
|
||||||
>
|
>
|
||||||
<IconButton
|
<div className={styles.actionContents}>
|
||||||
name={icons.INFO}
|
<IconButton
|
||||||
onPress={this.onDetailsPress}
|
name={icons.INFO}
|
||||||
/>
|
onPress={this.onDetailsPress}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</TableRowCell>
|
</TableRowCell>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ class BookRow extends Component {
|
|||||||
releaseDate,
|
releaseDate,
|
||||||
title,
|
title,
|
||||||
seriesTitle,
|
seriesTitle,
|
||||||
|
authorName,
|
||||||
position,
|
position,
|
||||||
pageCount,
|
pageCount,
|
||||||
ratings,
|
ratings,
|
||||||
@@ -211,6 +212,7 @@ class BookRow extends Component {
|
|||||||
bookId={id}
|
bookId={id}
|
||||||
authorId={authorId}
|
authorId={authorId}
|
||||||
bookTitle={title}
|
bookTitle={title}
|
||||||
|
authorName={authorName}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -229,6 +231,7 @@ BookRow.propTypes = {
|
|||||||
releaseDate: PropTypes.string,
|
releaseDate: PropTypes.string,
|
||||||
title: PropTypes.string.isRequired,
|
title: PropTypes.string.isRequired,
|
||||||
seriesTitle: PropTypes.string.isRequired,
|
seriesTitle: PropTypes.string.isRequired,
|
||||||
|
authorName: PropTypes.string.isRequired,
|
||||||
position: PropTypes.string,
|
position: PropTypes.string,
|
||||||
pageCount: PropTypes.number,
|
pageCount: PropTypes.number,
|
||||||
ratings: PropTypes.object.isRequired,
|
ratings: PropTypes.object.isRequired,
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ function createMapStateToProps() {
|
|||||||
(author = {}, bookFiles, bookId) => {
|
(author = {}, bookFiles, bookId) => {
|
||||||
return {
|
return {
|
||||||
authorMonitored: author.monitored,
|
authorMonitored: author.monitored,
|
||||||
|
authorName: author.authorName,
|
||||||
bookFiles: bookFiles[bookId] ?? []
|
bookFiles: bookFiles[bookId] ?? []
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class BookSearchCell extends Component {
|
|||||||
const {
|
const {
|
||||||
bookId,
|
bookId,
|
||||||
bookTitle,
|
bookTitle,
|
||||||
|
authorName,
|
||||||
isSearching,
|
isSearching,
|
||||||
onSearchPress,
|
onSearchPress,
|
||||||
...otherProps
|
...otherProps
|
||||||
@@ -60,6 +61,7 @@ class BookSearchCell extends Component {
|
|||||||
isOpen={this.state.isDetailsModalOpen}
|
isOpen={this.state.isDetailsModalOpen}
|
||||||
bookId={bookId}
|
bookId={bookId}
|
||||||
bookTitle={bookTitle}
|
bookTitle={bookTitle}
|
||||||
|
authorName={authorName}
|
||||||
onModalClose={this.onDetailsModalClose}
|
onModalClose={this.onDetailsModalClose}
|
||||||
{...otherProps}
|
{...otherProps}
|
||||||
/>
|
/>
|
||||||
@@ -73,6 +75,7 @@ BookSearchCell.propTypes = {
|
|||||||
bookId: PropTypes.number.isRequired,
|
bookId: PropTypes.number.isRequired,
|
||||||
authorId: PropTypes.number.isRequired,
|
authorId: PropTypes.number.isRequired,
|
||||||
bookTitle: PropTypes.string.isRequired,
|
bookTitle: PropTypes.string.isRequired,
|
||||||
|
authorName: PropTypes.string.isRequired,
|
||||||
isSearching: PropTypes.bool.isRequired,
|
isSearching: PropTypes.bool.isRequired,
|
||||||
onSearchPress: PropTypes.func.isRequired
|
onSearchPress: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,19 +9,21 @@ function BookInteractiveSearchModal(props) {
|
|||||||
isOpen,
|
isOpen,
|
||||||
bookId,
|
bookId,
|
||||||
bookTitle,
|
bookTitle,
|
||||||
|
authorName,
|
||||||
onModalClose
|
onModalClose
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
size={sizes.EXTRA_LARGE}
|
size={sizes.EXTRA_EXTRA_LARGE}
|
||||||
closeOnBackgroundClick={false}
|
closeOnBackgroundClick={false}
|
||||||
onModalClose={onModalClose}
|
onModalClose={onModalClose}
|
||||||
>
|
>
|
||||||
<BookInteractiveSearchModalContent
|
<BookInteractiveSearchModalContent
|
||||||
bookId={bookId}
|
bookId={bookId}
|
||||||
bookTitle={bookTitle}
|
bookTitle={bookTitle}
|
||||||
|
authorName={authorName}
|
||||||
onModalClose={onModalClose}
|
onModalClose={onModalClose}
|
||||||
/>
|
/>
|
||||||
</Modal>
|
</Modal>
|
||||||
@@ -32,6 +34,7 @@ BookInteractiveSearchModal.propTypes = {
|
|||||||
isOpen: PropTypes.bool.isRequired,
|
isOpen: PropTypes.bool.isRequired,
|
||||||
bookId: PropTypes.number.isRequired,
|
bookId: PropTypes.number.isRequired,
|
||||||
bookTitle: PropTypes.string.isRequired,
|
bookTitle: PropTypes.string.isRequired,
|
||||||
|
authorName: PropTypes.string.isRequired,
|
||||||
onModalClose: PropTypes.func.isRequired
|
onModalClose: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,18 +7,23 @@ import ModalFooter from 'Components/Modal/ModalFooter';
|
|||||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||||
import { scrollDirections } from 'Helpers/Props';
|
import { scrollDirections } from 'Helpers/Props';
|
||||||
import InteractiveSearchConnector from 'InteractiveSearch/InteractiveSearchConnector';
|
import InteractiveSearchConnector from 'InteractiveSearch/InteractiveSearchConnector';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
|
|
||||||
function BookInteractiveSearchModalContent(props) {
|
function BookInteractiveSearchModalContent(props) {
|
||||||
const {
|
const {
|
||||||
bookId,
|
bookId,
|
||||||
bookTitle,
|
bookTitle,
|
||||||
|
authorName,
|
||||||
onModalClose
|
onModalClose
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ModalContent onModalClose={onModalClose}>
|
<ModalContent onModalClose={onModalClose}>
|
||||||
<ModalHeader>
|
<ModalHeader>
|
||||||
Interactive Search {bookId != null && `- ${bookTitle}`}
|
{bookId === null ?
|
||||||
|
translate('InteractiveSearchModalHeader') :
|
||||||
|
translate('InteractiveSearchModalHeaderBookAuthor', { bookTitle, authorName })
|
||||||
|
}
|
||||||
</ModalHeader>
|
</ModalHeader>
|
||||||
|
|
||||||
<ModalBody scrollDirection={scrollDirections.BOTH}>
|
<ModalBody scrollDirection={scrollDirections.BOTH}>
|
||||||
@@ -32,7 +37,7 @@ function BookInteractiveSearchModalContent(props) {
|
|||||||
|
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button onPress={onModalClose}>
|
<Button onPress={onModalClose}>
|
||||||
Close
|
{translate('Close')}
|
||||||
</Button>
|
</Button>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
@@ -42,6 +47,7 @@ function BookInteractiveSearchModalContent(props) {
|
|||||||
BookInteractiveSearchModalContent.propTypes = {
|
BookInteractiveSearchModalContent.propTypes = {
|
||||||
bookId: PropTypes.number.isRequired,
|
bookId: PropTypes.number.isRequired,
|
||||||
bookTitle: PropTypes.string.isRequired,
|
bookTitle: PropTypes.string.isRequired,
|
||||||
|
authorName: PropTypes.string.isRequired,
|
||||||
onModalClose: PropTypes.func.isRequired
|
onModalClose: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { maxBy } from 'lodash';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||||
@@ -50,7 +51,7 @@ class FilterBuilderModalContent extends Component {
|
|||||||
if (id) {
|
if (id) {
|
||||||
dispatchSetFilter({ selectedFilterKey: id });
|
dispatchSetFilter({ selectedFilterKey: id });
|
||||||
} else {
|
} else {
|
||||||
const last = customFilters[customFilters.length -1];
|
const last = maxBy(customFilters, 'id');
|
||||||
dispatchSetFilter({ selectedFilterKey: last.id });
|
dispatchSetFilter({ selectedFilterKey: last.id });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +109,7 @@ class FilterBuilderModalContent extends Component {
|
|||||||
this.setState({
|
this.setState({
|
||||||
labelErrors: [
|
labelErrors: [
|
||||||
{
|
{
|
||||||
message: 'Label is required'
|
message: translate('LabelIsRequired')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
@@ -146,13 +147,13 @@ class FilterBuilderModalContent extends Component {
|
|||||||
return (
|
return (
|
||||||
<ModalContent onModalClose={onModalClose}>
|
<ModalContent onModalClose={onModalClose}>
|
||||||
<ModalHeader>
|
<ModalHeader>
|
||||||
Custom Filter
|
{translate('CustomFilter')}
|
||||||
</ModalHeader>
|
</ModalHeader>
|
||||||
|
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
<div className={styles.labelContainer}>
|
<div className={styles.labelContainer}>
|
||||||
<div className={styles.label}>
|
<div className={styles.label}>
|
||||||
Label
|
{translate('Label')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={styles.labelInputContainer}>
|
<div className={styles.labelInputContainer}>
|
||||||
@@ -195,7 +196,7 @@ class FilterBuilderModalContent extends Component {
|
|||||||
|
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button onPress={onCancelPress}>
|
<Button onPress={onCancelPress}>
|
||||||
Cancel
|
{translate('Cancel')}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<SpinnerErrorButton
|
<SpinnerErrorButton
|
||||||
@@ -203,7 +204,7 @@ class FilterBuilderModalContent extends Component {
|
|||||||
error={saveError}
|
error={saveError}
|
||||||
onPress={this.onSaveFilterPress}
|
onPress={this.onSaveFilterPress}
|
||||||
>
|
>
|
||||||
Save
|
{translate('Save')}
|
||||||
</SpinnerErrorButton>
|
</SpinnerErrorButton>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ class CustomFilter extends Component {
|
|||||||
dispatchSetFilter
|
dispatchSetFilter
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
// Assume that delete and then unmounting means the delete was successful.
|
// Assume that delete and then unmounting means the deletion was successful.
|
||||||
// Moving this check to a ancestor would be more accurate, but would have
|
// Moving this check to an ancestor would be more accurate, but would have
|
||||||
// more boilerplate.
|
// more boilerplate.
|
||||||
if (this.state.isDeleting && id === selectedFilterKey) {
|
if (this.state.isDeleting && id === selectedFilterKey) {
|
||||||
dispatchSetFilter({ selectedFilterKey: 'all' });
|
dispatchSetFilter({ selectedFilterKey: 'all' });
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ class TextTagInputConnector extends Component {
|
|||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<TagInput
|
<TagInput
|
||||||
|
delimiters={['Tab', 'Enter', ',']}
|
||||||
tagList={[]}
|
tagList={[]}
|
||||||
onTagAdd={this.onTagAdd}
|
onTagAdd={this.onTagAdd}
|
||||||
onTagDelete={this.onTagDelete}
|
onTagDelete={this.onTagDelete}
|
||||||
|
|||||||
@@ -63,6 +63,13 @@
|
|||||||
width: 1280px;
|
width: 1280px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.extraExtraLarge {
|
||||||
|
composes: modal;
|
||||||
|
|
||||||
|
width: 1600px;
|
||||||
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: $breakpointExtraLarge) {
|
@media only screen and (max-width: $breakpointExtraLarge) {
|
||||||
.modal.extraLarge {
|
.modal.extraLarge {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
@@ -90,7 +97,8 @@
|
|||||||
.modal.small,
|
.modal.small,
|
||||||
.modal.medium,
|
.modal.medium,
|
||||||
.modal.large,
|
.modal.large,
|
||||||
.modal.extraLarge {
|
.modal.extraLarge,
|
||||||
|
.modal.extraExtraLarge {
|
||||||
max-height: 100%;
|
max-height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
|
|||||||
1
frontend/src/Components/Modal/Modal.css.d.ts
vendored
1
frontend/src/Components/Modal/Modal.css.d.ts
vendored
@@ -1,6 +1,7 @@
|
|||||||
// This file is automatically generated.
|
// This file is automatically generated.
|
||||||
// Please do not change this file!
|
// Please do not change this file!
|
||||||
interface CssExports {
|
interface CssExports {
|
||||||
|
'extraExtraLarge': string;
|
||||||
'extraLarge': string;
|
'extraLarge': string;
|
||||||
'large': string;
|
'large': string;
|
||||||
'medium': string;
|
'medium': string;
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ export const SMALL = 'small';
|
|||||||
export const MEDIUM = 'medium';
|
export const MEDIUM = 'medium';
|
||||||
export const LARGE = 'large';
|
export const LARGE = 'large';
|
||||||
export const EXTRA_LARGE = 'extraLarge';
|
export const EXTRA_LARGE = 'extraLarge';
|
||||||
|
export const EXTRA_EXTRA_LARGE = 'extraExtraLarge';
|
||||||
export const all = [EXTRA_SMALL, SMALL, MEDIUM, LARGE, EXTRA_LARGE];
|
export const all = [EXTRA_SMALL, SMALL, MEDIUM, LARGE, EXTRA_LARGE, EXTRA_EXTRA_LARGE];
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ class InteractiveImportModal extends Component {
|
|||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
size={sizes.EXTRA_LARGE}
|
size={sizes.EXTRA_EXTRA_LARGE}
|
||||||
closeOnBackgroundClick={false}
|
closeOnBackgroundClick={false}
|
||||||
onModalClose={onModalClose}
|
onModalClose={onModalClose}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -8,12 +8,11 @@
|
|||||||
width: 80px;
|
width: 80px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.titleContent {
|
||||||
composes: cell;
|
display: flex;
|
||||||
}
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
.title div {
|
word-break: break-all;
|
||||||
overflow-wrap: break-word;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.indexer {
|
.indexer {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ interface CssExports {
|
|||||||
'quality': string;
|
'quality': string;
|
||||||
'rejected': string;
|
'rejected': string;
|
||||||
'size': string;
|
'size': string;
|
||||||
'title': string;
|
'titleContent': string;
|
||||||
}
|
}
|
||||||
export const cssExports: CssExports;
|
export const cssExports: CssExports;
|
||||||
export default cssExports;
|
export default cssExports;
|
||||||
|
|||||||
@@ -153,10 +153,12 @@ class InteractiveSearchRow extends Component {
|
|||||||
{formatAge(age, ageHours, ageMinutes)}
|
{formatAge(age, ageHours, ageMinutes)}
|
||||||
</TableRowCell>
|
</TableRowCell>
|
||||||
|
|
||||||
<TableRowCell className={styles.title}>
|
<TableRowCell>
|
||||||
<Link to={infoUrl}>
|
<div className={styles.titleContent}>
|
||||||
{title}
|
<Link to={infoUrl}>
|
||||||
</Link>
|
{title}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
</TableRowCell>
|
</TableRowCell>
|
||||||
|
|
||||||
<TableRowCell className={styles.indexer}>
|
<TableRowCell className={styles.indexer}>
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
|||||||
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
||||||
import Table from 'Components/Table/Table';
|
import Table from 'Components/Table/Table';
|
||||||
import TableBody from 'Components/Table/TableBody';
|
import TableBody from 'Components/Table/TableBody';
|
||||||
|
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
|
||||||
import TablePager from 'Components/Table/TablePager';
|
import TablePager from 'Components/Table/TablePager';
|
||||||
import { align, icons, kinds } from 'Helpers/Props';
|
import { align, icons, kinds } from 'Helpers/Props';
|
||||||
import getFilterValue from 'Utilities/Filter/getFilterValue';
|
import getFilterValue from 'Utilities/Filter/getFilterValue';
|
||||||
@@ -173,6 +174,16 @@ class CutoffUnmet extends Component {
|
|||||||
</PageToolbarSection>
|
</PageToolbarSection>
|
||||||
|
|
||||||
<PageToolbarSection alignContent={align.RIGHT}>
|
<PageToolbarSection alignContent={align.RIGHT}>
|
||||||
|
<TableOptionsModalWrapper
|
||||||
|
{...otherProps}
|
||||||
|
columns={columns}
|
||||||
|
>
|
||||||
|
<PageToolbarButton
|
||||||
|
label={translate('Options')}
|
||||||
|
iconName={icons.TABLE}
|
||||||
|
/>
|
||||||
|
</TableOptionsModalWrapper>
|
||||||
|
|
||||||
<FilterMenu
|
<FilterMenu
|
||||||
alignMenu={align.RIGHT}
|
alignMenu={align.RIGHT}
|
||||||
selectedFilterKey={selectedFilterKey}
|
selectedFilterKey={selectedFilterKey}
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ function CutoffUnmetRow(props) {
|
|||||||
bookId={id}
|
bookId={id}
|
||||||
authorId={author.id}
|
authorId={author.id}
|
||||||
bookTitle={title}
|
bookTitle={title}
|
||||||
|
authorName={author.authorName}
|
||||||
bookEntity={bookEntities.WANTED_CUTOFF_UNMET}
|
bookEntity={bookEntities.WANTED_CUTOFF_UNMET}
|
||||||
showOpenAuthorButton={true}
|
showOpenAuthorButton={true}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
|||||||
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
||||||
import Table from 'Components/Table/Table';
|
import Table from 'Components/Table/Table';
|
||||||
import TableBody from 'Components/Table/TableBody';
|
import TableBody from 'Components/Table/TableBody';
|
||||||
|
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
|
||||||
import TablePager from 'Components/Table/TablePager';
|
import TablePager from 'Components/Table/TablePager';
|
||||||
import { align, icons, kinds } from 'Helpers/Props';
|
import { align, icons, kinds } from 'Helpers/Props';
|
||||||
import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal';
|
import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal';
|
||||||
@@ -190,6 +191,16 @@ class Missing extends Component {
|
|||||||
</PageToolbarSection>
|
</PageToolbarSection>
|
||||||
|
|
||||||
<PageToolbarSection alignContent={align.RIGHT}>
|
<PageToolbarSection alignContent={align.RIGHT}>
|
||||||
|
<TableOptionsModalWrapper
|
||||||
|
{...otherProps}
|
||||||
|
columns={columns}
|
||||||
|
>
|
||||||
|
<PageToolbarButton
|
||||||
|
label={translate('Options')}
|
||||||
|
iconName={icons.TABLE}
|
||||||
|
/>
|
||||||
|
</TableOptionsModalWrapper>
|
||||||
|
|
||||||
<FilterMenu
|
<FilterMenu
|
||||||
alignMenu={align.RIGHT}
|
alignMenu={align.RIGHT}
|
||||||
selectedFilterKey={selectedFilterKey}
|
selectedFilterKey={selectedFilterKey}
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ function MissingRow(props) {
|
|||||||
bookId={id}
|
bookId={id}
|
||||||
authorId={author.id}
|
authorId={author.id}
|
||||||
bookTitle={title}
|
bookTitle={title}
|
||||||
|
authorName={author.authorName}
|
||||||
bookEntity={bookEntities.WANTED_MISSING}
|
bookEntity={bookEntities.WANTED_MISSING}
|
||||||
showOpenAuthorButton={true}
|
showOpenAuthorButton={true}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -3,13 +3,16 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="mobile-web-app-capable" content="yes" />
|
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
||||||
|
|
||||||
<!-- Chrome, Opera, and Firefox OS -->
|
<!-- Chrome, Opera, and Firefox OS -->
|
||||||
<meta name="theme-color" content="#3a3f51" />
|
<meta name="theme-color" content="#3a3f51" />
|
||||||
<!-- Windows Phone -->
|
<!-- Windows Phone -->
|
||||||
<meta name="msapplication-navbutton-color" content="#3a3f51" />
|
<meta name="msapplication-navbutton-color" content="#3a3f51" />
|
||||||
|
<!-- Android/Apple Phone -->
|
||||||
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
|
<meta name="format-detection" content="telephone=no">
|
||||||
|
|
||||||
<meta name="description" content="Readarr">
|
<meta name="description" content="Readarr">
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,16 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="mobile-web-app-capable" content="yes" />
|
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
||||||
|
|
||||||
<!-- Chrome, Opera, and Firefox OS -->
|
<!-- Chrome, Opera, and Firefox OS -->
|
||||||
<meta name="theme-color" content="#3a3f51" />
|
<meta name="theme-color" content="#3a3f51" />
|
||||||
<!-- Windows Phone -->
|
<!-- Windows Phone -->
|
||||||
<meta name="msapplication-navbutton-color" content="#3a3f51" />
|
<meta name="msapplication-navbutton-color" content="#3a3f51" />
|
||||||
|
<!-- Android/Apple Phone -->
|
||||||
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
|
<meta name="format-detection" content="telephone=no">
|
||||||
|
|
||||||
<meta name="description" content="Readarr" />
|
<meta name="description" content="Readarr" />
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
using System.Net.Security;
|
using System.Net.Security;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@@ -249,6 +251,18 @@ namespace NzbDrone.Common.Http.Dispatchers
|
|||||||
return _credentialCache.Get("credentialCache", () => new CredentialCache());
|
return _credentialCache.Get("credentialCache", () => new CredentialCache());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool HasRoutableIPv4Address()
|
||||||
|
{
|
||||||
|
// Get all IPv4 addresses from all interfaces and return true if there are any with non-loopback addresses
|
||||||
|
var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
|
||||||
|
|
||||||
|
return networkInterfaces.Any(ni =>
|
||||||
|
ni.OperationalStatus == OperationalStatus.Up &&
|
||||||
|
ni.GetIPProperties().UnicastAddresses.Any(ip =>
|
||||||
|
ip.Address.AddressFamily == AddressFamily.InterNetwork &&
|
||||||
|
!IPAddress.IsLoopback(ip.Address)));
|
||||||
|
}
|
||||||
|
|
||||||
private static async ValueTask<Stream> onConnect(SocketsHttpConnectionContext context, CancellationToken cancellationToken)
|
private static async ValueTask<Stream> onConnect(SocketsHttpConnectionContext context, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
// Until .NET supports an implementation of Happy Eyeballs (https://tools.ietf.org/html/rfc8305#section-2), let's make IPv4 fallback work in a simple way.
|
// Until .NET supports an implementation of Happy Eyeballs (https://tools.ietf.org/html/rfc8305#section-2), let's make IPv4 fallback work in a simple way.
|
||||||
@@ -272,10 +286,8 @@ namespace NzbDrone.Common.Http.Dispatchers
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
// very naively fallback to ipv4 permanently for this execution based on the response of the first connection attempt.
|
// Do not retry IPv6 if a routable IPv4 address is available, otherwise continue to attempt IPv6 connections.
|
||||||
// note that this may cause users to eventually get switched to ipv4 (on a random failure when they are switching networks, for instance)
|
useIPv6 = !HasRoutableIPv4Address();
|
||||||
// but in the interest of keeping this implementation simple, this is acceptable.
|
|
||||||
useIPv6 = false;
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ namespace NzbDrone.Core.Test.MetadataSource.Goodreads
|
|||||||
ExceptionVerification.IgnoreWarns();
|
ExceptionVerification.IgnoreWarns();
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase("Harry Potter and the sorcerer's stone a summary of the novel", 23314781)]
|
[TestCase("Harry Potter and the sorcerer's stone a detailed summary", 61800696)]
|
||||||
[TestCase("B0192CTMYG", 61209488)]
|
[TestCase("B0192CTMYG", 61209488)]
|
||||||
[TestCase("9780439554930", 48517161)]
|
[TestCase("9780439554930", 48517161)]
|
||||||
public void successful_book_search(string title, int expected)
|
public void successful_book_search(string title, int expected)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
|
|||||||
.Configure<ProcessorOptions>(opt =>
|
.Configure<ProcessorOptions>(opt =>
|
||||||
{
|
{
|
||||||
opt.PreviewOnly = false;
|
opt.PreviewOnly = false;
|
||||||
opt.Timeout = TimeSpan.FromSeconds(60);
|
opt.Timeout = TimeSpan.FromMinutes(5);
|
||||||
})
|
})
|
||||||
.Configure<SelectingProcessorAccessorOptions>(cfg =>
|
.Configure<SelectingProcessorAccessorOptions>(cfg =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Dynamic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common.Cache;
|
using NzbDrone.Common.Cache;
|
||||||
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Common.Serializer;
|
using NzbDrone.Common.Serializer;
|
||||||
|
|
||||||
@@ -101,11 +103,21 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
|||||||
|
|
||||||
public string AddTorrentFromMagnet(string magnetLink, DelugeSettings settings)
|
public string AddTorrentFromMagnet(string magnetLink, DelugeSettings settings)
|
||||||
{
|
{
|
||||||
var options = new
|
dynamic options = new ExpandoObject();
|
||||||
|
|
||||||
|
options.add_paused = settings.AddPaused;
|
||||||
|
options.remove_at_ratio = false;
|
||||||
|
|
||||||
|
if (settings.DownloadDirectory.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
add_paused = settings.AddPaused,
|
options.download_location = settings.DownloadDirectory;
|
||||||
remove_at_ratio = false
|
}
|
||||||
};
|
|
||||||
|
if (settings.CompletedDirectory.IsNotNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
options.move_completed_path = settings.CompletedDirectory;
|
||||||
|
options.move_completed = true;
|
||||||
|
}
|
||||||
|
|
||||||
var response = ProcessRequest<string>(settings, "core.add_torrent_magnet", magnetLink, options);
|
var response = ProcessRequest<string>(settings, "core.add_torrent_magnet", magnetLink, options);
|
||||||
|
|
||||||
@@ -114,11 +126,21 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
|||||||
|
|
||||||
public string AddTorrentFromFile(string filename, byte[] fileContent, DelugeSettings settings)
|
public string AddTorrentFromFile(string filename, byte[] fileContent, DelugeSettings settings)
|
||||||
{
|
{
|
||||||
var options = new
|
dynamic options = new ExpandoObject();
|
||||||
|
|
||||||
|
options.add_paused = settings.AddPaused;
|
||||||
|
options.remove_at_ratio = false;
|
||||||
|
|
||||||
|
if (settings.DownloadDirectory.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
add_paused = settings.AddPaused,
|
options.download_location = settings.DownloadDirectory;
|
||||||
remove_at_ratio = false
|
}
|
||||||
};
|
|
||||||
|
if (settings.CompletedDirectory.IsNotNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
options.move_completed_path = settings.CompletedDirectory;
|
||||||
|
options.move_completed = true;
|
||||||
|
}
|
||||||
|
|
||||||
var response = ProcessRequest<string>(settings, "core.add_torrent_file", filename, fileContent, options);
|
var response = ProcessRequest<string>(settings, "core.add_torrent_file", filename, fileContent, options);
|
||||||
return response;
|
return response;
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
|||||||
[FieldDefinition(9, Label = "Add Paused", Type = FieldType.Checkbox)]
|
[FieldDefinition(9, Label = "Add Paused", Type = FieldType.Checkbox)]
|
||||||
public bool AddPaused { get; set; }
|
public bool AddPaused { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(10, Label = "DownloadClientDelugeSettingsDirectory", Type = FieldType.Textbox, Advanced = true, HelpText = "DownloadClientDelugeSettingsDirectoryHelpText")]
|
||||||
|
public string DownloadDirectory { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(11, Label = "DownloadClientDelugeSettingsDirectoryCompleted", Type = FieldType.Textbox, Advanced = true, HelpText = "DownloadClientDelugeSettingsDirectoryCompletedHelpText")]
|
||||||
|
public string CompletedDirectory { get; set; }
|
||||||
|
|
||||||
public NzbDroneValidationResult Validate()
|
public NzbDroneValidationResult Validate()
|
||||||
{
|
{
|
||||||
return new NzbDroneValidationResult(Validator.Validate(this));
|
return new NzbDroneValidationResult(Validator.Validate(this));
|
||||||
|
|||||||
@@ -203,11 +203,11 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
|||||||
DeleteItemData(item);
|
DeleteItemData(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
_proxy.RemoveFrom("history", item.DownloadId, deleteData, Settings);
|
_proxy.RemoveFromHistory(item.DownloadId, deleteData, item.Status == DownloadItemStatus.Failed, Settings);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_proxy.RemoveFrom("queue", item.DownloadId, deleteData, Settings);
|
_proxy.RemoveFromQueue(item.DownloadId, deleteData, Settings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
|||||||
{
|
{
|
||||||
string GetBaseUrl(SabnzbdSettings settings, string relativePath = null);
|
string GetBaseUrl(SabnzbdSettings settings, string relativePath = null);
|
||||||
SabnzbdAddResponse DownloadNzb(byte[] nzbData, string filename, string category, int priority, SabnzbdSettings settings);
|
SabnzbdAddResponse DownloadNzb(byte[] nzbData, string filename, string category, int priority, SabnzbdSettings settings);
|
||||||
void RemoveFrom(string source, string id, bool deleteData, SabnzbdSettings settings);
|
void RemoveFromQueue(string id, bool deleteData, SabnzbdSettings settings);
|
||||||
|
void RemoveFromHistory(string id, bool deleteData, bool deletePermanently, SabnzbdSettings settings);
|
||||||
string GetVersion(SabnzbdSettings settings);
|
string GetVersion(SabnzbdSettings settings);
|
||||||
SabnzbdConfig GetConfig(SabnzbdSettings settings);
|
SabnzbdConfig GetConfig(SabnzbdSettings settings);
|
||||||
SabnzbdFullStatus GetFullStatus(SabnzbdSettings settings);
|
SabnzbdFullStatus GetFullStatus(SabnzbdSettings settings);
|
||||||
@@ -60,9 +61,9 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveFrom(string source, string id, bool deleteData, SabnzbdSettings settings)
|
public void RemoveFromQueue(string id, bool deleteData, SabnzbdSettings settings)
|
||||||
{
|
{
|
||||||
var request = BuildRequest(source, settings);
|
var request = BuildRequest("queue", settings);
|
||||||
request.AddQueryParam("name", "delete");
|
request.AddQueryParam("name", "delete");
|
||||||
request.AddQueryParam("del_files", deleteData ? 1 : 0);
|
request.AddQueryParam("del_files", deleteData ? 1 : 0);
|
||||||
request.AddQueryParam("value", id);
|
request.AddQueryParam("value", id);
|
||||||
@@ -70,6 +71,17 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
|||||||
ProcessRequest(request, settings);
|
ProcessRequest(request, settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveFromHistory(string id, bool deleteData, bool deletePermanently, SabnzbdSettings settings)
|
||||||
|
{
|
||||||
|
var request = BuildRequest("history", settings);
|
||||||
|
request.AddQueryParam("name", "delete");
|
||||||
|
request.AddQueryParam("del_files", deleteData ? 1 : 0);
|
||||||
|
request.AddQueryParam("value", id);
|
||||||
|
request.AddQueryParam("archive", deletePermanently ? 0 : 1);
|
||||||
|
|
||||||
|
ProcessRequest(request, settings);
|
||||||
|
}
|
||||||
|
|
||||||
public string GetVersion(SabnzbdSettings settings)
|
public string GetVersion(SabnzbdSettings settings)
|
||||||
{
|
{
|
||||||
var request = BuildRequest("version", settings);
|
var request = BuildRequest("version", settings);
|
||||||
|
|||||||
@@ -167,6 +167,7 @@
|
|||||||
"ConnectionLost": "Connection Lost",
|
"ConnectionLost": "Connection Lost",
|
||||||
"ConnectionLostReconnect": "{appName} will try to connect automatically, or you can click reload below.",
|
"ConnectionLostReconnect": "{appName} will try to connect automatically, or you can click reload below.",
|
||||||
"ConnectionLostToBackend": "{appName} has lost its connection to the backend and will need to be reloaded to restore functionality.",
|
"ConnectionLostToBackend": "{appName} has lost its connection to the backend and will need to be reloaded to restore functionality.",
|
||||||
|
"ConnectionSettingsUrlBaseHelpText": "Adds a prefix to the {connectionName} url, such as {url}",
|
||||||
"Connections": "Connections",
|
"Connections": "Connections",
|
||||||
"ConsoleLogLevel": "Console Log Level",
|
"ConsoleLogLevel": "Console Log Level",
|
||||||
"Continuing": "Continuing",
|
"Continuing": "Continuing",
|
||||||
@@ -186,6 +187,7 @@
|
|||||||
"CreateEmptyAuthorFolders": "Create empty author folders",
|
"CreateEmptyAuthorFolders": "Create empty author folders",
|
||||||
"CreateEmptyAuthorFoldersHelpText": "Create missing author folders during disk scan",
|
"CreateEmptyAuthorFoldersHelpText": "Create missing author folders during disk scan",
|
||||||
"CreateGroup": "Create group",
|
"CreateGroup": "Create group",
|
||||||
|
"CustomFilter": "Custom Filter",
|
||||||
"CustomFormat": "Custom Format",
|
"CustomFormat": "Custom Format",
|
||||||
"CustomFormatScore": "Custom Format Score",
|
"CustomFormatScore": "Custom Format Score",
|
||||||
"CustomFormatSettings": "Custom Format Settings",
|
"CustomFormatSettings": "Custom Format Settings",
|
||||||
@@ -282,6 +284,10 @@
|
|||||||
"DownloadClientCheckDownloadingToRoot": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.",
|
"DownloadClientCheckDownloadingToRoot": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.",
|
||||||
"DownloadClientCheckNoneAvailableMessage": "No download client is available",
|
"DownloadClientCheckNoneAvailableMessage": "No download client is available",
|
||||||
"DownloadClientCheckUnableToCommunicateMessage": "Unable to communicate with {0}.",
|
"DownloadClientCheckUnableToCommunicateMessage": "Unable to communicate with {0}.",
|
||||||
|
"DownloadClientDelugeSettingsDirectory": "Download Directory",
|
||||||
|
"DownloadClientDelugeSettingsDirectoryCompleted": "Move When Completed Directory",
|
||||||
|
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Optional location to move completed downloads to, leave blank to use the default Deluge location",
|
||||||
|
"DownloadClientDelugeSettingsDirectoryHelpText": "Optional location to put downloads in, leave blank to use the default Deluge location",
|
||||||
"DownloadClientQbittorrentSettingsContentLayout": "Content Layout",
|
"DownloadClientQbittorrentSettingsContentLayout": "Content Layout",
|
||||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Whether to use qBittorrent's configured content layout, the original layout from the torrent or always create a subfolder (qBittorrent 4.3.2+)",
|
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Whether to use qBittorrent's configured content layout, the original layout from the torrent or always create a subfolder (qBittorrent 4.3.2+)",
|
||||||
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "Download client {0} is set to remove completed downloads. This can result in downloads being removed from your client before {1} can import them.",
|
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "Download client {0} is set to remove completed downloads. This can result in downloads being removed from your client before {1} can import them.",
|
||||||
@@ -453,6 +459,8 @@
|
|||||||
"IndexersSettingsSummary": "Indexers and release restrictions",
|
"IndexersSettingsSummary": "Indexers and release restrictions",
|
||||||
"InstanceName": "Instance Name",
|
"InstanceName": "Instance Name",
|
||||||
"InstanceNameHelpText": "Instance name in tab and for Syslog app name",
|
"InstanceNameHelpText": "Instance name in tab and for Syslog app name",
|
||||||
|
"InteractiveSearchModalHeader": "Interactive Search",
|
||||||
|
"InteractiveSearchModalHeaderBookAuthor": "Interactive Search - {bookTitle} by {authorName}",
|
||||||
"Interval": "Interval",
|
"Interval": "Interval",
|
||||||
"InvalidUILanguage": "Your UI is set to an invalid language, correct it and save your settings",
|
"InvalidUILanguage": "Your UI is set to an invalid language, correct it and save your settings",
|
||||||
"IsCalibreLibraryHelpText": "Use Calibre Content Server to manipulate library",
|
"IsCalibreLibraryHelpText": "Use Calibre Content Server to manipulate library",
|
||||||
@@ -470,6 +478,7 @@
|
|||||||
"Iso639-3": "ISO 639-3 language codes, or 'null', comma separated",
|
"Iso639-3": "ISO 639-3 language codes, or 'null', comma separated",
|
||||||
"ItsEasyToAddANewAuthorOrBookJustStartTypingTheNameOfTheItemYouWantToAdd": "It's easy to add a New Author or Book just start typing the name of the item you want to add",
|
"ItsEasyToAddANewAuthorOrBookJustStartTypingTheNameOfTheItemYouWantToAdd": "It's easy to add a New Author or Book just start typing the name of the item you want to add",
|
||||||
"Label": "Label",
|
"Label": "Label",
|
||||||
|
"LabelIsRequired": "Label is required",
|
||||||
"Language": "Language",
|
"Language": "Language",
|
||||||
"Large": "Large",
|
"Large": "Large",
|
||||||
"LastDuration": "Last Duration",
|
"LastDuration": "Last Duration",
|
||||||
@@ -614,6 +623,14 @@
|
|||||||
"NotificationStatusAllClientHealthCheckMessage": "All notifications are unavailable due to failures",
|
"NotificationStatusAllClientHealthCheckMessage": "All notifications are unavailable due to failures",
|
||||||
"NotificationStatusSingleClientHealthCheckMessage": "Notifications unavailable due to failures: {0}",
|
"NotificationStatusSingleClientHealthCheckMessage": "Notifications unavailable due to failures: {0}",
|
||||||
"NotificationTriggers": "Notification Triggers",
|
"NotificationTriggers": "Notification Triggers",
|
||||||
|
"NotificationsPlexSettingsAuthToken": "Auth Token",
|
||||||
|
"NotificationsPlexSettingsAuthenticateWithPlexTv": "Authenticate with Plex.tv",
|
||||||
|
"NotificationsSettingsUpdateLibrary": "Update Library",
|
||||||
|
"NotificationsSettingsUpdateMapPathsFrom": "Map Paths From",
|
||||||
|
"NotificationsSettingsUpdateMapPathsFromHelpText": "{appName} path, used to modify series paths when {serviceName} sees library path location differently from {appName} (Requires 'Update Library')",
|
||||||
|
"NotificationsSettingsUpdateMapPathsTo": "Map Paths To",
|
||||||
|
"NotificationsSettingsUpdateMapPathsToHelpText": "{serviceName} path, used to modify series paths when {serviceName} sees library path location differently from {appName} (Requires 'Update Library')",
|
||||||
|
"NotificationsSettingsUseSslHelpText": "Connect to {serviceName} over HTTPS instead of HTTP",
|
||||||
"OnApplicationUpdate": "On Application Update",
|
"OnApplicationUpdate": "On Application Update",
|
||||||
"OnApplicationUpdateHelpText": "On Application Update",
|
"OnApplicationUpdateHelpText": "On Application Update",
|
||||||
"OnAuthorAdded": "On Author Added",
|
"OnAuthorAdded": "On Author Added",
|
||||||
|
|||||||
@@ -185,40 +185,40 @@
|
|||||||
"Logging": "Registro de eventos",
|
"Logging": "Registro de eventos",
|
||||||
"Logs": "Registros",
|
"Logs": "Registros",
|
||||||
"LongDateFormat": "Formato de Fecha Larga",
|
"LongDateFormat": "Formato de Fecha Larga",
|
||||||
"ManualImport": "Importar Manualmente",
|
"ManualImport": "Importación manual",
|
||||||
"MarkAsFailed": "Marcar como Fallida",
|
"MarkAsFailed": "Marcar como Fallido",
|
||||||
"MarkAsFailedMessageText": "Seguro que quieres marcar '{0}' como fallida?",
|
"MarkAsFailedMessageText": "Seguro que quieres marcar '{0}' como fallida?",
|
||||||
"MaximumLimits": "Límites Máximos",
|
"MaximumLimits": "Límites máximos",
|
||||||
"MaximumSize": "Tamaño Máximo",
|
"MaximumSize": "Tamaño máximo",
|
||||||
"MaximumSizeHelpText": "Tamaño máximo de un lanzamiento para ser importado en MB. Ajustar a cero para ilimitado",
|
"MaximumSizeHelpText": "Tamaño máximo de un lanzamiento para ser importado en MB. Ajustar a cero para ilimitado",
|
||||||
"Mechanism": "Mecanismo",
|
"Mechanism": "Mecanismo",
|
||||||
"MediaInfo": "Información Multimedia",
|
"MediaInfo": "Información de medios",
|
||||||
"MediaManagementSettings": "Ajustes Multimedia",
|
"MediaManagementSettings": "Opciones de gestión de medios",
|
||||||
"Message": "Mensaje",
|
"Message": "Mensaje",
|
||||||
"MetadataSettings": "Ajustes de Metadatos",
|
"MetadataSettings": "Opciones de metadatos",
|
||||||
"MinimumAge": "Edad Mínima",
|
"MinimumAge": "Edad mínima",
|
||||||
"MinimumAgeHelpText": "Sólo Usenet: Edad mínima en minutos de los NZB para ser descargados. Usa esto para dar a los nuevos lanzamientos tiempo de propagarse en tu proveedor de usenet.",
|
"MinimumAgeHelpText": "Solo Usenet: Edad mínima en minutos de NZBs antes de que sean capturados. Usa esto para dar tiempo a los nuevos lanzamientos para propagarse a tu proveedor usenet.",
|
||||||
"MinimumFreeSpace": "Espacio Libre Mínimo",
|
"MinimumFreeSpace": "Espacio libre mínimo",
|
||||||
"MinimumFreeSpaceWhenImportingHelpText": "Evitar importación si dejase menos de esta cantidad en disco disponible",
|
"MinimumFreeSpaceWhenImportingHelpText": "Evitar importación si dejase menos de esta cantidad en disco disponible",
|
||||||
"MinimumLimits": "Límites Mínimos",
|
"MinimumLimits": "Límites mínimos",
|
||||||
"Missing": "Faltantes",
|
"Missing": "Faltantes",
|
||||||
"Mode": "Modo",
|
"Mode": "Modo",
|
||||||
"Monitored": "Monitorizado",
|
"Monitored": "Monitorizado",
|
||||||
"MoreInfo": "Más Información",
|
"MoreInfo": "Más información",
|
||||||
"MustContain": "Debe Contener",
|
"MustContain": "Debe contener",
|
||||||
"MustNotContain": "No Debe Contener",
|
"MustNotContain": "No debe contener",
|
||||||
"Name": "Nombre",
|
"Name": "Nombre",
|
||||||
"NamingSettings": "Ajustes de Renombrado",
|
"NamingSettings": "Opciones de nombrado",
|
||||||
"New": "Nuevo",
|
"New": "Nuevo",
|
||||||
"NoBackupsAreAvailable": "No hay copias de seguridad disponibles",
|
"NoBackupsAreAvailable": "No hay copias de seguridad disponibles",
|
||||||
"NoHistory": "Sin historia",
|
"NoHistory": "Sin historia",
|
||||||
"NoLeaveIt": "No, Déjalo",
|
"NoLeaveIt": "No, déjalo",
|
||||||
"NoLimitForAnyRuntime": "SIn límite para el tiempo de ejecución",
|
"NoLimitForAnyRuntime": "No hay límites para ningún tiempo de ejecución",
|
||||||
"NoLogFiles": "Sin archivos de registro",
|
"NoLogFiles": "No hay archivos de registro",
|
||||||
"NoMinimumForAnyRuntime": "Sin mínimo para el tiempo de ejecución",
|
"NoMinimumForAnyRuntime": "No hay mínimo para ningún tiempo de ejecución",
|
||||||
"NoUpdatesAreAvailable": "No hay actualizaciones disponibles",
|
"NoUpdatesAreAvailable": "No hay actualizaciones disponibles",
|
||||||
"None": "Ninguna",
|
"None": "Ninguno",
|
||||||
"NotificationTriggers": "Desencadenantes de Notificaciones",
|
"NotificationTriggers": "Disparadores de notificación",
|
||||||
"OnGrabHelpText": "Al Capturar",
|
"OnGrabHelpText": "Al Capturar",
|
||||||
"OnHealthIssueHelpText": "En Problema de Salud",
|
"OnHealthIssueHelpText": "En Problema de Salud",
|
||||||
"OnRenameHelpText": "Al Renombrar",
|
"OnRenameHelpText": "Al Renombrar",
|
||||||
@@ -503,7 +503,7 @@
|
|||||||
"HealthNoIssues": "No hay problemas con tu configuración",
|
"HealthNoIssues": "No hay problemas con tu configuración",
|
||||||
"ImportListStatusCheckAllClientMessage": "Las listas no están disponibles debido a errores",
|
"ImportListStatusCheckAllClientMessage": "Las listas no están disponibles debido a errores",
|
||||||
"ImportListStatusCheckSingleClientMessage": "Listas no disponibles debido a errores: {0}",
|
"ImportListStatusCheckSingleClientMessage": "Listas no disponibles debido a errores: {0}",
|
||||||
"MediaManagement": "Multimedia",
|
"MediaManagement": "Gestión de medios",
|
||||||
"Metadata": "Metadatos",
|
"Metadata": "Metadatos",
|
||||||
"MetadataProfile": "perfil de metadatos",
|
"MetadataProfile": "perfil de metadatos",
|
||||||
"MetadataProfiles": "perfil de metadatos",
|
"MetadataProfiles": "perfil de metadatos",
|
||||||
@@ -519,7 +519,7 @@
|
|||||||
"TimeLeft": "Tiempo restante",
|
"TimeLeft": "Tiempo restante",
|
||||||
"DownloadClientCheckUnableToCommunicateMessage": "Incapaz de comunicarse con {0}.",
|
"DownloadClientCheckUnableToCommunicateMessage": "Incapaz de comunicarse con {0}.",
|
||||||
"IndexerPriorityHelpText": "Prioridad del Indexador de 1 (la más alta) a 50 (la más baja). Por defecto: 25. Usada para desempatar lanzamientos iguales cuando se capturan, Readarr seguirá usando todos los indexadores habilitados para Sincronización de RSS y Búsqueda.",
|
"IndexerPriorityHelpText": "Prioridad del Indexador de 1 (la más alta) a 50 (la más baja). Por defecto: 25. Usada para desempatar lanzamientos iguales cuando se capturan, Readarr seguirá usando todos los indexadores habilitados para Sincronización de RSS y Búsqueda.",
|
||||||
"Monitor": "Monitorear",
|
"Monitor": "Monitorizar",
|
||||||
"MountCheckMessage": "El punto de montaje que contiene la ruta de una película es de read-only: ",
|
"MountCheckMessage": "El punto de montaje que contiene la ruta de una película es de read-only: ",
|
||||||
"OnBookFileDelete": "Al eliminar archivo de película",
|
"OnBookFileDelete": "Al eliminar archivo de película",
|
||||||
"SystemTimeCheckMessage": "El reloj del sistema está retrasado más de un día. Las tareas de mantenimiento no se ejecutarán correctamente hasta que se haya corregido",
|
"SystemTimeCheckMessage": "El reloj del sistema está retrasado más de un día. Las tareas de mantenimiento no se ejecutarán correctamente hasta que se haya corregido",
|
||||||
@@ -586,7 +586,7 @@
|
|||||||
"ChooseImportMethod": "Elegir Modo de Importación",
|
"ChooseImportMethod": "Elegir Modo de Importación",
|
||||||
"ClickToChangeReleaseGroup": "Clic para cambiar el grupo de lanzamiento",
|
"ClickToChangeReleaseGroup": "Clic para cambiar el grupo de lanzamiento",
|
||||||
"HardlinkCopyFiles": "Enlace permanente/Copiar archivos",
|
"HardlinkCopyFiles": "Enlace permanente/Copiar archivos",
|
||||||
"MoveFiles": "Mover Archivos",
|
"MoveFiles": "Mover archivos",
|
||||||
"OnApplicationUpdate": "Al Actualizar La Aplicación",
|
"OnApplicationUpdate": "Al Actualizar La Aplicación",
|
||||||
"OnApplicationUpdateHelpText": "Al Actualizar La Aplicación",
|
"OnApplicationUpdateHelpText": "Al Actualizar La Aplicación",
|
||||||
"BypassIfHighestQuality": "Pasar sí es la calidad más alta",
|
"BypassIfHighestQuality": "Pasar sí es la calidad más alta",
|
||||||
@@ -628,7 +628,7 @@
|
|||||||
"DeleteRemotePathMapping": "Borrar mapeo de ruta remota",
|
"DeleteRemotePathMapping": "Borrar mapeo de ruta remota",
|
||||||
"BlocklistReleases": "Lista de bloqueos de lanzamientos",
|
"BlocklistReleases": "Lista de bloqueos de lanzamientos",
|
||||||
"DeleteConditionMessageText": "Seguro que quieres eliminar la etiqueta '{0}'?",
|
"DeleteConditionMessageText": "Seguro que quieres eliminar la etiqueta '{0}'?",
|
||||||
"Negated": "Negado",
|
"Negated": "Anulado",
|
||||||
"RemoveSelectedItem": "Eliminar el elemento seleccionado",
|
"RemoveSelectedItem": "Eliminar el elemento seleccionado",
|
||||||
"RemoveSelectedItemBlocklistMessageText": "¿Está seguro de que desea eliminar los elementos seleccionados de la lista negra?",
|
"RemoveSelectedItemBlocklistMessageText": "¿Está seguro de que desea eliminar los elementos seleccionados de la lista negra?",
|
||||||
"RemoveSelectedItemQueueMessageText": "¿Está seguro de que desea eliminar el {0} elemento {1} de la cola?",
|
"RemoveSelectedItemQueueMessageText": "¿Está seguro de que desea eliminar el {0} elemento {1} de la cola?",
|
||||||
@@ -638,7 +638,7 @@
|
|||||||
"ResetQualityDefinitions": "Restablecer definiciones de calidad",
|
"ResetQualityDefinitions": "Restablecer definiciones de calidad",
|
||||||
"ResetQualityDefinitionsMessageText": "¿Está seguro de que desea restablecer las definiciones de calidad?",
|
"ResetQualityDefinitionsMessageText": "¿Está seguro de que desea restablecer las definiciones de calidad?",
|
||||||
"BlocklistReleaseHelpText": "Evita que Radarr vuelva a capturar esta película automáticamente",
|
"BlocklistReleaseHelpText": "Evita que Radarr vuelva a capturar esta película automáticamente",
|
||||||
"NoEventsFound": "No se encontraron eventos",
|
"NoEventsFound": "Ningún evento encontrado",
|
||||||
"ApplyTagsHelpTextHowToApplyAuthors": "Cómo añadir etiquetas a las películas seleccionadas",
|
"ApplyTagsHelpTextHowToApplyAuthors": "Cómo añadir etiquetas a las películas seleccionadas",
|
||||||
"DeleteSelectedIndexersMessageText": "¿Está seguro de querer eliminar {count} indexador(es) seleccionado(s)?",
|
"DeleteSelectedIndexersMessageText": "¿Está seguro de querer eliminar {count} indexador(es) seleccionado(s)?",
|
||||||
"Yes": "Sí",
|
"Yes": "Sí",
|
||||||
@@ -659,7 +659,7 @@
|
|||||||
"DownloadClientTagHelpText": "Solo utilizar este indexador para películas que coincidan con al menos una etiqueta. Déjelo en blanco para utilizarlo con todas las películas.",
|
"DownloadClientTagHelpText": "Solo utilizar este indexador para películas que coincidan con al menos una etiqueta. Déjelo en blanco para utilizarlo con todas las películas.",
|
||||||
"ExistingTag": "Etiquetas existentes",
|
"ExistingTag": "Etiquetas existentes",
|
||||||
"No": "No",
|
"No": "No",
|
||||||
"NoChange": "Sin Cambio",
|
"NoChange": "Sin cambio",
|
||||||
"RemovingTag": "Eliminando etiqueta",
|
"RemovingTag": "Eliminando etiqueta",
|
||||||
"SetTags": "Poner Etiquetas",
|
"SetTags": "Poner Etiquetas",
|
||||||
"DeleteRemotePathMappingMessageText": "¿Está seguro de querer eliminar esta asignación de ruta remota?",
|
"DeleteRemotePathMappingMessageText": "¿Está seguro de querer eliminar esta asignación de ruta remota?",
|
||||||
@@ -698,7 +698,7 @@
|
|||||||
"ManageImportLists": "Gestionar Listas de Importación",
|
"ManageImportLists": "Gestionar Listas de Importación",
|
||||||
"ConnectionLostToBackend": "{appName} ha perdido su conexión con el backend y tendrá que ser recargado para recuperar su funcionalidad.",
|
"ConnectionLostToBackend": "{appName} ha perdido su conexión con el backend y tendrá que ser recargado para recuperar su funcionalidad.",
|
||||||
"NotificationStatusSingleClientHealthCheckMessage": "Listas no disponibles debido a errores: {0}",
|
"NotificationStatusSingleClientHealthCheckMessage": "Listas no disponibles debido a errores: {0}",
|
||||||
"NotificationStatusAllClientHealthCheckMessage": "Las listas no están disponibles debido a errores",
|
"NotificationStatusAllClientHealthCheckMessage": "Las notificaciones no están disponibles debido a fallos",
|
||||||
"ReleaseProfiles": "perfil de lanzamiento",
|
"ReleaseProfiles": "perfil de lanzamiento",
|
||||||
"Small": "Pequeña",
|
"Small": "Pequeña",
|
||||||
"DeleteImportList": "Eliminar Lista(s) de Importación",
|
"DeleteImportList": "Eliminar Lista(s) de Importación",
|
||||||
@@ -712,12 +712,12 @@
|
|||||||
"ConnectionLost": "Conexión perdida",
|
"ConnectionLost": "Conexión perdida",
|
||||||
"ConnectionLostReconnect": "{appName} intentará conectarse automáticamente, o puede hacer clic en recargar abajo.",
|
"ConnectionLostReconnect": "{appName} intentará conectarse automáticamente, o puede hacer clic en recargar abajo.",
|
||||||
"NextExecution": "Siguiente ejecución",
|
"NextExecution": "Siguiente ejecución",
|
||||||
"NoResultsFound": "No se han encontrado resultados",
|
"NoResultsFound": "Ningún resultado encontrado",
|
||||||
"RecentChanges": "Cambios recientes",
|
"RecentChanges": "Cambios recientes",
|
||||||
"WhatsNew": "Que es lo nuevo?",
|
"WhatsNew": "Que es lo nuevo?",
|
||||||
"Loading": "Cargando",
|
"Loading": "Cargando",
|
||||||
"Events": "Eventos",
|
"Events": "Eventos",
|
||||||
"Medium": "Medio",
|
"Medium": "Mediano",
|
||||||
"AllResultsAreHiddenByTheAppliedFilter": "Todos los resultados están ocultos por el filtro aplicado",
|
"AllResultsAreHiddenByTheAppliedFilter": "Todos los resultados están ocultos por el filtro aplicado",
|
||||||
"CatalogNumber": "número de catálogo",
|
"CatalogNumber": "número de catálogo",
|
||||||
"Authors": "Autores",
|
"Authors": "Autores",
|
||||||
@@ -796,5 +796,10 @@
|
|||||||
"IgnoreDownloadHint": "Detiene {appName} de procesar esta descarga más adelante",
|
"IgnoreDownloadHint": "Detiene {appName} de procesar esta descarga más adelante",
|
||||||
"IgnoreDownloadsHint": "Detiene {appName} de procesar estas descargas más adelante",
|
"IgnoreDownloadsHint": "Detiene {appName} de procesar estas descargas más adelante",
|
||||||
"NoDownloadClientsFound": "No se han encontrado clientes de descarga",
|
"NoDownloadClientsFound": "No se han encontrado clientes de descarga",
|
||||||
"NoIndexersFound": "No se han encontrado indexadores"
|
"NoIndexersFound": "No se han encontrado indexadores",
|
||||||
|
"MetadataSource": "Fuente de metadatos",
|
||||||
|
"MediaManagementSettingsSummary": "Nombrado, opciones de gestión de archivos y carpetas raíz",
|
||||||
|
"MonitoringOptions": "Opciones de monitorización",
|
||||||
|
"NoImportListsFound": "Ninguna lista de importación encontrada",
|
||||||
|
"Monitoring": "Monitorizando"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,11 +148,11 @@
|
|||||||
"ImportExtraFiles": "Extra fájlok importálása",
|
"ImportExtraFiles": "Extra fájlok importálása",
|
||||||
"ImportExtraFilesHelpText": "A megfelelő extra fájlok importálása (feliratok, nfo stb.) a filmfájl importálása után",
|
"ImportExtraFilesHelpText": "A megfelelő extra fájlok importálása (feliratok, nfo stb.) a filmfájl importálása után",
|
||||||
"ImportFailedInterp": "Importálás sikertelen: {0}",
|
"ImportFailedInterp": "Importálás sikertelen: {0}",
|
||||||
"ImportedTo": "Importálva Ide",
|
"ImportedTo": "Importált ide",
|
||||||
"Importing": "Importálás",
|
"Importing": "Importálás",
|
||||||
"IncludeHealthWarningsHelpText": "Tartalmazza a Állapot Figyelmeztetéseket",
|
"IncludeHealthWarningsHelpText": "Tartalmazza a Állapot Figyelmeztetéseket",
|
||||||
"IncludeUnknownAuthorItemsHelpText": "Mutasson tételeket film nélkül a sorban. Ez tartalmazhat eltávolított filmeket vagy bármi mást a Radarr kategóriájából",
|
"IncludeUnknownAuthorItemsHelpText": "Mutasson tételeket film nélkül a sorban. Ez tartalmazhat eltávolított filmeket vagy bármi mást a Radarr kategóriájából",
|
||||||
"IncludeUnmonitored": "Figyelmen Kívül hagyottakat is tartalmazza",
|
"IncludeUnmonitored": "Tartalmazza a Nem felügyeltet",
|
||||||
"Indexer": "Indexelő",
|
"Indexer": "Indexelő",
|
||||||
"IndexerPriority": "Indexer Prioritása",
|
"IndexerPriority": "Indexer Prioritása",
|
||||||
"IndexerSettings": "Indexer Beállítások",
|
"IndexerSettings": "Indexer Beállítások",
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
"Message": "Üzenet",
|
"Message": "Üzenet",
|
||||||
"MetadataSettings": "Metaadat-beállítások",
|
"MetadataSettings": "Metaadat-beállítások",
|
||||||
"MinimumAge": "Minimális kor",
|
"MinimumAge": "Minimális kor",
|
||||||
"MinimumAgeHelpText": "Usenet: Az NZB-k minimális életkora percekben, mielőtt megragadnák őket. Használja ezt arra, hogy időt biztosítson az új kiadásoknak az usenet-szolgáltatóhoz történő továbbterjesztésre.",
|
"MinimumAgeHelpText": "Csak Usenet: Az NZB-k minimális életkora percekben, mielőtt elkapnák őket. Használja ezt, hogy időt adjon az új kiadásoknak, hogy eljuthassanak a usenet szolgáltatóhoz.",
|
||||||
"MinimumFreeSpace": "Minimális szabad hely",
|
"MinimumFreeSpace": "Minimális szabad hely",
|
||||||
"MinimumFreeSpaceWhenImportingHelpText": "Akadályozza meg az importálást, ha ennél kevesebb lemezterület maradna",
|
"MinimumFreeSpaceWhenImportingHelpText": "Akadályozza meg az importálást, ha ennél kevesebb lemezterület maradna",
|
||||||
"MinimumLimits": "Minimális korlátok",
|
"MinimumLimits": "Minimális korlátok",
|
||||||
@@ -222,23 +222,23 @@
|
|||||||
"Port": "Port",
|
"Port": "Port",
|
||||||
"PortHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
"PortHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
||||||
"PortNumber": "Port száma",
|
"PortNumber": "Port száma",
|
||||||
"PosterSize": "Poszter mérete",
|
"PosterSize": "Poszter méret",
|
||||||
"PreviewRename": "Előnézet átnevezése",
|
"PreviewRename": "Előnézet Átnevezés",
|
||||||
"Profiles": "Profilok",
|
"Profiles": "Profilok",
|
||||||
"Proper": "Megfelelő",
|
"Proper": "Megfelelő",
|
||||||
"PropersAndRepacks": "Properek és Repackok",
|
"PropersAndRepacks": "Properek és Repackok",
|
||||||
"Protocol": "Protokoll",
|
"Protocol": "Protokoll",
|
||||||
"ProtocolHelpText": "Válasszd ki a használni kívánt protokoll(oka)t és melyiket részesíted előnyben, ha az egyébként egyforma kiadások közül választasz",
|
"ProtocolHelpText": "Válasszd ki a használni kívánt protokoll(oka)t és melyiket részesíted előnyben, ha az egyébként egyforma kiadások közül választasz",
|
||||||
"Proxy": "Proxy",
|
"Proxy": "Proxy",
|
||||||
"ProxyBypassFilterHelpText": "Használja elválasztóként a ',' és a '*' karaktereket, az aldomainek helyettesítőjeként",
|
"ProxyBypassFilterHelpText": "Használja a ',' jelet elválasztóként és a '*' jelet. helyettesítő karakterként az aldomainekhez",
|
||||||
"ProxyType": "Proxy Típusa",
|
"ProxyType": "Proxy típus",
|
||||||
"ProxyUsernameHelpText": "Csak akkor kell megadnod felhasználónevet és jelszót, ha szükséges. Egyébként hagyd üresen.",
|
"ProxyUsernameHelpText": "Csak akkor kell megadnia egy felhasználónevet és jelszót, ha szükséges. Ellenkező esetben hagyja üresen.",
|
||||||
"PublishedDate": "Közzététel dátuma",
|
"PublishedDate": "Közzététel dátuma",
|
||||||
"Quality": "Minőség",
|
"Quality": "Minőség",
|
||||||
"QualityDefinitions": "Minőségi meghatározások",
|
"QualityDefinitions": "Minőségi meghatározások",
|
||||||
"QualityProfile": "Minőségi profil",
|
"QualityProfile": "Minőségi profil",
|
||||||
"QualityProfiles": "Minőségi profilok",
|
"QualityProfiles": "Minőségi profilok",
|
||||||
"QualitySettings": "Minőségi beállítások",
|
"QualitySettings": "Minőség Beállítások",
|
||||||
"Queue": "Várakozási sor",
|
"Queue": "Várakozási sor",
|
||||||
"RSSSync": "RSS Szinkronizálás",
|
"RSSSync": "RSS Szinkronizálás",
|
||||||
"RSSSyncInterval": "RSS Szikronizálás Intervalluma",
|
"RSSSyncInterval": "RSS Szikronizálás Intervalluma",
|
||||||
@@ -262,38 +262,38 @@
|
|||||||
"Reload": "Újratölt",
|
"Reload": "Újratölt",
|
||||||
"RemotePathMappings": "Távoli útvonal-leképezések",
|
"RemotePathMappings": "Távoli útvonal-leképezések",
|
||||||
"Remove": "Eltávolítás",
|
"Remove": "Eltávolítás",
|
||||||
"RemoveCompletedDownloadsHelpText": "Távolítsa el az importált letöltéseket a letöltési kliens előzményeiből",
|
"RemoveCompletedDownloadsHelpText": "Távolítsa el az importált letöltéseket a letöltési ügyfélelőzményekből",
|
||||||
"RemoveFailedDownloadsHelpText": "Távolítsa el a sikertelen letöltéseket a letöltési kliens előzményeiből",
|
"RemoveFailedDownloadsHelpText": "A sikertelen letöltések eltávolítása a letöltési ügyfélelőzményekből",
|
||||||
"RemoveFilter": "Szűrő törlése",
|
"RemoveFilter": "Szűrő Eltávolítás",
|
||||||
"RemoveFromDownloadClient": "Eltávolítás a Letöltési kliensből",
|
"RemoveFromDownloadClient": "Eltávolítás a Letöltési kliensből",
|
||||||
"RemoveFromQueue": "Eltávolítás a sorból",
|
"RemoveFromQueue": "Eltávolítás a sorból",
|
||||||
"RemoveHelpTextWarning": "Az eltávolítás eltávolítja a letöltést és a fájl(oka)t a letöltési kliensből.",
|
"RemoveHelpTextWarning": "Az eltávolítás eltávolítja a letöltést és a fájl(oka)t a letöltési kliensből.",
|
||||||
"RemoveSelected": "Kiválaszottak törlése",
|
"RemoveSelected": "A kiválasztott eltávolítása",
|
||||||
"RemoveTagExistingTag": "Meglévő Címke",
|
"RemoveTagExistingTag": "Meglévő Címke",
|
||||||
"RemoveTagRemovingTag": "Címke eltávolítása",
|
"RemoveTagRemovingTag": "Címke eltávolítása",
|
||||||
"RemovedFromTaskQueue": "Eltávolítva a feladatsorról",
|
"RemovedFromTaskQueue": "Eltávolítva a feladatsorból",
|
||||||
"RenameBooksHelpText": "A Radarr a meglévő fájlnevet fogja használni, ha az átnevezés le van tiltva",
|
"RenameBooksHelpText": "A Radarr a meglévő fájlnevet fogja használni, ha az átnevezés le van tiltva",
|
||||||
"Reorder": "Átrendezés",
|
"Reorder": "Újrarendelés",
|
||||||
"ReplaceIllegalCharacters": "Az illegális karakterek cseréje",
|
"ReplaceIllegalCharacters": "Cserélje ki az illegális karaktereket",
|
||||||
"RequiredHelpText": "Ennek a {0} feltételnek meg kell egyeznie az egyéni formátum alkalmazásához. Ellenkező esetben egyetlen {0} egyezés elegendő.",
|
"RequiredHelpText": "Ennek a {0} feltételnek meg kell egyeznie az egyéni formátum alkalmazásához. Ellenkező esetben egyetlen {0} egyezés elegendő.",
|
||||||
"RequiredPlaceHolder": "Új korlátozás hozzáadása",
|
"RequiredPlaceHolder": "Új korlátozás hozzáadása",
|
||||||
"RescanAfterRefreshHelpTextWarning": "A Radarr nem érzékeli automatikusan a fájlok változását, ha nincs beállítva „Always”-re",
|
"RescanAfterRefreshHelpTextWarning": "A Radarr nem érzékeli automatikusan a fájlok változását, ha nincs beállítva „Always”-re",
|
||||||
"RescanAuthorFolderAfterRefresh": "Film mappa újraszkennelése a frissítés után",
|
"RescanAuthorFolderAfterRefresh": "Film mappa újraszkennelése a frissítés után",
|
||||||
"Reset": "Visszaállítás",
|
"Reset": "Visszaállítás",
|
||||||
"ResetAPIKey": "API Kulcs visszaállítása",
|
"ResetAPIKey": "API Kulcs Visszaállítása",
|
||||||
"ResetAPIKeyMessageText": "Biztos hogy vissza szeretnéd állítani az API-Kulcsod?",
|
"ResetAPIKeyMessageText": "Biztosan visszaállítja API-kulcsát?",
|
||||||
"Restart": "Újrakezd",
|
"Restart": "Újrakezd",
|
||||||
"RestartNow": "Újraindítás Most",
|
"RestartNow": "Újraindítás most",
|
||||||
"RestartReadarr": "Radarr Újraindítása",
|
"RestartReadarr": "Radarr Újraindítása",
|
||||||
"Restore": "Visszaállít",
|
"Restore": "Visszaállít",
|
||||||
"RestoreBackup": "Biztonsági mentés visszaállítása",
|
"RestoreBackup": "Biztonsági mentés visszaállítása",
|
||||||
"Result": "Eredmény",
|
"Result": "Eredmény",
|
||||||
"Retention": "Visszatartás",
|
"Retention": "Visszatartás",
|
||||||
"RetentionHelpText": "Usenet: Állítsa nullára a korlátlan megőrzés beállításához",
|
"RetentionHelpText": "Csak Usenet: Állítsa nullára a korlátlan megőrzéshez",
|
||||||
"RetryingDownloadInterp": "A letöltés újrapróbálása {0} itt {1}",
|
"RetryingDownloadInterp": "A letöltés újrapróbálása {0} itt {1}",
|
||||||
"RootFolder": "Gyökérmappa",
|
"RootFolder": "Gyökérmappa",
|
||||||
"RootFolders": "Gyökérmappák",
|
"RootFolders": "Gyökér mappák",
|
||||||
"RssSyncIntervalHelpText": "Intervallum percekben. A letiltáshoz állítsa nullára (ez megállítja az összes automatikus keresést)",
|
"RssSyncIntervalHelpText": "Intervallum percekben. A letiltáshoz állítsa nullára (ez leállítja az összes automatikus feloldást)",
|
||||||
"SSLCertPassword": "SSL Tanúsítvány jelszava",
|
"SSLCertPassword": "SSL Tanúsítvány jelszava",
|
||||||
"SSLCertPath": "Az SSL tanúsítvány elérési útvonala",
|
"SSLCertPath": "Az SSL tanúsítvány elérési útvonala",
|
||||||
"SSLPort": "SSL Port",
|
"SSLPort": "SSL Port",
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
"Security": "Biztonság",
|
"Security": "Biztonság",
|
||||||
"SendAnonymousUsageData": "Névtelen használati adatok küldése",
|
"SendAnonymousUsageData": "Névtelen használati adatok küldése",
|
||||||
"SetPermissions": "Állítsa be az engedélyeket",
|
"SetPermissions": "Állítsa be az engedélyeket",
|
||||||
"SetPermissionsLinuxHelpText": "Futtatni kell a chmod-ot fájlok importálásakor / átnevezésekor?",
|
"SetPermissionsLinuxHelpText": "Futtatandó a chmod a fájlok importálásakor",
|
||||||
"SetPermissionsLinuxHelpTextWarning": "Ha nem biztos abban, hogy ezek a beállítások mit csinálnak, ne módosítsa őket.",
|
"SetPermissionsLinuxHelpTextWarning": "Ha nem biztos abban, hogy ezek a beállítások mit csinálnak, ne módosítsa őket.",
|
||||||
"Settings": "Beállítások",
|
"Settings": "Beállítások",
|
||||||
"ShortDateFormat": "Rövid dátumformátum",
|
"ShortDateFormat": "Rövid dátumformátum",
|
||||||
@@ -568,7 +568,7 @@
|
|||||||
"AnalyticsEnabledHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
"AnalyticsEnabledHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
||||||
"DeleteRootFolderMessageText": "Biztosan törli a(z) \"{name}\" gyökérmappát?",
|
"DeleteRootFolderMessageText": "Biztosan törli a(z) \"{name}\" gyökérmappát?",
|
||||||
"LoadingBooksFailed": "A film fájljainak betöltése sikertelen",
|
"LoadingBooksFailed": "A film fájljainak betöltése sikertelen",
|
||||||
"ProxyPasswordHelpText": "Csak akkor kell megadnod felhasználónevet és jelszót, ha szükséges. Egyébként hagyd üresen.",
|
"ProxyPasswordHelpText": "Csak akkor kell megadnia egy felhasználónevet és jelszót, ha szükséges. Ellenkező esetben hagyja üresen.",
|
||||||
"SslCertPathHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
"SslCertPathHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
||||||
"SslCertPasswordHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
"SslCertPasswordHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
||||||
"UnableToLoadMetadataProfiles": "Nem sikerült betölteni a metaadat-profilokat",
|
"UnableToLoadMetadataProfiles": "Nem sikerült betölteni a metaadat-profilokat",
|
||||||
@@ -655,7 +655,7 @@
|
|||||||
"AudioFileMetadata": "Metaadatok írása az Audió fájl(ok)ba",
|
"AudioFileMetadata": "Metaadatok írása az Audió fájl(ok)ba",
|
||||||
"Tomorrow": "Holnap",
|
"Tomorrow": "Holnap",
|
||||||
"Today": "Ma",
|
"Today": "Ma",
|
||||||
"ReleaseTitle": "Kiadás címe",
|
"ReleaseTitle": "Release kiadás",
|
||||||
"Progress": "Folyamat",
|
"Progress": "Folyamat",
|
||||||
"OutputPath": "Kimeneti út",
|
"OutputPath": "Kimeneti út",
|
||||||
"BookTitle": "Könyv Címe",
|
"BookTitle": "Könyv Címe",
|
||||||
@@ -750,8 +750,8 @@
|
|||||||
"ItsEasyToAddANewAuthorOrBookJustStartTypingTheNameOfTheItemYouWantToAdd": "Könnyen hozzáadhat új szerzőt vagy könyvet, csak kezdje el beírni a hozzáadni kívánt elem nevét",
|
"ItsEasyToAddANewAuthorOrBookJustStartTypingTheNameOfTheItemYouWantToAdd": "Könnyen hozzáadhat új szerzőt vagy könyvet, csak kezdje el beírni a hozzáadni kívánt elem nevét",
|
||||||
"ListsSettingsSummary": "Listák importálása",
|
"ListsSettingsSummary": "Listák importálása",
|
||||||
"MetadataSettingsSummary": "Hozzon létre metaadatfájlokat a könyvek importálásakor vagy a szerző frissítésekor",
|
"MetadataSettingsSummary": "Hozzon létre metaadatfájlokat a könyvek importálásakor vagy a szerző frissítésekor",
|
||||||
"QualitySettingsSummary": "Minőségi méretek és elnevezés",
|
"QualitySettingsSummary": "Minőségi méretek és elnevezések",
|
||||||
"QueueIsEmpty": "A várakozási sor üres",
|
"QueueIsEmpty": "A sor üres",
|
||||||
"RefreshBook": "Könyv frissítése",
|
"RefreshBook": "Könyv frissítése",
|
||||||
"SearchFiltered": "Keresés szűrve",
|
"SearchFiltered": "Keresés szűrve",
|
||||||
"TagsSettingsSummary": "Tekintse meg az összes címkét és azok használatát. A használatlan címkék eltávolíthatók",
|
"TagsSettingsSummary": "Tekintse meg az összes címkét és azok használatát. A használatlan címkék eltávolíthatók",
|
||||||
@@ -830,7 +830,7 @@
|
|||||||
"ConvertToFormat": "Konvertálás Formátumba",
|
"ConvertToFormat": "Konvertálás Formátumba",
|
||||||
"DataAllBooks": "Összes könyv monitorozása",
|
"DataAllBooks": "Összes könyv monitorozása",
|
||||||
"InstanceName": "Példány Neve",
|
"InstanceName": "Példány Neve",
|
||||||
"RestartRequiredHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
"RestartRequiredHelpTextWarning": "Újraindítás szükséges az életbe lépéshez",
|
||||||
"DataExistingBooks": "Könyvek monitorozása, ha van fájl, vagy ha még meg sem jelent",
|
"DataExistingBooks": "Könyvek monitorozása, ha van fájl, vagy ha még meg sem jelent",
|
||||||
"DataFirstBook": "Az első könyvet monitorozása. Az összes többi könyvet figyelmen kívül hagyja",
|
"DataFirstBook": "Az első könyvet monitorozása. Az összes többi könyvet figyelmen kívül hagyja",
|
||||||
"DataLatestBook": "Legutolsó, és jövendőbeli könyvek monitorozása",
|
"DataLatestBook": "Legutolsó, és jövendőbeli könyvek monitorozása",
|
||||||
@@ -848,7 +848,7 @@
|
|||||||
"WriteMetadataTags": "Írjon metaadat-címkéket",
|
"WriteMetadataTags": "Írjon metaadat-címkéket",
|
||||||
"EditList": "Lista szerkesztése",
|
"EditList": "Lista szerkesztése",
|
||||||
"MonitorExistingBooks": "Meglévő könyvek monitorozása",
|
"MonitorExistingBooks": "Meglévő könyvek monitorozása",
|
||||||
"RenameFiles": "Fájl(ok) átnevezése",
|
"RenameFiles": "Fájlok átnevezése",
|
||||||
"InstanceNameHelpText": "Példánynév a böngésző lapon és a syslog alkalmazás neve",
|
"InstanceNameHelpText": "Példánynév a böngésző lapon és a syslog alkalmazás neve",
|
||||||
"LoadingEditionsFailed": "A kiadások betöltése nem sikerült",
|
"LoadingEditionsFailed": "A kiadások betöltése nem sikerült",
|
||||||
"ManualImportSelectEdition": "Kézi importálás – Válaszd ki a Kiadást",
|
"ManualImportSelectEdition": "Kézi importálás – Válaszd ki a Kiadást",
|
||||||
@@ -887,7 +887,7 @@
|
|||||||
"UpgradesAllowed": "Frissítések Engedélyezve",
|
"UpgradesAllowed": "Frissítések Engedélyezve",
|
||||||
"CutoffFormatScoreHelpText": "Amint eléri ezt az egyéni minőséget, a Radarr többé nem fogja tovább keresni a filmet",
|
"CutoffFormatScoreHelpText": "Amint eléri ezt az egyéni minőséget, a Radarr többé nem fogja tovább keresni a filmet",
|
||||||
"ResetDefinitionTitlesHelpText": "A definíciócímek és értékek visszaállítása",
|
"ResetDefinitionTitlesHelpText": "A definíciócímek és értékek visszaállítása",
|
||||||
"ResetTitles": "Címek visszaállítása",
|
"ResetTitles": "Címek Visszaállítása",
|
||||||
"ImportListMissingRoot": "Hiányzó gyökérmappa az importálási listá(k)hoz: {0}",
|
"ImportListMissingRoot": "Hiányzó gyökérmappa az importálási listá(k)hoz: {0}",
|
||||||
"ImportListMultipleMissingRoots": "Több gyökérmappa hiányzik az importálási listákhoz: {0}",
|
"ImportListMultipleMissingRoots": "Több gyökérmappa hiányzik az importálási listákhoz: {0}",
|
||||||
"IndexerDownloadClientHelpText": "Adja meg, hogy melyik letöltési kliens használja az indexelőből történő megfogásokat",
|
"IndexerDownloadClientHelpText": "Adja meg, hogy melyik letöltési kliens használja az indexelőből történő megfogásokat",
|
||||||
@@ -909,7 +909,7 @@
|
|||||||
"Required": "Kötelező",
|
"Required": "Kötelező",
|
||||||
"ApiKeyValidationHealthCheckMessage": "Kérlek frissítsd az API kulcsot, ami legalább {0} karakter hosszú. Ezt megteheted a Beállításokban, vagy a config file-ban",
|
"ApiKeyValidationHealthCheckMessage": "Kérlek frissítsd az API kulcsot, ami legalább {0} karakter hosszú. Ezt megteheted a Beállításokban, vagy a config file-ban",
|
||||||
"NoEventsFound": "Nem található események",
|
"NoEventsFound": "Nem található események",
|
||||||
"ResetQualityDefinitions": "Állítsd vissza a minőségi meghatározásokat",
|
"ResetQualityDefinitions": "Minőségi meghatározások Visszaállítása",
|
||||||
"DeleteRemotePathMapping": "Távoli Elérési Útvonal Módosítása",
|
"DeleteRemotePathMapping": "Távoli Elérési Útvonal Módosítása",
|
||||||
"BlocklistReleaseHelpText": "Megakadályozza, hogy a Lidarr automatikusan letöltse újra",
|
"BlocklistReleaseHelpText": "Megakadályozza, hogy a Lidarr automatikusan letöltse újra",
|
||||||
"ApplyTagsHelpTextHowToApplyAuthors": "Hogyan adjunk hozzá címkéket a kiválasztott filmhez",
|
"ApplyTagsHelpTextHowToApplyAuthors": "Hogyan adjunk hozzá címkéket a kiválasztott filmhez",
|
||||||
@@ -924,7 +924,7 @@
|
|||||||
"RecycleBinUnableToWriteHealthCheck": "Nem lehet írni a konfigurált lomtár mappába {0}. Győződjön meg arról, hogy ez az elérési útvonal létezik, és az a felhasználó, aki a Sonarr-t futtatja, írási jogosultsággal rendelkezik",
|
"RecycleBinUnableToWriteHealthCheck": "Nem lehet írni a konfigurált lomtár mappába {0}. Győződjön meg arról, hogy ez az elérési útvonal létezik, és az a felhasználó, aki a Sonarr-t futtatja, írási jogosultsággal rendelkezik",
|
||||||
"RedownloadFailed": "Letöltés Sikertelen",
|
"RedownloadFailed": "Letöltés Sikertelen",
|
||||||
"RemoveCompleted": "Eltávolítás kész",
|
"RemoveCompleted": "Eltávolítás kész",
|
||||||
"RemoveDownloadsAlert": "Az eltávolításhoz szükséges beállítások átkerültek a fenti táblázatban található egyéni letöltő beállítások közé.",
|
"RemoveDownloadsAlert": "Az Eltávolítási beállítások átkerültek a fenti táblázatban a Letöltési kliens egyéni beállításaiba.",
|
||||||
"ApplyTagsHelpTextHowToApplyDownloadClients": "Címkék alkalmazása a kiválasztott letöltési kliensekre",
|
"ApplyTagsHelpTextHowToApplyDownloadClients": "Címkék alkalmazása a kiválasztott letöltési kliensekre",
|
||||||
"ApplyChanges": "Változások alkalmazása",
|
"ApplyChanges": "Változások alkalmazása",
|
||||||
"ApplyTagsHelpTextAdd": "Hozzáadás: Adja hozzá a címkéket a meglévő címkék listájához",
|
"ApplyTagsHelpTextAdd": "Hozzáadás: Adja hozzá a címkéket a meglévő címkék listájához",
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
"60MinutesSixty": "60 Minuti: {0}",
|
"60MinutesSixty": "60 Minuti: {0}",
|
||||||
"APIKey": "Chiave API",
|
"APIKey": "Chiave API",
|
||||||
"About": "Info",
|
"About": "Info",
|
||||||
"AddListExclusion": "Aggiungi Lista Esclusioni",
|
|
||||||
"AddingTag": "Aggiungendo etichetta",
|
"AddingTag": "Aggiungendo etichetta",
|
||||||
"Fixed": "Fissato",
|
"Fixed": "Fissato",
|
||||||
"Local": "Locale",
|
"Local": "Locale",
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
"BackupRetentionHelpText": "Automatische veiligheidskopieën ouder dan de retentie periode zullen worden opgeruimd",
|
"BackupRetentionHelpText": "Automatische veiligheidskopieën ouder dan de retentie periode zullen worden opgeruimd",
|
||||||
"Backups": "Veiligheidskopieën",
|
"Backups": "Veiligheidskopieën",
|
||||||
"BindAddress": "Gebonden Adres",
|
"BindAddress": "Gebonden Adres",
|
||||||
"BindAddressHelpText": "Geldig IPv4-adres of '*' voor alle interfaces",
|
"BindAddressHelpText": "Geldig IP-adres, localhost of '*' voor alle interfaces",
|
||||||
"BindAddressHelpTextWarning": "Herstarten vereist om in werking te treden",
|
"BindAddressHelpTextWarning": "Herstarten vereist om in werking te treden",
|
||||||
"BookIsDownloading": "Film is aan het downloaden",
|
"BookIsDownloading": "Film is aan het downloaden",
|
||||||
"BookIsDownloadingInterp": "Film is aan het downloaden - {0}% {1}",
|
"BookIsDownloadingInterp": "Film is aan het downloaden - {0}% {1}",
|
||||||
@@ -649,5 +649,6 @@
|
|||||||
"AddNew": "Voeg Nieuwe Toe",
|
"AddNew": "Voeg Nieuwe Toe",
|
||||||
"AppUpdated": "{appName} is geüpdatet",
|
"AppUpdated": "{appName} is geüpdatet",
|
||||||
"AppUpdatedVersion": "{appName} is geüpdatet naar versie '{version}', om de laatste wijzigingen door te voeren moet je mogelijk {appName} herstarten",
|
"AppUpdatedVersion": "{appName} is geüpdatet naar versie '{version}', om de laatste wijzigingen door te voeren moet je mogelijk {appName} herstarten",
|
||||||
"AllResultsAreHiddenByTheAppliedFilter": "Alle resultaten zijn verborgen door het toegepaste filter"
|
"AllResultsAreHiddenByTheAppliedFilter": "Alle resultaten zijn verborgen door het toegepaste filter",
|
||||||
|
"Backup": "Veiligheidskopie"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -485,7 +485,7 @@
|
|||||||
"AllAuthorBooks": "Todos os livros do autor",
|
"AllAuthorBooks": "Todos os livros do autor",
|
||||||
"AllBooks": "Todos os livros",
|
"AllBooks": "Todos os livros",
|
||||||
"AllExpandedCollapseAll": "Fechar tudo",
|
"AllExpandedCollapseAll": "Fechar tudo",
|
||||||
"AllExpandedExpandAll": "Expandir tudo",
|
"AllExpandedExpandAll": "Expandir Tudo",
|
||||||
"AllowAuthorChangeClickToChangeAuthor": "Clique para mudar o autor",
|
"AllowAuthorChangeClickToChangeAuthor": "Clique para mudar o autor",
|
||||||
"AllowFingerprinting": "Permitir impressão digital",
|
"AllowFingerprinting": "Permitir impressão digital",
|
||||||
"AllowFingerprintingHelpText": "Usar a impressão digital para melhorar a precisão da correspondência de livros",
|
"AllowFingerprintingHelpText": "Usar a impressão digital para melhorar a precisão da correspondência de livros",
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"ProxyPasswordHelpText": "Você só precisa digitar um nome de usuário e senha se for necessário. Caso contrário, deixe-os em branco.",
|
"ProxyPasswordHelpText": "Você só precisa digitar um nome de usuário e senha se for necessário. Caso contrário, deixe-os em branco.",
|
||||||
"SslCertPathHelpTextWarning": "Requer reinício para ter efeito",
|
"SslCertPathHelpTextWarning": "Requer reinício para ter efeito",
|
||||||
"UnableToLoadMetadataProfiles": "Não foi possível carregar os perfis de metadados",
|
"UnableToLoadMetadataProfiles": "Não foi possível carregar os perfis de metadados",
|
||||||
"AddListExclusion": "Adicionar exclusão à lista",
|
"AddListExclusion": "Adicionar Exclusão de Lista",
|
||||||
"AddingTag": "Adicionar tag",
|
"AddingTag": "Adicionar tag",
|
||||||
"AlreadyInYourLibrary": "Já está na sua biblioteca",
|
"AlreadyInYourLibrary": "Já está na sua biblioteca",
|
||||||
"AlternateTitles": "Títulos alternativos",
|
"AlternateTitles": "Títulos alternativos",
|
||||||
@@ -1051,5 +1051,14 @@
|
|||||||
"DoNotBlocklistHint": "Remover sem colocar na lista de bloqueio",
|
"DoNotBlocklistHint": "Remover sem colocar na lista de bloqueio",
|
||||||
"RemoveFromDownloadClientHint": "Remove download e arquivo(s) do cliente de download",
|
"RemoveFromDownloadClientHint": "Remove download e arquivo(s) do cliente de download",
|
||||||
"RemoveMultipleFromDownloadClientHint": "Remove downloads e arquivos do cliente de download",
|
"RemoveMultipleFromDownloadClientHint": "Remove downloads e arquivos do cliente de download",
|
||||||
"RemoveQueueItemRemovalMethodHelpTextWarning": "'Remover do cliente de download' removerá o download e os arquivos do cliente de download."
|
"RemoveQueueItemRemovalMethodHelpTextWarning": "'Remover do cliente de download' removerá o download e os arquivos do cliente de download.",
|
||||||
|
"AuthorProgressBarText": "{availableBookCount} / {bookCount} (Total: {totalBookCount}, Arquivos: {bookFileCount})",
|
||||||
|
"BookProgressBarText": "{bookCount} / {totalBookCount} (Arquivos: {bookFileCount})",
|
||||||
|
"SelectBook": "Selecionar o Livro",
|
||||||
|
"SelectDropdown": "Selecionar...",
|
||||||
|
"SelectEdition": "Selecionar a Edição",
|
||||||
|
"SelectReleaseGroup": "Selecionar um Grupo de Lançamento",
|
||||||
|
"SelectQuality": "Selecionar uma Qualidade",
|
||||||
|
"CustomFilter": "Filtro Personalizado",
|
||||||
|
"LabelIsRequired": "Rótulo é requerido"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"60MinutesSixty": "60 Dakika: {0}",
|
"60MinutesSixty": "60 Dakika: {0}",
|
||||||
"APIKey": "API Anahtarı",
|
"APIKey": "API Anahtarı",
|
||||||
"About": "Hakkında",
|
"About": "Hakkında",
|
||||||
"AddListExclusion": "Liste Hariç Tutma Ekle",
|
"AddListExclusion": "Hariç Tutma Listesine Ekle",
|
||||||
"AddingTag": "Etiket ekleniyor",
|
"AddingTag": "Etiket ekleniyor",
|
||||||
"ApiKeyHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
|
"ApiKeyHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
|
||||||
"AnalyticsEnabledHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
|
"AnalyticsEnabledHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"AlternateTitles": "Alternatif Başlık",
|
"AlternateTitles": "Alternatif Başlık",
|
||||||
"Analytics": "Analitik",
|
"Analytics": "Analitik",
|
||||||
"AnalyticsEnabledHelpText": "Anonim kullanım ve hata bilgilerini Radarr sunucularına gönderin. Bu, tarayıcınızla ilgili bilgileri, kullandığınız Radarr WebUI sayfalarını, hata raporlamasının yanı sıra işletim sistemi ve çalışma zamanı sürümünü içerir. Bu bilgileri, özellikleri ve hata düzeltmelerini önceliklendirmek için kullanacağız.",
|
"AnalyticsEnabledHelpText": "Anonim kullanım ve hata bilgilerini Radarr sunucularına gönderin. Bu, tarayıcınızla ilgili bilgileri, kullandığınız Radarr WebUI sayfalarını, hata raporlamasının yanı sıra işletim sistemi ve çalışma zamanı sürümünü içerir. Bu bilgileri, özellikleri ve hata düzeltmelerini önceliklendirmek için kullanacağız.",
|
||||||
"AppDataDirectory": "AppData dizini",
|
"AppDataDirectory": "Uygulama Veri Dizini",
|
||||||
"ApplyTags": "Etiketleri Uygula",
|
"ApplyTags": "Etiketleri Uygula",
|
||||||
"Authentication": "Doğrulama",
|
"Authentication": "Doğrulama",
|
||||||
"AuthenticationMethodHelpText": "Radarr'a erişmek için Kullanıcı Adı ve Şifre gerektir",
|
"AuthenticationMethodHelpText": "Radarr'a erişmek için Kullanıcı Adı ve Şifre gerektir",
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
"BackupRetentionHelpText": "Saklama süresinden daha eski olan otomatik yedeklemeler otomatik olarak temizlenecektir",
|
"BackupRetentionHelpText": "Saklama süresinden daha eski olan otomatik yedeklemeler otomatik olarak temizlenecektir",
|
||||||
"Backups": "Yedeklemeler",
|
"Backups": "Yedeklemeler",
|
||||||
"BindAddress": "Bağlama Adresi",
|
"BindAddress": "Bağlama Adresi",
|
||||||
"BindAddressHelpText": "Tüm arayüzler için geçerli IP4 adresi veya '*'",
|
"BindAddressHelpText": "Tüm arayüzler için geçerli IP adresi, localhost veya '*'",
|
||||||
"BindAddressHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
|
"BindAddressHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
|
||||||
"BookIsDownloading": "Film indiriliyor",
|
"BookIsDownloading": "Film indiriliyor",
|
||||||
"BookIsDownloadingInterp": "Film indiriliyor - {0}% {1}",
|
"BookIsDownloadingInterp": "Film indiriliyor - {0}% {1}",
|
||||||
@@ -46,10 +46,10 @@
|
|||||||
"BypassProxyForLocalAddresses": "Yerel Adresler için Proxy'yi Atla",
|
"BypassProxyForLocalAddresses": "Yerel Adresler için Proxy'yi Atla",
|
||||||
"Calendar": "Takvim",
|
"Calendar": "Takvim",
|
||||||
"CalendarWeekColumnHeaderHelpText": "Aktif görünüm hafta olduğunda her bir sütunun üzerinde gösterilir",
|
"CalendarWeekColumnHeaderHelpText": "Aktif görünüm hafta olduğunda her bir sütunun üzerinde gösterilir",
|
||||||
"Cancel": "İptal etmek",
|
"Cancel": "Vazgeç",
|
||||||
"CancelMessageText": "Bu bekleyen görevi iptal etmek istediğinizden emin misiniz?",
|
"CancelMessageText": "Bu bekleyen görevi iptal etmek istediğinizden emin misiniz?",
|
||||||
"CertificateValidation": "Sertifika Doğrulama",
|
"CertificateValidation": "Sertifika Doğrulama",
|
||||||
"CertificateValidationHelpText": "HTTPS sertifika doğrulamasının ne kadar katı olduğunu değiştirin",
|
"CertificateValidationHelpText": "HTTPS sertifika doğrulamasının sıkılığını değiştirin. Riskleri anlamadığınız sürece değişmeyin.",
|
||||||
"ChangeFileDate": "Dosya Tarihini Değiştir",
|
"ChangeFileDate": "Dosya Tarihini Değiştir",
|
||||||
"ChangeHasNotBeenSavedYet": "Değişiklik henüz kaydedilmedi",
|
"ChangeHasNotBeenSavedYet": "Değişiklik henüz kaydedilmedi",
|
||||||
"ChmodFolder": "chmod Klasörü",
|
"ChmodFolder": "chmod Klasörü",
|
||||||
@@ -591,11 +591,11 @@
|
|||||||
"Yes": "Evet",
|
"Yes": "Evet",
|
||||||
"RedownloadFailed": "Yükleme başarısız",
|
"RedownloadFailed": "Yükleme başarısız",
|
||||||
"ApplyTagsHelpTextAdd": "Ekle: Etiketleri mevcut etiket listesine ekleyin",
|
"ApplyTagsHelpTextAdd": "Ekle: Etiketleri mevcut etiket listesine ekleyin",
|
||||||
"ApplyTagsHelpTextHowToApplyDownloadClients": "Seçilen filmlere etiketler nasıl uygulanır",
|
"ApplyTagsHelpTextHowToApplyDownloadClients": "Seçilen indirme istemcilerine etiketler nasıl uygulanır?",
|
||||||
"ApplyTagsHelpTextHowToApplyImportLists": "Seçilen filmlere etiketler nasıl uygulanır",
|
"ApplyTagsHelpTextHowToApplyImportLists": "Seçilen içe aktarma listelerine etiketler nasıl uygulanır?",
|
||||||
"ApplyTagsHelpTextHowToApplyIndexers": "Seçilen filmlere etiketler nasıl uygulanır",
|
"ApplyTagsHelpTextHowToApplyIndexers": "Seçilen indeksleyicilere etiketler nasıl uygulanır?",
|
||||||
"ApplyTagsHelpTextRemove": "Kaldır: Girilen etiketleri kaldırın",
|
"ApplyTagsHelpTextRemove": "Kaldır: Girilen etiketleri kaldırın",
|
||||||
"ApplyTagsHelpTextReplace": "Değiştir: Etiketleri girilen etiketlerle değiştirin (tüm etiketleri temizlemek için hiçbir etiket girmeyin)",
|
"ApplyTagsHelpTextReplace": "Değiştir: Etiketleri girilen etiketlerle değiştirin (tüm etiketleri kaldırmak için etiket girmeyin)",
|
||||||
"DeleteSelectedDownloadClients": "İndirme İstemcisini Sil",
|
"DeleteSelectedDownloadClients": "İndirme İstemcisini Sil",
|
||||||
"DeleteSelectedIndexers": "Dizinleyiciyi Sil",
|
"DeleteSelectedIndexers": "Dizinleyiciyi Sil",
|
||||||
"ExistingTag": "Mevcut etiket",
|
"ExistingTag": "Mevcut etiket",
|
||||||
@@ -603,7 +603,7 @@
|
|||||||
"NoChange": "Değişiklik yok",
|
"NoChange": "Değişiklik yok",
|
||||||
"SetTags": "Etiketleri Ayarla",
|
"SetTags": "Etiketleri Ayarla",
|
||||||
"ConnectionLost": "Bağlantı koptu",
|
"ConnectionLost": "Bağlantı koptu",
|
||||||
"ConnectionLostReconnect": "Radarr otomatik olarak bağlanmayı deneyecek veya aşağıdan yeniden yükle'yi tıklayabilirsiniz.",
|
"ConnectionLostReconnect": "{appName} otomatik bağlanmayı deneyecek veya aşağıda yeniden yükle seçeneğini işaretleyebilirsiniz.",
|
||||||
"LastExecution": "Son Yürütme",
|
"LastExecution": "Son Yürütme",
|
||||||
"LastWriteTime": "Son Yazma Zamanı",
|
"LastWriteTime": "Son Yazma Zamanı",
|
||||||
"Location": "yer",
|
"Location": "yer",
|
||||||
@@ -631,5 +631,32 @@
|
|||||||
"MetadataProfile": "üstveri profili",
|
"MetadataProfile": "üstveri profili",
|
||||||
"MetadataProfiles": "üstveri profili",
|
"MetadataProfiles": "üstveri profili",
|
||||||
"ExtraFileExtensionsHelpText": "İçe aktarılacak ekstra dosyaların virgülle ayrılmış listesi (.nfo, .nfo-orig olarak içe aktarılacaktır)",
|
"ExtraFileExtensionsHelpText": "İçe aktarılacak ekstra dosyaların virgülle ayrılmış listesi (.nfo, .nfo-orig olarak içe aktarılacaktır)",
|
||||||
"ExtraFileExtensionsHelpTextsExamples": "Örnekler: \".sub, .nfo\" veya \"sub, nfo\""
|
"ExtraFileExtensionsHelpTextsExamples": "Örnekler: \".sub, .nfo\" veya \"sub, nfo\"",
|
||||||
|
"AppUpdated": "{appName} Güncellendi",
|
||||||
|
"AppUpdatedVersion": "{appName}, `{version}` sürümüne güncellendi; en son değişikliklerin etkin olabilmesi için {appName} uygulamasını yeniden başlatmanız gerekli",
|
||||||
|
"Clone": "Klon",
|
||||||
|
"ConnectionLostToBackend": "{appName}'ın arka uçla bağlantısı kesildi ve işlevselliğin geri kazanılması için yeniden yüklenmesi gerekecek.",
|
||||||
|
"AutomaticUpdatesDisabledDocker": "Docker güncelleme mekanizması kullanıldığında otomatik güncellemeler doğrudan desteklenmez. Kapsayıcı görüntüsünü {appName} dışında güncellemeniz veya bir komut dosyası kullanmanız gerekecek",
|
||||||
|
"ChownGroup": "Chown Grubu",
|
||||||
|
"ApplicationURL": "Uygulama URL'si",
|
||||||
|
"ApplicationUrlHelpText": "Bu uygulamanın http(s)://, bağlantı noktası ve URL tabanını içeren harici URL'si",
|
||||||
|
"ApplyChanges": "Değişiklikleri Uygula",
|
||||||
|
"CustomFormatsSpecificationRegularExpressionHelpText": "Özel Format RegEx Büyük/Küçük Harfe Duyarsızdır",
|
||||||
|
"CustomFormatsSpecificationRegularExpression": "Düzenli ifade",
|
||||||
|
"BlocklistOnlyHint": "Yenisini aramadan engelleme listesi",
|
||||||
|
"BlocklistAndSearch": "Engellenenler Listesi ve Arama",
|
||||||
|
"BlocklistAndSearchHint": "Engellenenler listesine ekledikten sonra yenisini aramaya başlayın",
|
||||||
|
"BlocklistAndSearchMultipleHint": "Engellenenler listesine ekledikten sonra yedekleri aramaya başlayın",
|
||||||
|
"BlocklistMultipleOnlyHint": "Yedekleri aramadan engelleme listesi",
|
||||||
|
"BlocklistOnly": "Yalnızca Engellenenler Listesi",
|
||||||
|
"ChangeCategory": "Kategoriyi Değiştir",
|
||||||
|
"ChangeCategoryMultipleHint": "İndirme istemcisinden indirmeleri 'İçe Aktarma Sonrası Kategorisi' olarak değiştirir",
|
||||||
|
"ClickToChangeReleaseGroup": "Sürüm grubunu değiştirmek için tıklayın",
|
||||||
|
"CloneCondition": "Klon Durumu",
|
||||||
|
"CustomFilter": "Özel Filtre",
|
||||||
|
"AutoRedownloadFailed": "Yeniden İndirme Başarısız",
|
||||||
|
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Başarısız indirmeler, etkileşimli aramada bulunduğunda otomatik olarak farklı bir versiyonu arayın ve indirmeyi deneyin",
|
||||||
|
"ChangeCategoryHint": "İndirme İstemcisi'nden indirme işlemini 'İçe Aktarma Sonrası Kategorisi' olarak değiştirir",
|
||||||
|
"AutoRedownloadFailedFromInteractiveSearch": "Etkileşimli Aramadan Yeniden İndirme Başarısız Oldu",
|
||||||
|
"AutomaticAdd": "Otomatik Ekle"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -163,7 +163,7 @@
|
|||||||
"Indexers": "索引器",
|
"Indexers": "索引器",
|
||||||
"Interval": "间隔",
|
"Interval": "间隔",
|
||||||
"IsCutoffCutoff": "截止",
|
"IsCutoffCutoff": "截止",
|
||||||
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "升级直到歌曲质量超出或者满足",
|
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "升级直至达到或超过此质量",
|
||||||
"IsTagUsedCannotBeDeletedWhileInUse": "使用中无法删除",
|
"IsTagUsedCannotBeDeletedWhileInUse": "使用中无法删除",
|
||||||
"Language": "语言",
|
"Language": "语言",
|
||||||
"LaunchBrowserHelpText": " 启动浏览器时导航到Radarr主页。",
|
"LaunchBrowserHelpText": " 启动浏览器时导航到Radarr主页。",
|
||||||
@@ -426,7 +426,7 @@
|
|||||||
"60MinutesSixty": "60分钟: {0}",
|
"60MinutesSixty": "60分钟: {0}",
|
||||||
"APIKey": "API Key",
|
"APIKey": "API Key",
|
||||||
"About": "关于",
|
"About": "关于",
|
||||||
"AddListExclusion": "添加列表例外",
|
"AddListExclusion": "新增 列表",
|
||||||
"DeleteTag": "删除标签",
|
"DeleteTag": "删除标签",
|
||||||
"UnableToLoadTags": "无法加载标签",
|
"UnableToLoadTags": "无法加载标签",
|
||||||
"DownloadClientCheckDownloadingToRoot": "下载客户端{0}将下载内容放在根文件夹{1}中。您不应该下载到根文件夹。",
|
"DownloadClientCheckDownloadingToRoot": "下载客户端{0}将下载内容放在根文件夹{1}中。您不应该下载到根文件夹。",
|
||||||
@@ -1024,5 +1024,39 @@
|
|||||||
"ExtraFileExtensionsHelpTextsExamples": "示例:’.sub,.nfo‘ 或 ’sub,nfo‘",
|
"ExtraFileExtensionsHelpTextsExamples": "示例:’.sub,.nfo‘ 或 ’sub,nfo‘",
|
||||||
"InvalidUILanguage": "您的UI设置为无效语言,请纠正并保存设置",
|
"InvalidUILanguage": "您的UI设置为无效语言,请纠正并保存设置",
|
||||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "是否使用 qBittorrent 配置的内容布局,使用种子的原始布局或始终创建子文件夹(qBittorrent 4.3.2+)",
|
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "是否使用 qBittorrent 配置的内容布局,使用种子的原始布局或始终创建子文件夹(qBittorrent 4.3.2+)",
|
||||||
"ChangeCategory": "改变分类"
|
"ChangeCategory": "改变分类",
|
||||||
|
"CustomFormatsSpecificationRegularExpressionHelpText": "自定义格式正则表达式不区分大小写",
|
||||||
|
"CustomFormatsSpecificationRegularExpression": "正则表达式",
|
||||||
|
"AuthorProgressBarText": "{availableBookCount} / {bookCount} (总共: {totalBookCount}, 文件: {bookFileCount})",
|
||||||
|
"BookProgressBarText": "{bookCount} / {totalBookCount} (文件:{bookFileCount})",
|
||||||
|
"SelectBook": "选择书籍",
|
||||||
|
"SelectDropdown": "选择…",
|
||||||
|
"SelectEdition": "选择版本",
|
||||||
|
"SelectQuality": "选择质量",
|
||||||
|
"SelectReleaseGroup": "选择发布组",
|
||||||
|
"BlocklistAndSearch": "黑名单和搜索",
|
||||||
|
"BlocklistAndSearchMultipleHint": "列入黑名单后开始搜索替代版本",
|
||||||
|
"BlocklistMultipleOnlyHint": "无需搜索替换的黑名单",
|
||||||
|
"BlocklistOnly": "仅限黑名单",
|
||||||
|
"BlocklistOnlyHint": "无需寻找替代版本的黑名单",
|
||||||
|
"BlocklistAndSearchHint": "列入黑名单后开始寻找一个替代版本",
|
||||||
|
"ChangeCategoryHint": "将下载从下载客户端更改为“导入后类别”",
|
||||||
|
"ChangeCategoryMultipleHint": "将下载从下载客户端更改为“导入后类别”",
|
||||||
|
"DoNotBlocklist": "不要列入黑名单",
|
||||||
|
"DoNotBlocklistHint": "删除而不列入黑名单",
|
||||||
|
"IgnoreDownload": "忽略下载",
|
||||||
|
"IgnoreDownloadHint": "阻止 {appName} 进一步处理此下载",
|
||||||
|
"IgnoreDownloads": "忽略下载",
|
||||||
|
"IgnoreDownloadsHint": "阻止 {appName} 进一步处理这些下载",
|
||||||
|
"RemoveFromDownloadClientHint": "从下载客户端删除下载和文件",
|
||||||
|
"RemoveMultipleFromDownloadClientHint": "从下载客户端删除下载和文件",
|
||||||
|
"RemoveQueueItemRemovalMethod": "删除方法",
|
||||||
|
"RemoveQueueItemsRemovalMethodHelpTextWarning": "“从下载客户端移除”将从下载客户端移除下载内容和文件。",
|
||||||
|
"RemoveQueueItem": "移除 - {sourceTitle}",
|
||||||
|
"RemoveQueueItemConfirmation": "您确定要从队列中移除“{sourceTitle}”吗?",
|
||||||
|
"SourceTitle": "来源标题",
|
||||||
|
"AutoRedownloadFailed": "重新下载失败",
|
||||||
|
"AutoRedownloadFailedFromInteractiveSearch": "手动搜索重新下载失败",
|
||||||
|
"AutoRedownloadFailedFromInteractiveSearchHelpText": "当从手动搜索中获取失败的发行版时,自动搜索并尝试下载不同的发行版",
|
||||||
|
"RemoveQueueItemRemovalMethodHelpTextWarning": "“从下载客户端移除”将从下载客户端移除下载内容和文件。"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ namespace NzbDrone.Core.Notifications.Plex.Server
|
|||||||
{
|
{
|
||||||
var scheme = settings.UseSsl ? "https" : "http";
|
var scheme = settings.UseSsl ? "https" : "http";
|
||||||
|
|
||||||
var requestBuilder = new HttpRequestBuilder($"{scheme}://{settings.Host.ToUrlHost()}:{settings.Port}")
|
var requestBuilder = new HttpRequestBuilder($"{scheme}://{settings.Host.ToUrlHost()}:{settings.Port}{settings.UrlBase}")
|
||||||
.Accept(HttpAccept.Json)
|
.Accept(HttpAccept.Json)
|
||||||
.AddQueryParam("X-Plex-Client-Identifier", _configService.PlexClientIdentifier)
|
.AddQueryParam("X-Plex-Client-Identifier", _configService.PlexClientIdentifier)
|
||||||
.AddQueryParam("X-Plex-Product", BuildInfo.AppName)
|
.AddQueryParam("X-Plex-Product", BuildInfo.AppName)
|
||||||
|
|||||||
@@ -34,22 +34,30 @@ namespace NzbDrone.Core.Notifications.Plex.Server
|
|||||||
[FieldDefinition(1, Label = "Port")]
|
[FieldDefinition(1, Label = "Port")]
|
||||||
public int Port { get; set; }
|
public int Port { get; set; }
|
||||||
|
|
||||||
[FieldDefinition(2, Label = "Use SSL", Type = FieldType.Checkbox, HelpText = "Connect to Plex over HTTPS instead of HTTP")]
|
[FieldDefinition(2, Label = "UseSsl", Type = FieldType.Checkbox, HelpText = "NotificationsSettingsUseSslHelpText")]
|
||||||
|
[FieldToken(TokenField.HelpText, "UseSsl", "serviceName", "Plex")]
|
||||||
public bool UseSsl { get; set; }
|
public bool UseSsl { get; set; }
|
||||||
|
|
||||||
[FieldDefinition(3, Label = "Auth Token", Type = FieldType.Textbox, Privacy = PrivacyLevel.ApiKey, Advanced = true)]
|
[FieldDefinition(3, Label = "UrlBase", Type = FieldType.Textbox, Advanced = true, HelpText = "ConnectionSettingsUrlBaseHelpText")]
|
||||||
|
[FieldToken(TokenField.HelpText, "UrlBase", "connectionName", "Plex")]
|
||||||
|
[FieldToken(TokenField.HelpText, "UrlBase", "url", "http://[host]:[port]/[urlBase]/plex")]
|
||||||
|
public string UrlBase { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(4, Label = "NotificationsPlexSettingsAuthToken", Type = FieldType.Textbox, Privacy = PrivacyLevel.ApiKey, Advanced = true)]
|
||||||
public string AuthToken { get; set; }
|
public string AuthToken { get; set; }
|
||||||
|
|
||||||
[FieldDefinition(4, Label = "Authenticate with Plex.tv", Type = FieldType.OAuth)]
|
[FieldDefinition(5, Label = "NotificationsPlexSettingsAuthenticateWithPlexTv", Type = FieldType.OAuth)]
|
||||||
public string SignIn { get; set; }
|
public string SignIn { get; set; }
|
||||||
|
|
||||||
[FieldDefinition(5, Label = "Update Library", Type = FieldType.Checkbox)]
|
[FieldDefinition(6, Label = "NotificationsSettingsUpdateLibrary", Type = FieldType.Checkbox)]
|
||||||
public bool UpdateLibrary { get; set; }
|
public bool UpdateLibrary { get; set; }
|
||||||
|
|
||||||
[FieldDefinition(6, Label = "Map Paths From", Type = FieldType.Textbox, Advanced = true, HelpText = "Readarr path, used to modify author paths when Plex sees library path location differently from Readarr")]
|
[FieldDefinition(7, Label = "NotificationsSettingsUpdateMapPathsFrom", Type = FieldType.Textbox, Advanced = true, HelpText = "NotificationsSettingsUpdateMapPathsFromHelpText")]
|
||||||
|
[FieldToken(TokenField.HelpText, "NotificationsSettingsUpdateMapPathsFrom", "serviceName", "Plex")]
|
||||||
public string MapFrom { get; set; }
|
public string MapFrom { get; set; }
|
||||||
|
|
||||||
[FieldDefinition(7, Label = "Map Paths To", Type = FieldType.Textbox, Advanced = true, HelpText = "Plex path, used to modify author paths when Plex sees library path location differently from Readarr")]
|
[FieldDefinition(8, Label = "NotificationsSettingsUpdateMapPathsTo", Type = FieldType.Textbox, Advanced = true, HelpText = "NotificationsSettingsUpdateMapPathsToHelpText")]
|
||||||
|
[FieldToken(TokenField.HelpText, "NotificationsSettingsUpdateMapPathsTo", "serviceName", "Plex")]
|
||||||
public string MapTo { get; set; }
|
public string MapTo { get; set; }
|
||||||
|
|
||||||
public bool IsValid => !string.IsNullOrWhiteSpace(Host);
|
public bool IsValid => !string.IsNullOrWhiteSpace(Host);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using NzbDrone.Common.Composition;
|
|||||||
using NzbDrone.Common.Serializer;
|
using NzbDrone.Common.Serializer;
|
||||||
using NzbDrone.Common.TPL;
|
using NzbDrone.Common.TPL;
|
||||||
using NzbDrone.Core.Datastore.Events;
|
using NzbDrone.Core.Datastore.Events;
|
||||||
|
using NzbDrone.Core.MediaFiles.BookImport.Manual;
|
||||||
using NzbDrone.Core.Messaging.Commands;
|
using NzbDrone.Core.Messaging.Commands;
|
||||||
using NzbDrone.Core.Messaging.Events;
|
using NzbDrone.Core.Messaging.Events;
|
||||||
using NzbDrone.Core.ProgressMessaging;
|
using NzbDrone.Core.ProgressMessaging;
|
||||||
@@ -58,6 +59,9 @@ namespace Readarr.Api.V1.Commands
|
|||||||
Request.Body.Seek(0, SeekOrigin.Begin);
|
Request.Body.Seek(0, SeekOrigin.Begin);
|
||||||
using var reader = new StreamReader(Request.Body);
|
using var reader = new StreamReader(Request.Body);
|
||||||
var body = reader.ReadToEnd();
|
var body = reader.ReadToEnd();
|
||||||
|
var priority = commandType == typeof(ManualImportCommand)
|
||||||
|
? CommandPriority.High
|
||||||
|
: CommandPriority.Normal;
|
||||||
|
|
||||||
dynamic command = STJson.Deserialize(body, commandType);
|
dynamic command = STJson.Deserialize(body, commandType);
|
||||||
|
|
||||||
@@ -66,7 +70,8 @@ namespace Readarr.Api.V1.Commands
|
|||||||
command.SendUpdatesToClient = true;
|
command.SendUpdatesToClient = true;
|
||||||
command.ClientUserAgent = Request.Headers["User-Agent"];
|
command.ClientUserAgent = Request.Headers["User-Agent"];
|
||||||
|
|
||||||
var trackedCommand = _commandQueueManager.Push(command, CommandPriority.Normal, CommandTrigger.Manual);
|
var trackedCommand = _commandQueueManager.Push(command, priority, CommandTrigger.Manual);
|
||||||
|
|
||||||
return Created(trackedCommand.Id);
|
return Created(trackedCommand.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2277,9 +2277,9 @@ camelcase@^6.3.0:
|
|||||||
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
||||||
|
|
||||||
caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001517:
|
caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001517:
|
||||||
version "1.0.30001525"
|
version "1.0.30001591"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz#d2e8fdec6116ffa36284ca2c33ef6d53612fe1c8"
|
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz"
|
||||||
integrity sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==
|
integrity sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==
|
||||||
|
|
||||||
chalk@^1.1.3:
|
chalk@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
|
|||||||
Reference in New Issue
Block a user