diff --git a/frontend/src/Activity/Blacklist/BlacklistRow.css b/frontend/src/Activity/Blacklist/BlacklistRow.css index c7d31a886..fe431c64a 100644 --- a/frontend/src/Activity/Blacklist/BlacklistRow.css +++ b/frontend/src/Activity/Blacklist/BlacklistRow.css @@ -1,4 +1,3 @@ -.language, .quality { composes: cell from '~Components/Table/Cells/TableRowCell.css'; diff --git a/frontend/src/Activity/Blacklist/BlacklistRow.js b/frontend/src/Activity/Blacklist/BlacklistRow.js index 25168e4f2..418994a98 100644 --- a/frontend/src/Activity/Blacklist/BlacklistRow.js +++ b/frontend/src/Activity/Blacklist/BlacklistRow.js @@ -5,7 +5,6 @@ import IconButton from 'Components/Link/IconButton'; import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector'; import TableRow from 'Components/Table/TableRow'; import TableRowCell from 'Components/Table/Cells/TableRowCell'; -import TrackLanguage from 'Album/TrackLanguage'; import TrackQuality from 'Album/TrackQuality'; import ArtistNameLink from 'Artist/ArtistNameLink'; import BlacklistDetailsModal from './BlacklistDetailsModal'; @@ -42,7 +41,6 @@ class BlacklistRow extends Component { const { artist, sourceTitle, - language, quality, date, protocol, @@ -84,19 +82,6 @@ class BlacklistRow extends Component { ); } - if (name === 'language') { - return ( - - - - ); - } - if (name === 'quality') { return ( - - - ); - } - if (name === 'quality') { return ( @@ -232,8 +218,6 @@ HistoryRow.propTypes = { artist: PropTypes.object.isRequired, album: PropTypes.object, track: PropTypes.object, - language: PropTypes.object.isRequired, - languageCutoffNotMet: PropTypes.bool.isRequired, quality: PropTypes.object.isRequired, qualityCutoffNotMet: PropTypes.bool.isRequired, eventType: PropTypes.string.isRequired, diff --git a/frontend/src/Activity/Queue/QueueRow.js b/frontend/src/Activity/Queue/QueueRow.js index 8ac4f3253..06cf16f70 100644 --- a/frontend/src/Activity/Queue/QueueRow.js +++ b/frontend/src/Activity/Queue/QueueRow.js @@ -12,7 +12,6 @@ import Icon from 'Components/Icon'; import Popover from 'Components/Tooltip/Popover'; import ProtocolLabel from 'Activity/Queue/ProtocolLabel'; import AlbumTitleLink from 'Album/AlbumTitleLink'; -import TrackLanguage from 'Album/TrackLanguage'; import TrackQuality from 'Album/TrackQuality'; import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal'; import ArtistNameLink from 'Artist/ArtistNameLink'; @@ -73,7 +72,6 @@ class QueueRow extends Component { errorMessage, artist, album, - language, quality, protocol, indexer, @@ -185,16 +183,6 @@ class QueueRow extends Component { ); } - if (name === 'language') { - return ( - - - - ); - } - if (name === 'quality') { return ( @@ -364,7 +352,6 @@ QueueRow.propTypes = { errorMessage: PropTypes.string, artist: PropTypes.object, album: PropTypes.object, - language: PropTypes.object.isRequired, quality: PropTypes.object.isRequired, protocol: PropTypes.string.isRequired, indexer: PropTypes.string, diff --git a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.css b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.css index aa248a555..4c5c747a8 100644 --- a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.css +++ b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.css @@ -58,7 +58,6 @@ composes: button from '~Components/Link/SpinnerButton.css'; } -.hideLanguageProfile, .hideMetadataProfile { composes: group from '~Components/Form/FormGroup.css'; diff --git a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.js b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.js index 2bc00fe34..2278812b8 100644 --- a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.js +++ b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.js @@ -42,10 +42,6 @@ class AddNewArtistModalContent extends Component { this.props.onInputChange({ name: 'qualityProfileId', value: parseInt(value) }); } - onLanguageProfileIdChange = ({ value }) => { - this.props.onInputChange({ name: 'languageProfileId', value: parseInt(value) }); - } - onMetadataProfileIdChange = ({ value }) => { this.props.onInputChange({ name: 'metadataProfileId', value: parseInt(value) }); } @@ -66,11 +62,9 @@ class AddNewArtistModalContent extends Component { rootFolderPath, monitor, qualityProfileId, - languageProfileId, metadataProfileId, albumFolder, tags, - showLanguageProfile, showMetadataProfile, isSmallScreen, onModalClose, @@ -159,17 +153,6 @@ class AddNewArtistModalContent extends Component { /> - - Language Profile - - - - Metadata Profile @@ -245,11 +228,9 @@ AddNewArtistModalContent.propTypes = { rootFolderPath: PropTypes.object, monitor: PropTypes.object.isRequired, qualityProfileId: PropTypes.object, - languageProfileId: PropTypes.object, metadataProfileId: PropTypes.object, albumFolder: PropTypes.object.isRequired, tags: PropTypes.object.isRequired, - showLanguageProfile: PropTypes.bool.isRequired, showMetadataProfile: PropTypes.bool.isRequired, isSmallScreen: PropTypes.bool.isRequired, onModalClose: PropTypes.func.isRequired, diff --git a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContentConnector.js b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContentConnector.js index a0163bb07..049d05813 100644 --- a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContentConnector.js +++ b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContentConnector.js @@ -10,10 +10,9 @@ import AddNewArtistModalContent from './AddNewArtistModalContent'; function createMapStateToProps() { return createSelector( (state) => state.addArtist, - (state) => state.settings.languageProfiles, (state) => state.settings.metadataProfiles, createDimensionsSelector(), - (addArtistState, languageProfiles, metadataProfiles, dimensions) => { + (addArtistState, metadataProfiles, dimensions) => { const { isAdding, addError, @@ -29,7 +28,6 @@ function createMapStateToProps() { return { isAdding, addError, - showLanguageProfile: languageProfiles.items.length > 1, showMetadataProfile: metadataProfiles.items.length > 1, isSmallScreen: dimensions.isSmallScreen, validationErrors, @@ -60,7 +58,6 @@ class AddNewArtistModalContentConnector extends Component { rootFolderPath, monitor, qualityProfileId, - languageProfileId, metadataProfileId, albumFolder, tags @@ -71,7 +68,6 @@ class AddNewArtistModalContentConnector extends Component { rootFolderPath: rootFolderPath.value, monitor: monitor.value, qualityProfileId: qualityProfileId.value, - languageProfileId: languageProfileId.value, metadataProfileId: metadataProfileId.value, albumFolder: albumFolder.value, tags: tags.value, @@ -98,7 +94,6 @@ AddNewArtistModalContentConnector.propTypes = { rootFolderPath: PropTypes.object, monitor: PropTypes.object.isRequired, qualityProfileId: PropTypes.object, - languageProfileId: PropTypes.object, metadataProfileId: PropTypes.object, albumFolder: PropTypes.object.isRequired, tags: PropTypes.object.isRequired, diff --git a/frontend/src/AddArtist/ImportArtist/Import/ImportArtist.js b/frontend/src/AddArtist/ImportArtist/Import/ImportArtist.js index fc8ad079c..3ed2459d1 100644 --- a/frontend/src/AddArtist/ImportArtist/Import/ImportArtist.js +++ b/frontend/src/AddArtist/ImportArtist/Import/ImportArtist.js @@ -87,7 +87,6 @@ class ImportArtist extends Component { rootFoldersPopulated, rootFoldersError, unmappedFolders, - showLanguageProfile, showMetadataProfile } = this.props; @@ -130,7 +129,6 @@ class ImportArtist extends Component { allUnselected={allUnselected} selectedState={selectedState} contentBody={contentBody} - showLanguageProfile={showLanguageProfile} showMetadataProfile={showMetadataProfile} scrollTop={this.state.scrollTop} onSelectAllChange={this.onSelectAllChange} @@ -145,7 +143,6 @@ class ImportArtist extends Component { !rootFoldersError && rootFoldersPopulated && !!unmappedFolders.length && state.addArtist, (state) => state.importArtist, (state) => state.settings.qualityProfiles, - (state) => state.settings.languageProfiles, (state) => state.settings.metadataProfiles, ( match, @@ -25,7 +24,6 @@ function createMapStateToProps() { addArtist, importArtistState, qualityProfiles, - languageProfiles, metadataProfiles ) => { const { @@ -43,12 +41,9 @@ function createMapStateToProps() { rootFoldersPopulated, rootFoldersError, qualityProfiles: qualityProfiles.items, - languageProfiles: languageProfiles.items, metadataProfiles: metadataProfiles.items, - showLanguageProfile: languageProfiles.items.length > 1, showMetadataProfile: metadataProfiles.items.length > 1, defaultQualityProfileId: addArtist.defaults.qualityProfileId, - defaultLanguageProfileId: addArtist.defaults.languageProfileId, defaultMetadataProfileId: addArtist.defaults.metadataProfileId }; @@ -83,10 +78,8 @@ class ImportArtistConnector extends Component { componentDidMount() { const { qualityProfiles, - languageProfiles, metadataProfiles, defaultQualityProfileId, - defaultLanguageProfileId, defaultMetadataProfileId, dispatchFetchRootFolders, dispatchSetAddArtistDefault @@ -107,14 +100,6 @@ class ImportArtistConnector extends Component { setDefaultPayload.qualityProfileId = qualityProfiles[0].id; } - if ( - !defaultLanguageProfileId || - !languageProfiles.some((p) => p.id === defaultLanguageProfileId) - ) { - setDefaults = true; - setDefaultPayload.languageProfileId = languageProfiles[0].id; - } - if ( !defaultMetadataProfileId || !metadataProfiles.some((p) => p.id === defaultMetadataProfileId) @@ -172,10 +157,8 @@ ImportArtistConnector.propTypes = { match: routeMatchShape.isRequired, rootFoldersPopulated: PropTypes.bool.isRequired, qualityProfiles: PropTypes.arrayOf(PropTypes.object).isRequired, - languageProfiles: PropTypes.arrayOf(PropTypes.object).isRequired, metadataProfiles: PropTypes.arrayOf(PropTypes.object).isRequired, defaultQualityProfileId: PropTypes.number.isRequired, - defaultLanguageProfileId: PropTypes.number.isRequired, defaultMetadataProfileId: PropTypes.number.isRequired, dispatchSetImportArtistValue: PropTypes.func.isRequired, dispatchImportArtist: PropTypes.func.isRequired, diff --git a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistFooter.js b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistFooter.js index d5ca4f419..a0feaad89 100644 --- a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistFooter.js +++ b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistFooter.js @@ -23,7 +23,6 @@ class ImportArtistFooter extends Component { const { defaultMonitor, defaultQualityProfileId, - defaultLanguageProfileId, defaultMetadataProfileId, defaultAlbumFolder } = props; @@ -31,7 +30,6 @@ class ImportArtistFooter extends Component { this.state = { monitor: defaultMonitor, qualityProfileId: defaultQualityProfileId, - languageProfileId: defaultLanguageProfileId, metadataProfileId: defaultMetadataProfileId, albumFolder: defaultAlbumFolder }; @@ -41,12 +39,10 @@ class ImportArtistFooter extends Component { const { defaultMonitor, defaultQualityProfileId, - defaultLanguageProfileId, defaultMetadataProfileId, defaultAlbumFolder, isMonitorMixed, isQualityProfileIdMixed, - isLanguageProfileIdMixed, isMetadataProfileIdMixed, isAlbumFolderMixed } = this.props; @@ -54,7 +50,6 @@ class ImportArtistFooter extends Component { const { monitor, qualityProfileId, - languageProfileId, metadataProfileId, albumFolder } = this.state; @@ -73,12 +68,6 @@ class ImportArtistFooter extends Component { newState.qualityProfileId = defaultQualityProfileId; } - if (isLanguageProfileIdMixed && languageProfileId !== MIXED) { - newState.languageProfileId = MIXED; - } else if (!isLanguageProfileIdMixed && languageProfileId !== defaultLanguageProfileId) { - newState.languageProfileId = defaultLanguageProfileId; - } - if (isMetadataProfileIdMixed && metadataProfileId !== MIXED) { newState.metadataProfileId = MIXED; } else if (!isMetadataProfileIdMixed && metadataProfileId !== defaultMetadataProfileId) { @@ -114,10 +103,8 @@ class ImportArtistFooter extends Component { isLookingUpArtist, isMonitorMixed, isQualityProfileIdMixed, - isLanguageProfileIdMixed, isMetadataProfileIdMixed, hasUnsearchedItems, - showLanguageProfile, showMetadataProfile, onImportPress, onLookupPress, @@ -127,7 +114,6 @@ class ImportArtistFooter extends Component { const { monitor, qualityProfileId, - languageProfileId, metadataProfileId, albumFolder } = this.state; @@ -164,24 +150,6 @@ class ImportArtistFooter extends Component { /> - { - showLanguageProfile && -
-
- Language Profile -
- - -
- } - { showMetadataProfile &&
@@ -276,16 +244,13 @@ ImportArtistFooter.propTypes = { isLookingUpArtist: PropTypes.bool.isRequired, defaultMonitor: PropTypes.string.isRequired, defaultQualityProfileId: PropTypes.number, - defaultLanguageProfileId: PropTypes.number, defaultMetadataProfileId: PropTypes.number, defaultAlbumFolder: PropTypes.bool.isRequired, isMonitorMixed: PropTypes.bool.isRequired, isQualityProfileIdMixed: PropTypes.bool.isRequired, - isLanguageProfileIdMixed: PropTypes.bool.isRequired, isMetadataProfileIdMixed: PropTypes.bool.isRequired, isAlbumFolderMixed: PropTypes.bool.isRequired, hasUnsearchedItems: PropTypes.bool.isRequired, - showLanguageProfile: PropTypes.bool.isRequired, showMetadataProfile: PropTypes.bool.isRequired, onInputChange: PropTypes.func.isRequired, onImportPress: PropTypes.func.isRequired, diff --git a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistFooterConnector.js b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistFooterConnector.js index ce3dbe545..873d13b28 100644 --- a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistFooterConnector.js +++ b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistFooterConnector.js @@ -19,7 +19,6 @@ function createMapStateToProps() { const { monitor: defaultMonitor, qualityProfileId: defaultQualityProfileId, - languageProfileId: defaultLanguageProfileId, metadataProfileId: defaultMetadataProfileId, albumFolder: defaultAlbumFolder } = addArtist.defaults; @@ -32,7 +31,6 @@ function createMapStateToProps() { const isMonitorMixed = isMixed(items, selectedIds, defaultMonitor, 'monitor'); const isQualityProfileIdMixed = isMixed(items, selectedIds, defaultQualityProfileId, 'qualityProfileId'); - const isLanguageProfileIdMixed = isMixed(items, selectedIds, defaultLanguageProfileId, 'languageProfileId'); const isMetadataProfileIdMixed = isMixed(items, selectedIds, defaultMetadataProfileId, 'metadataProfileId'); const isAlbumFolderMixed = isMixed(items, selectedIds, defaultAlbumFolder, 'albumFolder'); const hasUnsearchedItems = !isLookingUpArtist && items.some((item) => !item.isPopulated); @@ -43,12 +41,10 @@ function createMapStateToProps() { isImporting, defaultMonitor, defaultQualityProfileId, - defaultLanguageProfileId, defaultMetadataProfileId, defaultAlbumFolder, isMonitorMixed, isQualityProfileIdMixed, - isLanguageProfileIdMixed, isMetadataProfileIdMixed, isAlbumFolderMixed, hasUnsearchedItems diff --git a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistHeader.css b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistHeader.css index 8ad642f3b..52b918403 100644 --- a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistHeader.css +++ b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistHeader.css @@ -12,7 +12,6 @@ } .qualityProfile, -.languageProfile, .metadataProfile { composes: headerCell from '~Components/Table/VirtualTableHeaderCell.css'; diff --git a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistHeader.js b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistHeader.js index f0ec10566..fb0a01cb7 100644 --- a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistHeader.js +++ b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistHeader.js @@ -12,7 +12,6 @@ import styles from './ImportArtistHeader.css'; function ImportArtistHeader(props) { const { - showLanguageProfile, showMetadataProfile, allSelected, allUnselected, @@ -60,16 +59,6 @@ function ImportArtistHeader(props) { Quality Profile - { - showLanguageProfile && - - Language Profile - - } - { showMetadataProfile && - - - - @@ -104,13 +91,11 @@ ImportArtistRow.propTypes = { id: PropTypes.string.isRequired, monitor: PropTypes.string.isRequired, qualityProfileId: PropTypes.number.isRequired, - languageProfileId: PropTypes.number.isRequired, metadataProfileId: PropTypes.number.isRequired, albumFolder: PropTypes.bool.isRequired, selectedArtist: PropTypes.object, isExistingArtist: PropTypes.bool.isRequired, items: PropTypes.arrayOf(PropTypes.object).isRequired, - showLanguageProfile: PropTypes.bool.isRequired, showMetadataProfile: PropTypes.bool.isRequired, isSelected: PropTypes.bool, onSelectedChange: PropTypes.func.isRequired, diff --git a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistTable.js b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistTable.js index 8a7de50b3..f2c5f92eb 100644 --- a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistTable.js +++ b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistTable.js @@ -15,7 +15,6 @@ class ImportArtistTable extends Component { unmappedFolders, defaultMonitor, defaultQualityProfileId, - defaultLanguageProfileId, defaultMetadataProfileId, defaultAlbumFolder, onArtistLookup, @@ -25,7 +24,6 @@ class ImportArtistTable extends Component { const values = { monitor: defaultMonitor, qualityProfileId: defaultQualityProfileId, - languageProfileId: defaultLanguageProfileId, metadataProfileId: defaultMetadataProfileId, albumFolder: defaultAlbumFolder }; @@ -105,7 +103,6 @@ class ImportArtistTable extends Component { rootFolderId, items, selectedState, - showLanguageProfile, showMetadataProfile, onSelectedChange } = this.props; @@ -117,7 +114,6 @@ class ImportArtistTable extends Component { key={key} style={style} rootFolderId={rootFolderId} - showLanguageProfile={showLanguageProfile} showMetadataProfile={showMetadataProfile} isSelected={selectedState[item.id]} onSelectedChange={onSelectedChange} @@ -136,7 +132,6 @@ class ImportArtistTable extends Component { allUnselected, isSmallScreen, contentBody, - showLanguageProfile, showMetadataProfile, scrollTop, selectedState, @@ -159,7 +154,6 @@ class ImportArtistTable extends Component { rowRenderer={this.rowRenderer} header={ - - - ); - } - if (name === 'audioInfo') { return ( - {language.name} - - ); -} - -TrackLanguage.propTypes = { - className: PropTypes.string, - language: PropTypes.object, - isCutoffNotMet: PropTypes.bool -}; - -TrackLanguage.defaultProps = { - isCutoffNotMet: true -}; - -export default TrackLanguage; diff --git a/frontend/src/Artist/Edit/EditArtistModalContent.js b/frontend/src/Artist/Edit/EditArtistModalContent.js index ba0e657c4..73dd652e8 100644 --- a/frontend/src/Artist/Edit/EditArtistModalContent.js +++ b/frontend/src/Artist/Edit/EditArtistModalContent.js @@ -59,7 +59,6 @@ class EditArtistModalContent extends Component { artistName, item, isSaving, - showLanguageProfile, showMetadataProfile, originalPath, onInputChange, @@ -72,7 +71,6 @@ class EditArtistModalContent extends Component { monitored, albumFolder, qualityProfileId, - languageProfileId, metadataProfileId, path, tags @@ -121,20 +119,6 @@ class EditArtistModalContent extends Component { /> - { - showLanguageProfile && - - Language Profile - - - - } - { showMetadataProfile && @@ -214,7 +198,6 @@ EditArtistModalContent.propTypes = { artistName: PropTypes.string.isRequired, item: PropTypes.object.isRequired, isSaving: PropTypes.bool.isRequired, - showLanguageProfile: PropTypes.bool.isRequired, showMetadataProfile: PropTypes.bool.isRequired, isPathChanging: PropTypes.bool.isRequired, originalPath: PropTypes.string.isRequired, diff --git a/frontend/src/Artist/Edit/EditArtistModalContentConnector.js b/frontend/src/Artist/Edit/EditArtistModalContentConnector.js index 7c5a92bdb..351bc7d34 100644 --- a/frontend/src/Artist/Edit/EditArtistModalContentConnector.js +++ b/frontend/src/Artist/Edit/EditArtistModalContentConnector.js @@ -27,11 +27,10 @@ function createIsPathChangingSelector() { function createMapStateToProps() { return createSelector( (state) => state.artist, - (state) => state.settings.languageProfiles, (state) => state.settings.metadataProfiles, createArtistSelector(), createIsPathChangingSelector(), - (artistState, languageProfiles, metadataProfiles, artist, isPathChanging) => { + (artistState, metadataProfiles, artist, isPathChanging) => { const { isSaving, saveError, @@ -42,7 +41,6 @@ function createMapStateToProps() { 'monitored', 'albumFolder', 'qualityProfileId', - 'languageProfileId', 'metadataProfileId', 'path', 'tags' @@ -57,7 +55,6 @@ function createMapStateToProps() { isPathChanging, originalPath: artist.path, item: settings.settings, - showLanguageProfile: languageProfiles.items.length > 1, showMetadataProfile: metadataProfiles.items.length > 1, ...settings }; diff --git a/frontend/src/Artist/Editor/ArtistEditor.js b/frontend/src/Artist/Editor/ArtistEditor.js index b4bb2db09..670afc327 100644 --- a/frontend/src/Artist/Editor/ArtistEditor.js +++ b/frontend/src/Artist/Editor/ArtistEditor.js @@ -19,7 +19,7 @@ import ArtistEditorRowConnector from './ArtistEditorRowConnector'; import ArtistEditorFooter from './ArtistEditorFooter'; import ArtistEditorFilterModalConnector from './ArtistEditorFilterModalConnector'; -function getColumns(showLanguageProfile, showMetadataProfile) { +function getColumns(showMetadataProfile) { return [ { name: 'status', @@ -38,12 +38,6 @@ function getColumns(showLanguageProfile, showMetadataProfile) { isSortable: true, isVisible: true }, - { - name: 'languageProfileId', - label: 'Language Profile', - isSortable: true, - isVisible: showLanguageProfile - }, { name: 'metadataProfileId', label: 'Metadata Profile', @@ -86,7 +80,7 @@ class ArtistEditor extends Component { selectedState: {}, isOrganizingArtistModalOpen: false, isRetaggingArtistModalOpen: false, - columns: getColumns(props.showLanguageProfile, props.showMetadataProfile) + columns: getColumns(props.showMetadataProfile) }; } @@ -177,7 +171,6 @@ class ArtistEditor extends Component { deleteError, isOrganizingArtist, isRetaggingArtist, - showLanguageProfile, showMetadataProfile, onSortPress, onFilterSelect @@ -266,7 +259,6 @@ class ArtistEditor extends Component { deleteError={deleteError} isOrganizingArtist={isOrganizingArtist} isRetaggingArtist={isRetaggingArtist} - showLanguageProfile={showLanguageProfile} showMetadataProfile={showMetadataProfile} onSaveSelected={this.onSaveSelected} onOrganizeArtistPress={this.onOrganizeArtistPress} @@ -307,7 +299,6 @@ ArtistEditor.propTypes = { deleteError: PropTypes.object, isOrganizingArtist: PropTypes.bool.isRequired, isRetaggingArtist: PropTypes.bool.isRequired, - showLanguageProfile: PropTypes.bool.isRequired, showMetadataProfile: PropTypes.bool.isRequired, onSortPress: PropTypes.func.isRequired, onFilterSelect: PropTypes.func.isRequired, diff --git a/frontend/src/Artist/Editor/ArtistEditorConnector.js b/frontend/src/Artist/Editor/ArtistEditorConnector.js index b155a0647..c0188ee6d 100644 --- a/frontend/src/Artist/Editor/ArtistEditorConnector.js +++ b/frontend/src/Artist/Editor/ArtistEditorConnector.js @@ -12,16 +12,14 @@ import ArtistEditor from './ArtistEditor'; function createMapStateToProps() { return createSelector( - (state) => state.settings.languageProfiles, (state) => state.settings.metadataProfiles, createClientSideCollectionSelector('artist', 'artistEditor'), createCommandExecutingSelector(commandNames.RENAME_ARTIST), createCommandExecutingSelector(commandNames.RETAG_ARTIST), - (languageProfiles, metadataProfiles, artist, isOrganizingArtist, isRetaggingArtist) => { + (metadataProfiles, artist, isOrganizingArtist, isRetaggingArtist) => { return { isOrganizingArtist, isRetaggingArtist, - showLanguageProfile: languageProfiles.items.length > 1, showMetadataProfile: metadataProfiles.items.length > 1, ...artist }; diff --git a/frontend/src/Artist/Editor/ArtistEditorFooter.js b/frontend/src/Artist/Editor/ArtistEditorFooter.js index bb1a5dca2..ccf044c53 100644 --- a/frontend/src/Artist/Editor/ArtistEditorFooter.js +++ b/frontend/src/Artist/Editor/ArtistEditorFooter.js @@ -2,7 +2,6 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { kinds } from 'Helpers/Props'; import SelectInput from 'Components/Form/SelectInput'; -import LanguageProfileSelectInputConnector from 'Components/Form/LanguageProfileSelectInputConnector'; import MetadataProfileSelectInputConnector from 'Components/Form/MetadataProfileSelectInputConnector'; import QualityProfileSelectInputConnector from 'Components/Form/QualityProfileSelectInputConnector'; import RootFolderSelectInputConnector from 'Components/Form/RootFolderSelectInputConnector'; @@ -27,7 +26,6 @@ class ArtistEditorFooter extends Component { this.state = { monitored: NO_CHANGE, qualityProfileId: NO_CHANGE, - languageProfileId: NO_CHANGE, metadataProfileId: NO_CHANGE, albumFolder: NO_CHANGE, rootFolderPath: NO_CHANGE, @@ -49,7 +47,6 @@ class ArtistEditorFooter extends Component { this.setState({ monitored: NO_CHANGE, qualityProfileId: NO_CHANGE, - languageProfileId: NO_CHANGE, metadataProfileId: NO_CHANGE, albumFolder: NO_CHANGE, rootFolderPath: NO_CHANGE, @@ -146,7 +143,6 @@ class ArtistEditorFooter extends Component { isDeleting, isOrganizingArtist, isRetaggingArtist, - showLanguageProfile, showMetadataProfile, onOrganizeArtistPress, onRetagArtistPress @@ -155,7 +151,6 @@ class ArtistEditorFooter extends Component { const { monitored, qualityProfileId, - languageProfileId, metadataProfileId, albumFolder, rootFolderPath, @@ -210,24 +205,6 @@ class ArtistEditorFooter extends Component { />
- { - showLanguageProfile && -
- - - -
- } - { showMetadataProfile &&
@@ -363,7 +340,6 @@ ArtistEditorFooter.propTypes = { deleteError: PropTypes.object, isOrganizingArtist: PropTypes.bool.isRequired, isRetaggingArtist: PropTypes.bool.isRequired, - showLanguageProfile: PropTypes.bool.isRequired, showMetadataProfile: PropTypes.bool.isRequired, onSaveSelected: PropTypes.func.isRequired, onOrganizeArtistPress: PropTypes.func.isRequired, diff --git a/frontend/src/Artist/Editor/ArtistEditorRow.js b/frontend/src/Artist/Editor/ArtistEditorRow.js index dd4051694..633ef5c82 100644 --- a/frontend/src/Artist/Editor/ArtistEditorRow.js +++ b/frontend/src/Artist/Editor/ArtistEditorRow.js @@ -31,7 +31,6 @@ class ArtistEditorRow extends Component { artistName, artistType, monitored, - languageProfile, metadataProfile, qualityProfile, albumFolder, @@ -67,13 +66,6 @@ class ArtistEditorRow extends Component { {qualityProfile.name} - { - _.find(columns, { name: 'languageProfileId' }).isVisible && - - {languageProfile.name} - - } - { _.find(columns, { name: 'metadataProfileId' }).isVisible && @@ -111,7 +103,6 @@ ArtistEditorRow.propTypes = { artistName: PropTypes.string.isRequired, artistType: PropTypes.string.isRequired, monitored: PropTypes.bool.isRequired, - languageProfile: PropTypes.object.isRequired, metadataProfile: PropTypes.object.isRequired, qualityProfile: PropTypes.object.isRequired, albumFolder: PropTypes.bool.isRequired, diff --git a/frontend/src/Artist/Editor/ArtistEditorRowConnector.js b/frontend/src/Artist/Editor/ArtistEditorRowConnector.js index a1a003bb5..32694a6b9 100644 --- a/frontend/src/Artist/Editor/ArtistEditorRowConnector.js +++ b/frontend/src/Artist/Editor/ArtistEditorRowConnector.js @@ -2,19 +2,16 @@ import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import createLanguageProfileSelector from 'Store/Selectors/createLanguageProfileSelector'; import createMetadataProfileSelector from 'Store/Selectors/createMetadataProfileSelector'; import createQualityProfileSelector from 'Store/Selectors/createQualityProfileSelector'; import ArtistEditorRow from './ArtistEditorRow'; function createMapStateToProps() { return createSelector( - createLanguageProfileSelector(), createMetadataProfileSelector(), createQualityProfileSelector(), - (languageProfile, metadataProfile, qualityProfile) => { + (metadataProfile, qualityProfile) => { return { - languageProfile, metadataProfile, qualityProfile }; diff --git a/frontend/src/Artist/History/ArtistHistoryModalContent.js b/frontend/src/Artist/History/ArtistHistoryModalContent.js index 5b4588b80..9be74ba40 100644 --- a/frontend/src/Artist/History/ArtistHistoryModalContent.js +++ b/frontend/src/Artist/History/ArtistHistoryModalContent.js @@ -25,11 +25,6 @@ const columns = [ label: 'Source Title', isVisible: true }, - { - name: 'language', - label: 'Language', - isVisible: true - }, { name: 'quality', label: 'Quality', diff --git a/frontend/src/Artist/History/ArtistHistoryRow.js b/frontend/src/Artist/History/ArtistHistoryRow.js index 04eaf2f06..e69f8395b 100644 --- a/frontend/src/Artist/History/ArtistHistoryRow.js +++ b/frontend/src/Artist/History/ArtistHistoryRow.js @@ -8,7 +8,6 @@ import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellCo import TableRow from 'Components/Table/TableRow'; import TableRowCell from 'Components/Table/Cells/TableRowCell'; import Popover from 'Components/Tooltip/Popover'; -import TrackLanguage from 'Album/TrackLanguage'; import TrackQuality from 'Album/TrackQuality'; import HistoryDetailsConnector from 'Activity/History/Details/HistoryDetailsConnector'; import HistoryEventTypeCell from 'Activity/History/HistoryEventTypeCell'; @@ -73,8 +72,6 @@ class ArtistHistoryRow extends Component { const { eventType, sourceTitle, - language, - languageCutoffNotMet, quality, qualityCutoffNotMet, date, @@ -101,13 +98,6 @@ class ArtistHistoryRow extends Component { {sourceTitle} - - - - diff --git a/frontend/src/Artist/Index/Menus/ArtistIndexSortMenu.js b/frontend/src/Artist/Index/Menus/ArtistIndexSortMenu.js index fdc9e9ad2..fc5854648 100644 --- a/frontend/src/Artist/Index/Menus/ArtistIndexSortMenu.js +++ b/frontend/src/Artist/Index/Menus/ArtistIndexSortMenu.js @@ -55,15 +55,6 @@ function ArtistIndexSortMenu(props) { Quality Profile - - Language Profile - - diff --git a/frontend/src/Artist/Index/Posters/ArtistIndexPosters.js b/frontend/src/Artist/Index/Posters/ArtistIndexPosters.js index d02aeaefd..3650db93e 100644 --- a/frontend/src/Artist/Index/Posters/ArtistIndexPosters.js +++ b/frontend/src/Artist/Index/Posters/ArtistIndexPosters.js @@ -234,7 +234,6 @@ class ArtistIndexPosters extends Component { timeFormat={timeFormat} style={style} artistId={artist.id} - languageProfileId={artist.languageProfileId} qualityProfileId={artist.qualityProfileId} metadataProfileId={artist.metadataProfileId} /> diff --git a/frontend/src/Artist/Index/Table/ArtistIndexHeader.css b/frontend/src/Artist/Index/Table/ArtistIndexHeader.css index cecf8f035..6da0be920 100644 --- a/frontend/src/Artist/Index/Table/ArtistIndexHeader.css +++ b/frontend/src/Artist/Index/Table/ArtistIndexHeader.css @@ -25,7 +25,6 @@ } .qualityProfileId, -.languageProfileId, .metadataProfileId { composes: headerCell from '~Components/Table/VirtualTableHeaderCell.css'; diff --git a/frontend/src/Artist/Index/Table/ArtistIndexRow.css b/frontend/src/Artist/Index/Table/ArtistIndexRow.css index 0f662a7e6..bc5a28fa6 100644 --- a/frontend/src/Artist/Index/Table/ArtistIndexRow.css +++ b/frontend/src/Artist/Index/Table/ArtistIndexRow.css @@ -61,7 +61,6 @@ } .qualityProfileId, -.languageProfileId, .metadataProfileId { composes: cell; diff --git a/frontend/src/Artist/Index/Table/ArtistIndexRow.js b/frontend/src/Artist/Index/Table/ArtistIndexRow.js index 389dbeee1..6b597509f 100644 --- a/frontend/src/Artist/Index/Table/ArtistIndexRow.js +++ b/frontend/src/Artist/Index/Table/ArtistIndexRow.js @@ -87,7 +87,6 @@ class ArtistIndexRow extends Component { foreignArtistId, artistType, qualityProfile, - languageProfile, metadataProfile, nextAlbum, lastAlbum, @@ -211,17 +210,6 @@ class ArtistIndexRow extends Component { ); } - if (name === 'languageProfileId') { - return ( - - {languageProfile.name} - - ); - } - if (name === 'metadataProfileId') { return ( ); } diff --git a/frontend/src/Components/Filter/Builder/FilterBuilderRow.js b/frontend/src/Components/Filter/Builder/FilterBuilderRow.js index a068f0d0c..26bc50192 100644 --- a/frontend/src/Components/Filter/Builder/FilterBuilderRow.js +++ b/frontend/src/Components/Filter/Builder/FilterBuilderRow.js @@ -7,7 +7,6 @@ import BoolFilterBuilderRowValue from './BoolFilterBuilderRowValue'; import DateFilterBuilderRowValue from './DateFilterBuilderRowValue'; import FilterBuilderRowValueConnector from './FilterBuilderRowValueConnector'; import IndexerFilterBuilderRowValueConnector from './IndexerFilterBuilderRowValueConnector'; -import LanguageProfileFilterBuilderRowValueConnector from './LanguageProfileFilterBuilderRowValueConnector'; import MetadataProfileFilterBuilderRowValueConnector from './MetadataProfileFilterBuilderRowValueConnector'; import ProtocolFilterBuilderRowValue from './ProtocolFilterBuilderRowValue'; import QualityFilterBuilderRowValueConnector from './QualityFilterBuilderRowValueConnector'; @@ -61,9 +60,6 @@ function getRowValueConnector(selectedFilterBuilderProp) { case filterBuilderValueTypes.INDEXER: return IndexerFilterBuilderRowValueConnector; - case filterBuilderValueTypes.LANGUAGE_PROFILE: - return LanguageProfileFilterBuilderRowValueConnector; - case filterBuilderValueTypes.METADATA_PROFILE: return MetadataProfileFilterBuilderRowValueConnector; diff --git a/frontend/src/Components/Filter/Builder/LanguageProfileFilterBuilderRowValueConnector.js b/frontend/src/Components/Filter/Builder/LanguageProfileFilterBuilderRowValueConnector.js deleted file mode 100644 index 31b1e952a..000000000 --- a/frontend/src/Components/Filter/Builder/LanguageProfileFilterBuilderRowValueConnector.js +++ /dev/null @@ -1,28 +0,0 @@ -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import FilterBuilderRowValue from './FilterBuilderRowValue'; - -function createMapStateToProps() { - return createSelector( - (state) => state.settings.languageProfiles, - (languageProfiles) => { - const tagList = languageProfiles.items.map((languageProfile) => { - const { - id, - name - } = languageProfile; - - return { - id, - name - }; - }); - - return { - tagList - }; - } - ); -} - -export default connect(createMapStateToProps)(FilterBuilderRowValue); diff --git a/frontend/src/Components/Form/FormInputGroup.js b/frontend/src/Components/Form/FormInputGroup.js index 9b671cb4a..2b2ed01f3 100644 --- a/frontend/src/Components/Form/FormInputGroup.js +++ b/frontend/src/Components/Form/FormInputGroup.js @@ -14,7 +14,6 @@ import OAuthInputConnector from './OAuthInputConnector'; import PasswordInput from './PasswordInput'; import PathInputConnector from './PathInputConnector'; import QualityProfileSelectInputConnector from './QualityProfileSelectInputConnector'; -import LanguageProfileSelectInputConnector from './LanguageProfileSelectInputConnector'; import MetadataProfileSelectInputConnector from './MetadataProfileSelectInputConnector'; import AlbumReleaseSelectInputConnector from './AlbumReleaseSelectInputConnector'; import RootFolderSelectInputConnector from './RootFolderSelectInputConnector'; @@ -64,9 +63,6 @@ function getComponent(type) { case inputTypes.QUALITY_PROFILE_SELECT: return QualityProfileSelectInputConnector; - case inputTypes.LANGUAGE_PROFILE_SELECT: - return LanguageProfileSelectInputConnector; - case inputTypes.METADATA_PROFILE_SELECT: return MetadataProfileSelectInputConnector; diff --git a/frontend/src/Components/Form/LanguageProfileSelectInputConnector.js b/frontend/src/Components/Form/LanguageProfileSelectInputConnector.js deleted file mode 100644 index 970400a64..000000000 --- a/frontend/src/Components/Form/LanguageProfileSelectInputConnector.js +++ /dev/null @@ -1,98 +0,0 @@ -import _ from 'lodash'; -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import sortByName from 'Utilities/Array/sortByName'; -import SelectInput from './SelectInput'; - -function createMapStateToProps() { - return createSelector( - (state) => state.settings.languageProfiles, - (state, { includeNoChange }) => includeNoChange, - (state, { includeMixed }) => includeMixed, - (languageProfiles, includeNoChange, includeMixed) => { - const values = _.map(languageProfiles.items.sort(sortByName), (languageProfile) => { - return { - key: languageProfile.id, - value: languageProfile.name - }; - }); - - if (includeNoChange) { - values.unshift({ - key: 'noChange', - value: 'No Change', - disabled: true - }); - } - - if (includeMixed) { - values.unshift({ - key: 'mixed', - value: '(Mixed)', - disabled: true - }); - } - - return { - values - }; - } - ); -} - -class LanguageProfileSelectInputConnector extends Component { - - // - // Lifecycle - - componentDidMount() { - const { - name, - value, - values - } = this.props; - - if (!value || !_.some(values, (option) => parseInt(option.key) === value)) { - const firstValue = _.find(values, (option) => !isNaN(parseInt(option.key))); - - if (firstValue) { - this.onChange({ name, value: firstValue.key }); - } - } - } - - // - // Listeners - - onChange = ({ name, value }) => { - this.props.onChange({ name, value: parseInt(value) }); - } - - // - // Render - - render() { - return ( - - ); - } -} - -LanguageProfileSelectInputConnector.propTypes = { - name: PropTypes.string.isRequired, - value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - values: PropTypes.arrayOf(PropTypes.object).isRequired, - includeNoChange: PropTypes.bool.isRequired, - onChange: PropTypes.func.isRequired -}; - -LanguageProfileSelectInputConnector.defaultProps = { - includeNoChange: false -}; - -export default connect(createMapStateToProps)(LanguageProfileSelectInputConnector); diff --git a/frontend/src/Components/Page/ErrorPage.js b/frontend/src/Components/Page/ErrorPage.js index f7261ed06..4440cf3be 100644 --- a/frontend/src/Components/Page/ErrorPage.js +++ b/frontend/src/Components/Page/ErrorPage.js @@ -11,7 +11,6 @@ function ErrorPage(props) { customFiltersError, tagsError, qualityProfilesError, - languageProfilesError, metadataProfilesError, uiSettingsError, systemStatusError @@ -29,8 +28,6 @@ function ErrorPage(props) { errorMessage = getErrorMessage(tagsError, 'Failed to load tags from API'); } else if (qualityProfilesError) { errorMessage = getErrorMessage(qualityProfilesError, 'Failed to load quality profiles from API'); - } else if (languageProfilesError) { - errorMessage = getErrorMessage(languageProfilesError, 'Failed to load language profiles from API'); } else if (metadataProfilesError) { errorMessage = getErrorMessage(metadataProfilesError, 'Failed to load metadata profiles from API'); } else if (uiSettingsError) { @@ -59,7 +56,6 @@ ErrorPage.propTypes = { customFiltersError: PropTypes.object, tagsError: PropTypes.object, qualityProfilesError: PropTypes.object, - languageProfilesError: PropTypes.object, metadataProfilesError: PropTypes.object, uiSettingsError: PropTypes.object, systemStatusError: PropTypes.object diff --git a/frontend/src/Components/Page/PageConnector.js b/frontend/src/Components/Page/PageConnector.js index 3a9e02869..57836a749 100644 --- a/frontend/src/Components/Page/PageConnector.js +++ b/frontend/src/Components/Page/PageConnector.js @@ -8,7 +8,7 @@ import { saveDimensions, setIsSidebarVisible } from 'Store/Actions/appActions'; import { fetchCustomFilters } from 'Store/Actions/customFilterActions'; import { fetchArtist } from 'Store/Actions/artistActions'; import { fetchTags } from 'Store/Actions/tagActions'; -import { fetchQualityProfiles, fetchLanguageProfiles, fetchMetadataProfiles, fetchUISettings, fetchImportLists } from 'Store/Actions/settingsActions'; +import { fetchQualityProfiles, fetchMetadataProfiles, fetchUISettings, fetchImportLists } from 'Store/Actions/settingsActions'; import { fetchStatus } from 'Store/Actions/systemActions'; import ErrorPage from './ErrorPage'; import LoadingPage from './LoadingPage'; @@ -48,7 +48,6 @@ const selectIsPopulated = createSelector( (state) => state.tags.isPopulated, (state) => state.settings.ui.isPopulated, (state) => state.settings.qualityProfiles.isPopulated, - (state) => state.settings.languageProfiles.isPopulated, (state) => state.settings.metadataProfiles.isPopulated, (state) => state.settings.importLists.isPopulated, (state) => state.system.status.isPopulated, @@ -58,7 +57,6 @@ const selectIsPopulated = createSelector( tagsIsPopulated, uiSettingsIsPopulated, qualityProfilesIsPopulated, - languageProfilesIsPopulated, metadataProfilesIsPopulated, importListsIsPopulated, systemStatusIsPopulated @@ -69,7 +67,6 @@ const selectIsPopulated = createSelector( tagsIsPopulated && uiSettingsIsPopulated && qualityProfilesIsPopulated && - languageProfilesIsPopulated && metadataProfilesIsPopulated && importListsIsPopulated && systemStatusIsPopulated @@ -83,7 +80,6 @@ const selectErrors = createSelector( (state) => state.tags.error, (state) => state.settings.ui.error, (state) => state.settings.qualityProfiles.error, - (state) => state.settings.languageProfiles.error, (state) => state.settings.metadataProfiles.error, (state) => state.settings.importLists.error, (state) => state.system.status.error, @@ -93,7 +89,6 @@ const selectErrors = createSelector( tagsError, uiSettingsError, qualityProfilesError, - languageProfilesError, metadataProfilesError, importListsError, systemStatusError @@ -104,7 +99,6 @@ const selectErrors = createSelector( tagsError || uiSettingsError || qualityProfilesError || - languageProfilesError || metadataProfilesError || importListsError || systemStatusError @@ -117,7 +111,6 @@ const selectErrors = createSelector( tagsError, uiSettingsError, qualityProfilesError, - languageProfilesError, metadataProfilesError, importListsError, systemStatusError @@ -164,9 +157,6 @@ function createMapDispatchToProps(dispatch, props) { dispatchFetchQualityProfiles() { dispatch(fetchQualityProfiles()); }, - dispatchFetchLanguageProfiles() { - dispatch(fetchLanguageProfiles()); - }, dispatchFetchMetadataProfiles() { dispatch(fetchMetadataProfiles()); }, @@ -207,7 +197,6 @@ class PageConnector extends Component { this.props.dispatchFetchCustomFilters(); this.props.dispatchFetchTags(); this.props.dispatchFetchQualityProfiles(); - this.props.dispatchFetchLanguageProfiles(); this.props.dispatchFetchMetadataProfiles(); this.props.dispatchFetchImportLists(); this.props.dispatchFetchUISettings(); @@ -232,7 +221,6 @@ class PageConnector extends Component { dispatchFetchArtist, dispatchFetchTags, dispatchFetchQualityProfiles, - dispatchFetchLanguageProfiles, dispatchFetchMetadataProfiles, dispatchFetchImportLists, dispatchFetchUISettings, @@ -272,7 +260,6 @@ PageConnector.propTypes = { dispatchFetchCustomFilters: PropTypes.func.isRequired, dispatchFetchTags: PropTypes.func.isRequired, dispatchFetchQualityProfiles: PropTypes.func.isRequired, - dispatchFetchLanguageProfiles: PropTypes.func.isRequired, dispatchFetchMetadataProfiles: PropTypes.func.isRequired, dispatchFetchImportLists: PropTypes.func.isRequired, dispatchFetchUISettings: PropTypes.func.isRequired, diff --git a/frontend/src/Helpers/Props/filterBuilderValueTypes.js b/frontend/src/Helpers/Props/filterBuilderValueTypes.js index 37bc6d2ad..42df49eda 100644 --- a/frontend/src/Helpers/Props/filterBuilderValueTypes.js +++ b/frontend/src/Helpers/Props/filterBuilderValueTypes.js @@ -3,7 +3,6 @@ export const BYTES = 'bytes'; export const DATE = 'date'; export const DEFAULT = 'default'; export const INDEXER = 'indexer'; -export const LANGUAGE_PROFILE = 'languageProfile'; export const METADATA_PROFILE = 'metadataProfile'; export const PROTOCOL = 'protocol'; export const QUALITY = 'quality'; diff --git a/frontend/src/Helpers/Props/inputTypes.js b/frontend/src/Helpers/Props/inputTypes.js index 07a7abb84..172ca331c 100644 --- a/frontend/src/Helpers/Props/inputTypes.js +++ b/frontend/src/Helpers/Props/inputTypes.js @@ -10,7 +10,6 @@ export const OAUTH = 'oauth'; export const PASSWORD = 'password'; export const PATH = 'path'; export const QUALITY_PROFILE_SELECT = 'qualityProfileSelect'; -export const LANGUAGE_PROFILE_SELECT = 'languageProfileSelect'; export const METADATA_PROFILE_SELECT = 'metadataProfileSelect'; export const ALBUM_RELEASE_SELECT = 'albumReleaseSelect'; export const ROOT_FOLDER_SELECT = 'rootFolderSelect'; @@ -33,7 +32,6 @@ export const all = [ PASSWORD, PATH, QUALITY_PROFILE_SELECT, - LANGUAGE_PROFILE_SELECT, METADATA_PROFILE_SELECT, ALBUM_RELEASE_SELECT, ROOT_FOLDER_SELECT, diff --git a/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContent.js b/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContent.js index 06896c32b..c93a41c24 100644 --- a/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContent.js +++ b/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContent.js @@ -56,12 +56,6 @@ const columns = [ isSortable: true, isVisible: true }, - { - name: 'language', - label: 'Language', - isSortable: true, - isVisible: true - }, { name: 'size', label: 'Size', diff --git a/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContentConnector.js b/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContentConnector.js index 6ffd5160d..ac4625d87 100644 --- a/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContentConnector.js +++ b/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContentConnector.js @@ -127,7 +127,6 @@ class InteractiveImportModalContentConnector extends Component { albumReleaseId, tracks, quality, - language, disableReleaseSwitching } = item; @@ -151,11 +150,6 @@ class InteractiveImportModalContentConnector extends Component { return false; } - if (!language) { - this.setState({ interactiveImportErrorMessage: 'Language must be chosen for each selected file' }); - return false; - } - files.push({ path: item.path, folderName: item.folderName, @@ -164,7 +158,6 @@ class InteractiveImportModalContentConnector extends Component { albumReleaseId, trackIds: _.map(tracks, 'id'), quality, - language, downloadId: this.props.downloadId, disableReleaseSwitching }); diff --git a/frontend/src/InteractiveImport/Interactive/InteractiveImportRow.css b/frontend/src/InteractiveImport/Interactive/InteractiveImportRow.css index f3c5450da..8510d0649 100644 --- a/frontend/src/InteractiveImport/Interactive/InteractiveImportRow.css +++ b/frontend/src/InteractiveImport/Interactive/InteractiveImportRow.css @@ -4,8 +4,7 @@ word-break: break-all; } -.quality, -.language { +.quality { composes: cell from '~Components/Table/Cells/TableRowCell.css'; text-align: center; diff --git a/frontend/src/InteractiveImport/Interactive/InteractiveImportRow.js b/frontend/src/InteractiveImport/Interactive/InteractiveImportRow.js index 7b6462075..cfbefe1ca 100644 --- a/frontend/src/InteractiveImport/Interactive/InteractiveImportRow.js +++ b/frontend/src/InteractiveImport/Interactive/InteractiveImportRow.js @@ -11,12 +11,10 @@ import TableSelectCell from 'Components/Table/Cells/TableSelectCell'; import Popover from 'Components/Tooltip/Popover'; import Tooltip from 'Components/Tooltip/Tooltip'; import TrackQuality from 'Album/TrackQuality'; -import TrackLanguage from 'Album/TrackLanguage'; import SelectArtistModal from 'InteractiveImport/Artist/SelectArtistModal'; import SelectAlbumModal from 'InteractiveImport/Album/SelectAlbumModal'; import SelectTrackModal from 'InteractiveImport/Track/SelectTrackModal'; import SelectQualityModal from 'InteractiveImport/Quality/SelectQualityModal'; -import SelectLanguageModal from 'InteractiveImport/Language/SelectLanguageModal'; import InteractiveImportRowCellPlaceholder from './InteractiveImportRowCellPlaceholder'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import styles from './InteractiveImportRow.css'; @@ -33,8 +31,7 @@ class InteractiveImportRow extends Component { isSelectArtistModalOpen: false, isSelectAlbumModalOpen: false, isSelectTrackModalOpen: false, - isSelectQualityModalOpen: false, - isSelectLanguageModalOpen: false + isSelectQualityModalOpen: false }; } @@ -44,16 +41,14 @@ class InteractiveImportRow extends Component { artist, album, tracks, - quality, - language + quality } = this.props; if ( artist && album != null && tracks.length && - quality && - language + quality ) { this.props.onSelectedChange({ id, value: true }); } @@ -66,7 +61,6 @@ class InteractiveImportRow extends Component { album, tracks, quality, - language, isSelected, onValidRowChange } = this.props; @@ -76,7 +70,6 @@ class InteractiveImportRow extends Component { prevProps.album === album && !hasDifferentItems(prevProps.tracks, tracks) && prevProps.quality === quality && - prevProps.language === language && prevProps.isSelected === isSelected ) { return; @@ -86,8 +79,7 @@ class InteractiveImportRow extends Component { artist && album && tracks.length && - quality && - language + quality ); if (isSelected && !isValid) { @@ -130,10 +122,6 @@ class InteractiveImportRow extends Component { this.setState({ isSelectQualityModalOpen: true }); } - onSelectLanguagePress = () => { - this.setState({ isSelectLanguageModalOpen: true }); - } - onSelectArtistModalClose = (changed) => { this.setState({ isSelectArtistModalOpen: false }); this.selectRowAfterChange(changed); @@ -154,11 +142,6 @@ class InteractiveImportRow extends Component { this.selectRowAfterChange(changed); } - onSelectLanguageModalClose = (changed) => { - this.setState({ isSelectLanguageModalOpen: false }); - this.selectRowAfterChange(changed); - } - // // Render @@ -172,7 +155,6 @@ class InteractiveImportRow extends Component { albumReleaseId, tracks, quality, - language, size, rejections, audioTags, @@ -186,8 +168,7 @@ class InteractiveImportRow extends Component { isSelectArtistModalOpen, isSelectAlbumModalOpen, isSelectTrackModalOpen, - isSelectQualityModalOpen, - isSelectLanguageModalOpen + isSelectQualityModalOpen } = this.state; const artistName = artist ? artist.artistName : ''; @@ -203,7 +184,6 @@ class InteractiveImportRow extends Component { const showTrackNumbersPlaceholder = !isSaving && isSelected && !!album && !tracks.length; const showTrackNumbersLoading = isSaving && !tracks.length; const showQualityPlaceholder = isSelected && !quality; - const showLanguagePlaceholder = isSelected && !language; const pathCellContents = (
@@ -288,25 +268,6 @@ class InteractiveImportRow extends Component { } - - { - showLanguagePlaceholder && - - } - - { - !showLanguagePlaceholder && !!language && - - } - - {formatBytes(size)} @@ -376,13 +337,6 @@ class InteractiveImportRow extends Component { real={quality ? quality.revision.real > 0 : false} onModalClose={this.onSelectQualityModalClose} /> - - ); } @@ -398,7 +352,6 @@ InteractiveImportRow.propTypes = { albumReleaseId: PropTypes.number, tracks: PropTypes.arrayOf(PropTypes.object).isRequired, quality: PropTypes.object, - language: PropTypes.object, size: PropTypes.number.isRequired, rejections: PropTypes.arrayOf(PropTypes.object).isRequired, audioTags: PropTypes.object.isRequired, diff --git a/frontend/src/InteractiveImport/Language/SelectLanguageModal.js b/frontend/src/InteractiveImport/Language/SelectLanguageModal.js deleted file mode 100644 index 938d26a6d..000000000 --- a/frontend/src/InteractiveImport/Language/SelectLanguageModal.js +++ /dev/null @@ -1,37 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import Modal from 'Components/Modal/Modal'; -import SelectLanguageModalContentConnector from './SelectLanguageModalContentConnector'; - -class SelectLanguageModal extends Component { - - // - // Render - - render() { - const { - isOpen, - onModalClose, - ...otherProps - } = this.props; - - return ( - - - - ); - } -} - -SelectLanguageModal.propTypes = { - isOpen: PropTypes.bool.isRequired, - onModalClose: PropTypes.func.isRequired -}; - -export default SelectLanguageModal; diff --git a/frontend/src/InteractiveImport/Language/SelectLanguageModalContent.js b/frontend/src/InteractiveImport/Language/SelectLanguageModalContent.js deleted file mode 100644 index ff99ce6bf..000000000 --- a/frontend/src/InteractiveImport/Language/SelectLanguageModalContent.js +++ /dev/null @@ -1,87 +0,0 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import { inputTypes } from 'Helpers/Props'; -import Button from 'Components/Link/Button'; -import LoadingIndicator from 'Components/Loading/LoadingIndicator'; -import Form from 'Components/Form/Form'; -import FormGroup from 'Components/Form/FormGroup'; -import FormLabel from 'Components/Form/FormLabel'; -import FormInputGroup from 'Components/Form/FormInputGroup'; -import ModalContent from 'Components/Modal/ModalContent'; -import ModalHeader from 'Components/Modal/ModalHeader'; -import ModalBody from 'Components/Modal/ModalBody'; -import ModalFooter from 'Components/Modal/ModalFooter'; - -function SelectLanguageModalContent(props) { - const { - languageId, - isFetching, - isPopulated, - error, - items, - onModalClose, - onLanguageSelect - } = props; - - const languageOptions = items.map(({ language }) => { - return { - key: language.id, - value: language.name - }; - }); - - return ( - - - Manual Import - Select Language - - - - { - isFetching && - - } - - { - !isFetching && !!error && -
Unable to load languages
- } - - { - isPopulated && !error && -
- - Language - - - -
- } -
- - - - -
- ); -} - -SelectLanguageModalContent.propTypes = { - languageId: PropTypes.number.isRequired, - isFetching: PropTypes.bool.isRequired, - isPopulated: PropTypes.bool.isRequired, - error: PropTypes.object, - items: PropTypes.arrayOf(PropTypes.object).isRequired, - onLanguageSelect: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired -}; - -export default SelectLanguageModalContent; diff --git a/frontend/src/InteractiveImport/Language/SelectLanguageModalContentConnector.js b/frontend/src/InteractiveImport/Language/SelectLanguageModalContentConnector.js deleted file mode 100644 index 56e95b861..000000000 --- a/frontend/src/InteractiveImport/Language/SelectLanguageModalContentConnector.js +++ /dev/null @@ -1,87 +0,0 @@ -import _ from 'lodash'; -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import { fetchLanguageProfileSchema } from 'Store/Actions/settingsActions'; -import { updateInteractiveImportItem } from 'Store/Actions/interactiveImportActions'; -import SelectLanguageModalContent from './SelectLanguageModalContent'; - -function createMapStateToProps() { - return createSelector( - (state) => state.settings.languageProfiles, - (languageProfiles) => { - const { - isSchemaFetching: isFetching, - isSchemaPopulated: isPopulated, - schemaError: error, - schema - } = languageProfiles; - - return { - isFetching, - isPopulated, - error, - items: schema.languages ? [...schema.languages].reverse() : [] - }; - } - ); -} - -const mapDispatchToProps = { - fetchLanguageProfileSchema, - updateInteractiveImportItem -}; - -class SelectLanguageModalContentConnector extends Component { - - // - // Lifecycle - - componentDidMount = () => { - if (!this.props.isPopulated) { - this.props.fetchLanguageProfileSchema(); - } - } - - // - // Listeners - - onLanguageSelect = ({ value }) => { - const languageId = parseInt(value); - const language = _.find(this.props.items, - (item) => item.language.id === languageId).language; - - this.props.updateInteractiveImportItem({ - id: this.props.id, - language - }); - - this.props.onModalClose(true); - } - - // - // Render - - render() { - return ( - - ); - } -} - -SelectLanguageModalContentConnector.propTypes = { - id: PropTypes.number.isRequired, - isFetching: PropTypes.bool.isRequired, - isPopulated: PropTypes.bool.isRequired, - error: PropTypes.object, - items: PropTypes.arrayOf(PropTypes.object).isRequired, - fetchLanguageProfileSchema: PropTypes.func.isRequired, - updateInteractiveImportItem: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired -}; - -export default connect(createMapStateToProps, mapDispatchToProps)(SelectLanguageModalContentConnector); diff --git a/frontend/src/InteractiveSearch/InteractiveSearch.js b/frontend/src/InteractiveSearch/InteractiveSearch.js index 6714c8cc6..bc47e4e96 100644 --- a/frontend/src/InteractiveSearch/InteractiveSearch.js +++ b/frontend/src/InteractiveSearch/InteractiveSearch.js @@ -48,12 +48,6 @@ const columns = [ isSortable: true, isVisible: true }, - { - name: 'languageWeight', - label: 'Language', - isSortable: true, - isVisible: true - }, { name: 'qualityWeight', label: 'Quality', diff --git a/frontend/src/InteractiveSearch/InteractiveSearchRow.css b/frontend/src/InteractiveSearch/InteractiveSearchRow.css index fffa424d8..57fffadc7 100644 --- a/frontend/src/InteractiveSearch/InteractiveSearchRow.css +++ b/frontend/src/InteractiveSearch/InteractiveSearchRow.css @@ -4,17 +4,12 @@ word-break: break-all; } -.quality, -.language { +.quality { composes: cell from '~Components/Table/Cells/TableRowCell.css'; text-align: center; } -.language { - width: 100px; -} - .preferredWordScore { composes: cell from '~Components/Table/Cells/TableRowCell.css'; diff --git a/frontend/src/InteractiveSearch/InteractiveSearchRow.js b/frontend/src/InteractiveSearch/InteractiveSearchRow.js index cf4d16a3e..a413c60a9 100644 --- a/frontend/src/InteractiveSearch/InteractiveSearchRow.js +++ b/frontend/src/InteractiveSearch/InteractiveSearchRow.js @@ -11,7 +11,6 @@ import ConfirmModal from 'Components/Modal/ConfirmModal'; import TableRow from 'Components/Table/TableRow'; import TableRowCell from 'Components/Table/Cells/TableRowCell'; import Popover from 'Components/Tooltip/Popover'; -import TrackLanguage from 'Album/TrackLanguage'; import TrackQuality from 'Album/TrackQuality'; import ProtocolLabel from 'Activity/Queue/ProtocolLabel'; import Peers from './Peers'; @@ -112,7 +111,6 @@ class InteractiveSearchRow extends Component { seeders, leechers, quality, - language, preferredWordScore, rejections, downloadAllowed, @@ -162,10 +160,6 @@ class InteractiveSearchRow extends Component { } - - - - @@ -245,7 +239,6 @@ InteractiveSearchRow.propTypes = { seeders: PropTypes.number, leechers: PropTypes.number, quality: PropTypes.object.isRequired, - language: PropTypes.object.isRequired, preferredWordScore: PropTypes.number.isRequired, rejections: PropTypes.arrayOf(PropTypes.string).isRequired, downloadAllowed: PropTypes.bool.isRequired, diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.css b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.css index 79a4f0d94..23e22b6dc 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.css +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.css @@ -4,7 +4,6 @@ margin-right: auto; } -.hideLanguageProfile, .hideMetadataProfile { composes: group from '~Components/Form/FormGroup.css'; diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js index 24e143ca3..6a2826802 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js @@ -62,7 +62,6 @@ function EditImportListModalContent(props) { onSavePress, onTestPress, onDeleteImportListPress, - showLanguageProfile, showMetadataProfile, ...otherProps } = props; @@ -74,7 +73,6 @@ function EditImportListModalContent(props) { shouldMonitor, rootFolderPath, qualityProfileId, - languageProfileId, metadataProfileId, tags, fields @@ -174,18 +172,6 @@ function EditImportListModalContent(props) { /> - - Language Profile - - - - Metadata Profile @@ -280,7 +266,6 @@ EditImportListModalContent.propTypes = { isTesting: PropTypes.bool.isRequired, saveError: PropTypes.object, item: PropTypes.object.isRequired, - showLanguageProfile: PropTypes.bool.isRequired, showMetadataProfile: PropTypes.bool.isRequired, onInputChange: PropTypes.func.isRequired, onFieldChange: PropTypes.func.isRequired, diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContentConnector.js b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContentConnector.js index 40fb07505..527b021f2 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContentConnector.js +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContentConnector.js @@ -9,13 +9,11 @@ import EditImportListModalContent from './EditImportListModalContent'; function createMapStateToProps() { return createSelector( (state) => state.settings.advancedSettings, - (state) => state.settings.languageProfiles, (state) => state.settings.metadataProfiles, createProviderSettingsSelector('importLists'), - (advancedSettings, languageProfiles, metadataProfiles, importList) => { + (advancedSettings, metadataProfiles, importList) => { return { advancedSettings, - showLanguageProfile: languageProfiles.items.length > 1, showMetadataProfile: metadataProfiles.items.length > 1, ...importList }; diff --git a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModal.js b/frontend/src/Settings/Profiles/Language/EditLanguageProfileModal.js deleted file mode 100644 index 6a17fd1fc..000000000 --- a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModal.js +++ /dev/null @@ -1,27 +0,0 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import { sizes } from 'Helpers/Props'; -import Modal from 'Components/Modal/Modal'; -import EditLanguageProfileModalContentConnector from './EditLanguageProfileModalContentConnector'; - -function EditLanguageProfileModal({ isOpen, onModalClose, ...otherProps }) { - return ( - - - - ); -} - -EditLanguageProfileModal.propTypes = { - isOpen: PropTypes.bool.isRequired, - onModalClose: PropTypes.func.isRequired -}; - -export default EditLanguageProfileModal; diff --git a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalConnector.js b/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalConnector.js deleted file mode 100644 index 8e112c9e1..000000000 --- a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalConnector.js +++ /dev/null @@ -1,43 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { connect } from 'react-redux'; -import { clearPendingChanges } from 'Store/Actions/baseActions'; -import EditLanguageProfileModal from './EditLanguageProfileModal'; - -function mapStateToProps() { - return {}; -} - -const mapDispatchToProps = { - clearPendingChanges -}; - -class EditLanguageProfileModalConnector extends Component { - - // - // Listeners - - onModalClose = () => { - this.props.clearPendingChanges({ section: 'settings.languageProfiles' }); - this.props.onModalClose(); - } - - // - // Render - - render() { - return ( - - ); - } -} - -EditLanguageProfileModalConnector.propTypes = { - onModalClose: PropTypes.func.isRequired, - clearPendingChanges: PropTypes.func.isRequired -}; - -export default connect(mapStateToProps, mapDispatchToProps)(EditLanguageProfileModalConnector); diff --git a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContent.css b/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContent.css deleted file mode 100644 index 74dd1c8b7..000000000 --- a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContent.css +++ /dev/null @@ -1,3 +0,0 @@ -.deleteButtonContainer { - margin-right: auto; -} diff --git a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContent.js b/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContent.js deleted file mode 100644 index 4d79b177f..000000000 --- a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContent.js +++ /dev/null @@ -1,165 +0,0 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import { inputTypes, kinds } from 'Helpers/Props'; -import Button from 'Components/Link/Button'; -import SpinnerErrorButton from 'Components/Link/SpinnerErrorButton'; -import LoadingIndicator from 'Components/Loading/LoadingIndicator'; -import ModalContent from 'Components/Modal/ModalContent'; -import ModalHeader from 'Components/Modal/ModalHeader'; -import ModalBody from 'Components/Modal/ModalBody'; -import ModalFooter from 'Components/Modal/ModalFooter'; -import Form from 'Components/Form/Form'; -import FormGroup from 'Components/Form/FormGroup'; -import FormLabel from 'Components/Form/FormLabel'; -import FormInputGroup from 'Components/Form/FormInputGroup'; -import LanguageProfileItems from './LanguageProfileItems'; -import styles from './EditLanguageProfileModalContent.css'; - -function EditLanguageProfileModalContent(props) { - const { - isFetching, - error, - isSaving, - saveError, - languages, - item, - isInUse, - onInputChange, - onCutoffChange, - onSavePress, - onModalClose, - onDeleteLanguageProfilePress, - ...otherProps - } = props; - - const { - id, - name, - upgradeAllowed, - cutoff, - languages: itemLanguages - } = item; - - return ( - - - {id ? 'Edit Language Profile' : 'Add Language Profile'} - - - - { - isFetching && - - } - - { - !isFetching && !!error && -
Unable to add a new language profile, please try again.
- } - - { - !isFetching && !error && -
- - Name - - - - - - - Upgrades Allowed - - - - - - { - upgradeAllowed.value && - - Upgrade Until - - - - } - - - - - } -
- - { - id && -
- -
- } - - - - - Save - -
-
- ); -} - -EditLanguageProfileModalContent.propTypes = { - isFetching: PropTypes.bool.isRequired, - error: PropTypes.object, - isSaving: PropTypes.bool.isRequired, - saveError: PropTypes.object, - languages: PropTypes.arrayOf(PropTypes.object).isRequired, - item: PropTypes.object.isRequired, - isInUse: PropTypes.bool.isRequired, - onInputChange: PropTypes.func.isRequired, - onCutoffChange: PropTypes.func.isRequired, - onSavePress: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired, - onDeleteLanguageProfilePress: PropTypes.func -}; - -export default EditLanguageProfileModalContent; diff --git a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContentConnector.js b/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContentConnector.js deleted file mode 100644 index 3cad2bb3c..000000000 --- a/frontend/src/Settings/Profiles/Language/EditLanguageProfileModalContentConnector.js +++ /dev/null @@ -1,189 +0,0 @@ -import _ from 'lodash'; -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import createProfileInUseSelector from 'Store/Selectors/createProfileInUseSelector'; -import createProviderSettingsSelector from 'Store/Selectors/createProviderSettingsSelector'; -import { fetchLanguageProfileSchema, setLanguageProfileValue, saveLanguageProfile } from 'Store/Actions/settingsActions'; -import EditLanguageProfileModalContent from './EditLanguageProfileModalContent'; - -function createLanguagesSelector() { - return createSelector( - createProviderSettingsSelector('languageProfiles'), - (languageProfile) => { - const languages = languageProfile.item.languages; - if (!languages || !languages.value) { - return []; - } - - return _.reduceRight(languages.value, (result, { allowed, language }) => { - if (allowed) { - result.push({ - key: language.id, - value: language.name - }); - } - - return result; - }, []); - } - ); -} - -function createMapStateToProps() { - return createSelector( - createProviderSettingsSelector('languageProfiles'), - createLanguagesSelector(), - createProfileInUseSelector('languageProfileId'), - (languageProfile, languages, isInUse) => { - return { - languages, - ...languageProfile, - isInUse - }; - } - ); -} - -const mapDispatchToProps = { - fetchLanguageProfileSchema, - setLanguageProfileValue, - saveLanguageProfile -}; - -class EditLanguageProfileModalContentConnector extends Component { - - // - // Lifecycle - - constructor(props, context) { - super(props, context); - - this.state = { - dragIndex: null, - dropIndex: null - }; - } - - componentDidMount() { - if (!this.props.id && !this.props.isPopulated) { - this.props.fetchLanguageProfileSchema(); - } - } - - componentDidUpdate(prevProps, prevState) { - if (prevProps.isSaving && !this.props.isSaving && !this.props.saveError) { - this.props.onModalClose(); - } - } - - // - // Listeners - - onInputChange = ({ name, value }) => { - this.props.setLanguageProfileValue({ name, value }); - } - - onCutoffChange = ({ name, value }) => { - const id = parseInt(value); - const item = _.find(this.props.item.languages.value, (i) => i.language.id === id); - - this.props.setLanguageProfileValue({ name, value: item.language }); - } - - onSavePress = () => { - this.props.saveLanguageProfile({ id: this.props.id }); - } - - onLanguageProfileItemAllowedChange = (id, allowed) => { - const languageProfile = _.cloneDeep(this.props.item); - - const item = _.find(languageProfile.languages.value, (i) => i.language.id === id); - item.allowed = allowed; - - this.props.setLanguageProfileValue({ - name: 'languages', - value: languageProfile.languages.value - }); - - const cutoff = languageProfile.cutoff.value; - - // If the cutoff isn't allowed anymore or there isn't a cutoff set one - if (!cutoff || !_.find(languageProfile.languages.value, (i) => i.language.id === cutoff.id).allowed) { - const firstAllowed = _.find(languageProfile.languages.value, { allowed: true }); - - this.props.setLanguageProfileValue({ name: 'cutoff', value: firstAllowed ? firstAllowed.language : null }); - } - } - - onLanguageProfileItemDragMove = (dragIndex, dropIndex) => { - if (this.state.dragIndex !== dragIndex || this.state.dropIndex !== dropIndex) { - this.setState({ - dragIndex, - dropIndex - }); - } - } - - onLanguageProfileItemDragEnd = ({ id }, didDrop) => { - const { - dragIndex, - dropIndex - } = this.state; - - if (didDrop && dropIndex !== null) { - const languageProfile = _.cloneDeep(this.props.item); - - const languages = languageProfile.languages.value.splice(dragIndex, 1); - languageProfile.languages.value.splice(dropIndex, 0, languages[0]); - - this.props.setLanguageProfileValue({ - name: 'languages', - value: languageProfile.languages.value - }); - } - - this.setState({ - dragIndex: null, - dropIndex: null - }); - } - - // - // Render - - render() { - if (_.isEmpty(this.props.item.languages) && !this.props.isFetching) { - return null; - } - - return ( - - ); - } -} - -EditLanguageProfileModalContentConnector.propTypes = { - id: PropTypes.number, - isFetching: PropTypes.bool.isRequired, - isPopulated: PropTypes.bool.isRequired, - isSaving: PropTypes.bool.isRequired, - saveError: PropTypes.object, - item: PropTypes.object.isRequired, - setLanguageProfileValue: PropTypes.func.isRequired, - fetchLanguageProfileSchema: PropTypes.func.isRequired, - saveLanguageProfile: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired -}; - -export default connect(createMapStateToProps, mapDispatchToProps)(EditLanguageProfileModalContentConnector); diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfile.css b/frontend/src/Settings/Profiles/Language/LanguageProfile.css deleted file mode 100644 index da85dc483..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfile.css +++ /dev/null @@ -1,31 +0,0 @@ -.languageProfile { - composes: card from '~Components/Card.css'; - - width: 300px; -} - -.nameContainer { - display: flex; - justify-content: space-between; -} - -.name { - @add-mixin truncate; - - margin-bottom: 20px; - font-weight: 300; - font-size: 24px; -} - -.cloneButton { - composes: button from '~Components/Link/IconButton.css'; - - height: 36px; -} - -.languages { - display: flex; - flex-wrap: wrap; - margin-top: 5px; - pointer-events: all; -} diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfile.js b/frontend/src/Settings/Profiles/Language/LanguageProfile.js deleted file mode 100644 index 07435b207..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfile.js +++ /dev/null @@ -1,147 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { icons, kinds } from 'Helpers/Props'; -import Card from 'Components/Card'; -import Label from 'Components/Label'; -import IconButton from 'Components/Link/IconButton'; -import ConfirmModal from 'Components/Modal/ConfirmModal'; -import EditLanguageProfileModalConnector from './EditLanguageProfileModalConnector'; -import styles from './LanguageProfile.css'; - -class LanguageProfile extends Component { - - // - // Lifecycle - - constructor(props, context) { - super(props, context); - - this.state = { - isEditLanguageProfileModalOpen: false, - isDeleteLanguageProfileModalOpen: false - }; - } - - // - // Listeners - - onEditLanguageProfilePress = () => { - this.setState({ isEditLanguageProfileModalOpen: true }); - } - - onEditLanguageProfileModalClose = () => { - this.setState({ isEditLanguageProfileModalOpen: false }); - } - - onDeleteLanguageProfilePress = () => { - this.setState({ - isEditLanguageProfileModalOpen: false, - isDeleteLanguageProfileModalOpen: true - }); - } - - onDeleteLanguageProfileModalClose = () => { - this.setState({ isDeleteLanguageProfileModalOpen: false }); - } - - onConfirmDeleteLanguageProfile = () => { - this.props.onConfirmDeleteLanguageProfile(this.props.id); - } - - onCloneLanguageProfilePress = () => { - const { - id, - onCloneLanguageProfilePress - } = this.props; - - onCloneLanguageProfilePress(id); - } - - // - // Render - - render() { - const { - id, - name, - upgradeAllowed, - cutoff, - languages, - isDeleting - } = this.props; - - return ( - -
-
- {name} -
- - -
- -
- { - languages.map((item) => { - if (!item.allowed) { - return null; - } - - const isCutoff = upgradeAllowed && item.language.id === cutoff.id; - - return ( - - ); - }) - } -
- - - - -
- ); - } -} - -LanguageProfile.propTypes = { - id: PropTypes.number.isRequired, - name: PropTypes.string.isRequired, - upgradeAllowed: PropTypes.bool.isRequired, - cutoff: PropTypes.object.isRequired, - languages: PropTypes.arrayOf(PropTypes.object).isRequired, - isDeleting: PropTypes.bool.isRequired, - onConfirmDeleteLanguageProfile: PropTypes.func.isRequired, - onCloneLanguageProfilePress: PropTypes.func.isRequired -}; - -export default LanguageProfile; diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileItem.css b/frontend/src/Settings/Profiles/Language/LanguageProfileItem.css deleted file mode 100644 index a10233929..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileItem.css +++ /dev/null @@ -1,44 +0,0 @@ -.languageProfileItem { - display: flex; - align-items: stretch; - width: 100%; - border: 1px solid #aaa; - border-radius: 4px; - background: #fafafa; -} - -.checkContainer { - position: relative; - margin-right: 4px; - margin-bottom: 7px; - margin-left: 8px; -} - -.languageName { - display: flex; - flex-grow: 1; - margin-bottom: 0; - margin-left: 2px; - font-weight: normal; - line-height: 36px; - cursor: pointer; -} - -.dragHandle { - display: flex; - align-items: center; - justify-content: center; - flex-shrink: 0; - margin-left: auto; - width: $dragHandleWidth; - text-align: center; - cursor: grab; -} - -.dragIcon { - top: 0; -} - -.isDragging { - opacity: 0.25; -} diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileItem.js b/frontend/src/Settings/Profiles/Language/LanguageProfileItem.js deleted file mode 100644 index 2a3671268..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileItem.js +++ /dev/null @@ -1,83 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import classNames from 'classnames'; -import { icons } from 'Helpers/Props'; -import Icon from 'Components/Icon'; -import CheckInput from 'Components/Form/CheckInput'; -import styles from './LanguageProfileItem.css'; - -class LanguageProfileItem extends Component { - - // - // Listeners - - onAllowedChange = ({ value }) => { - const { - languageId, - onLanguageProfileItemAllowedChange - } = this.props; - - onLanguageProfileItemAllowedChange(languageId, value); - } - - // - // Render - - render() { - const { - name, - allowed, - isDragging, - connectDragSource - } = this.props; - - return ( -
- - - { - connectDragSource( -
- -
- ) - } -
- ); - } -} - -LanguageProfileItem.propTypes = { - languageId: PropTypes.number.isRequired, - name: PropTypes.string.isRequired, - allowed: PropTypes.bool.isRequired, - sortIndex: PropTypes.number.isRequired, - isDragging: PropTypes.bool.isRequired, - connectDragSource: PropTypes.func, - onLanguageProfileItemAllowedChange: PropTypes.func -}; - -LanguageProfileItem.defaultProps = { - // The drag preview will not connect the drag handle. - connectDragSource: (node) => node -}; - -export default LanguageProfileItem; diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragPreview.css b/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragPreview.css deleted file mode 100644 index b927d9bce..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragPreview.css +++ /dev/null @@ -1,4 +0,0 @@ -.dragPreview { - width: 380px; - opacity: 0.75; -} diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragPreview.js b/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragPreview.js deleted file mode 100644 index b7a08d89b..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragPreview.js +++ /dev/null @@ -1,90 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { DragLayer } from 'react-dnd'; -import dimensions from 'Styles/Variables/dimensions.js'; -import { QUALITY_PROFILE_ITEM } from 'Helpers/dragTypes'; -import DragPreviewLayer from 'Components/DragPreviewLayer'; -import LanguageProfileItem from './LanguageProfileItem'; -import styles from './LanguageProfileItemDragPreview.css'; - -const formGroupSmallWidth = parseInt(dimensions.formGroupSmallWidth); -const formLabelLargeWidth = parseInt(dimensions.formLabelLargeWidth); -const formLabelRightMarginWidth = parseInt(dimensions.formLabelRightMarginWidth); -const dragHandleWidth = parseInt(dimensions.dragHandleWidth); - -function collectDragLayer(monitor) { - return { - item: monitor.getItem(), - itemType: monitor.getItemType(), - currentOffset: monitor.getSourceClientOffset() - }; -} - -class LanguageProfileItemDragPreview extends Component { - - // - // Render - - render() { - const { - item, - itemType, - currentOffset - } = this.props; - - if (!currentOffset || itemType !== QUALITY_PROFILE_ITEM) { - return null; - } - - // The offset is shifted because the drag handle is on the right edge of the - // list item and the preview is wider than the drag handle. - - const { x, y } = currentOffset; - const handleOffset = formGroupSmallWidth - formLabelLargeWidth - formLabelRightMarginWidth - dragHandleWidth; - const transform = `translate3d(${x - handleOffset}px, ${y}px, 0)`; - - const style = { - position: 'absolute', - WebkitTransform: transform, - msTransform: transform, - transform - }; - - const { - languageId, - name, - allowed, - sortIndex - } = item; - - return ( - -
- -
-
- ); - } -} - -LanguageProfileItemDragPreview.propTypes = { - item: PropTypes.object, - itemType: PropTypes.string, - currentOffset: PropTypes.shape({ - x: PropTypes.number.isRequired, - y: PropTypes.number.isRequired - }) -}; - -/* eslint-disable new-cap */ -export default DragLayer(collectDragLayer)(LanguageProfileItemDragPreview); -/* eslint-enable new-cap */ diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragSource.css b/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragSource.css deleted file mode 100644 index f59379129..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragSource.css +++ /dev/null @@ -1,18 +0,0 @@ -.languageProfileItemDragSource { - padding: 4px 0; -} - -.languageProfileItemPlaceholder { - width: 100%; - height: 36px; - border: 1px dotted #aaa; - border-radius: 4px; -} - -.languageProfileItemPlaceholderBefore { - margin-bottom: 8px; -} - -.languageProfileItemPlaceholderAfter { - margin-top: 8px; -} diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragSource.js b/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragSource.js deleted file mode 100644 index c154960a8..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileItemDragSource.js +++ /dev/null @@ -1,159 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { findDOMNode } from 'react-dom'; -import { DragSource, DropTarget } from 'react-dnd'; -import classNames from 'classnames'; -import { QUALITY_PROFILE_ITEM } from 'Helpers/dragTypes'; -import LanguageProfileItem from './LanguageProfileItem'; -import styles from './LanguageProfileItemDragSource.css'; - -const languageProfileItemDragSource = { - beginDrag({ languageId, name, allowed, sortIndex }) { - return { - languageId, - name, - allowed, - sortIndex - }; - }, - - endDrag(props, monitor, component) { - props.onLanguageProfileItemDragEnd(monitor.getItem(), monitor.didDrop()); - } -}; - -const languageProfileItemDropTarget = { - hover(props, monitor, component) { - const dragIndex = monitor.getItem().sortIndex; - const hoverIndex = props.sortIndex; - - const hoverBoundingRect = findDOMNode(component).getBoundingClientRect(); - const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2; - const clientOffset = monitor.getClientOffset(); - const hoverClientY = clientOffset.y - hoverBoundingRect.top; - - // Moving up, only trigger if drag position is above 50% - if (dragIndex < hoverIndex && hoverClientY > hoverMiddleY) { - return; - } - - // Moving down, only trigger if drag position is below 50% - if (dragIndex > hoverIndex && hoverClientY < hoverMiddleY) { - return; - } - - props.onLanguageProfileItemDragMove(dragIndex, hoverIndex); - } -}; - -function collectDragSource(connect, monitor) { - return { - connectDragSource: connect.dragSource(), - isDragging: monitor.isDragging() - }; -} - -function collectDropTarget(connect, monitor) { - return { - connectDropTarget: connect.dropTarget(), - isOver: monitor.isOver() - }; -} - -class LanguageProfileItemDragSource extends Component { - - // - // Render - - render() { - const { - languageId, - name, - allowed, - sortIndex, - isDragging, - isDraggingUp, - isDraggingDown, - isOver, - connectDragSource, - connectDropTarget, - onLanguageProfileItemAllowedChange - } = this.props; - - const isBefore = !isDragging && isDraggingUp && isOver; - const isAfter = !isDragging && isDraggingDown && isOver; - - // if (isDragging && !isOver) { - // return null; - // } - - return connectDropTarget( -
- { - isBefore && -
- } - - - - { - isAfter && -
- } -
- ); - } -} - -LanguageProfileItemDragSource.propTypes = { - languageId: PropTypes.number.isRequired, - name: PropTypes.string.isRequired, - allowed: PropTypes.bool.isRequired, - sortIndex: PropTypes.number.isRequired, - isDragging: PropTypes.bool, - isDraggingUp: PropTypes.bool, - isDraggingDown: PropTypes.bool, - isOver: PropTypes.bool, - connectDragSource: PropTypes.func, - connectDropTarget: PropTypes.func, - onLanguageProfileItemAllowedChange: PropTypes.func.isRequired, - onLanguageProfileItemDragMove: PropTypes.func.isRequired, - onLanguageProfileItemDragEnd: PropTypes.func.isRequired -}; - -/* eslint-disable new-cap */ -export default DropTarget( - QUALITY_PROFILE_ITEM, - languageProfileItemDropTarget, - collectDropTarget -)(DragSource( - QUALITY_PROFILE_ITEM, - languageProfileItemDragSource, - collectDragSource -)(LanguageProfileItemDragSource)); -/* eslint-enable new-cap */ diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileItems.css b/frontend/src/Settings/Profiles/Language/LanguageProfileItems.css deleted file mode 100644 index 48b30f326..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileItems.css +++ /dev/null @@ -1,6 +0,0 @@ -.languages { - margin-top: 10px; - /* TODO: This should consider the number of languages in the list */ - min-height: 550px; - user-select: none; -} diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileItems.js b/frontend/src/Settings/Profiles/Language/LanguageProfileItems.js deleted file mode 100644 index 831743cbe..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileItems.js +++ /dev/null @@ -1,103 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import FormGroup from 'Components/Form/FormGroup'; -import FormLabel from 'Components/Form/FormLabel'; -import FormInputHelpText from 'Components/Form/FormInputHelpText'; -import LanguageProfileItemDragSource from './LanguageProfileItemDragSource'; -import LanguageProfileItemDragPreview from './LanguageProfileItemDragPreview'; -import styles from './LanguageProfileItems.css'; - -class LanguageProfileItems extends Component { - - // - // Render - - render() { - const { - dragIndex, - dropIndex, - languageProfileItems, - errors, - warnings, - ...otherProps - } = this.props; - - const isDragging = dropIndex !== null; - const isDraggingUp = isDragging && dropIndex > dragIndex; - const isDraggingDown = isDragging && dropIndex < dragIndex; - - return ( - - Languages -
- - - { - errors.map((error, index) => { - return ( - - ); - }) - } - - { - warnings.map((warning, index) => { - return ( - - ); - }) - } - -
- { - languageProfileItems.map(({ allowed, language }, index) => { - return ( - - ); - }).reverse() - } - - -
-
-
- ); - } -} - -LanguageProfileItems.propTypes = { - dragIndex: PropTypes.number, - dropIndex: PropTypes.number, - languageProfileItems: PropTypes.arrayOf(PropTypes.object).isRequired, - errors: PropTypes.arrayOf(PropTypes.object), - warnings: PropTypes.arrayOf(PropTypes.object) -}; - -LanguageProfileItems.defaultProps = { - errors: [], - warnings: [] -}; - -export default LanguageProfileItems; diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfileNameConnector.js b/frontend/src/Settings/Profiles/Language/LanguageProfileNameConnector.js deleted file mode 100644 index 61a7153b5..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfileNameConnector.js +++ /dev/null @@ -1,31 +0,0 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import createLanguageProfileSelector from 'Store/Selectors/createLanguageProfileSelector'; - -function createMapStateToProps() { - return createSelector( - createLanguageProfileSelector(), - (languageProfile) => { - return { - name: languageProfile.name - }; - } - ); -} - -function LanguageProfileNameConnector({ name, ...otherProps }) { - return ( - - {name} - - ); -} - -LanguageProfileNameConnector.propTypes = { - languageProfileId: PropTypes.number.isRequired, - name: PropTypes.string.isRequired -}; - -export default connect(createMapStateToProps)(LanguageProfileNameConnector); diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfiles.css b/frontend/src/Settings/Profiles/Language/LanguageProfiles.css deleted file mode 100644 index 7f2e3cf5d..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfiles.css +++ /dev/null @@ -1,21 +0,0 @@ -.languageProfiles { - display: flex; - flex-wrap: wrap; -} - -.addLanguageProfile { - composes: languageProfile from '~./LanguageProfile.css'; - - background-color: $cardAlternateBackgroundColor; - color: $gray; - text-align: center; - font-size: 45px; -} - -.center { - display: inline-block; - padding: 5px 20px 0; - border: 1px solid $borderColor; - border-radius: 4px; - background-color: $white; -} diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfiles.js b/frontend/src/Settings/Profiles/Language/LanguageProfiles.js deleted file mode 100644 index 30dddbcf6..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfiles.js +++ /dev/null @@ -1,107 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import sortByName from 'Utilities/Array/sortByName'; -import { icons } from 'Helpers/Props'; -import FieldSet from 'Components/FieldSet'; -import Card from 'Components/Card'; -import Icon from 'Components/Icon'; -import PageSectionContent from 'Components/Page/PageSectionContent'; -import LanguageProfile from './LanguageProfile'; -import EditLanguageProfileModalConnector from './EditLanguageProfileModalConnector'; -import styles from './LanguageProfiles.css'; - -class LanguageProfiles extends Component { - - // - // Lifecycle - - constructor(props, context) { - super(props, context); - - this.state = { - isLanguageProfileModalOpen: false - }; - } - - // - // Listeners - - onCloneLanguageProfilePress = (id) => { - this.props.onCloneLanguageProfilePress(id); - this.setState({ isLanguageProfileModalOpen: true }); - } - - onEditLanguageProfilePress = () => { - this.setState({ isLanguageProfileModalOpen: true }); - } - - onModalClose = () => { - this.setState({ isLanguageProfileModalOpen: false }); - } - - // - // Render - - render() { - const { - items, - isDeleting, - onConfirmDeleteLanguageProfile, - ...otherProps - } = this.props; - - return ( -
- -
- { - items.sort(sortByName).map((item) => { - return ( - - ); - }) - } - - -
- -
-
-
- - -
-
- ); - } -} - -LanguageProfiles.propTypes = { - advancedSettings: PropTypes.bool.isRequired, - isFetching: PropTypes.bool.isRequired, - error: PropTypes.object, - items: PropTypes.arrayOf(PropTypes.object).isRequired, - isDeleting: PropTypes.bool.isRequired, - onConfirmDeleteLanguageProfile: PropTypes.func.isRequired, - onCloneLanguageProfilePress: PropTypes.func.isRequired -}; - -export default LanguageProfiles; diff --git a/frontend/src/Settings/Profiles/Language/LanguageProfilesConnector.js b/frontend/src/Settings/Profiles/Language/LanguageProfilesConnector.js deleted file mode 100644 index 1b122ab0f..000000000 --- a/frontend/src/Settings/Profiles/Language/LanguageProfilesConnector.js +++ /dev/null @@ -1,67 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import { fetchLanguageProfiles, deleteLanguageProfile, cloneLanguageProfile } from 'Store/Actions/settingsActions'; -import LanguageProfiles from './LanguageProfiles'; - -function createMapStateToProps() { - return createSelector( - (state) => state.settings.advancedSettings, - (state) => state.settings.languageProfiles, - (advancedSettings, languageProfiles) => { - return { - advancedSettings, - ...languageProfiles - }; - } - ); -} - -const mapDispatchToProps = { - dispatchFetchLanguageProfiles: fetchLanguageProfiles, - dispatchDeleteLanguageProfile: deleteLanguageProfile, - dispatchCloneLanguageProfile: cloneLanguageProfile -}; - -class LanguageProfilesConnector extends Component { - - // - // Lifecycle - - componentDidMount() { - this.props.dispatchFetchLanguageProfiles(); - } - - // - // Listeners - - onConfirmDeleteLanguageProfile = (id) => { - this.props.dispatchDeleteLanguageProfile({ id }); - } - - onCloneLanguageProfilePress = (id) => { - this.props.dispatchCloneLanguageProfile({ id }); - } - - // - // Render - - render() { - return ( - - ); - } -} - -LanguageProfilesConnector.propTypes = { - dispatchFetchLanguageProfiles: PropTypes.func.isRequired, - dispatchDeleteLanguageProfile: PropTypes.func.isRequired, - dispatchCloneLanguageProfile: PropTypes.func.isRequired -}; - -export default connect(createMapStateToProps, mapDispatchToProps)(LanguageProfilesConnector); diff --git a/frontend/src/Settings/Profiles/Profiles.js b/frontend/src/Settings/Profiles/Profiles.js index 98349b32c..a65eddafb 100644 --- a/frontend/src/Settings/Profiles/Profiles.js +++ b/frontend/src/Settings/Profiles/Profiles.js @@ -5,7 +5,6 @@ import PageContent from 'Components/Page/PageContent'; import PageContentBodyConnector from 'Components/Page/PageContentBodyConnector'; import SettingsToolbarConnector from 'Settings/SettingsToolbarConnector'; import QualityProfilesConnector from './Quality/QualityProfilesConnector'; -import LanguageProfilesConnector from './Language/LanguageProfilesConnector'; import MetadataProfilesConnector from './Metadata/MetadataProfilesConnector'; import DelayProfilesConnector from './Delay/DelayProfilesConnector'; import ReleaseProfilesConnector from './Release/ReleaseProfilesConnector'; @@ -24,7 +23,6 @@ class Profiles extends Component { - diff --git a/frontend/src/Settings/Settings.js b/frontend/src/Settings/Settings.js index 744e4f49d..368b2c47b 100644 --- a/frontend/src/Settings/Settings.js +++ b/frontend/src/Settings/Settings.js @@ -32,7 +32,7 @@ function Settings() {
- Quality, Language, Metadata, Delay, and Release profiles + Quality, Metadata, Delay, and Release profiles
{ - return { - section, - ...payload - }; -}); - -export const cloneLanguageProfile = createAction(CLONE_LANGUAGE_PROFILE); - -// -// Details - -export default { - - // - // State - - defaultState: { - isFetching: false, - isPopulated: false, - error: null, - isDeleting: false, - deleteError: null, - isSchemaFetching: false, - isSchemaPopulated: false, - schemaError: null, - schema: {}, - isSaving: false, - saveError: null, - items: [], - pendingChanges: {} - }, - - // - // Action Handlers - - actionHandlers: { - [FETCH_LANGUAGE_PROFILES]: createFetchHandler(section, '/languageprofile'), - [FETCH_LANGUAGE_PROFILE_SCHEMA]: createFetchSchemaHandler(section, '/languageprofile/schema'), - [SAVE_LANGUAGE_PROFILE]: createSaveProviderHandler(section, '/languageprofile'), - [DELETE_LANGUAGE_PROFILE]: createRemoveItemHandler(section, '/languageprofile') - }, - - // - // Reducers - - reducers: { - [SET_LANGUAGE_PROFILE_VALUE]: createSetSettingValueReducer(section), - - [CLONE_LANGUAGE_PROFILE]: function(state, { payload }) { - const id = payload.id; - const newState = getSectionState(state, section); - const item = newState.items.find((i) => i.id === id); - const pendingChanges = { ...item, id: 0 }; - delete pendingChanges.id; - - pendingChanges.name = `${pendingChanges.name} - Copy`; - newState.pendingChanges = pendingChanges; - - return updateSectionState(state, section, newState); - } - } - -}; diff --git a/frontend/src/Store/Actions/actionTypes.js b/frontend/src/Store/Actions/actionTypes.js index a0c784a7d..dcb13d86d 100644 --- a/frontend/src/Store/Actions/actionTypes.js +++ b/frontend/src/Store/Actions/actionTypes.js @@ -14,8 +14,3 @@ export const SET_IS_SIDEBAR_VISIBLE = 'SET_IS_SIDEBAR_VISIBLE'; export const FETCH_GENERAL_SETTINGS = 'settings/general/fetchGeneralSettings'; export const SET_GENERAL_SETTINGS_VALUE = 'settings/general/setGeneralSettingsValue'; export const SAVE_GENERAL_SETTINGS = 'settings/general/saveGeneralSettings'; - -// -// Languages - -export const FETCH_LANGUAGES = 'FETCH_LANGUAGES'; diff --git a/frontend/src/Store/Actions/addArtistActions.js b/frontend/src/Store/Actions/addArtistActions.js index 93306b2f2..44496f6d5 100644 --- a/frontend/src/Store/Actions/addArtistActions.js +++ b/frontend/src/Store/Actions/addArtistActions.js @@ -33,7 +33,6 @@ export const defaultState = { rootFolderPath: '', monitor: monitorOptions[0].key, qualityProfileId: 0, - languageProfileId: 0, metadataProfileId: 0, albumFolder: true, tags: [] diff --git a/frontend/src/Store/Actions/albumStudioActions.js b/frontend/src/Store/Actions/albumStudioActions.js index 9686715a6..5225c27cf 100644 --- a/frontend/src/Store/Actions/albumStudioActions.js +++ b/frontend/src/Store/Actions/albumStudioActions.js @@ -52,12 +52,6 @@ export const defaultState = { type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.QUALITY_PROFILE }, - { - name: 'languageProfileId', - label: 'Language Profile', - type: filterBuilderTypes.EXACT, - valueType: filterBuilderValueTypes.LANGUAGE_PROFILE - }, { name: 'metadataProfileId', label: 'Metadata Profile', diff --git a/frontend/src/Store/Actions/artistEditorActions.js b/frontend/src/Store/Actions/artistEditorActions.js index 3b10686db..238419df0 100644 --- a/frontend/src/Store/Actions/artistEditorActions.js +++ b/frontend/src/Store/Actions/artistEditorActions.js @@ -49,12 +49,6 @@ export const defaultState = { type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.QUALITY_PROFILE }, - { - name: 'languageProfileId', - label: 'Language Profile', - type: filterBuilderTypes.EXACT, - valueType: filterBuilderValueTypes.LANGUAGE_PROFILE - }, { name: 'metadataProfileId', label: 'Metadata Profile', diff --git a/frontend/src/Store/Actions/artistIndexActions.js b/frontend/src/Store/Actions/artistIndexActions.js index bcbd9dc52..597844df6 100644 --- a/frontend/src/Store/Actions/artistIndexActions.js +++ b/frontend/src/Store/Actions/artistIndexActions.js @@ -85,12 +85,6 @@ export const defaultState = { isSortable: true, isVisible: true }, - { - name: 'languageProfileId', - label: 'Language Profile', - isSortable: true, - isVisible: false - }, { name: 'metadataProfileId', label: 'Metadata Profile', @@ -250,12 +244,6 @@ export const defaultState = { type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.QUALITY_PROFILE }, - { - name: 'languageProfileId', - label: 'Language Profile', - type: filterBuilderTypes.EXACT, - valueType: filterBuilderValueTypes.LANGUAGE_PROFILE - }, { name: 'metadataProfileId', label: 'Metadata Profile', diff --git a/frontend/src/Store/Actions/blacklistActions.js b/frontend/src/Store/Actions/blacklistActions.js index a6775e836..2dde21b1e 100644 --- a/frontend/src/Store/Actions/blacklistActions.js +++ b/frontend/src/Store/Actions/blacklistActions.js @@ -38,11 +38,6 @@ export const defaultState = { isSortable: true, isVisible: true }, - { - name: 'language', - label: 'Language', - isVisible: false - }, { name: 'quality', label: 'Quality', diff --git a/frontend/src/Store/Actions/historyActions.js b/frontend/src/Store/Actions/historyActions.js index f1beca264..d7552b938 100644 --- a/frontend/src/Store/Actions/historyActions.js +++ b/frontend/src/Store/Actions/historyActions.js @@ -50,11 +50,6 @@ export const defaultState = { label: 'Track Title', isVisible: true }, - { - name: 'language', - label: 'Language', - isVisible: false - }, { name: 'quality', label: 'Quality', diff --git a/frontend/src/Store/Actions/queueActions.js b/frontend/src/Store/Actions/queueActions.js index 8f67e08bc..85c301c7d 100644 --- a/frontend/src/Store/Actions/queueActions.js +++ b/frontend/src/Store/Actions/queueActions.js @@ -80,12 +80,6 @@ export const defaultState = { isSortable: true, isVisible: false }, - { - name: 'language', - label: 'Language', - isSortable: true, - isVisible: false - }, { name: 'quality', label: 'Quality', diff --git a/frontend/src/Store/Actions/settingsActions.js b/frontend/src/Store/Actions/settingsActions.js index b549c914d..2a7cfc8b9 100644 --- a/frontend/src/Store/Actions/settingsActions.js +++ b/frontend/src/Store/Actions/settingsActions.js @@ -7,7 +7,6 @@ import downloadClientOptions from './Settings/downloadClientOptions'; import general from './Settings/general'; import indexerOptions from './Settings/indexerOptions'; import indexers from './Settings/indexers'; -import languageProfiles from './Settings/languageProfiles'; import importLists from './Settings/importLists'; import importListExclusions from './Settings/importListExclusions'; import metadataProfiles from './Settings/metadataProfiles'; @@ -31,7 +30,6 @@ export * from './Settings/importLists'; export * from './Settings/importListExclusions'; export * from './Settings/indexerOptions'; export * from './Settings/indexers'; -export * from './Settings/languageProfiles'; export * from './Settings/metadataProfiles'; export * from './Settings/mediaManagement'; export * from './Settings/metadata'; @@ -62,7 +60,6 @@ export const defaultState = { general: general.defaultState, indexerOptions: indexerOptions.defaultState, indexers: indexers.defaultState, - languageProfiles: languageProfiles.defaultState, importLists: importLists.defaultState, importListExclusions: importListExclusions.defaultState, metadataProfiles: metadataProfiles.defaultState, @@ -103,7 +100,6 @@ export const actionHandlers = handleThunks({ ...general.actionHandlers, ...indexerOptions.actionHandlers, ...indexers.actionHandlers, - ...languageProfiles.actionHandlers, ...importLists.actionHandlers, ...importListExclusions.actionHandlers, ...metadataProfiles.actionHandlers, @@ -135,7 +131,6 @@ export const reducers = createHandleActions({ ...general.reducers, ...indexerOptions.reducers, ...indexers.reducers, - ...languageProfiles.reducers, ...importLists.reducers, ...importListExclusions.reducers, ...metadataProfiles.reducers, diff --git a/frontend/src/Store/Actions/trackActions.js b/frontend/src/Store/Actions/trackActions.js index 75b9ca507..44292271a 100644 --- a/frontend/src/Store/Actions/trackActions.js +++ b/frontend/src/Store/Actions/trackActions.js @@ -55,11 +55,6 @@ export const defaultState = { label: 'Duration', isVisible: true }, - { - name: 'language', - label: 'Language', - isVisible: false - }, { name: 'audioInfo', label: 'Audio Info', diff --git a/frontend/src/Store/Actions/trackFileActions.js b/frontend/src/Store/Actions/trackFileActions.js index 666a9c7a9..203258977 100644 --- a/frontend/src/Store/Actions/trackFileActions.js +++ b/frontend/src/Store/Actions/trackFileActions.js @@ -139,7 +139,6 @@ export const actionHandlers = handleThunks({ [UPDATE_TRACK_FILES]: function(getState, payload, dispatch) { const { trackFileIds, - language, quality } = payload; @@ -149,10 +148,6 @@ export const actionHandlers = handleThunks({ trackFileIds }; - if (language) { - data.language = language; - } - if (quality) { data.quality = quality; } @@ -169,10 +164,6 @@ export const actionHandlers = handleThunks({ ...trackFileIds.map((id) => { const props = {}; - if (language) { - props.language = language; - } - if (quality) { props.quality = quality; } diff --git a/frontend/src/Store/Actions/wantedActions.js b/frontend/src/Store/Actions/wantedActions.js index 12ccce802..4df132504 100644 --- a/frontend/src/Store/Actions/wantedActions.js +++ b/frontend/src/Store/Actions/wantedActions.js @@ -125,11 +125,6 @@ export const defaultState = { isSortable: true, isVisible: true }, - { - name: 'language', - label: 'Language', - isVisible: false - }, // { // name: 'status', // label: 'Status', diff --git a/frontend/src/Store/Selectors/createArtistLanguageProfileSelector.js b/frontend/src/Store/Selectors/createArtistLanguageProfileSelector.js deleted file mode 100644 index 14c116ff4..000000000 --- a/frontend/src/Store/Selectors/createArtistLanguageProfileSelector.js +++ /dev/null @@ -1,16 +0,0 @@ -import { createSelector } from 'reselect'; -import createArtistSelector from './createArtistSelector'; - -function createArtistLanguageProfileSelector() { - return createSelector( - (state) => state.settings.languageProfiles.items, - createArtistSelector(), - (languageProfiles, artist = {}) => { - return languageProfiles.find((profile) => { - return profile.id === artist.languageProfileId; - }); - } - ); -} - -export default createArtistLanguageProfileSelector; diff --git a/frontend/src/Store/Selectors/createLanguageProfileSelector.js b/frontend/src/Store/Selectors/createLanguageProfileSelector.js deleted file mode 100644 index c32f85ada..000000000 --- a/frontend/src/Store/Selectors/createLanguageProfileSelector.js +++ /dev/null @@ -1,15 +0,0 @@ -import { createSelector } from 'reselect'; - -function createLanguageProfileSelector() { - return createSelector( - (state, { languageProfileId }) => languageProfileId, - (state) => state.settings.languageProfiles.items, - (languageProfileId, languageProfiles) => { - return languageProfiles.find((profile) => { - return profile.id === languageProfileId; - }); - } - ); -} - -export default createLanguageProfileSelector; diff --git a/frontend/src/TrackFile/Editor/TrackFileEditorModalContent.js b/frontend/src/TrackFile/Editor/TrackFileEditorModalContent.js index d18a4144b..f9d9cc282 100644 --- a/frontend/src/TrackFile/Editor/TrackFileEditorModalContent.js +++ b/frontend/src/TrackFile/Editor/TrackFileEditorModalContent.js @@ -32,11 +32,6 @@ const columns = [ label: 'Relative Path', isVisible: true }, - { - name: 'language', - label: 'Language', - isVisible: true - }, { name: 'quality', label: 'Quality', @@ -112,16 +107,6 @@ class TrackFileEditorModalContent extends Component { this.setState({ isConfirmDeleteModalOpen: false }); } - onLanguageChange = ({ value }) => { - const selectedIds = this.getSelectedIds(); - - if (!selectedIds.length) { - return; - } - - this.props.onLanguageChange(selectedIds, parseInt(value)); - } - onQualityChange = ({ value }) => { const selectedIds = this.getSelectedIds(); @@ -142,7 +127,6 @@ class TrackFileEditorModalContent extends Component { isPopulated, error, items, - languages, qualities, onModalClose } = this.props; @@ -154,15 +138,6 @@ class TrackFileEditorModalContent extends Component { isConfirmDeleteModalOpen } = this.state; - const languageOptions = _.reduceRight(languages, (acc, language) => { - acc.push({ - key: language.id, - value: language.name - }); - - return acc; - }, [{ key: 'selectLanguage', value: 'Select Language', disabled: true }]); - const qualityOptions = _.reduceRight(qualities, (acc, quality) => { acc.push({ key: quality.id, @@ -240,16 +215,6 @@ class TrackFileEditorModalContent extends Component { Delete -
- -
-
state.settings.languageProfiles, (state) => state.settings.qualityProfiles, - (languageProfiles, qualityProfiles) => { - const languages = _.map(languageProfiles.schema.languages, 'language'); + (qualityProfiles) => { const qualities = getQualities(qualityProfiles.schema.items); let error = null; - if (languageProfiles.schemaError) { - error = 'Unable to load languages'; - } else if (qualityProfiles.schemaError) { + if (qualityProfiles.schemaError) { error = 'Unable to load qualities'; } return { - isFetching: languageProfiles.isSchemaFetching || qualityProfiles.isSchemaFetching, - isPopulated: languageProfiles.isSchemaPopulated && qualityProfiles.isSchemaPopulated, + isFetching: qualityProfiles.isSchemaFetching, + isPopulated: qualityProfiles.isSchemaPopulated, error, - languages, qualities }; } @@ -71,7 +66,6 @@ function createMapStateToProps() { return { relativePath: trackFile.relativePath, - language: trackFile.language, quality: trackFile.quality, ...track }; @@ -98,10 +92,6 @@ function createMapDispatchToProps(dispatch, props) { dispatch(fetchTracks(updateProps)); }, - dispatchFetchLanguageProfileSchema(name, path) { - dispatch(fetchLanguageProfileSchema()); - }, - dispatchFetchQualityProfileSchema(name, path) { dispatch(fetchQualityProfileSchema()); }, @@ -127,7 +117,6 @@ class TrackFileEditorModalContentConnector extends Component { this.props.dispatchFetchTracks({ artistId, albumId }); - this.props.dispatchFetchLanguageProfileSchema(); this.props.dispatchFetchQualityProfileSchema(); } @@ -138,12 +127,6 @@ class TrackFileEditorModalContentConnector extends Component { // // Listeners - onLanguageChange = (trackFileIds, languageId) => { - const language = _.find(this.props.languages, { id: languageId }); - - this.props.dispatchUpdateTrackFiles({ trackFileIds, language }); - } - onQualityChange = (trackFileIds, qualityId) => { const quality = { quality: _.find(this.props.qualities, { id: qualityId }), @@ -161,7 +144,6 @@ class TrackFileEditorModalContentConnector extends Component { render() { const { - dispatchFetchLanguageProfileSchema, dispatchFetchQualityProfileSchema, dispatchUpdateTrackFiles, dispatchFetchTracks, @@ -172,7 +154,6 @@ class TrackFileEditorModalContentConnector extends Component { return ( ); @@ -182,11 +163,9 @@ class TrackFileEditorModalContentConnector extends Component { TrackFileEditorModalContentConnector.propTypes = { artistId: PropTypes.number.isRequired, albumId: PropTypes.number, - languages: PropTypes.arrayOf(PropTypes.object).isRequired, qualities: PropTypes.arrayOf(PropTypes.object).isRequired, dispatchFetchTracks: PropTypes.func.isRequired, dispatchClearTracks: PropTypes.func.isRequired, - dispatchFetchLanguageProfileSchema: PropTypes.func.isRequired, dispatchFetchQualityProfileSchema: PropTypes.func.isRequired, dispatchUpdateTrackFiles: PropTypes.func.isRequired }; diff --git a/frontend/src/TrackFile/Editor/TrackFileEditorRow.js b/frontend/src/TrackFile/Editor/TrackFileEditorRow.js index 76c7039e3..e475c115b 100644 --- a/frontend/src/TrackFile/Editor/TrackFileEditorRow.js +++ b/frontend/src/TrackFile/Editor/TrackFileEditorRow.js @@ -1,7 +1,6 @@ import PropTypes from 'prop-types'; import React from 'react'; import padNumber from 'Utilities/Number/padNumber'; -import Label from 'Components/Label'; import TableRow from 'Components/Table/TableRow'; import TableRowCell from 'Components/Table/Cells/TableRowCell'; import TableSelectCell from 'Components/Table/Cells/TableSelectCell'; @@ -12,7 +11,6 @@ function TrackFileEditorRow(props) { id, trackNumber, relativePath, - language, quality, isSelected, onSelectedChange @@ -34,12 +32,6 @@ function TrackFileEditorRow(props) { {relativePath} - - - - { - return { - language: trackFile ? trackFile.language : undefined - }; - } - ); -} - -export default connect(createMapStateToProps)(TrackLanguage); diff --git a/frontend/src/Utilities/Artist/getNewArtist.js b/frontend/src/Utilities/Artist/getNewArtist.js index e46099eb6..d39855f04 100644 --- a/frontend/src/Utilities/Artist/getNewArtist.js +++ b/frontend/src/Utilities/Artist/getNewArtist.js @@ -4,7 +4,6 @@ function getNewArtist(artist, payload) { rootFolderPath, monitor, qualityProfileId, - languageProfileId, metadataProfileId, artistType, albumFolder, @@ -20,7 +19,6 @@ function getNewArtist(artist, payload) { artist.addOptions = addOptions; artist.monitored = true; artist.qualityProfileId = qualityProfileId; - artist.languageProfileId = languageProfileId; artist.metadataProfileId = metadataProfileId; artist.rootFolderPath = rootFolderPath; artist.artistType = artistType; diff --git a/frontend/src/Wanted/CutoffUnmet/CutoffUnmetRow.css b/frontend/src/Wanted/CutoffUnmet/CutoffUnmetRow.css index d033cb221..106842b2b 100644 --- a/frontend/src/Wanted/CutoffUnmet/CutoffUnmetRow.css +++ b/frontend/src/Wanted/CutoffUnmet/CutoffUnmetRow.css @@ -1,5 +1,4 @@ .episode, -.language, .status { composes: cell from '~Components/Table/Cells/TableRowCell.css'; diff --git a/frontend/src/Wanted/CutoffUnmet/CutoffUnmetRow.js b/frontend/src/Wanted/CutoffUnmet/CutoffUnmetRow.js index d29fc6232..34e1d501f 100644 --- a/frontend/src/Wanted/CutoffUnmet/CutoffUnmetRow.js +++ b/frontend/src/Wanted/CutoffUnmet/CutoffUnmetRow.js @@ -4,7 +4,6 @@ import albumEntities from 'Album/albumEntities'; import AlbumTitleLink from 'Album/AlbumTitleLink'; import EpisodeStatusConnector from 'Album/EpisodeStatusConnector'; import AlbumSearchCellConnector from 'Album/AlbumSearchCellConnector'; -import TrackFileLanguageConnector from 'TrackFile/TrackFileLanguageConnector'; import ArtistNameLink from 'Artist/ArtistNameLink'; import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector'; import TableRow from 'Components/Table/TableRow'; @@ -86,19 +85,6 @@ function CutoffUnmetRow(props) { ); } - if (name === 'language') { - return ( - - - - ); - } - if (name === 'status') { return ( ArtistIds { get; set; } public bool? Monitored { get; set; } public int? QualityProfileId { get; set; } - public int? LanguageProfileId { get; set; } public int? MetadataProfileId { get; set; } public bool? AlbumFolder { get; set; } public string RootFolderPath { get; set; } diff --git a/src/Lidarr.Api.V1/Artist/ArtistModule.cs b/src/Lidarr.Api.V1/Artist/ArtistModule.cs index 552ce404b..5cb9c42c4 100644 --- a/src/Lidarr.Api.V1/Artist/ArtistModule.cs +++ b/src/Lidarr.Api.V1/Artist/ArtistModule.cs @@ -57,7 +57,6 @@ namespace Lidarr.Api.V1.Artist ArtistAncestorValidator artistAncestorValidator, SystemFolderValidator systemFolderValidator, ProfileExistsValidator profileExistsValidator, - LanguageProfileExistsValidator languageProfileExistsValidator, MetadataProfileExistsValidator metadataProfileExistsValidator ) : base(signalRBroadcaster) @@ -78,7 +77,6 @@ namespace Lidarr.Api.V1.Artist DeleteResource = DeleteArtist; Http.Validation.RuleBuilderExtensions.ValidId(SharedValidator.RuleFor(s => s.QualityProfileId)); - Http.Validation.RuleBuilderExtensions.ValidId(SharedValidator.RuleFor(s => s.LanguageProfileId)); Http.Validation.RuleBuilderExtensions.ValidId(SharedValidator.RuleFor(s => s.MetadataProfileId)); SharedValidator.RuleFor(s => s.Path) @@ -92,7 +90,6 @@ namespace Lidarr.Api.V1.Artist .When(s => !s.Path.IsNullOrWhiteSpace()); SharedValidator.RuleFor(s => s.QualityProfileId).SetValidator(profileExistsValidator); - SharedValidator.RuleFor(s => s.LanguageProfileId).SetValidator(languageProfileExistsValidator); SharedValidator.RuleFor(s => s.MetadataProfileId).SetValidator(metadataProfileExistsValidator); PostValidator.RuleFor(s => s.Path).IsValidPath().When(s => s.RootFolderPath.IsNullOrWhiteSpace()); diff --git a/src/Lidarr.Api.V1/Artist/ArtistResource.cs b/src/Lidarr.Api.V1/Artist/ArtistResource.cs index 8017acdf7..264beb981 100644 --- a/src/Lidarr.Api.V1/Artist/ArtistResource.cs +++ b/src/Lidarr.Api.V1/Artist/ArtistResource.cs @@ -43,7 +43,6 @@ namespace Lidarr.Api.V1.Artist //View & Edit public string Path { get; set; } public int QualityProfileId { get; set; } - public int LanguageProfileId { get; set; } public int MetadataProfileId { get; set; } //Editing Only @@ -85,7 +84,6 @@ namespace Lidarr.Api.V1.Artist Path = model.Path, QualityProfileId = model.QualityProfileId, - LanguageProfileId = model.LanguageProfileId, MetadataProfileId = model.MetadataProfileId, Links = model.Metadata.Value.Links, @@ -133,7 +131,6 @@ namespace Lidarr.Api.V1.Artist SortName = resource.SortName, Path = resource.Path, QualityProfileId = resource.QualityProfileId, - LanguageProfileId = resource.LanguageProfileId, MetadataProfileId = resource.MetadataProfileId, diff --git a/src/Lidarr.Api.V1/Blacklist/BlacklistResource.cs b/src/Lidarr.Api.V1/Blacklist/BlacklistResource.cs index 61445bc94..e01254c63 100644 --- a/src/Lidarr.Api.V1/Blacklist/BlacklistResource.cs +++ b/src/Lidarr.Api.V1/Blacklist/BlacklistResource.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using NzbDrone.Core.Indexers; -using NzbDrone.Core.Languages; using NzbDrone.Core.Qualities; using Lidarr.Api.V1.Artist; using Lidarr.Http.REST; @@ -13,7 +12,6 @@ namespace Lidarr.Api.V1.Blacklist public int ArtistId { get; set; } public List AlbumIds { get; set; } public string SourceTitle { get; set; } - public Language Language { get; set; } public QualityModel Quality { get; set; } public DateTime Date { get; set; } public DownloadProtocol Protocol { get; set; } @@ -36,7 +34,6 @@ namespace Lidarr.Api.V1.Blacklist ArtistId = model.ArtistId, AlbumIds = model.AlbumIds, SourceTitle = model.SourceTitle, - Language = model.Language, Quality = model.Quality, Date = model.Date, Protocol = model.Protocol, diff --git a/src/Lidarr.Api.V1/History/HistoryModule.cs b/src/Lidarr.Api.V1/History/HistoryModule.cs index 62d29a682..27c951906 100644 --- a/src/Lidarr.Api.V1/History/HistoryModule.cs +++ b/src/Lidarr.Api.V1/History/HistoryModule.cs @@ -56,7 +56,6 @@ namespace Lidarr.Api.V1.History if (model.Artist != null) { resource.QualityCutoffNotMet = _upgradableSpecification.QualityCutoffNotMet(model.Artist.QualityProfile.Value, model.Quality); - resource.LanguageCutoffNotMet = _upgradableSpecification.LanguageCutoffNotMet(model.Artist.LanguageProfile, model.Language); } return resource; diff --git a/src/Lidarr.Api.V1/History/HistoryResource.cs b/src/Lidarr.Api.V1/History/HistoryResource.cs index 27c168b4b..398230864 100644 --- a/src/Lidarr.Api.V1/History/HistoryResource.cs +++ b/src/Lidarr.Api.V1/History/HistoryResource.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using NzbDrone.Core.History; -using NzbDrone.Core.Languages; using NzbDrone.Core.Qualities; using Lidarr.Api.V1.Albums; using Lidarr.Api.V1.Artist; @@ -16,10 +15,8 @@ namespace Lidarr.Api.V1.History public int ArtistId { get; set; } public int TrackId { get; set; } public string SourceTitle { get; set; } - public Language Language { get; set; } public QualityModel Quality { get; set; } public bool QualityCutoffNotMet { get; set; } - public bool LanguageCutoffNotMet { get; set; } public DateTime Date { get; set; } public string DownloadId { get; set; } @@ -46,7 +43,6 @@ namespace Lidarr.Api.V1.History ArtistId = model.ArtistId, TrackId = model.TrackId, SourceTitle = model.SourceTitle, - Language = model.Language, Quality = model.Quality, //QualityCutoffNotMet Date = model.Date, diff --git a/src/Lidarr.Api.V1/ImportLists/ImportListModule.cs b/src/Lidarr.Api.V1/ImportLists/ImportListModule.cs index b187f1840..b3d3965e8 100644 --- a/src/Lidarr.Api.V1/ImportLists/ImportListModule.cs +++ b/src/Lidarr.Api.V1/ImportLists/ImportListModule.cs @@ -10,18 +10,15 @@ namespace Lidarr.Api.V1.ImportLists public ImportListModule(ImportListFactory importListFactory, ProfileExistsValidator profileExistsValidator, - LanguageProfileExistsValidator languageProfileExistsValidator, MetadataProfileExistsValidator metadataProfileExistsValidator ) : base(importListFactory, "importlist", ResourceMapper) { Http.Validation.RuleBuilderExtensions.ValidId(SharedValidator.RuleFor(s => s.QualityProfileId)); - Http.Validation.RuleBuilderExtensions.ValidId(SharedValidator.RuleFor(s => s.LanguageProfileId)); Http.Validation.RuleBuilderExtensions.ValidId(SharedValidator.RuleFor(s => s.MetadataProfileId)); SharedValidator.RuleFor(c => c.RootFolderPath).IsValidPath(); SharedValidator.RuleFor(c => c.QualityProfileId).SetValidator(profileExistsValidator); - SharedValidator.RuleFor(c => c.LanguageProfileId).SetValidator(languageProfileExistsValidator); SharedValidator.RuleFor(c => c.MetadataProfileId).SetValidator(metadataProfileExistsValidator); } diff --git a/src/Lidarr.Api.V1/ImportLists/ImportListResource.cs b/src/Lidarr.Api.V1/ImportLists/ImportListResource.cs index d5844824f..d23551e18 100644 --- a/src/Lidarr.Api.V1/ImportLists/ImportListResource.cs +++ b/src/Lidarr.Api.V1/ImportLists/ImportListResource.cs @@ -8,7 +8,6 @@ namespace Lidarr.Api.V1.ImportLists public ImportListMonitorType ShouldMonitor { get; set; } public string RootFolderPath { get; set; } public int QualityProfileId { get; set; } - public int LanguageProfileId { get; set; } public int MetadataProfileId { get; set; } public ImportListType ListType { get; set; } public int ListOrder { get; set; } @@ -29,7 +28,6 @@ namespace Lidarr.Api.V1.ImportLists resource.ShouldMonitor = definition.ShouldMonitor; resource.RootFolderPath = definition.RootFolderPath; resource.QualityProfileId = definition.ProfileId; - resource.LanguageProfileId = definition.LanguageProfileId; resource.MetadataProfileId = definition.MetadataProfileId; resource.ListType = definition.ListType; resource.ListOrder = (int) definition.ListType; @@ -50,7 +48,6 @@ namespace Lidarr.Api.V1.ImportLists definition.ShouldMonitor = resource.ShouldMonitor; definition.RootFolderPath = resource.RootFolderPath; definition.ProfileId = resource.QualityProfileId; - definition.LanguageProfileId = resource.LanguageProfileId; definition.MetadataProfileId = resource.MetadataProfileId; definition.ListType = resource.ListType; diff --git a/src/Lidarr.Api.V1/Indexers/ReleaseModuleBase.cs b/src/Lidarr.Api.V1/Indexers/ReleaseModuleBase.cs index 994150dc2..a1ce46788 100644 --- a/src/Lidarr.Api.V1/Indexers/ReleaseModuleBase.cs +++ b/src/Lidarr.Api.V1/Indexers/ReleaseModuleBase.cs @@ -32,12 +32,6 @@ namespace Lidarr.Api.V1.Indexers .Artist .QualityProfile.Value .Items.FindIndex(v => v.Quality == release.Quality.Quality) * 100; - - release.LanguageWeight = decision.RemoteAlbum - .Artist - .LanguageProfile.Value - .Languages.FindIndex(v => v.Language == release.Language) * 100; - } release.QualityWeight += release.Quality.Revision.Real * 10; diff --git a/src/Lidarr.Api.V1/Indexers/ReleaseResource.cs b/src/Lidarr.Api.V1/Indexers/ReleaseResource.cs index 2855435ff..bc10523cb 100644 --- a/src/Lidarr.Api.V1/Indexers/ReleaseResource.cs +++ b/src/Lidarr.Api.V1/Indexers/ReleaseResource.cs @@ -4,7 +4,6 @@ using System.Linq; using Newtonsoft.Json; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Indexers; -using NzbDrone.Core.Languages; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; using Lidarr.Http.REST; @@ -28,8 +27,6 @@ namespace Lidarr.Api.V1.Indexers public string Title { get; set; } public bool Discography { get; set; } public bool SceneSource { get; set; } - public Language Language { get; set; } - public int LanguageWeight { get; set; } public string AirDate { get; set; } public string ArtistName { get; set; } public string AlbumTitle { get; set; } @@ -86,7 +83,6 @@ namespace Lidarr.Api.V1.Indexers ReleaseGroup = parsedAlbumInfo.ReleaseGroup, ReleaseHash = parsedAlbumInfo.ReleaseHash, Title = releaseInfo.Title, - Language = parsedAlbumInfo.Language, ArtistName = parsedAlbumInfo.ArtistName, AlbumTitle = parsedAlbumInfo.AlbumTitle, Discography = parsedAlbumInfo.Discography, diff --git a/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj b/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj index 8c28dce6f..4d9b79052 100644 --- a/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj +++ b/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj @@ -92,10 +92,6 @@ - - - - diff --git a/src/Lidarr.Api.V1/ManualImport/ManualImportModule.cs b/src/Lidarr.Api.V1/ManualImport/ManualImportModule.cs index 3c41232c5..270eb930e 100644 --- a/src/Lidarr.Api.V1/ManualImport/ManualImportModule.cs +++ b/src/Lidarr.Api.V1/ManualImport/ManualImportModule.cs @@ -78,7 +78,6 @@ namespace Lidarr.Api.V1.ManualImport Album = resource.Album == null ? null : _albumService.GetAlbum(resource.Album.Id), Release = resource.AlbumReleaseId == 0 ? null : _releaseService.GetRelease(resource.AlbumReleaseId), Quality = resource.Quality, - Language = resource.Language, DownloadId = resource.DownloadId, AdditionalFile = resource.AdditionalFile, ReplaceExistingFiles = resource.ReplaceExistingFiles, diff --git a/src/Lidarr.Api.V1/ManualImport/ManualImportResource.cs b/src/Lidarr.Api.V1/ManualImport/ManualImportResource.cs index b9a5735c6..d2a2b728d 100644 --- a/src/Lidarr.Api.V1/ManualImport/ManualImportResource.cs +++ b/src/Lidarr.Api.V1/ManualImport/ManualImportResource.cs @@ -1,7 +1,6 @@ using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.MediaFiles.TrackImport.Manual; using NzbDrone.Core.Qualities; -using NzbDrone.Core.Languages; using Lidarr.Api.V1.Artist; using Lidarr.Api.V1.Albums; using Lidarr.Api.V1.Tracks; @@ -24,7 +23,6 @@ namespace Lidarr.Api.V1.ManualImport public int AlbumReleaseId { get; set; } public List Tracks { get; set; } public QualityModel Quality { get; set; } - public Language Language { get; set; } public int QualityWeight { get; set; } public string DownloadId { get; set; } public IEnumerable Rejections { get; set; } @@ -53,7 +51,6 @@ namespace Lidarr.Api.V1.ManualImport AlbumReleaseId = model.Release?.Id ?? 0, Tracks = model.Tracks.ToResource(), Quality = model.Quality, - Language = model.Language, //QualityWeight DownloadId = model.DownloadId, Rejections = model.Rejections, diff --git a/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileModule.cs b/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileModule.cs deleted file mode 100644 index 9c33e12e5..000000000 --- a/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileModule.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System.Collections.Generic; -using FluentValidation; -using NzbDrone.Core.Profiles.Languages; -using Lidarr.Http; - -namespace Lidarr.Api.V1.Profiles.Language -{ - public class LanguageProfileModule : LidarrRestModule - { - private readonly ILanguageProfileService _profileService; - - public LanguageProfileModule(ILanguageProfileService profileService) - { - _profileService = profileService; - SharedValidator.RuleFor(c => c.Name).NotEmpty(); - SharedValidator.RuleFor(c => c.Cutoff).NotNull(); - SharedValidator.RuleFor(c => c.Languages).MustHaveAllowedLanguage(); - - GetResourceAll = GetAll; - GetResourceById = GetById; - UpdateResource = Update; - CreateResource = Create; - DeleteResource = DeleteProfile; - } - - private int Create(LanguageProfileResource resource) - { - var model = resource.ToModel(); - model = _profileService.Add(model); - return model.Id; - } - - private void DeleteProfile(int id) - { - _profileService.Delete(id); - } - - private void Update(LanguageProfileResource resource) - { - var model = resource.ToModel(); - - _profileService.Update(model); - } - - private LanguageProfileResource GetById(int id) - { - return _profileService.Get(id).ToResource(); - } - - private List GetAll() - { - var profiles = _profileService.All().ToResource(); - - return profiles; - } - } -} \ No newline at end of file diff --git a/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileResource.cs b/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileResource.cs deleted file mode 100644 index 3a33757a8..000000000 --- a/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileResource.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using NzbDrone.Core.Profiles.Languages; -using Lidarr.Http.REST; - -namespace Lidarr.Api.V1.Profiles.Language -{ - public class LanguageProfileResource : RestResource - { - public string Name { get; set; } - public bool UpgradeAllowed { get; set; } - public NzbDrone.Core.Languages.Language Cutoff { get; set; } - public List Languages { get; set; } - } - - public class ProfileLanguageItemResource : RestResource - { - public NzbDrone.Core.Languages.Language Language { get; set; } - public bool Allowed { get; set; } - } - - public static class LanguageProfileResourceMapper - { - public static LanguageProfileResource ToResource(this LanguageProfile model) - { - if (model == null) return null; - - return new LanguageProfileResource - { - Id = model.Id, - Name = model.Name, - UpgradeAllowed = model.UpgradeAllowed, - Cutoff = model.Cutoff, - Languages = model.Languages.ConvertAll(ToResource) - }; - } - - public static ProfileLanguageItemResource ToResource(this LanguageProfileItem model) - { - if (model == null) return null; - - return new ProfileLanguageItemResource - { - Language = model.Language, - Allowed = model.Allowed - }; - } - - public static LanguageProfile ToModel(this LanguageProfileResource resource) - { - if (resource == null) return null; - - return new LanguageProfile - { - Id = resource.Id, - Name = resource.Name, - UpgradeAllowed = resource.UpgradeAllowed, - Cutoff = (NzbDrone.Core.Languages.Language)resource.Cutoff.Id, - Languages = resource.Languages.ConvertAll(ToModel) - }; - } - - public static LanguageProfileItem ToModel(this ProfileLanguageItemResource resource) - { - if (resource == null) return null; - - return new LanguageProfileItem - { - Language = (NzbDrone.Core.Languages.Language)resource.Language.Id, - Allowed = resource.Allowed - }; - } - - public static List ToResource(this IEnumerable models) - { - return models.Select(ToResource).ToList(); - } - } -} diff --git a/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileSchemaModule.cs b/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileSchemaModule.cs deleted file mode 100644 index ecc154043..000000000 --- a/src/Lidarr.Api.V1/Profiles/Language/LanguageProfileSchemaModule.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Linq; -using NzbDrone.Core.Profiles.Languages; -using Lidarr.Http; - -namespace Lidarr.Api.V1.Profiles.Language -{ - public class LanguageProfileSchemaModule : LidarrRestModule - { - private readonly LanguageProfileService _languageProfileService; - - public LanguageProfileSchemaModule(LanguageProfileService languageProfileService) - : base("/languageprofile/schema") - { - _languageProfileService = languageProfileService; - GetResourceSingle = GetAll; - } - - private LanguageProfileResource GetAll() - { - var profile = _languageProfileService.GetDefaultProfile(string.Empty); - return profile.ToResource(); - } - } -} diff --git a/src/Lidarr.Api.V1/Profiles/Language/LanguageValidator.cs b/src/Lidarr.Api.V1/Profiles/Language/LanguageValidator.cs deleted file mode 100644 index 62ac82807..000000000 --- a/src/Lidarr.Api.V1/Profiles/Language/LanguageValidator.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using FluentValidation; -using FluentValidation.Validators; - -namespace Lidarr.Api.V1.Profiles.Language -{ - public static class LanguageValidation - { - public static IRuleBuilderOptions> MustHaveAllowedLanguage(this IRuleBuilder> ruleBuilder) - { - ruleBuilder.SetValidator(new NotEmptyValidator(null)); - - return ruleBuilder.SetValidator(new LanguageValidator()); - } - } - - - public class LanguageValidator : PropertyValidator - { - public LanguageValidator() - : base("Must have at least one allowed language") - { - } - - protected override bool IsValid(PropertyValidatorContext context) - { - var list = context.PropertyValue as IList; - - if (list == null) - { - return false; - } - - if (!list.Any(c => c.Allowed)) - { - return false; - } - - return true; - } - } -} diff --git a/src/Lidarr.Api.V1/Queue/QueueModule.cs b/src/Lidarr.Api.V1/Queue/QueueModule.cs index f20cc377b..94c25ecea 100644 --- a/src/Lidarr.Api.V1/Queue/QueueModule.cs +++ b/src/Lidarr.Api.V1/Queue/QueueModule.cs @@ -5,9 +5,7 @@ using NzbDrone.Core.Configuration; using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore.Events; using NzbDrone.Core.Download.Pending; -using NzbDrone.Core.Languages; using NzbDrone.Core.Messaging.Events; -using NzbDrone.Core.Profiles.Languages; using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; using NzbDrone.Core.Queue; @@ -23,13 +21,11 @@ namespace Lidarr.Api.V1.Queue private readonly IQueueService _queueService; private readonly IPendingReleaseService _pendingReleaseService; - private readonly LanguageComparer LANGUAGE_COMPARER; private readonly QualityModelComparer QUALITY_COMPARER; public QueueModule(IBroadcastSignalRMessage broadcastSignalRMessage, IQueueService queueService, IPendingReleaseService pendingReleaseService, - ILanguageProfileService languageProfileService, QualityProfileService qualityProfileService) : base(broadcastSignalRMessage) { @@ -37,7 +33,6 @@ namespace Lidarr.Api.V1.Queue _pendingReleaseService = pendingReleaseService; GetResourcePaged = GetQueue; - LANGUAGE_COMPARER = new LanguageComparer(languageProfileService.GetDefaultProfile(string.Empty)); QUALITY_COMPARER = new QualityModelComparer(qualityProfileService.GetDefaultProfile(string.Empty)); } @@ -98,13 +93,6 @@ namespace Lidarr.Api.V1.Queue : fullQueue.OrderByDescending(q => q.DownloadClient, StringComparer.InvariantCultureIgnoreCase); } - else if (pagingSpec.SortKey == "language") - { - ordered = ascending - ? fullQueue.OrderBy(q => q.Language, LANGUAGE_COMPARER) - : fullQueue.OrderByDescending(q => q.Language, LANGUAGE_COMPARER); - } - else if (pagingSpec.SortKey == "quality") { ordered = ascending @@ -147,8 +135,6 @@ namespace Lidarr.Api.V1.Queue return q => q.Album?.Title; case "album.releaseDate": return q => q.Album?.ReleaseDate; - case "language": - return q => q.Language; case "quality": return q => q.Quality; case "progress": diff --git a/src/Lidarr.Api.V1/Queue/QueueResource.cs b/src/Lidarr.Api.V1/Queue/QueueResource.cs index c09ba55ef..c9913d7f6 100644 --- a/src/Lidarr.Api.V1/Queue/QueueResource.cs +++ b/src/Lidarr.Api.V1/Queue/QueueResource.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using NzbDrone.Core.Download.TrackedDownloads; using NzbDrone.Core.Indexers; -using NzbDrone.Core.Languages; using NzbDrone.Core.Qualities; using Lidarr.Api.V1.Albums; using Lidarr.Api.V1.Artist; @@ -17,7 +16,6 @@ namespace Lidarr.Api.V1.Queue public int? AlbumId { get; set; } public ArtistResource Artist { get; set; } public AlbumResource Album { get; set; } - public Language Language { get; set; } public QualityModel Quality { get; set; } public decimal Size { get; set; } public string Title { get; set; } @@ -49,7 +47,6 @@ namespace Lidarr.Api.V1.Queue AlbumId = model.Album?.Id, Artist = includeArtist && model.Artist != null ? model.Artist.ToResource() : null, Album = includeAlbum && model.Album != null ? model.Album.ToResource() : null, - Language = model.Language, Quality = model.Quality, Size = model.Size, Title = model.Title, diff --git a/src/Lidarr.Api.V1/TrackFiles/TrackFileListResource.cs b/src/Lidarr.Api.V1/TrackFiles/TrackFileListResource.cs index e8e6b4a7c..166836d9c 100644 --- a/src/Lidarr.Api.V1/TrackFiles/TrackFileListResource.cs +++ b/src/Lidarr.Api.V1/TrackFiles/TrackFileListResource.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using NzbDrone.Core.Languages; using NzbDrone.Core.Qualities; namespace Lidarr.Api.V1.TrackFiles @@ -7,7 +6,6 @@ namespace Lidarr.Api.V1.TrackFiles public class TrackFileListResource { public List TrackFileIds { get; set; } - public Language Language { get; set; } public QualityModel Quality { get; set; } } } diff --git a/src/Lidarr.Api.V1/TrackFiles/TrackFileModule.cs b/src/Lidarr.Api.V1/TrackFiles/TrackFileModule.cs index a7be00e44..88265d667 100644 --- a/src/Lidarr.Api.V1/TrackFiles/TrackFileModule.cs +++ b/src/Lidarr.Api.V1/TrackFiles/TrackFileModule.cs @@ -123,11 +123,6 @@ namespace Lidarr.Api.V1.TrackFiles foreach (var trackFile in trackFiles) { - if (resource.Language != null) - { - trackFile.Language = resource.Language; - } - if (resource.Quality != null) { trackFile.Quality = resource.Quality; diff --git a/src/Lidarr.Api.V1/TrackFiles/TrackFileResource.cs b/src/Lidarr.Api.V1/TrackFiles/TrackFileResource.cs index 4470d01bf..28473ba51 100644 --- a/src/Lidarr.Api.V1/TrackFiles/TrackFileResource.cs +++ b/src/Lidarr.Api.V1/TrackFiles/TrackFileResource.cs @@ -1,6 +1,5 @@ using System; using NzbDrone.Core.DecisionEngine.Specifications; -using NzbDrone.Core.Languages; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Qualities; using Lidarr.Http.REST; @@ -16,13 +15,10 @@ namespace Lidarr.Api.V1.TrackFiles public string Path { get; set; } public long Size { get; set; } public DateTime DateAdded { get; set; } - //public string SceneName { get; set; } - public Language Language { get; set; } public QualityModel Quality { get; set; } public MediaInfoResource MediaInfo { get; set; } public bool QualityCutoffNotMet { get; set; } - public bool LanguageCutoffNotMet { get; set; } } @@ -43,7 +39,6 @@ namespace Lidarr.Api.V1.TrackFiles Size = model.Size, DateAdded = model.DateAdded, // SceneName = model.SceneName, - Language = model.Language, Quality = model.Quality, MediaInfo = model.MediaInfo.ToResource() //QualityCutoffNotMet @@ -66,11 +61,9 @@ namespace Lidarr.Api.V1.TrackFiles Size = model.Size, DateAdded = model.DateAdded, //SceneName = model.SceneName, - Language = model.Language, Quality = model.Quality, MediaInfo = model.MediaInfo.ToResource(), - QualityCutoffNotMet = upgradableSpecification.QualityCutoffNotMet(artist.QualityProfile.Value, model.Quality), - LanguageCutoffNotMet = upgradableSpecification.LanguageCutoffNotMet(artist.LanguageProfile.Value, model.Language) + QualityCutoffNotMet = upgradableSpecification.QualityCutoffNotMet(artist.QualityProfile.Value, model.Quality) }; } } diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/LanguageIntConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/LanguageIntConverterFixture.cs deleted file mode 100644 index 9d5fb3b58..000000000 --- a/src/NzbDrone.Core.Test/Datastore/Converters/LanguageIntConverterFixture.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using FluentAssertions; -using Marr.Data.Converters; -using NUnit.Framework; -using NzbDrone.Core.Datastore.Converters; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Test.Framework; - -namespace NzbDrone.Core.Test.Datastore.Converters -{ - [TestFixture] - public class LanguageIntConverterFixture : CoreTest - { - [Test] - public void should_return_int_when_saving_language_to_db() - { - var quality = Language.English; - - Subject.ToDB(quality).Should().Be(quality.Id); - } - - [Test] - public void should_return_0_when_saving_db_null_to_db() - { - Subject.ToDB(DBNull.Value).Should().Be(0); - } - - [Test] - public void should_throw_when_saving_another_object_to_db() - { - Assert.Throws(() => Subject.ToDB("Not a language")); - } - - [Test] - public void should_return_language_when_getting_string_from_db() - { - var language = Language.English; - - var context = new ConverterContext - { - DbValue = language.Id - }; - - Subject.FromDB(context).Should().Be(language); - } - - [Test] - public void should_return_db_null_for_db_null_value_when_getting_from_db() - { - var context = new ConverterContext - { - DbValue = DBNull.Value - }; - - Subject.FromDB(context).Should().Be(Language.Unknown); - } - } -} diff --git a/src/NzbDrone.Core.Test/Datastore/DatabaseRelationshipFixture.cs b/src/NzbDrone.Core.Test/Datastore/DatabaseRelationshipFixture.cs index 52053ed50..58bc8cc89 100644 --- a/src/NzbDrone.Core.Test/Datastore/DatabaseRelationshipFixture.cs +++ b/src/NzbDrone.Core.Test/Datastore/DatabaseRelationshipFixture.cs @@ -6,7 +6,6 @@ using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Qualities; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Music; -using NzbDrone.Core.Languages; using System; namespace NzbDrone.Core.Test.Datastore diff --git a/src/NzbDrone.Core.Test/Datastore/MarrDataLazyLoadingFixture.cs b/src/NzbDrone.Core.Test/Datastore/MarrDataLazyLoadingFixture.cs index 0f121924c..9a5fdffe6 100644 --- a/src/NzbDrone.Core.Test/Datastore/MarrDataLazyLoadingFixture.cs +++ b/src/NzbDrone.Core.Test/Datastore/MarrDataLazyLoadingFixture.cs @@ -6,9 +6,6 @@ using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Music; using NzbDrone.Core.Qualities; using NzbDrone.Core.MediaFiles; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Test.Languages; using Marr.Data.QGen; using System.Collections.Generic; using System.Linq; @@ -29,17 +26,7 @@ namespace NzbDrone.Core.Test.Datastore Items = Qualities.QualityFixture.GetDefaultQualities() }; - var languageProfile = new LanguageProfile - { - Name = "Test", - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English - }; - - - profile = Db.Insert(profile); - languageProfile = Db.Insert(languageProfile); var metadata = Builder.CreateNew() .With(v => v.Id = 0) @@ -50,7 +37,6 @@ namespace NzbDrone.Core.Test.Datastore .All() .With(v => v.Id = 0) .With(v => v.QualityProfileId = profile.Id) - .With(v => v.LanguageProfileId = languageProfile.Id) .With(v => v.ArtistMetadataId = metadata.Id) .BuildListOfNew(); @@ -130,7 +116,6 @@ namespace NzbDrone.Core.Test.Datastore Assert.IsTrue(track.AlbumRelease.Value.Album.Value.Artist.IsLoaded); Assert.IsNotNull(track.AlbumRelease.Value.Album.Value.Artist.Value); Assert.IsFalse(track.AlbumRelease.Value.Album.Value.Artist.Value.QualityProfile.IsLoaded); - Assert.IsFalse(track.AlbumRelease.Value.Album.Value.Artist.Value.LanguageProfile.IsLoaded); } } @@ -306,33 +291,7 @@ namespace NzbDrone.Core.Test.Datastore Assert.IsTrue(track.AlbumRelease.Value.Album.Value.Artist.IsLoaded); Assert.IsNotNull(track.AlbumRelease.Value.Album.Value.Artist.Value); Assert.IsTrue(track.AlbumRelease.Value.Album.Value.Artist.Value.QualityProfile.IsLoaded); - Assert.IsFalse(track.AlbumRelease.Value.Album.Value.Artist.Value.LanguageProfile.IsLoaded); - } - } - - [Test] - public void should_explicit_load_languageprofile_if_joined() - { - var db = Mocker.Resolve(); - var DataMapper = db.GetDataMapper(); - - var tracks = DataMapper.Query() - .Join(JoinType.Inner, v => v.AlbumRelease, (l, r) => l.AlbumReleaseId == r.Id) - .Join(JoinType.Inner, v => v.Album, (l, r) => l.AlbumId == r.Id) - .Join(JoinType.Inner, v => v.Artist, (l, r) => l.ArtistMetadataId == r.ArtistMetadataId) - .Join(JoinType.Inner, v => v.LanguageProfile, (l, r) => l.LanguageProfileId == r.Id) - .ToList(); - - foreach (var track in tracks) - { - Assert.IsTrue(track.AlbumRelease.IsLoaded); - Assert.IsTrue(track.AlbumRelease.Value.Album.IsLoaded); - Assert.IsTrue(track.AlbumRelease.Value.Album.Value.Artist.IsLoaded); - Assert.IsNotNull(track.AlbumRelease.Value.Album.Value.Artist.Value); - Assert.IsFalse(track.AlbumRelease.Value.Album.Value.Artist.Value.QualityProfile.IsLoaded); - Assert.IsTrue(track.AlbumRelease.Value.Album.Value.Artist.Value.LanguageProfile.IsLoaded); } } - } } diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/AlreadyImportedSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/AlreadyImportedSpecificationFixture.cs index 81eb9b0ec..8342e79e7 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/AlreadyImportedSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/AlreadyImportedSpecificationFixture.cs @@ -14,7 +14,6 @@ using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.Indexers; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.MediaFiles; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Test.DecisionEngineTests { @@ -46,7 +45,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests _artist = Builder.CreateNew() .Build(); - _firstFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now, Language = Language.English }; + _firstFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now }; _mp3 = new QualityModel(Quality.MP3_320, new Revision(version: 1)); _flac = new QualityModel(Quality.FLAC, new Revision(version: 1)); diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/CutoffSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/CutoffSpecificationFixture.cs index a9caa32a6..ce2484151 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/CutoffSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/CutoffSpecificationFixture.cs @@ -4,9 +4,6 @@ using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Test.Languages; using System.Collections.Generic; namespace NzbDrone.Core.Test.DecisionEngineTests @@ -26,13 +23,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Cutoff = Quality.MP3_256.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English - }, new List { new QualityModel(Quality.MP3_192, new Revision(version: 2)) }, - new List { Language.English }, NoPreferredWordScore).Should().BeTrue(); + NoPreferredWordScore).Should().BeTrue(); } [Test] @@ -44,13 +36,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Cutoff = Quality.MP3_256.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English - }, new List { new QualityModel(Quality.MP3_256, new Revision(version: 2)) }, - new List { Language.English }, NoPreferredWordScore).Should().BeFalse(); + NoPreferredWordScore).Should().BeFalse(); } [Test] @@ -63,13 +50,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Cutoff = Quality.MP3_256.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English - }, new List { new QualityModel(Quality.MP3_320, new Revision(version: 2)) }, - new List { Language.English }, NoPreferredWordScore).Should().BeFalse(); + NoPreferredWordScore).Should().BeFalse(); } [Test] @@ -82,13 +64,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English - }, new List { new QualityModel(Quality.MP3_320, new Revision(version: 1)) }, - new List { Language.English }, NoPreferredWordScore, new QualityModel(Quality.MP3_320, new Revision(version: 2))).Should().BeTrue(); @@ -104,140 +80,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English - }, new List { new QualityModel(Quality.MP3_320, new Revision(version: 2)) }, - new List { Language.English }, NoPreferredWordScore, new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeFalse(); } - [Test] - public void should_return_true_if_quality_cutoff_is_met_and_quality_is_higher_but_language_is_not_met() - { - - QualityProfile _profile = new QualityProfile - { - Cutoff = Quality.MP3_320.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - }; - - LanguageProfile _langProfile = new LanguageProfile - { - Cutoff = Language.Spanish, - Languages = LanguageFixture.GetDefaultLanguages() - }; - - Subject.CutoffNotMet(_profile, - _langProfile, - new List { new QualityModel(Quality.MP3_320, new Revision(version: 2)) }, - new List { Language.English }, - NoPreferredWordScore, - new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeTrue(); - } - - [Test] - public void should_return_false_if_cutoff_is_met_and_quality_is_higher_and_language_is_met() - { - - QualityProfile _profile = new QualityProfile - { - Cutoff = Quality.MP3_320.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - }; - - LanguageProfile _langProfile = new LanguageProfile - { - Cutoff = Language.Spanish, - Languages = LanguageFixture.GetDefaultLanguages() - }; - - Subject.CutoffNotMet( - _profile, - _langProfile, - new List { new QualityModel(Quality.MP3_320, new Revision(version: 2)) }, - new List { Language.Spanish }, - NoPreferredWordScore, - new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeFalse(); - } - - [Test] - public void should_return_false_if_cutoff_is_met_and_quality_is_higher_and_language_is_higher() - { - - QualityProfile _profile = new QualityProfile - { - Cutoff = Quality.MP3_320.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - }; - - LanguageProfile _langProfile = new LanguageProfile - { - Cutoff = Language.Spanish, - Languages = LanguageFixture.GetDefaultLanguages() - }; - - Subject.CutoffNotMet( - _profile, - _langProfile, - new List { new QualityModel(Quality.MP3_320, new Revision(version: 2)) }, - new List { Language.French }, - NoPreferredWordScore, - new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeFalse(); - } - - [Test] - public void should_return_true_if_cutoff_is_not_met_and_new_quality_is_higher_and_language_is_higher() - { - - QualityProfile _profile = new QualityProfile - { - Cutoff = Quality.MP3_320.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - }; - - LanguageProfile _langProfile = new LanguageProfile - { - Cutoff = Language.Spanish, - Languages = LanguageFixture.GetDefaultLanguages() - }; - - Subject.CutoffNotMet( - _profile, - _langProfile, - new List { new QualityModel(Quality.MP3_256, new Revision(version: 2)) }, - new List { Language.French }, - NoPreferredWordScore, - new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeTrue(); - } - - [Test] - public void should_return_true_if_cutoff_is_not_met_and_language_is_higher() - { - - QualityProfile _profile = new QualityProfile - { - Cutoff = Quality.MP3_320.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - }; - - LanguageProfile _langProfile = new LanguageProfile - { - Cutoff = Language.Spanish, - Languages = LanguageFixture.GetDefaultLanguages() - }; - - Subject.CutoffNotMet( - _profile, - _langProfile, - new List { new QualityModel(Quality.MP3_256, new Revision(version: 2)) }, - new List { Language.French }, - NoPreferredWordScore).Should().BeTrue(); - } - [Test] public void should_return_true_if_cutoffs_are_met_and_score_is_higher() { @@ -247,17 +94,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities(), }; - LanguageProfile _langProfile = new LanguageProfile - { - Cutoff = Language.Spanish, - Languages = LanguageFixture.GetDefaultLanguages() - }; - Subject.CutoffNotMet( _profile, - _langProfile, new List { new QualityModel(Quality.MP3_320, new Revision(version: 2)) }, - new List { Language.Spanish }, NoPreferredWordScore, new QualityModel(Quality.FLAC, new Revision(version: 2)), 10).Should().BeTrue(); diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/HistorySpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/HistorySpecificationFixture.cs index 237189a9b..2f28829ee 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/HistorySpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/HistorySpecificationFixture.cs @@ -14,9 +14,6 @@ using NzbDrone.Core.Music; using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Profiles.Qualities; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Test.Languages; namespace NzbDrone.Core.Test.DecisionEngineTests { @@ -27,8 +24,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests private RemoteAlbum _parseResultMulti; private RemoteAlbum _parseResultSingle; - private Tuple _upgradableQuality; - private Tuple _notupgradableQuality; + private QualityModel _upgradableQuality; + private QualityModel _notupgradableQuality; private Artist _fakeArtist; private const int FIRST_ALBUM_ID = 1; private const int SECOND_ALBUM_ID = 2; @@ -39,10 +36,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Mocker.Resolve(); _upgradeHistory = Mocker.Resolve(); - var singleAlbumList = new List { new Album { Id = FIRST_ALBUM_ID} }; - var doubleAlbumList = new List { - new Album {Id = FIRST_ALBUM_ID }, - new Album {Id = SECOND_ALBUM_ID }, + var singleAlbumList = new List { new Album { Id = FIRST_ALBUM_ID } }; + var doubleAlbumList = new List { + new Album {Id = FIRST_ALBUM_ID }, + new Album {Id = SECOND_ALBUM_ID }, new Album {Id = 3 } }; @@ -53,40 +50,34 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }) - .With(l => l.LanguageProfile = new LanguageProfile - { - UpgradeAllowed = true, - Cutoff = Language.Spanish, - Languages = LanguageFixture.GetDefaultLanguages() - }) .Build(); _parseResultMulti = new RemoteAlbum { Artist = _fakeArtist, - ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)), Language = Language.English }, + ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)) }, Albums = doubleAlbumList }; _parseResultSingle = new RemoteAlbum { Artist = _fakeArtist, - ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)), Language = Language.English }, + ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)) }, Albums = singleAlbumList }; - _upgradableQuality = new Tuple(new QualityModel(Quality.MP3_192, new Revision(version: 1)), Language.English); - _notupgradableQuality = new Tuple(new QualityModel(Quality.MP3_320, new Revision(version: 2)), Language.English); + _upgradableQuality = new QualityModel(Quality.MP3_192, new Revision(version: 1)); + _notupgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 2)); Mocker.GetMock() .SetupGet(s => s.EnableCompletedDownloadHandling) .Returns(true); } - private void GivenMostRecentForAlbum(int albumId, string downloadId, Tuple quality, DateTime date, HistoryEventType eventType) + private void GivenMostRecentForAlbum(int albumId, string downloadId, QualityModel quality, DateTime date, HistoryEventType eventType) { Mocker.GetMock().Setup(s => s.MostRecentForAlbum(albumId)) - .Returns(new History.History { DownloadId = downloadId, Quality = quality.Item1, Date = date, EventType = eventType, Language = quality.Item2 }); + .Returns(new History.History { DownloadId = downloadId, Quality = quality, Date = date, EventType = eventType }); } private void GivenCdhDisabled() @@ -174,7 +165,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests { _fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }; _parseResultSingle.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1)); - _upgradableQuality = new Tuple(new QualityModel(Quality.MP3_320, new Revision(version: 1)), Language.English); + _upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1)); GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed); @@ -186,7 +177,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests { _fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }; _parseResultSingle.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1)); - _upgradableQuality = new Tuple(new QualityModel(Quality.MP3_320, new Revision(version: 1)), Language.Spanish); + _upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1)); GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed); @@ -214,7 +205,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests GivenCdhDisabled(); _fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }; _parseResultSingle.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1)); - _upgradableQuality = new Tuple(new QualityModel(Quality.MP3_320, new Revision(version: 1)), Language.Spanish); + _upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1)); GivenMostRecentForAlbum(FIRST_ALBUM_ID, "test", _upgradableQuality, DateTime.UtcNow.AddDays(-100), HistoryEventType.Grabbed); diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/LanguageSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/LanguageSpecificationFixture.cs deleted file mode 100644 index d9b21e3f6..000000000 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/LanguageSpecificationFixture.cs +++ /dev/null @@ -1,71 +0,0 @@ -using FluentAssertions; -using Marr.Data; -using NUnit.Framework; -using NzbDrone.Core.DecisionEngine.Specifications; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Parser.Model; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Test.Languages; -using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Music; - -namespace NzbDrone.Core.Test.DecisionEngineTests -{ - [TestFixture] - - public class LanguageSpecificationFixture : CoreTest - { - private RemoteAlbum _remoteAlbum; - - [SetUp] - public void Setup() - { - - LanguageProfile _profile = new LazyLoaded(new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.Spanish), - Cutoff = Language.Spanish - }); - - - _remoteAlbum = new RemoteAlbum - { - ParsedAlbumInfo = new ParsedAlbumInfo - { - Language = Language.English - }, - - Artist = new Artist - { - LanguageProfile = _profile - } - }; - } - - private void WithEnglishRelease() - { - _remoteAlbum.ParsedAlbumInfo.Language = Language.English; - } - - private void WithGermanRelease() - { - _remoteAlbum.ParsedAlbumInfo.Language = Language.German; - } - - [Test] - public void should_return_true_if_language_is_english() - { - WithEnglishRelease(); - - Mocker.Resolve().IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue(); - } - - [Test] - public void should_return_false_if_language_is_german() - { - WithGermanRelease(); - - Mocker.Resolve().IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse(); - } - } -} diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/PrioritizeDownloadDecisionFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/PrioritizeDownloadDecisionFixture.cs index 39d2561c0..dbce66d24 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/PrioritizeDownloadDecisionFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/PrioritizeDownloadDecisionFixture.cs @@ -14,9 +14,6 @@ using FluentAssertions; using FizzWare.NBuilder; using NzbDrone.Common.Extensions; using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Test.Languages; using NzbDrone.Core.Configuration; namespace NzbDrone.Core.Test.DecisionEngineTests @@ -37,12 +34,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .Build(); } - private RemoteAlbum GivenRemoteAlbum(List albums, QualityModel quality, Language language, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet) + private RemoteAlbum GivenRemoteAlbum(List albums, QualityModel quality, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet) { var remoteAlbum = new RemoteAlbum(); remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo(); remoteAlbum.ParsedAlbumInfo.Quality = quality; - remoteAlbum.ParsedAlbumInfo.Language = language; remoteAlbum.Albums = new List(); remoteAlbum.Albums.AddRange(albums); @@ -56,11 +52,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(e => e.QualityProfile = new QualityProfile { Items = Qualities.QualityFixture.GetDefaultQualities() - }) - .With(l => l.LanguageProfile = new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(), - Cutoff = Language.Spanish }).Build(); remoteAlbum.DownloadAllowed = true; @@ -81,8 +72,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_put_propers_before_non_propers() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256, new Revision(version: 1)), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256, new Revision(version: 2)), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256, new Revision(version: 1))); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256, new Revision(version: 2))); var decisions = new List(); decisions.Add(new DownloadDecision(remoteAlbum1)); @@ -95,8 +86,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_put_higher_quality_before_lower() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_192), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_192)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); var decisions = new List(); decisions.Add(new DownloadDecision(remoteAlbum1)); @@ -109,10 +100,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_order_by_age_then_largest_rounded_to_200mb() { - var remoteAlbumSd = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_192), Language.English, size: 100.Megabytes(), age: 1); - var remoteAlbumHdSmallOld = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, size: 1200.Megabytes(), age: 1000); - var remoteAlbumSmallYoung = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, size: 1250.Megabytes(), age: 10); - var remoteAlbumHdLargeYoung = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, size: 3000.Megabytes(), age: 1); + var remoteAlbumSd = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_192), size: 100.Megabytes(), age: 1); + var remoteAlbumHdSmallOld = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 1200.Megabytes(), age: 1000); + var remoteAlbumSmallYoung = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 1250.Megabytes(), age: 10); + var remoteAlbumHdLargeYoung = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 3000.Megabytes(), age: 1); var decisions = new List(); decisions.Add(new DownloadDecision(remoteAlbumSd)); @@ -127,8 +118,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_order_by_youngest() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, age: 10); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, age: 5); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), age: 10); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), age: 5); var decisions = new List(); @@ -142,8 +133,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_not_throw_if_no_albums_are_found() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, size: 500.Megabytes()); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, size: 500.Megabytes()); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 500.Megabytes()); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 500.Megabytes()); remoteAlbum1.Albums = new List(); @@ -159,8 +150,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests { GivenPreferredDownloadProtocol(DownloadProtocol.Usenet); - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, downloadProtocol: DownloadProtocol.Torrent); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, downloadProtocol: DownloadProtocol.Usenet); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), downloadProtocol: DownloadProtocol.Torrent); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), downloadProtocol: DownloadProtocol.Usenet); var decisions = new List(); decisions.Add(new DownloadDecision(remoteAlbum1)); @@ -175,8 +166,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests { GivenPreferredDownloadProtocol(DownloadProtocol.Torrent); - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, downloadProtocol: DownloadProtocol.Torrent); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English, downloadProtocol: DownloadProtocol.Usenet); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), downloadProtocol: DownloadProtocol.Torrent); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), downloadProtocol: DownloadProtocol.Usenet); var decisions = new List(); decisions.Add(new DownloadDecision(remoteAlbum1)); @@ -189,8 +180,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_discography_pack_above_single_album() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.FLAC), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.FLAC)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC)); remoteAlbum1.ParsedAlbumInfo.Discography = true; @@ -205,8 +196,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_quality_over_discography_pack() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC)); remoteAlbum1.ParsedAlbumInfo.Discography = true; @@ -221,8 +212,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_single_album_over_multi_album() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_256), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_256)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); var decisions = new List(); decisions.Add(new DownloadDecision(remoteAlbum1)); @@ -235,8 +226,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_releases_with_more_seeders() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); var torrentInfo1 = new TorrentInfo(); torrentInfo1.PublishDate = DateTime.Now; @@ -261,8 +252,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_releases_with_more_peers_given_equal_number_of_seeds() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); var torrentInfo1 = new TorrentInfo(); torrentInfo1.PublishDate = DateTime.Now; @@ -289,8 +280,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_releases_with_more_peers_no_seeds() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); var torrentInfo1 = new TorrentInfo(); torrentInfo1.PublishDate = DateTime.Now; @@ -318,8 +309,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_first_release_if_peers_and_size_are_too_similar() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); var torrentInfo1 = new TorrentInfo(); torrentInfo1.PublishDate = DateTime.Now; @@ -347,8 +338,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_first_release_if_age_and_size_are_too_similar() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); remoteAlbum1.Release.PublishDate = DateTime.UtcNow.AddDays(-100); remoteAlbum1.Release.Size = 200.Megabytes(); @@ -367,8 +358,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_quality_over_the_number_of_peers() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_192), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_320)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_192)); var torrentInfo1 = new TorrentInfo(); torrentInfo1.PublishDate = DateTime.Now; @@ -393,29 +384,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests ((TorrentInfo)qualifiedReports.First().RemoteAlbum.Release).Should().Be(torrentInfo1); } - [Test] - public void should_order_by_language() - { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), Language.French); - var remoteAlbum3 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), Language.German); - - - var decisions = new List(); - decisions.Add(new DownloadDecision(remoteAlbum1)); - decisions.Add(new DownloadDecision(remoteAlbum2)); - decisions.Add(new DownloadDecision(remoteAlbum3)); - - var qualifiedReports = Subject.PrioritizeDecisions(decisions); - qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Language.Should().Be(Language.French); - qualifiedReports.Last().RemoteAlbum.ParsedAlbumInfo.Language.Should().Be(Language.German); - } - [Test] public void should_put_higher_quality_before_lower_always() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), Language.French); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), Language.German); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_256)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.MP3_320)); var decisions = new List(); decisions.Add(new DownloadDecision(remoteAlbum1)); @@ -429,8 +402,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests [Test] public void should_prefer_higher_score_over_lower_score() { - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC)); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC)); remoteAlbum1.PreferredWordScore = 10; remoteAlbum2.PreferredWordScore = 0; @@ -450,8 +423,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .Setup(s => s.DownloadPropersAndRepacks) .Returns(ProperDownloadTypes.PreferAndUpgrade); - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1))); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2))); remoteAlbum1.PreferredWordScore = 10; remoteAlbum2.PreferredWordScore = 0; @@ -471,8 +444,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .Setup(s => s.DownloadPropersAndRepacks) .Returns(ProperDownloadTypes.DoNotUpgrade); - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1))); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2))); remoteAlbum1.PreferredWordScore = 10; remoteAlbum2.PreferredWordScore = 0; @@ -492,8 +465,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .Setup(s => s.DownloadPropersAndRepacks) .Returns(ProperDownloadTypes.DoNotPrefer); - var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)), Language.English); - var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)), Language.English); + var remoteAlbum1 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1))); + var remoteAlbum2 = GivenRemoteAlbum(new List { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2))); remoteAlbum1.PreferredWordScore = 10; remoteAlbum2.PreferredWordScore = 0; diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/QueueSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/QueueSpecificationFixture.cs index c5e85cef5..b03aac44e 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/QueueSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/QueueSpecificationFixture.cs @@ -10,8 +10,6 @@ using NzbDrone.Core.Qualities; using NzbDrone.Core.Queue; using NzbDrone.Core.Music; using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Test.DecisionEngineTests { @@ -38,12 +36,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests UpgradeAllowed = true, Items = Qualities.QualityFixture.GetDefaultQualities(), }) - .With(l => l.LanguageProfile = new LanguageProfile - { - Languages = Languages.LanguageFixture.GetDefaultLanguages(), - UpgradeAllowed = true, - Cutoff = Language.Spanish - }) .Build(); _album = Builder.CreateNew() @@ -65,7 +57,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests _remoteAlbum = Builder.CreateNew() .With(r => r.Artist = _artist) .With(r => r.Albums = new List { _album }) - .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256), Language = Language.Spanish }) + .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256) }) .With(r => r.PreferredWordScore = 0) .Build(); } @@ -119,8 +111,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(r => r.Albums = new List { _album }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_256), - Language = Language.Spanish + Quality = new QualityModel(Quality.MP3_256) }) .With(r => r.Release = _releaseInfo) .Build(); @@ -134,36 +125,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests public void should_return_true_when_quality_in_queue_is_lower() { _artist.QualityProfile.Value.Cutoff = Quality.MP3_320.Id; - _artist.LanguageProfile.Value.Cutoff = Language.Spanish; - - var remoteAlbum = Builder.CreateNew() - .With(r => r.Artist = _artist) - .With(r => r.Albums = new List { _album }) - .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo - { - Quality = new QualityModel(Quality.MP3_192), - Language = Language.Spanish - }) - .With(r => r.Release = _releaseInfo) - .Build(); - - GivenQueue(new List { remoteAlbum }); - Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue(); - } - - [Test] - public void should_return_true_when_quality_in_queue_is_lower_but_language_is_higher() - { - _artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id; - _artist.LanguageProfile.Value.Cutoff = Language.Spanish; var remoteAlbum = Builder.CreateNew() .With(r => r.Artist = _artist) .With(r => r.Albums = new List { _album }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_192), - Language = Language.English + Quality = new QualityModel(Quality.MP3_192) }) .With(r => r.Release = _releaseInfo) .Build(); @@ -190,7 +158,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests } [Test] - public void should_return_true_when_qualities_are_the_same_and_languages_are_the_same_with_higher_preferred_word_score() + public void should_return_true_when_qualities_are_the_same_with_higher_preferred_word_score() { _remoteAlbum.PreferredWordScore = 1; @@ -199,8 +167,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(r => r.Albums = new List { _album }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_256), - Language = Language.Spanish, + Quality = new QualityModel(Quality.MP3_256) }) .With(r => r.Release = _releaseInfo) .Build(); @@ -210,15 +177,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests } [Test] - public void should_return_false_when_qualities_are_the_same_and_languages_are_the_same() + public void should_return_false_when_qualities_are_the_same() { var remoteAlbum = Builder.CreateNew() .With(r => r.Artist = _artist) .With(r => r.Albums = new List { _album }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_192), - Language = Language.Spanish + Quality = new QualityModel(Quality.MP3_192) }) .With(r => r.Release = _releaseInfo) .Build(); @@ -227,45 +193,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse(); } - [Test] - public void should_return_true_when_qualities_are_the_same_but_language_is_better() - { - var remoteAlbum = Builder.CreateNew() - .With(r => r.Artist = _artist) - .With(r => r.Albums = new List { _album }) - .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo - { - Quality = new QualityModel(Quality.MP3_192), - Language = Language.English, - }) - .With(r => r.Release = _releaseInfo) - .Build(); - - GivenQueue(new List { remoteAlbum }); - Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue(); - } - - [Test] - public void should_return_true_when_quality_is_better_language_is_better_and_upgrade_allowed_is_false_for_quality_profile() - { - _artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id; - _artist.QualityProfile.Value.UpgradeAllowed = false; - - var remoteAlbum = Builder.CreateNew() - .With(r => r.Artist = _artist) - .With(r => r.Albums = new List { _album }) - .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo - { - Quality = new QualityModel(Quality.MP3_224), - Language = Language.English - }) - .With(r => r.Release = _releaseInfo) - .Build(); - - GivenQueue(new List { remoteAlbum }); - Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue(); - } - [Test] public void should_return_false_when_quality_in_queue_is_better() { @@ -276,8 +203,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(r => r.Albums = new List { _album }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_320), - Language = Language.English + Quality = new QualityModel(Quality.MP3_320) }) .With(r => r.Release = _releaseInfo) .Build(); @@ -294,8 +220,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(r => r.Albums = new List { _album, _otherAlbum }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_320), - Language = Language.English + Quality = new QualityModel(Quality.MP3_320) }) .With(r => r.Release = _releaseInfo) .Build(); @@ -312,8 +237,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(r => r.Albums = new List { _album }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_320), - Language = Language.English + Quality = new QualityModel(Quality.MP3_320) }) .With(r => r.Release = _releaseInfo) .Build(); @@ -332,8 +256,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(r => r.Albums = new List { _album, _otherAlbum }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_320), - Language = Language.English + Quality = new QualityModel(Quality.MP3_320) }) .With(r => r.Release = _releaseInfo) .Build(); @@ -352,8 +275,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(r => r.Artist = _artist) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.MP3_320), - Language = Language.English + Quality = new QualityModel(Quality.MP3_320) }) .With(r => r.Release = _releaseInfo) .TheFirst(1) @@ -368,48 +290,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests } [Test] - public void should_return_false_if_quality_and_language_in_queue_meets_cutoff() - { - _artist.QualityProfile.Value.Cutoff = _remoteAlbum.ParsedAlbumInfo.Quality.Quality.Id; - - var remoteAlbum = Builder.CreateNew() - .With(r => r.Artist = _artist) - .With(r => r.Albums = new List { _album }) - .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo - { - Quality = new QualityModel(Quality.MP3_256), - Language = Language.Spanish - }) - .With(r => r.Release = _releaseInfo) - .Build(); - - GivenQueue(new List { remoteAlbum }); - - Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse(); - } - - [Test] - public void should_return_false_when_quality_are_the_same_language_is_better_and_upgrade_allowed_is_false_for_language_profile() - { - _artist.LanguageProfile.Value.UpgradeAllowed = false; - - var remoteAlbum = Builder.CreateNew() - .With(r => r.Artist = _artist) - .With(r => r.Albums = new List { _album }) - .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo - { - Quality = new QualityModel(Quality.MP3_256), - Language = Language.English - }) - .With(r => r.Release = _releaseInfo) - .Build(); - - GivenQueue(new List { remoteAlbum }); - Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse(); - } - - [Test] - public void should_return_false_when_quality_is_better_languages_are_the_same_and_upgrade_allowed_is_false_for_quality_profile() + public void should_return_false_when_quality_is_better_and_upgrade_allowed_is_false_for_quality_profile() { _artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id; _artist.QualityProfile.Value.UpgradeAllowed = false; @@ -419,8 +300,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .With(r => r.Albums = new List { _album }) .With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { - Quality = new QualityModel(Quality.FLAC), - Language = Language.Spanish + Quality = new QualityModel(Quality.FLAC) }) .With(r => r.Release = _releaseInfo) .Build(); diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs index 9a614ba9b..4aaf82e1a 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs @@ -14,8 +14,6 @@ using NzbDrone.Core.IndexerSearch.Definitions; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Profiles.Qualities; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Languages; using NzbDrone.Core.Profiles.Delay; using NzbDrone.Core.Qualities; using NzbDrone.Core.Test.Framework; @@ -27,7 +25,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync public class DelaySpecificationFixture : CoreTest { private QualityProfile _profile; - private LanguageProfile _langProfile; private DelayProfile _delayProfile; private RemoteAlbum _remoteAlbum; @@ -37,9 +34,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync _profile = Builder.CreateNew() .Build(); - _langProfile = Builder.CreateNew() - .Build(); - _delayProfile = Builder.CreateNew() .With(d => d.PreferredProtocol = DownloadProtocol.Usenet) @@ -47,7 +41,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync var artist = Builder.CreateNew() .With(s => s.QualityProfile = _profile) - .With(s => s.LanguageProfile = _langProfile) .Build(); _remoteAlbum = Builder.CreateNew() @@ -61,9 +54,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync _profile.Cutoff = Quality.MP3_320.Id; - _langProfile.Cutoff = Language.Spanish; - _langProfile.Languages = Languages.LanguageFixture.GetDefaultLanguages(); - _remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo(); _remoteAlbum.Release = new ReleaseInfo(); _remoteAlbum.Release.DownloadProtocol = DownloadProtocol.Usenet; @@ -83,20 +73,19 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync .Returns(new List()); } - private void GivenExistingFile(QualityModel quality, Language language) + private void GivenExistingFile(QualityModel quality) { Mocker.GetMock() .Setup(s => s.GetFilesByAlbum(It.IsAny())) .Returns(new List { new TrackFile { - Quality = quality, - Language = language + Quality = quality } }); } private void GivenUpgradeForExistingFile() { Mocker.GetMock() - .Setup(s => s.IsUpgradable(It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) + .Setup(s => s.IsUpgradable(It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(true); } @@ -126,10 +115,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync } [Test] - public void should_be_true_when_quality_and_language_is_last_allowed_in_profile() + public void should_be_true_when_quality_is_last_allowed_in_profile() { _remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320); - _remoteAlbum.ParsedAlbumInfo.Language = Language.French; Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue(); } @@ -162,7 +150,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync _remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)); _remoteAlbum.Release.PublishDate = DateTime.UtcNow; - GivenExistingFile(new QualityModel(Quality.MP3_256), Language.English); + GivenExistingFile(new QualityModel(Quality.MP3_256)); GivenUpgradeForExistingFile(); Mocker.GetMock() @@ -180,7 +168,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync _remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_256, new Revision(real: 1)); _remoteAlbum.Release.PublishDate = DateTime.UtcNow; - GivenExistingFile(new QualityModel(Quality.MP3_256), Language.English); + GivenExistingFile(new QualityModel(Quality.MP3_256)); GivenUpgradeForExistingFile(); Mocker.GetMock() @@ -198,7 +186,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync _remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)); _remoteAlbum.Release.PublishDate = DateTime.UtcNow; - GivenExistingFile(new QualityModel(Quality.MP3_192), Language.English); + GivenExistingFile(new QualityModel(Quality.MP3_192)); _delayProfile.UsenetDelay = 720; diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeAllowedSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeAllowedSpecificationFixture.cs index 258c7ae75..716dc0947 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeAllowedSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeAllowedSpecificationFixture.cs @@ -4,9 +4,6 @@ using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Test.Languages; using System.Collections.Generic; namespace NzbDrone.Core.Test.DecisionEngineTests @@ -15,166 +12,20 @@ namespace NzbDrone.Core.Test.DecisionEngineTests public class UpgradeAllowedSpecificationFixture : CoreTest { [Test] - public void should_return_false_when_quality_are_the_same_language_is_better_and_upgrade_allowed_is_false_for_language_profile() + public void should_return_false_when_quality_is_better_and_upgrade_allowed_is_false_for_quality_profile() { Subject.IsUpgradeAllowed( new QualityProfile { Cutoff = Quality.FLAC.Id, Items = Qualities.QualityFixture.GetDefaultQualities(), - UpgradeAllowed = true - }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French), - Cutoff = Language.French, UpgradeAllowed = false }, new List { new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.MP3_320), - Language.French + new QualityModel(Quality.FLAC) ).Should().BeFalse(); } - [Test] - public void should_return_false_when_quality_is_better_languages_are_the_same_and_upgrade_allowed_is_false_for_quality_profile() - { - Subject.IsUpgradeAllowed( - new QualityProfile - { - Cutoff = Quality.FLAC.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - UpgradeAllowed = false - }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English, - UpgradeAllowed = true - }, - new List { new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.FLAC), - Language.English - ).Should().BeFalse(); - } - - [Test] - public void should_return_true_for_language_upgrade_when_upgrading_is_allowed() - { - Subject.IsUpgradeAllowed( - new QualityProfile - { - Cutoff = Quality.FLAC.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - UpgradeAllowed = true - }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French), - Cutoff = Language.French, - UpgradeAllowed = true - }, - new List { new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.MP3_320), - Language.French - ).Should().BeTrue(); - } - - [Test] - public void should_return_true_for_same_language_when_upgrading_is_allowed() - { - Subject.IsUpgradeAllowed( - new QualityProfile - { - Cutoff = Quality.FLAC.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - UpgradeAllowed = true - }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French), - Cutoff = Language.French, - UpgradeAllowed = true - }, - new List { new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.MP3_320), - Language.English - ).Should().BeTrue(); - } - - [Test] - public void should_return_true_for_same_language_when_upgrading_is_not_allowed() - { - Subject.IsUpgradeAllowed( - new QualityProfile - { - Cutoff = Quality.FLAC.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - UpgradeAllowed = true - }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French), - Cutoff = Language.French, - UpgradeAllowed = false - }, - new List { new QualityModel(Quality.MP3_320) }, - new List { Language.French }, - new QualityModel(Quality.MP3_320), - Language.English - ).Should().BeTrue(); - } - - [Test] - public void should_return_true_for_lower_language_when_upgrading_is_allowed() - { - Subject.IsUpgradeAllowed( - new QualityProfile - { - Cutoff = Quality.FLAC.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - UpgradeAllowed = true - }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French), - Cutoff = Language.French, - UpgradeAllowed = true - }, - new List { new QualityModel(Quality.MP3_320) }, - new List { Language.French }, - new QualityModel(Quality.MP3_320), - Language.English - ).Should().BeTrue(); - } - - [Test] - public void should_return_true_for_lower_language_when_upgrading_is_not_allowed() - { - Subject.IsUpgradeAllowed( - new QualityProfile - { - Cutoff = Quality.FLAC.Id, - Items = Qualities.QualityFixture.GetDefaultQualities(), - UpgradeAllowed = true - }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English, Language.French), - Cutoff = Language.French, - UpgradeAllowed = false - }, - new List { new QualityModel(Quality.MP3_320) }, - new List { Language.French }, - new QualityModel(Quality.MP3_320), - Language.English - ).Should().BeTrue(); - } - [Test] public void should_return_true_for_quality_upgrade_when_upgrading_is_allowed() { @@ -185,16 +36,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities(), UpgradeAllowed = true }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English, - UpgradeAllowed = true - }, new List { new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.FLAC), - Language.English + new QualityModel(Quality.FLAC) ).Should().BeTrue(); } @@ -208,16 +51,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities(), UpgradeAllowed = true }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English, - UpgradeAllowed = true - }, new List { new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.MP3_320), - Language.English + new QualityModel(Quality.MP3_320) ).Should().BeTrue(); } @@ -231,16 +66,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities(), UpgradeAllowed = false }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English, - UpgradeAllowed = true - }, new List { new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.MP3_320), - Language.English + new QualityModel(Quality.MP3_320) ).Should().BeTrue(); } @@ -254,16 +81,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities(), UpgradeAllowed = true }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English, - UpgradeAllowed = true - }, new List { new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.MP3_256), - Language.English + new QualityModel(Quality.MP3_256) ).Should().BeTrue(); } @@ -277,16 +96,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities(), UpgradeAllowed = false }, - new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English, - UpgradeAllowed = true - }, new List{ new QualityModel(Quality.MP3_320) }, - new List { Language.English }, - new QualityModel(Quality.MP3_256), - Language.English + new QualityModel(Quality.MP3_256) ).Should().BeTrue(); } } diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs index 60b0b44a9..34aa10365 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs @@ -12,8 +12,6 @@ using NzbDrone.Core.Qualities; using NzbDrone.Core.Music; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; namespace NzbDrone.Core.Test.DecisionEngineTests { @@ -31,14 +29,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests { Mocker.Resolve(); - _firstFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now, Language = Language.English }; - _secondFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now, Language = Language.English }; + _firstFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now }; + _secondFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now }; var singleAlbumList = new List { new Album {}}; var doubleAlbumList = new List { new Album {}, new Album {}, new Album {} }; - var languages = Languages.LanguageFixture.GetDefaultLanguages(Language.English, Language.Spanish); - var fakeArtist = Builder.CreateNew() .With(c => c.QualityProfile = new QualityProfile { @@ -46,12 +42,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() }) - .With(l => l.LanguageProfile = new LanguageProfile - { - UpgradeAllowed = true, - Cutoff = Language.Spanish, - Languages = languages - }) .Build(); Mocker.GetMock() @@ -65,14 +55,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests _parseResultMulti = new RemoteAlbum { Artist = fakeArtist, - ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)), Language = Language.English }, + ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)) }, Albums = doubleAlbumList }; _parseResultSingle = new RemoteAlbum { Artist = fakeArtist, - ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)), Language = Language.English }, + ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)) }, Albums = singleAlbumList }; diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeSpecificationFixture.cs index a560b2bec..ba3c4f80a 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeSpecificationFixture.cs @@ -5,9 +5,6 @@ using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Test.Languages; using System.Collections.Generic; namespace NzbDrone.Core.Test.DecisionEngineTests @@ -26,16 +23,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests new object[] { Quality.MP3_320, 1, Quality.MP3_320, 1, Quality.MP3_320, false } }; - public static object[] IsUpgradeTestCasesLanguages = - { - new object[] { Quality.MP3_192, 1, Language.English, Quality.MP3_192, 2, Language.English, Quality.MP3_192, Language.Spanish, true }, - new object[] { Quality.MP3_192, 1, Language.English, Quality.MP3_192, 1, Language.Spanish, Quality.MP3_192, Language.Spanish, true }, - new object[] { Quality.MP3_320, 1, Language.French, Quality.MP3_320, 2, Language.English, Quality.MP3_320, Language.Spanish, true }, - new object[] { Quality.MP3_192, 1, Language.English, Quality.MP3_192, 1, Language.English, Quality.MP3_192, Language.English, false }, - new object[] { Quality.MP3_320, 1, Language.English, Quality.MP3_256, 2, Language.Spanish, Quality.FLAC, Language.Spanish, false }, - new object[] { Quality.MP3_320, 1, Language.Spanish, Quality.MP3_256, 2, Language.French, Quality.MP3_320, Language.Spanish, false } - }; - private static readonly int NoPreferredWordScore = 0; private void GivenAutoDownloadPropers(ProperDownloadTypes type) @@ -56,52 +43,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities() }; - var langProfile = new LanguageProfile - { - UpgradeAllowed = true, - Languages = LanguageFixture.GetDefaultLanguages(), - Cutoff = Language.English - }; - - Subject.IsUpgradable( - profile, - langProfile, - new List { new QualityModel(current, new Revision(version: currentVersion)) }, - new List { Language.English }, - NoPreferredWordScore, - new QualityModel(newQuality, new Revision(version: newVersion)), - Language.English, - NoPreferredWordScore) - .Should().Be(expected); - } - - [Test, TestCaseSource(nameof(IsUpgradeTestCasesLanguages))] - public void IsUpgradeTestLanguage(Quality current, int currentVersion, Language currentLanguage, Quality newQuality, int newVersion, Language newLanguage, Quality cutoff, Language languageCutoff, bool expected) - { - GivenAutoDownloadPropers(ProperDownloadTypes.PreferAndUpgrade); - - var profile = new QualityProfile - { - UpgradeAllowed = true, - Items = Qualities.QualityFixture.GetDefaultQualities(), - Cutoff = cutoff.Id, - }; - - var langProfile = new LanguageProfile - { - UpgradeAllowed = true, - Languages = LanguageFixture.GetDefaultLanguages(), - Cutoff = languageCutoff - }; - Subject.IsUpgradable( profile, - langProfile, new List { new QualityModel(current, new Revision(version: currentVersion)) }, - new List { currentLanguage }, NoPreferredWordScore, new QualityModel(newQuality, new Revision(version: newVersion)), - newLanguage, NoPreferredWordScore) .Should().Be(expected); } @@ -116,21 +62,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities(), }; - var langProfile = new LanguageProfile - - { - Languages = LanguageFixture.GetDefaultLanguages(), - Cutoff = Language.English - }; - Subject.IsUpgradable( profile, - langProfile, new List { new QualityModel(Quality.MP3_256, new Revision(version: 1)) }, - new List { Language.English }, NoPreferredWordScore, new QualityModel(Quality.MP3_256, new Revision(version: 2)), - Language.English, NoPreferredWordScore) .Should().BeTrue(); } @@ -145,20 +81,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Items = Qualities.QualityFixture.GetDefaultQualities(), }; - var langProfile = new LanguageProfile - { - Languages = LanguageFixture.GetDefaultLanguages(), - Cutoff = Language.English - }; - Subject.IsUpgradable( profile, - langProfile, new List { new QualityModel(Quality.MP3_256, new Revision(version: 1)) }, - new List { Language.English }, NoPreferredWordScore, new QualityModel(Quality.MP3_256, new Revision(version: 2)), - Language.English, NoPreferredWordScore) .Should().BeFalse(); } diff --git a/src/NzbDrone.Core.Test/Files/Identification/CorruptFile.json b/src/NzbDrone.Core.Test/Files/Identification/CorruptFile.json index 5f9e561ba..540e661c1 100644 --- a/src/NzbDrone.Core.Test/Files/Identification/CorruptFile.json +++ b/src/NzbDrone.Core.Test/Files/Identification/CorruptFile.json @@ -213,11 +213,7 @@ }, "trackNumbers": [ 2 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -255,11 +251,7 @@ }, "trackNumbers": [ 3 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -297,11 +289,7 @@ }, "trackNumbers": [ 4 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -339,11 +327,7 @@ }, "trackNumbers": [ 5 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -381,11 +365,7 @@ }, "trackNumbers": [ 6 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -423,11 +403,7 @@ }, "trackNumbers": [ 7 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -465,11 +441,7 @@ }, "trackNumbers": [ 8 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -507,11 +479,7 @@ }, "trackNumbers": [ 9 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -549,11 +517,7 @@ }, "trackNumbers": [ 10 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -591,11 +555,7 @@ }, "trackNumbers": [ 11 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -633,11 +593,7 @@ }, "trackNumbers": [ 12 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -675,11 +631,7 @@ }, "trackNumbers": [ 13 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -717,11 +669,7 @@ }, "trackNumbers": [ 14 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -759,11 +707,7 @@ }, "trackNumbers": [ 1 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -801,11 +745,7 @@ }, "trackNumbers": [ 2 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -843,11 +783,7 @@ }, "trackNumbers": [ 3 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -885,11 +821,7 @@ }, "trackNumbers": [ 4 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -927,11 +859,7 @@ }, "trackNumbers": [ 5 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -969,11 +897,7 @@ }, "trackNumbers": [ 6 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1011,11 +935,7 @@ }, "trackNumbers": [ 7 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1053,11 +973,7 @@ }, "trackNumbers": [ 8 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1095,11 +1011,7 @@ }, "trackNumbers": [ 9 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1137,11 +1049,7 @@ }, "trackNumbers": [ 10 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1179,11 +1087,7 @@ }, "trackNumbers": [ 11 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1221,11 +1125,7 @@ }, "trackNumbers": [ 12 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1263,11 +1163,7 @@ }, "trackNumbers": [ 13 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1305,11 +1201,7 @@ }, "trackNumbers": [ 14 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1347,11 +1239,7 @@ }, "trackNumbers": [ 15 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1389,11 +1277,7 @@ }, "trackNumbers": [ 16 - ], - "language": { - "id": 1, - "name": "English" - } + ] } } ] diff --git a/src/NzbDrone.Core.Test/Files/Identification/FilesWithMBIds.json b/src/NzbDrone.Core.Test/Files/Identification/FilesWithMBIds.json index f73bceed2..c2d76c358 100644 --- a/src/NzbDrone.Core.Test/Files/Identification/FilesWithMBIds.json +++ b/src/NzbDrone.Core.Test/Files/Identification/FilesWithMBIds.json @@ -199,11 +199,7 @@ }, "trackNumbers": [ 1 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -250,11 +246,7 @@ }, "trackNumbers": [ 2 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -301,11 +293,7 @@ }, "trackNumbers": [ 3 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -352,11 +340,7 @@ }, "trackNumbers": [ 4 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -403,11 +387,7 @@ }, "trackNumbers": [ 5 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -454,11 +434,7 @@ }, "trackNumbers": [ 6 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -505,11 +481,7 @@ }, "trackNumbers": [ 7 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -556,11 +528,7 @@ }, "trackNumbers": [ 8 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -607,11 +575,7 @@ }, "trackNumbers": [ 9 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -658,11 +622,7 @@ }, "trackNumbers": [ 10 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -709,11 +669,7 @@ }, "trackNumbers": [ 11 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -760,11 +716,7 @@ }, "trackNumbers": [ 12 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -811,11 +763,7 @@ }, "trackNumbers": [ 13 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -862,11 +810,7 @@ }, "trackNumbers": [ 14 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -913,11 +857,7 @@ }, "trackNumbers": [ 15 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -964,11 +904,7 @@ }, "trackNumbers": [ 1 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1015,11 +951,7 @@ }, "trackNumbers": [ 2 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1066,11 +998,7 @@ }, "trackNumbers": [ 3 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1117,11 +1045,7 @@ }, "trackNumbers": [ 4 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1168,11 +1092,7 @@ }, "trackNumbers": [ 5 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1219,11 +1139,7 @@ }, "trackNumbers": [ 6 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1270,11 +1186,7 @@ }, "trackNumbers": [ 7 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1321,11 +1233,7 @@ }, "trackNumbers": [ 8 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1372,11 +1280,7 @@ }, "trackNumbers": [ 9 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1423,11 +1327,7 @@ }, "trackNumbers": [ 10 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1474,11 +1374,7 @@ }, "trackNumbers": [ 11 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1527,11 +1423,7 @@ }, "trackNumbers": [ 8 - ], - "language": { - "id": 1, - "name": "English" - } + ] } } ] diff --git a/src/NzbDrone.Core.Test/Files/Identification/FilesWithoutTags.json b/src/NzbDrone.Core.Test/Files/Identification/FilesWithoutTags.json index a227a20c0..a28e3a162 100644 --- a/src/NzbDrone.Core.Test/Files/Identification/FilesWithoutTags.json +++ b/src/NzbDrone.Core.Test/Files/Identification/FilesWithoutTags.json @@ -182,11 +182,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -218,11 +214,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -254,11 +246,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -290,11 +278,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -326,11 +310,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -362,11 +342,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -398,11 +374,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -434,11 +406,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -470,11 +438,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -506,11 +470,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -542,11 +502,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -578,11 +534,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -614,11 +566,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -650,11 +598,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -686,11 +630,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -722,11 +662,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -758,11 +694,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -794,11 +726,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -830,11 +758,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -866,11 +790,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -902,11 +822,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -938,11 +854,7 @@ }, "trackNumbers": [ 0 - ], - "language": { - "id": 1, - "name": "English" - } + ] } } ], diff --git a/src/NzbDrone.Core.Test/Files/Identification/InconsistentTyposInAlbum.json b/src/NzbDrone.Core.Test/Files/Identification/InconsistentTyposInAlbum.json index cf0d7540b..218b5918f 100644 --- a/src/NzbDrone.Core.Test/Files/Identification/InconsistentTyposInAlbum.json +++ b/src/NzbDrone.Core.Test/Files/Identification/InconsistentTyposInAlbum.json @@ -187,11 +187,7 @@ }, "trackNumbers": [ 1 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -228,11 +224,7 @@ }, "trackNumbers": [ 2 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -269,11 +261,7 @@ }, "trackNumbers": [ 3 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -310,11 +298,7 @@ }, "trackNumbers": [ 4 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -351,11 +335,7 @@ }, "trackNumbers": [ 5 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -392,11 +372,7 @@ }, "trackNumbers": [ 6 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -433,11 +409,7 @@ }, "trackNumbers": [ 7 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -474,11 +446,7 @@ }, "trackNumbers": [ 8 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -515,11 +483,7 @@ }, "trackNumbers": [ 9 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -556,11 +520,7 @@ }, "trackNumbers": [ 10 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -597,11 +557,7 @@ }, "trackNumbers": [ 11 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -638,11 +594,7 @@ }, "trackNumbers": [ 12 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -679,11 +631,7 @@ }, "trackNumbers": [ 13 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -720,11 +668,7 @@ }, "trackNumbers": [ 14 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -761,11 +705,7 @@ }, "trackNumbers": [ 15 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -802,11 +742,7 @@ }, "trackNumbers": [ 16 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -843,11 +779,7 @@ }, "trackNumbers": [ 17 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -884,11 +816,7 @@ }, "trackNumbers": [ 18 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -925,11 +853,7 @@ }, "trackNumbers": [ 1 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -966,11 +890,7 @@ }, "trackNumbers": [ 2 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1007,11 +927,7 @@ }, "trackNumbers": [ 3 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1048,11 +964,7 @@ }, "trackNumbers": [ 4 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1089,11 +1001,7 @@ }, "trackNumbers": [ 5 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1130,11 +1038,7 @@ }, "trackNumbers": [ 6 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1171,11 +1075,7 @@ }, "trackNumbers": [ 7 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1212,11 +1112,7 @@ }, "trackNumbers": [ 8 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1253,11 +1149,7 @@ }, "trackNumbers": [ 9 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1294,11 +1186,7 @@ }, "trackNumbers": [ 10 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1335,11 +1223,7 @@ }, "trackNumbers": [ 11 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1376,11 +1260,7 @@ }, "trackNumbers": [ 12 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -1417,11 +1297,7 @@ }, "trackNumbers": [ 13 - ], - "language": { - "id": 1, - "name": "English" - } + ] } } ] diff --git a/src/NzbDrone.Core.Test/Files/Identification/PenalizeUnknownMedia.json b/src/NzbDrone.Core.Test/Files/Identification/PenalizeUnknownMedia.json index 2293e6f91..f9b486449 100644 --- a/src/NzbDrone.Core.Test/Files/Identification/PenalizeUnknownMedia.json +++ b/src/NzbDrone.Core.Test/Files/Identification/PenalizeUnknownMedia.json @@ -187,11 +187,7 @@ }, "trackNumbers": [ 6 - ], - "language": { - "id": 1, - "name": "English" - } + ] } } ] diff --git a/src/NzbDrone.Core.Test/Files/Identification/PreferMissingToBadMatch.json b/src/NzbDrone.Core.Test/Files/Identification/PreferMissingToBadMatch.json index 3fe3e5a06..6f3302637 100644 --- a/src/NzbDrone.Core.Test/Files/Identification/PreferMissingToBadMatch.json +++ b/src/NzbDrone.Core.Test/Files/Identification/PreferMissingToBadMatch.json @@ -187,11 +187,7 @@ }, "trackNumbers": [ 10 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -228,11 +224,7 @@ }, "trackNumbers": [ 11 - ], - "language": { - "id": 1, - "name": "English" - } + ] } } ] diff --git a/src/NzbDrone.Core.Test/Files/Identification/SucceedWhenManyAlbumsHaveSameTitle.json b/src/NzbDrone.Core.Test/Files/Identification/SucceedWhenManyAlbumsHaveSameTitle.json index d4c04df10..d8fcdd9f5 100644 --- a/src/NzbDrone.Core.Test/Files/Identification/SucceedWhenManyAlbumsHaveSameTitle.json +++ b/src/NzbDrone.Core.Test/Files/Identification/SucceedWhenManyAlbumsHaveSameTitle.json @@ -188,11 +188,7 @@ }, "trackNumbers": [ 1 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -230,11 +226,7 @@ }, "trackNumbers": [ 2 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -272,11 +264,7 @@ }, "trackNumbers": [ 3 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -314,11 +302,7 @@ }, "trackNumbers": [ 4 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -356,11 +340,7 @@ }, "trackNumbers": [ 5 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -398,11 +378,7 @@ }, "trackNumbers": [ 6 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -440,11 +416,7 @@ }, "trackNumbers": [ 7 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -482,11 +454,7 @@ }, "trackNumbers": [ 8 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -524,11 +492,7 @@ }, "trackNumbers": [ 9 - ], - "language": { - "id": 1, - "name": "English" - } + ] } }, { @@ -566,11 +530,7 @@ }, "trackNumbers": [ 10 - ], - "language": { - "id": 1, - "name": "English" - } + ] } } ] diff --git a/src/NzbDrone.Core.Test/HistoryTests/HistoryServiceFixture.cs b/src/NzbDrone.Core.Test/HistoryTests/HistoryServiceFixture.cs index 66f62cd77..ee95f14fa 100644 --- a/src/NzbDrone.Core.Test/HistoryTests/HistoryServiceFixture.cs +++ b/src/NzbDrone.Core.Test/HistoryTests/HistoryServiceFixture.cs @@ -14,8 +14,6 @@ using System.Collections.Generic; using NzbDrone.Core.Test.Qualities; using NzbDrone.Core.Download; using NzbDrone.Core.Music; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; namespace NzbDrone.Core.Test.HistoryTests { @@ -23,7 +21,6 @@ namespace NzbDrone.Core.Test.HistoryTests { private QualityProfile _profile; private QualityProfile _profileCustom; - private LanguageProfile _languageProfile; [SetUp] public void Setup() @@ -41,16 +38,6 @@ namespace NzbDrone.Core.Test.HistoryTests Items = QualityFixture.GetDefaultQualities(Quality.MP3_256), }; - - - _languageProfile = new LanguageProfile - - { - Cutoff = Language.Spanish, - Languages = Languages.LanguageFixture.GetDefaultLanguages() - }; - - } [Test] diff --git a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs deleted file mode 100644 index 91c97b13e..000000000 --- a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.Linq; -using System.Collections.Generic; -using FluentAssertions; -using NUnit.Framework; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Languages; - -namespace NzbDrone.Core.Test.Languages -{ - [TestFixture] - public class LanguageFixture : CoreTest - { - public static object[] FromIntCases = - { - new object[] {1, Language.English}, - new object[] {2, Language.French}, - new object[] {3, Language.Spanish}, - new object[] {4, Language.German}, - new object[] {5, Language.Italian}, - new object[] {6, Language.Danish}, - new object[] {7, Language.Dutch}, - new object[] {8, Language.Japanese}, - new object[] {9, Language.Cantonese}, - new object[] {10, Language.Mandarin}, - new object[] {11, Language.Russian}, - new object[] {12, Language.Polish}, - new object[] {13, Language.Vietnamese}, - new object[] {14, Language.Swedish}, - new object[] {15, Language.Norwegian}, - new object[] {16, Language.Finnish}, - new object[] {17, Language.Turkish}, - new object[] {18, Language.Portuguese}, - new object[] {19, Language.Flemish}, - new object[] {20, Language.Greek}, - new object[] {21, Language.Korean}, - new object[] {22, Language.Hungarian} - }; - - public static object[] ToIntCases = - { - new object[] {Language.English, 1}, - new object[] {Language.French, 2}, - new object[] {Language.Spanish, 3}, - new object[] {Language.German, 4}, - new object[] {Language.Italian, 5}, - new object[] {Language.Danish, 6}, - new object[] {Language.Dutch, 7}, - new object[] {Language.Japanese, 8}, - new object[] {Language.Cantonese, 9}, - new object[] {Language.Mandarin, 10}, - new object[] {Language.Russian, 11}, - new object[] {Language.Polish, 12}, - new object[] {Language.Vietnamese, 13}, - new object[] {Language.Swedish, 14}, - new object[] {Language.Norwegian, 15}, - new object[] {Language.Finnish, 16}, - new object[] {Language.Turkish, 17}, - new object[] {Language.Portuguese, 18}, - new object[] {Language.Flemish, 19}, - new object[] {Language.Greek, 20}, - new object[] {Language.Korean, 21}, - new object[] {Language.Hungarian, 22} - }; - - [Test, TestCaseSource("FromIntCases")] - public void should_be_able_to_convert_int_to_languageTypes(int source, Language expected) - { - var language = (Language)source; - language.Should().Be(expected); - } - - [Test, TestCaseSource("ToIntCases")] - public void should_be_able_to_convert_languageTypes_to_int(Language source, int expected) - { - var i = (int)source; - i.Should().Be(expected); - } - - public static List GetDefaultLanguages(params Language[] allowed) - { - var languages = new List - { - Language.English, - Language.Spanish, - Language.French - }; - - if (allowed.Length == 0) - allowed = languages.ToArray(); - - var items = languages - .Except(allowed) - .Concat(allowed) - .Select(v => new LanguageProfileItem { Language = v, Allowed = allowed.Contains(v) }).ToList(); - - return items; - } - } -} diff --git a/src/NzbDrone.Core.Test/Languages/LanguageProfileRepositoryFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageProfileRepositoryFixture.cs deleted file mode 100644 index 8b04967be..000000000 --- a/src/NzbDrone.Core.Test/Languages/LanguageProfileRepositoryFixture.cs +++ /dev/null @@ -1,32 +0,0 @@ -using FluentAssertions; -using System.Linq; -using NUnit.Framework; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Profiles.Languages; - -namespace NzbDrone.Core.Test.Languages -{ - [TestFixture] - public class LanguageProfileRepositoryFixture : DbTest - { - [Test] - public void should_be_able_to_read_and_write() - { - var profile = new LanguageProfile - { - Languages = Language.All.OrderByDescending(l => l.Name).Select(l => new LanguageProfileItem {Language = l, Allowed = l == Language.English}).ToList(), - Name = "TestProfile", - Cutoff = Language.English - }; - - Subject.Insert(profile); - - - StoredModel.Name.Should().Be(profile.Name); - StoredModel.Cutoff.Should().Be(profile.Cutoff); - - StoredModel.Languages.Should().Equal(profile.Languages, (a, b) => a.Language == b.Language && a.Allowed == b.Allowed); - } - } -} \ No newline at end of file diff --git a/src/NzbDrone.Core.Test/Languages/LanguageProfileServiceFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageProfileServiceFixture.cs deleted file mode 100644 index 5a0e1e4ce..000000000 --- a/src/NzbDrone.Core.Test/Languages/LanguageProfileServiceFixture.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System.Linq; -using FizzWare.NBuilder; -using Moq; -using NUnit.Framework; -using NzbDrone.Core.ImportLists; -using NzbDrone.Core.Lifecycle; -using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Music; -using NzbDrone.Core.Profiles.Languages; - -namespace NzbDrone.Core.Test.Languages -{ - [TestFixture] - - public class LanguageProfileServiceFixture : CoreTest - { - [Test] - public void init_should_add_default_profiles() - { - Subject.Handle(new ApplicationStartedEvent()); - - Mocker.GetMock() - .Verify(v => v.Insert(It.IsAny()), Times.Once()); - } - - [Test] - //This confirms that new profiles are added only if no other profiles exists. - //We don't want to keep adding them back if a user deleted them on purpose. - public void Init_should_skip_if_any_profiles_already_exist() - { - Mocker.GetMock() - .Setup(s => s.All()) - .Returns(Builder.CreateListOfSize(2).Build().ToList()); - - Subject.Handle(new ApplicationStartedEvent()); - - Mocker.GetMock() - .Verify(v => v.Insert(It.IsAny()), Times.Never()); - } - - - [Test] - public void should_not_be_able_to_delete_profile_if_assigned_to_artist() - { - var profile = Builder.CreateNew() - .With(p => p.Id = 2) - .Build(); - - var artistList = Builder.CreateListOfSize(3) - .Random(1) - .With(c => c.LanguageProfileId = profile.Id) - .Build().ToList(); - - var importLists = Builder.CreateListOfSize(2) - .All() - .With(c => c.ProfileId = 1) - .Build().ToList(); - - Mocker.GetMock().Setup(c => c.GetAllArtists()).Returns(artistList); - Mocker.GetMock().Setup(c => c.All()).Returns(importLists); - Mocker.GetMock().Setup(c => c.Get(profile.Id)).Returns(profile); - - Assert.Throws(() => Subject.Delete(profile.Id)); - - Mocker.GetMock().Verify(c => c.Delete(It.IsAny()), Times.Never()); - - } - - [Test] - public void should_not_be_able_to_delete_profile_if_assigned_to_import_list() - { - var profile = Builder.CreateNew() - .With(p => p.Id = 2) - .Build(); - - var artistList = Builder.CreateListOfSize(3) - .All() - .With(c => c.LanguageProfileId = 1) - .Build().ToList(); - - var importLists = Builder.CreateListOfSize(2) - .Random(1) - .With(c => c.LanguageProfileId = profile.Id) - .Build().ToList(); - - - Mocker.GetMock().Setup(c => c.GetAllArtists()).Returns(artistList); - Mocker.GetMock().Setup(c => c.All()).Returns(importLists); - Mocker.GetMock().Setup(c => c.Get(profile.Id)).Returns(profile); - - Assert.Throws(() => Subject.Delete(profile.Id)); - - Mocker.GetMock().Verify(c => c.Delete(It.IsAny()), Times.Never()); - - } - - - [Test] - public void should_delete_profile_if_not_assigned_to_artist_or_import_list() - { - var artistList = Builder.CreateListOfSize(3) - .All() - .With(c => c.LanguageProfileId = 2) - .Build().ToList(); - - var importLists = Builder.CreateListOfSize(2) - .All() - .With(c => c.LanguageProfileId = 2) - .Build().ToList(); - - Mocker.GetMock().Setup(c => c.GetAllArtists()).Returns(artistList); - Mocker.GetMock().Setup(c => c.All()).Returns(importLists); - - Subject.Delete(1); - - Mocker.GetMock().Verify(c => c.Delete(1), Times.Once()); - } - } -} diff --git a/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedTracksFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedTracksFixture.cs index 34979e6b8..425e0d803 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedTracksFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedTracksFixture.cs @@ -17,8 +17,6 @@ using NzbDrone.Core.Qualities; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Music; using NzbDrone.Test.Common; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; namespace NzbDrone.Core.Test.MediaFiles { @@ -38,11 +36,6 @@ namespace NzbDrone.Core.Test.MediaFiles var artist = Builder.CreateNew() .With(e => e.QualityProfile = new QualityProfile { Items = Qualities.QualityFixture.GetDefaultQualities() }) - .With(l => l.LanguageProfile = new LanguageProfile - { - Cutoff = Language.Spanish, - Languages = Languages.LanguageFixture.GetDefaultLanguages() - }) .With(s => s.Path = @"C:\Test\Music\Alien Ant Farm".AsOsAgnostic()) .Build(); diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/ImportDecisionMakerFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/ImportDecisionMakerFixture.cs index fc5d69433..90a5a45fd 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/ImportDecisionMakerFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/ImportDecisionMakerFixture.cs @@ -16,7 +16,6 @@ using FizzWare.NBuilder; using NzbDrone.Core.Download; using NzbDrone.Core.MediaFiles.TrackImport.Aggregation; using NzbDrone.Core.Profiles.Qualities; -using NzbDrone.Core.Profiles.Languages; using NzbDrone.Core.MediaFiles.TrackImport.Identification; using System.IO.Abstractions.TestingHelpers; @@ -86,7 +85,6 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport _artist = Builder.CreateNew() .With(e => e.QualityProfile = new QualityProfile { Items = Qualities.QualityFixture.GetDefaultQualities() }) - .With(e => e.LanguageProfile = new LanguageProfile { Languages = Languages.LanguageFixture.GetDefaultLanguages() }) .Build(); _albumRelease = Builder.CreateNew() diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/UpgradeSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/UpgradeSpecificationFixture.cs index 7488e91de..0be4ba3a7 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/UpgradeSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/UpgradeSpecificationFixture.cs @@ -10,8 +10,6 @@ using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Music; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; using NzbDrone.Core.Configuration; namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications @@ -30,11 +28,6 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .With(e => e.QualityProfile = new QualityProfile { Items = Qualities.QualityFixture.GetDefaultQualities(), - }) - .With(l => l.LanguageProfile = new LanguageProfile - { - Languages = Languages.LanguageFixture.GetDefaultLanguages(), - Cutoff = Language.Spanish, }).Build(); _album = Builder.CreateNew().Build(); @@ -43,7 +36,6 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications { Path = @"C:\Test\Imagine Dragons\Imagine.Dragons.Song.1.mp3", Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1)), - Language = Language.Spanish, Artist = _artist, Album = _album }; @@ -92,24 +84,6 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); } - [Test] - public void should_return_false_if_language_upgrade_for_existing_trackFile_and_quality_is_worse() - { - _localTrack.Tracks = Builder.CreateListOfSize(1) - .All() - .With(e => e.TrackFileId = 1) - .With(e => e.TrackFile = new LazyLoaded( - new TrackFile - { - Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), - Language = Language.English - })) - .Build() - .ToList(); - - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); - } - [Test] public void should_return_true_if_upgrade_for_existing_trackFile_for_multi_tracks() { @@ -127,42 +101,6 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); } - [Test] - public void should_return_true_if_language_upgrade_for_existing_trackFile_for_multi_tracks_and_quality_is_same() - { - _localTrack.Tracks = Builder.CreateListOfSize(2) - .All() - .With(e => e.TrackFileId = 1) - .With(e => e.TrackFile = new LazyLoaded( - new TrackFile - { - Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1)), - Language = Language.English - })) - .Build() - .ToList(); - - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); - } - - [Test] - public void should_return_false_if_language_upgrade_for_existing_trackFile_for_multi_tracks_and_quality_is_worse() - { - _localTrack.Tracks = Builder.CreateListOfSize(2) - .All() - .With(e => e.TrackFileId = 1) - .With(e => e.TrackFile = new LazyLoaded( - new TrackFile - { - Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), - Language = Language.English - })) - .Build() - .ToList(); - - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); - } - [Test] public void should_return_false_if_not_an_upgrade_for_existing_trackFile() { diff --git a/src/NzbDrone.Core.Test/MusicTests/ArtistRepositoryTests/ArtistRepositoryFixture.cs b/src/NzbDrone.Core.Test/MusicTests/ArtistRepositoryTests/ArtistRepositoryFixture.cs index 2cd0bc2a8..b2e7c6b86 100644 --- a/src/NzbDrone.Core.Test/MusicTests/ArtistRepositoryTests/ArtistRepositoryFixture.cs +++ b/src/NzbDrone.Core.Test/MusicTests/ArtistRepositoryTests/ArtistRepositoryFixture.cs @@ -2,13 +2,10 @@ using System.Collections.Generic; using FizzWare.NBuilder; using FluentAssertions; using NUnit.Framework; -using System.Linq; -using NzbDrone.Core.Languages; using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Music; -using NzbDrone.Core.Profiles.Languages; using NzbDrone.Core.Profiles.Metadata; using NzbDrone.Common.Extensions; using System; @@ -68,13 +65,6 @@ namespace NzbDrone.Core.Test.MusicTests.ArtistRepositoryTests Name = "TestProfile" }; - var langProfile = new LanguageProfile - { - Name = "TestProfile", - Languages = Languages.LanguageFixture.GetDefaultLanguages(Language.English), - Cutoff = Language.English - }; - var metaProfile = new MetadataProfile { Name = "TestProfile", @@ -85,19 +75,16 @@ namespace NzbDrone.Core.Test.MusicTests.ArtistRepositoryTests Mocker.Resolve().Insert(profile); - Mocker.Resolve().Insert(langProfile); Mocker.Resolve().Insert(metaProfile); var artist = Builder.CreateNew().BuildNew(); artist.QualityProfileId = profile.Id; - artist.LanguageProfileId = langProfile.Id; artist.MetadataProfileId = metaProfile.Id; Subject.Insert(artist); StoredModel.QualityProfile.Should().NotBeNull(); - StoredModel.LanguageProfile.Should().NotBeNull(); StoredModel.MetadataProfile.Should().NotBeNull(); } diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index 2e0533189..a373e07d7 100644 --- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -69,7 +69,6 @@ - @@ -97,7 +96,6 @@ - @@ -242,9 +240,6 @@ - - - @@ -327,7 +322,6 @@ - diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs deleted file mode 100644 index 552a5499c..000000000 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ /dev/null @@ -1,214 +0,0 @@ -using FluentAssertions; -using NUnit.Framework; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Parser; -using NzbDrone.Core.Test.Framework; - -namespace NzbDrone.Core.Test.ParserTests -{ - - [TestFixture] - public class LanguageParserFixture : CoreTest - { - [TestCase("Alien.Ant.Farm-truAnt.2009.English.FLAC.XviD-LOL")] - [TestCase("Alien.Ant.Farm-truAnt.2009.Germany.FLAC.XviD-LOL")] - [TestCase("Alien.Ant.Farm-truAnt.2009.FLAC.XviD-LOL")] - [TestCase("Two.Greedy.Italians.S01E01.The.Family.720p.HDTV.x264-FTP")] - [TestCase("The.Trip.To.Italy.S02E01.720p.HDTV.x264-TLA")] - [TestCase("2 Broke Girls - S01E01 - Pilot.en.sub")] - [TestCase("2 Broke Girls - S01E01 - Pilot.eng.sub")] - [TestCase("2 Broke Girls - S01E01 - Pilot.English.sub")] - [TestCase("2 Broke Girls - S01E01 - Pilot.english.sub")] - public void should_parse_language_english(string postTitle) - { - var result = LanguageParser.ParseLanguage(postTitle); - result.Should().Be(Language.English); - } - - [TestCase("Alien.Ant.Farm-truAnt.2009.FLAC.XviD-LOL")] - [TestCase("Alien Ant Farm-Anthology-CD-FLAC-2001-MAHOU")] - public void should_parse_subtitle_language_unknown(string fileName) - { - var result = LanguageParser.ParseSubtitleLanguage(fileName); - result.Should().Be(Language.Unknown); - } - - [TestCase("Alien Ant Farm-Anthology-CD-French-FLAC-2001-MAHOU")] - [TestCase("Alien Ant Farm-Anthology-CD-VOSTFR-FLAC-2001-MAHOU")] - [TestCase("Alien Ant Farm-Anthology-CD-FR-FLAC-2001-MAHOU")] - public void should_parse_language_french(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.French.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Spanish-FLAC-2001-MAHOU")] - public void should_parse_language_spanish(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Spanish.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-German-FLAC-2001-MAHOU")] - public void should_parse_language_german(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.German.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Italian-FLAC-2001-MAHOU")] - [TestCase("Alien Ant Farm-Anthology-CD-ita-FLAC-2001-MAHOU")] - public void should_parse_language_italian(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Italian.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Danish-FLAC-2001-MAHOU")] - public void should_parse_language_danish(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Danish.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Dutch-FLAC-2001-MAHOU")] - public void should_parse_language_dutch(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Dutch.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Japanese-FLAC-2001-MAHOU")] - public void should_parse_language_japanese(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Japanese.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Cantonese-FLAC-2001-MAHOU")] - public void should_parse_language_cantonese(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Cantonese.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Mandarin-FLAC-2001-MAHOU")] - public void should_parse_language_mandarin(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Mandarin.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Korean-FLAC-2001-MAHOU")] - public void should_parse_language_korean(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Korean.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Russian-FLAC-2001-MAHOU")] - [TestCase("Alien Ant Farm-Anthology-CD-Rus-Eng-FLAC-2001-MAHOU")] - public void should_parse_language_russian(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Russian.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Polish-FLAC-2001-MAHOU")] - public void should_parse_language_polish(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Polish.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Vietnamese-FLAC-2001-MAHOU")] - public void should_parse_language_vietnamese(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Vietnamese.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Swedish-FLAC-2001-MAHOU")] - public void should_parse_language_swedish(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Swedish.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Norwegian-FLAC-2001-MAHOU")] - [TestCase("Alien Ant Farm-Anthology-CD-Nordic-FLAC-2001-MAHOU")] - public void should_parse_language_norwegian(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Norwegian.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Finnish-FLAC-2001-MAHOU")] - public void should_parse_language_finnish(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Finnish.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Turkish-FLAC-2001-MAHOU")] - public void should_parse_language_turkish(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Turkish.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Portuguese-FLAC-2001-MAHOU")] - public void should_parse_language_portuguese(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Portuguese.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-FLEMISH-FLAC-2001-MAHOU")] - public void should_parse_language_flemish(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Flemish.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-Greek-FLAC-2001-MAHOU")] - public void should_parse_language_greek(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Greek.Id); - } - - [TestCase("Alien Ant Farm-Anthology-CD-HUNDUB-FLAC-2001-MAHOU")] - [TestCase("Alien Ant Farm-Anthology-CD-ENG.HUN-FLAC-2001-MAHOU")] - [TestCase("Alien Ant Farm-Anthology-CD-HUN-FLAC-2001-MAHOU")] - public void should_parse_language_hungarian(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Hungarian.Id); - } - - [Ignore("Not Implemented")] - [TestCase("Avatar.The.Last.Airbender.S01-03.DVDRip.HebDub")] - public void should_parse_language_hebrew(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Hebrew.Id); - } - - [Ignore("Not Implemented")] - [TestCase("Prison.Break.S05E01.WEBRip.x264.AC3.LT.EN-CNN")] - public void should_parse_language_lithuanian(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Lithuanian.Id); - } - - [Ignore("Not Implemented")] - [TestCase("The.​Walking.​Dead.​S07E11.​WEB Rip.​XviD.​Louige-​CZ.​EN.​5.​1")] - public void should_parse_language_czech(string postTitle) - { - var result = Parser.Parser.ParseAlbumTitle(postTitle); - result.Language.Id.Should().Be(Language.Czech.Id); - } - } -} diff --git a/src/NzbDrone.Core/Blacklisting/Blacklist.cs b/src/NzbDrone.Core/Blacklisting/Blacklist.cs index b635a2f67..6d179db61 100644 --- a/src/NzbDrone.Core/Blacklisting/Blacklist.cs +++ b/src/NzbDrone.Core/Blacklisting/Blacklist.cs @@ -4,7 +4,6 @@ using NzbDrone.Core.Datastore; using NzbDrone.Core.Indexers; using NzbDrone.Core.Qualities; using NzbDrone.Core.Music; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Blacklisting { @@ -22,6 +21,5 @@ namespace NzbDrone.Core.Blacklisting public string Indexer { get; set; } public string Message { get; set; } public string TorrentInfoHash { get; set; } - public Language Language { get; set; } } } diff --git a/src/NzbDrone.Core/Blacklisting/BlacklistService.cs b/src/NzbDrone.Core/Blacklisting/BlacklistService.cs index 30e86d510..731391fdd 100644 --- a/src/NzbDrone.Core/Blacklisting/BlacklistService.cs +++ b/src/NzbDrone.Core/Blacklisting/BlacklistService.cs @@ -138,8 +138,7 @@ namespace NzbDrone.Core.Blacklisting Indexer = message.Data.GetValueOrDefault("indexer"), Protocol = (DownloadProtocol)Convert.ToInt32(message.Data.GetValueOrDefault("protocol")), Message = message.Message, - TorrentInfoHash = message.Data.GetValueOrDefault("torrentInfoHash"), - Language = message.Language + TorrentInfoHash = message.Data.GetValueOrDefault("torrentInfoHash") }; _blacklistRepository.Insert(blacklist); diff --git a/src/NzbDrone.Core/Datastore/Converters/LanguageIntConverter.cs b/src/NzbDrone.Core/Datastore/Converters/LanguageIntConverter.cs deleted file mode 100644 index 0d71b1b72..000000000 --- a/src/NzbDrone.Core/Datastore/Converters/LanguageIntConverter.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using Marr.Data.Converters; -using Marr.Data.Mapping; -using Newtonsoft.Json; -using NzbDrone.Core.Languages; - -namespace NzbDrone.Core.Datastore.Converters -{ - public class LanguageIntConverter : JsonConverter, IConverter - { - public object FromDB(ConverterContext context) - { - if (context.DbValue == DBNull.Value) - { - return Language.Unknown; - } - - var val = Convert.ToInt32(context.DbValue); - - return (Language)val; - } - - public object FromDB(ColumnMap map, object dbValue) - { - return FromDB(new ConverterContext { ColumnMap = map, DbValue = dbValue }); - } - - public object ToDB(object clrValue) - { - if (clrValue == DBNull.Value) return 0; - - if (clrValue as Language == null) - { - throw new InvalidOperationException("Attempted to save a language that isn't really a language"); - } - - var language = clrValue as Language; - return (int)language; - } - - public Type DbType - { - get - { - return typeof(int); - } - } - - public override bool CanConvert(Type objectType) - { - return objectType == typeof(Language); - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var item = reader.Value; - return (Language)Convert.ToInt32(item); - } - - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - writer.WriteValue(ToDB(value)); - } - } -} \ No newline at end of file diff --git a/src/NzbDrone.Core/Datastore/Converters/PrimaryAlbumTypeIntConverter.cs b/src/NzbDrone.Core/Datastore/Converters/PrimaryAlbumTypeIntConverter.cs index c4c8cdaab..6bce7a347 100644 --- a/src/NzbDrone.Core/Datastore/Converters/PrimaryAlbumTypeIntConverter.cs +++ b/src/NzbDrone.Core/Datastore/Converters/PrimaryAlbumTypeIntConverter.cs @@ -34,11 +34,11 @@ namespace NzbDrone.Core.Datastore.Converters if (clrValue as PrimaryAlbumType == null) { - throw new InvalidOperationException("Attempted to save a albumtype that isn't really a albumtype"); + throw new InvalidOperationException("Attempted to save an album type that isn't really an album type"); } - var language = (PrimaryAlbumType) clrValue; - return (int) language; + var primType = (PrimaryAlbumType) clrValue; + return (int) primType; } public Type DbType => typeof(int); diff --git a/src/NzbDrone.Core/Datastore/Converters/ReleaseStatusIntConverter.cs b/src/NzbDrone.Core/Datastore/Converters/ReleaseStatusIntConverter.cs index 8d09de185..31a41ec5e 100644 --- a/src/NzbDrone.Core/Datastore/Converters/ReleaseStatusIntConverter.cs +++ b/src/NzbDrone.Core/Datastore/Converters/ReleaseStatusIntConverter.cs @@ -34,11 +34,11 @@ namespace NzbDrone.Core.Datastore.Converters if (clrValue as ReleaseStatus == null) { - throw new InvalidOperationException("Attempted to save a albumtype that isn't really a albumtype"); + throw new InvalidOperationException("Attempted to save a release status that isn't really a release status"); } - var language = (ReleaseStatus) clrValue; - return (int) language; + var releaseStatus = (ReleaseStatus) clrValue; + return (int) releaseStatus; } public Type DbType => typeof(int); diff --git a/src/NzbDrone.Core/Datastore/Converters/SecondaryAlbumTypeIntConverter.cs b/src/NzbDrone.Core/Datastore/Converters/SecondaryAlbumTypeIntConverter.cs index 33bc41c76..87ae2ee5f 100644 --- a/src/NzbDrone.Core/Datastore/Converters/SecondaryAlbumTypeIntConverter.cs +++ b/src/NzbDrone.Core/Datastore/Converters/SecondaryAlbumTypeIntConverter.cs @@ -34,11 +34,11 @@ namespace NzbDrone.Core.Datastore.Converters if (clrValue as SecondaryAlbumType == null) { - throw new InvalidOperationException("Attempted to save a albumtype that isn't really a albumtype"); + throw new InvalidOperationException("Attempted to save an album type that isn't really an album type"); } - var language = (SecondaryAlbumType) clrValue; - return (int) language; + var secType = (SecondaryAlbumType) clrValue; + return (int) secType; } public Type DbType => typeof(int); diff --git a/src/NzbDrone.Core/Datastore/Migration/034_remove_language_profiles.cs b/src/NzbDrone.Core/Datastore/Migration/034_remove_language_profiles.cs new file mode 100644 index 000000000..39192cc06 --- /dev/null +++ b/src/NzbDrone.Core/Datastore/Migration/034_remove_language_profiles.cs @@ -0,0 +1,21 @@ +using FluentMigrator; +using NzbDrone.Core.Datastore.Migration.Framework; + +namespace NzbDrone.Core.Datastore.Migration +{ + [Migration(34)] + public class remove_language_profiles : NzbDroneMigrationBase + { + protected override void MainDbUpgrade() + { + Delete.Table("LanguageProfiles"); + + Delete.Column("LanguageProfileId").FromTable("Artists"); + Delete.Column("LanguageProfileId").FromTable("ImportLists"); + Delete.Column("Language").FromTable("Blacklist"); + Delete.Column("Language").FromTable("History"); + Delete.Column("Language").FromTable("LyricFiles"); + Delete.Column("Language").FromTable("TrackFiles"); + } + } +} diff --git a/src/NzbDrone.Core/Datastore/TableMapping.cs b/src/NzbDrone.Core/Datastore/TableMapping.cs index 470123e30..fd9cb7d9e 100644 --- a/src/NzbDrone.Core/Datastore/TableMapping.cs +++ b/src/NzbDrone.Core/Datastore/TableMapping.cs @@ -21,7 +21,6 @@ using NzbDrone.Core.RemotePathMappings; using NzbDrone.Core.Notifications; using NzbDrone.Core.Organizer; using NzbDrone.Core.Parser.Model; -using NzbDrone.Core.Profiles.Languages; using NzbDrone.Core.Profiles.Metadata; using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; @@ -38,7 +37,6 @@ using NzbDrone.Core.Extras.Others; using NzbDrone.Core.Extras.Lyrics; using NzbDrone.Core.Messaging.Commands; using NzbDrone.Core.Music; -using NzbDrone.Core.Languages; using Marr.Data.QGen; using NzbDrone.Core.Profiles.Releases; @@ -98,7 +96,6 @@ namespace NzbDrone.Core.Datastore .Relationship() .HasOne(a => a.Metadata, a => a.ArtistMetadataId) .HasOne(a => a.QualityProfile, a => a.QualityProfileId) - .HasOne(s => s.LanguageProfile, s => s.LanguageProfileId) .HasOne(s => s.MetadataProfile, s => s.MetadataProfileId) .For(a => a.Albums) .LazyLoad(condition: a => a.Id > 0, query: (db, a) => db.Query().Where(rg => rg.ArtistMetadataId == a.Id).ToList()); @@ -167,7 +164,6 @@ namespace NzbDrone.Core.Datastore .Ignore(d => d.Weight); Mapper.Entity().RegisterModel("QualityProfiles"); - Mapper.Entity().RegisterModel("LanguageProfiles"); Mapper.Entity().RegisterModel("MetadataProfiles"); Mapper.Entity().RegisterModel("Logs"); Mapper.Entity().RegisterModel("NamingConfig"); @@ -213,9 +209,7 @@ namespace NzbDrone.Core.Datastore MapRepository.Instance.RegisterTypeConverter(typeof(Dictionary), new EmbeddedDocumentConverter()); MapRepository.Instance.RegisterTypeConverter(typeof(List), new EmbeddedDocumentConverter()); MapRepository.Instance.RegisterTypeConverter(typeof(List>), new EmbeddedDocumentConverter()); - MapRepository.Instance.RegisterTypeConverter(typeof(Language), new LanguageIntConverter()); MapRepository.Instance.RegisterTypeConverter(typeof(List), new EmbeddedDocumentConverter()); - MapRepository.Instance.RegisterTypeConverter(typeof(List), new EmbeddedDocumentConverter(new LanguageIntConverter())); MapRepository.Instance.RegisterTypeConverter(typeof(List), new EmbeddedDocumentConverter(new PrimaryAlbumTypeIntConverter())); MapRepository.Instance.RegisterTypeConverter(typeof(List), new EmbeddedDocumentConverter(new SecondaryAlbumTypeIntConverter())); MapRepository.Instance.RegisterTypeConverter(typeof(List), new EmbeddedDocumentConverter(new ReleaseStatusIntConverter())); diff --git a/src/NzbDrone.Core/DecisionEngine/DownloadDecisionComparer.cs b/src/NzbDrone.Core/DecisionEngine/DownloadDecisionComparer.cs index 01b26bf95..ca2178ffd 100644 --- a/src/NzbDrone.Core/DecisionEngine/DownloadDecisionComparer.cs +++ b/src/NzbDrone.Core/DecisionEngine/DownloadDecisionComparer.cs @@ -28,7 +28,6 @@ namespace NzbDrone.Core.DecisionEngine var comparers = new List { CompareQuality, - CompareLanguage, ComparePreferredWordScore, CompareProtocol, ComparePeersIfTorrent, @@ -73,11 +72,6 @@ namespace NzbDrone.Core.DecisionEngine CompareBy(x.RemoteAlbum, y.RemoteAlbum, remoteAlbum => remoteAlbum.ParsedAlbumInfo.Quality.Revision.Version)); } - private int CompareLanguage(DownloadDecision x, DownloadDecision y) - { - return CompareBy(x.RemoteAlbum, y.RemoteAlbum, remoteAlbum => remoteAlbum.Artist.LanguageProfile.Value.Languages.FindIndex(l => l.Language == remoteAlbum.ParsedAlbumInfo.Language)); - } - private int ComparePreferredWordScore(DownloadDecision x, DownloadDecision y) { return CompareBy(x.RemoteAlbum, y.RemoteAlbum, remoteAlbum => remoteAlbum.PreferredWordScore); diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/CutoffSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/CutoffSpecification.cs index 321252e2d..0d04563c3 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/CutoffSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/CutoffSpecification.cs @@ -41,7 +41,6 @@ namespace NzbDrone.Core.DecisionEngine.Specifications public virtual Decision IsSatisfiedBy(RemoteAlbum subject, SearchCriteriaBase searchCriteria) { var qualityProfile = subject.Artist.QualityProfile.Value; - var languageProfile = subject.Artist.LanguageProfile.Value; foreach (var album in subject.Albums) { @@ -51,16 +50,13 @@ namespace NzbDrone.Core.DecisionEngine.Specifications if (!tracksMissing && trackFiles.Any()) { - // Get a distinct list of all current track qualities and languages for a given album + // Get a distinct list of all current track qualities for a given album var currentQualities = trackFiles.Select(c => c.Quality).Distinct().ToList(); - var currentLanguages = trackFiles.Select(c => c.Language).Distinct().ToList(); - _logger.Debug("Comparing file quality and language with report. Existing files contain {0} : {1}", currentQualities.ConcatToString(), currentLanguages.ConcatToString()); + _logger.Debug("Comparing file quality with report. Existing files contain {0}", currentQualities.ConcatToString()); if (!_upgradableSpecification.CutoffNotMet(qualityProfile, - languageProfile, currentQualities, - currentLanguages, _preferredWordServiceCalculator.Calculate(subject.Artist, trackFiles[0].GetSceneOrFileName()), subject.ParsedAlbumInfo.Quality, subject.PreferredWordScore)) @@ -70,7 +66,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications var qualityCutoffIndex = qualityProfile.GetIndex(qualityProfile.Cutoff); var qualityCutoff = qualityProfile.Items[qualityCutoffIndex.Index]; - return Decision.Reject("Existing files meets cutoff: {0} - {1}", qualityCutoff, languageProfile.Cutoff); + return Decision.Reject("Existing files meets cutoff: {0}", qualityCutoff); } } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/LanguageSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/LanguageSpecification.cs deleted file mode 100644 index 51b9be10d..000000000 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/LanguageSpecification.cs +++ /dev/null @@ -1,36 +0,0 @@ -using NLog; -using System.Linq; -using NzbDrone.Core.IndexerSearch.Definitions; -using NzbDrone.Core.Parser.Model; - -namespace NzbDrone.Core.DecisionEngine.Specifications -{ - public class LanguageSpecification : IDecisionEngineSpecification - { - private readonly Logger _logger; - - public LanguageSpecification(Logger logger) - { - _logger = logger; - } - - public SpecificationPriority Priority => SpecificationPriority.Default; - public RejectionType Type => RejectionType.Permanent; - - public virtual Decision IsSatisfiedBy(RemoteAlbum subject, SearchCriteriaBase searchCriteria) - { - var wantedLanguage = subject.Artist.LanguageProfile.Value.Languages; - var _language = subject.ParsedAlbumInfo.Language; - - _logger.Debug("Checking if report meets language requirements. {0}", subject.ParsedAlbumInfo.Language); - - if (!wantedLanguage.Exists(v => v.Allowed && v.Language == _language)) - { - _logger.Debug("Report Language: {0} rejected because it is not wanted, wanted {1}", subject.ParsedAlbumInfo.Language, wantedLanguage); - return Decision.Reject("{0} is wanted, but found {1}", wantedLanguage, subject.ParsedAlbumInfo.Language); - } - - return Decision.Accept(); - } - } -} diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/QueueSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/QueueSpecification.cs index 3745bec50..640b5870f 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/QueueSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/QueueSpecification.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using NLog; using NzbDrone.Core.IndexerSearch.Definitions; -using NzbDrone.Core.Languages; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Profiles.Releases; using NzbDrone.Core.Qualities; @@ -45,15 +44,12 @@ namespace NzbDrone.Core.DecisionEngine.Specifications { var remoteAlbum = queueItem.RemoteAlbum; var qualityProfile = subject.Artist.QualityProfile.Value; - var languageProfile = subject.Artist.LanguageProfile.Value; - _logger.Debug("Checking if existing release in queue meets cutoff. Queued quality is: {0} - {1}", remoteAlbum.ParsedAlbumInfo.Quality, remoteAlbum.ParsedAlbumInfo.Language); + _logger.Debug("Checking if existing release in queue meets cutoff. Queued quality is: {0}", remoteAlbum.ParsedAlbumInfo.Quality); var queuedItemPreferredWordScore = _preferredWordServiceCalculator.Calculate(subject.Artist, queueItem.Title); if (!_upgradableSpecification.CutoffNotMet(qualityProfile, - languageProfile, new List { remoteAlbum.ParsedAlbumInfo.Quality }, - new List { remoteAlbum.ParsedAlbumInfo.Language }, queuedItemPreferredWordScore, subject.ParsedAlbumInfo.Quality, subject.PreferredWordScore)) @@ -62,30 +58,24 @@ namespace NzbDrone.Core.DecisionEngine.Specifications return Decision.Reject("Release in queue already meets cutoff: {0}", remoteAlbum.ParsedAlbumInfo.Quality); } - _logger.Debug("Checking if release is higher quality than queued release. Queued: {0} - {1}", remoteAlbum.ParsedAlbumInfo.Quality, remoteAlbum.ParsedAlbumInfo.Language); + _logger.Debug("Checking if release is higher quality than queued release. Queued: {0}", remoteAlbum.ParsedAlbumInfo.Quality); if (!_upgradableSpecification.IsUpgradable(qualityProfile, - languageProfile, new List { remoteAlbum.ParsedAlbumInfo.Quality }, - new List { remoteAlbum.ParsedAlbumInfo.Language }, queuedItemPreferredWordScore, subject.ParsedAlbumInfo.Quality, - subject.ParsedAlbumInfo.Language, subject.PreferredWordScore)) { - return Decision.Reject("Release in queue is of equal or higher preference: {0} - {1}", remoteAlbum.ParsedAlbumInfo.Quality, remoteAlbum.ParsedAlbumInfo.Language); + return Decision.Reject("Release in queue is of equal or higher preference: {0}", remoteAlbum.ParsedAlbumInfo.Quality); } - _logger.Debug("Checking if profiles allow upgrading. Queued: {0} - {1}", remoteAlbum.ParsedAlbumInfo.Quality, remoteAlbum.ParsedAlbumInfo.Language); + _logger.Debug("Checking if profiles allow upgrading. Queued: {0}", remoteAlbum.ParsedAlbumInfo.Quality); if (!_upgradableSpecification.IsUpgradeAllowed(qualityProfile, - languageProfile, new List { remoteAlbum.ParsedAlbumInfo.Quality }, - new List { remoteAlbum.ParsedAlbumInfo.Language }, - subject.ParsedAlbumInfo.Quality, - subject.ParsedAlbumInfo.Language)) + subject.ParsedAlbumInfo.Quality)) { - return Decision.Reject("Another release is queued and the Quality or Language profile does not allow upgrades"); + return Decision.Reject("Another release is queued and the Quality profile does not allow upgrades"); } } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs index 05eb5c962..5004f0d7b 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs @@ -6,7 +6,6 @@ using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Profiles.Delay; using NzbDrone.Core.Qualities; using NzbDrone.Core.MediaFiles; -using NzbDrone.Core.Languages; using NzbDrone.Core.Profiles.Releases; namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync @@ -47,7 +46,6 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync } var qualityProfile = subject.Artist.QualityProfile.Value; - var languageProfile = subject.Artist.LanguageProfile.Value; var delayProfile = _delayProfileService.BestForTags(subject.Artist.Tags); var delay = delayProfile.GetProtocolDelay(subject.Release.DownloadProtocol); var isPreferredProtocol = subject.Release.DownloadProtocol == delayProfile.PreferredProtocol; @@ -59,7 +57,6 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync } var qualityComparer = new QualityModelComparer(qualityProfile); - var languageComparer = new LanguageComparer(languageProfile); if (isPreferredProtocol) { @@ -70,15 +67,11 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync if (trackFiles.Any()) { var currentQualities = trackFiles.Select(c => c.Quality).Distinct().ToList(); - var currentLanguages = trackFiles.Select(c => c.Language).Distinct().ToList(); var upgradable = _upgradableSpecification.IsUpgradable(qualityProfile, - languageProfile, currentQualities, - currentLanguages, _preferredWordServiceCalculator.Calculate(subject.Artist, trackFiles[0].GetSceneOrFileName()), subject.ParsedAlbumInfo.Quality, - subject.ParsedAlbumInfo.Language, subject.PreferredWordScore); if (upgradable) { @@ -92,11 +85,10 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync // If quality meets or exceeds the best allowed quality in the profile accept it immediately var bestQualityInProfile = qualityProfile.LastAllowedQuality(); var isBestInProfile = qualityComparer.Compare(subject.ParsedAlbumInfo.Quality.Quality, bestQualityInProfile) >= 0; - var isBestInProfileLanguage = languageComparer.Compare(subject.ParsedAlbumInfo.Language, languageProfile.LastAllowedLanguage()) >= 0; - if (isBestInProfile && isBestInProfileLanguage && isPreferredProtocol) + if (isBestInProfile && isPreferredProtocol) { - _logger.Debug("Quality and language is highest in profile for preferred protocol, will not delay"); + _logger.Debug("Quality is highest in profile for preferred protocol, will not delay"); return Decision.Accept(); } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/HistorySpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/HistorySpecification.cs index 3a0638d15..276b70ecb 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/HistorySpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/HistorySpecification.cs @@ -5,7 +5,6 @@ using NzbDrone.Common.Extensions; using NzbDrone.Core.Configuration; using NzbDrone.Core.History; using NzbDrone.Core.IndexerSearch.Definitions; -using NzbDrone.Core.Languages; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Profiles.Releases; using NzbDrone.Core.Qualities; @@ -61,21 +60,16 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync var cutoffUnmet = _upgradableSpecification.CutoffNotMet( subject.Artist.QualityProfile, - subject.Artist.LanguageProfile, new List { mostRecent.Quality }, - new List { mostRecent.Language }, preferredWordScore, subject.ParsedAlbumInfo.Quality, subject.PreferredWordScore); var upgradeable = _upgradableSpecification.IsUpgradable( subject.Artist.QualityProfile, - subject.Artist.LanguageProfile, new List { mostRecent.Quality }, - new List { mostRecent.Language }, preferredWordScore, subject.ParsedAlbumInfo.Quality, - subject.ParsedAlbumInfo.Language, subject.PreferredWordScore); if (!recent && cdhEnabled) diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs index c5cc7b7bf..3b01f5e3e 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs @@ -1,7 +1,5 @@ using NLog; using NzbDrone.Core.Configuration; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Profiles.Languages; using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; using System.Collections.Generic; @@ -11,12 +9,11 @@ namespace NzbDrone.Core.DecisionEngine.Specifications { public interface IUpgradableSpecification { - bool IsUpgradable(QualityProfile profile, LanguageProfile languageProfile, List currentQualities, List currentLanguages, int currentScore, QualityModel newQuality, Language newLanguage, int newScore); + bool IsUpgradable(QualityProfile profile, List currentQualities, int currentScore, QualityModel newQuality, int newScore); bool QualityCutoffNotMet(QualityProfile profile, QualityModel currentQuality, QualityModel newQuality = null); - bool LanguageCutoffNotMet(LanguageProfile languageProfile, Language currentLanguage); - bool CutoffNotMet(QualityProfile profile, LanguageProfile languageProfile, List currentQualities, List currentLanguages, int currentScore, QualityModel newQuality = null, int newScore = 0); + bool CutoffNotMet(QualityProfile profile, List currentQualities, int currentScore, QualityModel newQuality = null, int newScore = 0); bool IsRevisionUpgrade(QualityModel currentQuality, QualityModel newQuality); - bool IsUpgradeAllowed(QualityProfile qualityProfile, LanguageProfile languageProfile, List currentQualities, List currentLanguages, QualityModel newQuality, Language newLanguage); + bool IsUpgradeAllowed(QualityProfile qualityProfile, List currentQualities, QualityModel newQuality); } public class UpgradableSpecification : IUpgradableSpecification @@ -30,34 +27,6 @@ namespace NzbDrone.Core.DecisionEngine.Specifications _logger = logger; } - private ProfileComparisonResult IsLanguageUpgradable(LanguageProfile profile, List currentLanguages, Language newLanguage = null) - { - if (newLanguage != null) - { - var totalCompare = 0; - - foreach (var language in currentLanguages) - { - var compare = new LanguageComparer(profile).Compare(newLanguage, language); - - totalCompare += compare; - - // Not upgradable if new language is a downgrade for any current lanaguge - if (compare < 0) - { - return ProfileComparisonResult.Downgrade; - } - } - - // Not upgradable if new language is equal to all current languages - if (totalCompare == 0) - { - return ProfileComparisonResult.Equal; - } - } - return ProfileComparisonResult.Upgrade; - } - private ProfileComparisonResult IsQualityUpgradable(QualityProfile profile, List currentQualities, QualityModel newQuality = null) { if (newQuality != null) @@ -98,7 +67,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications return newScore > currentScore; } - public bool IsUpgradable(QualityProfile qualityProfile, LanguageProfile languageProfile, List currentQualities, List currentLanguages, int currentScore, QualityModel newQuality, Language newLanguage, int newScore) + public bool IsUpgradable(QualityProfile qualityProfile, List currentQualities, int currentScore, QualityModel newQuality, int newScore) { var qualityUpgrade = IsQualityUpgradable(qualityProfile, currentQualities, newQuality); @@ -114,19 +83,6 @@ namespace NzbDrone.Core.DecisionEngine.Specifications return false; } - var languageUpgrade = IsLanguageUpgradable(languageProfile, currentLanguages, newLanguage); - - if (languageUpgrade == ProfileComparisonResult.Upgrade) - { - return true; - } - - if (languageUpgrade == ProfileComparisonResult.Downgrade) - { - _logger.Debug("Existing item has better language, skipping"); - return false; - } - if (!IsPreferredWordUpgradable(currentScore, newScore)) { _logger.Debug("Existing item has a better preferred word score, skipping"); @@ -153,25 +109,8 @@ namespace NzbDrone.Core.DecisionEngine.Specifications return false; } - public bool LanguageCutoffNotMet(LanguageProfile languageProfile, Language currentLanguage) - { - var languageCompare = new LanguageComparer(languageProfile).Compare(currentLanguage, languageProfile.Cutoff); - - return languageCompare < 0; - } - - public bool CutoffNotMet(QualityProfile profile, LanguageProfile languageProfile, List currentQualities, List currentLanguages, int currentScore, QualityModel newQuality = null, int newScore = 0) + public bool CutoffNotMet(QualityProfile profile, List currentQualities, int currentScore, QualityModel newQuality = null, int newScore = 0) { - // If we can upgrade the language (it is not the cutoff) then the quality doesn't - // matter as we can always get same quality with prefered language. - foreach (var language in currentLanguages) - { - if (LanguageCutoffNotMet(languageProfile, language)) - { - return true; - } - } - foreach (var quality in currentQualities) { if (QualityCutoffNotMet(profile, quality, newQuality)) @@ -204,35 +143,21 @@ namespace NzbDrone.Core.DecisionEngine.Specifications return false; } - public bool IsUpgradeAllowed(QualityProfile qualityProfile, LanguageProfile languageProfile, List currentQualities, List currentLanguages, QualityModel newQuality, Language newLanguage) + public bool IsUpgradeAllowed(QualityProfile qualityProfile, List currentQualities, QualityModel newQuality) { var isQualityUpgrade = IsQualityUpgradable(qualityProfile, currentQualities, newQuality); - var isLanguageUpgrade = IsLanguageUpgradable(languageProfile, currentLanguages, newLanguage); - return CheckUpgradeAllowed(qualityProfile, languageProfile, isQualityUpgrade, isLanguageUpgrade); + return CheckUpgradeAllowed(qualityProfile, isQualityUpgrade); } - private bool CheckUpgradeAllowed (QualityProfile qualityProfile, LanguageProfile languageProfile, ProfileComparisonResult isQualityUpgrade, ProfileComparisonResult isLanguageUpgrade) + private bool CheckUpgradeAllowed (QualityProfile qualityProfile, ProfileComparisonResult isQualityUpgrade) { - if (isQualityUpgrade == ProfileComparisonResult.Upgrade && qualityProfile.UpgradeAllowed || - isLanguageUpgrade == ProfileComparisonResult.Upgrade && languageProfile.UpgradeAllowed) - { - _logger.Debug("At least one profile allows upgrading"); - return true; - } - if (isQualityUpgrade == ProfileComparisonResult.Upgrade && !qualityProfile.UpgradeAllowed) { _logger.Debug("Quality profile does not allow upgrades, skipping"); return false; } - if (isLanguageUpgrade == ProfileComparisonResult.Upgrade && !languageProfile.UpgradeAllowed) - { - _logger.Debug("Language profile does not allow upgrades, skipping"); - return false; - } - return true; } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradeAllowedSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradeAllowedSpecification.cs index 30296ed6d..2ebc916c3 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradeAllowedSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradeAllowedSpecification.cs @@ -38,7 +38,6 @@ namespace NzbDrone.Core.DecisionEngine.Specifications public virtual Decision IsSatisfiedBy(RemoteAlbum subject, SearchCriteriaBase searchCriteria) { var qualityProfile = subject.Artist.QualityProfile.Value; - var languageProfile = subject.Artist.LanguageProfile.Value; foreach (var album in subject.Albums) { @@ -49,22 +48,18 @@ namespace NzbDrone.Core.DecisionEngine.Specifications if (!tracksMissing && trackFiles.Any()) { - // Get a distinct list of all current track qualities and languages for a given album + // Get a distinct list of all current track qualities for a given album var currentQualities = trackFiles.Select(c => c.Quality).Distinct().ToList(); - var currentLanguages = trackFiles.Select(c => c.Language).Distinct().ToList(); - _logger.Debug("Comparing file quality and language with report. Existing files contain {0} : {1}", currentQualities.ConcatToString(), currentLanguages.ConcatToString()); + _logger.Debug("Comparing file quality with report. Existing files contain {0}", currentQualities.ConcatToString()); if (!_upgradableSpecification.IsUpgradeAllowed(qualityProfile, - languageProfile, currentQualities, - currentLanguages, - subject.ParsedAlbumInfo.Quality, - subject.ParsedAlbumInfo.Language)) + subject.ParsedAlbumInfo.Quality)) { - _logger.Debug("Upgrading is not allowed by the quality or language profile"); + _logger.Debug("Upgrading is not allowed by the quality profile"); - return Decision.Reject("Existing files and the Quality or Language profile does not allow upgrades"); + return Decision.Reject("Existing files and the Quality profile does not allow upgrades"); } } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradeDiskSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradeDiskSpecification.cs index 0f0835db9..e1e75eb52 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradeDiskSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradeDiskSpecification.cs @@ -50,18 +50,14 @@ namespace NzbDrone.Core.DecisionEngine.Specifications if (!tracksMissing && trackFiles.Any()) { var currentQualities = trackFiles.Select(c => c.Quality).Distinct().ToList(); - var currentLanguages = trackFiles.Select(c => c.Language).Distinct().ToList(); if (!_upgradableSpecification.IsUpgradable(subject.Artist.QualityProfile, - subject.Artist.LanguageProfile, currentQualities, - currentLanguages, _preferredWordServiceCalculator.Calculate(subject.Artist, trackFiles[0].GetSceneOrFileName()), subject.ParsedAlbumInfo.Quality, - subject.ParsedAlbumInfo.Language, subject.PreferredWordScore)) { - return Decision.Reject("Existing files on disk is of equal or higher preference: {0} - {1}", currentQualities.ConcatToString(), currentLanguages.ConcatToString()); + return Decision.Reject("Existing files on disk is of equal or higher preference: {0}", currentQualities.ConcatToString()); } } diff --git a/src/NzbDrone.Core/Download/DownloadFailedEvent.cs b/src/NzbDrone.Core/Download/DownloadFailedEvent.cs index 8145e9665..40fadd628 100644 --- a/src/NzbDrone.Core/Download/DownloadFailedEvent.cs +++ b/src/NzbDrone.Core/Download/DownloadFailedEvent.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using NzbDrone.Common.Messaging; using NzbDrone.Core.Download.TrackedDownloads; using NzbDrone.Core.Qualities; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Download { @@ -22,7 +21,6 @@ namespace NzbDrone.Core.Download public string Message { get; set; } public Dictionary Data { get; set; } public TrackedDownload TrackedDownload { get; set; } - public Language Language { get; set; } public bool SkipReDownload { get; set; } } } diff --git a/src/NzbDrone.Core/Download/FailedDownloadService.cs b/src/NzbDrone.Core/Download/FailedDownloadService.cs index 77aad8740..741a7d337 100644 --- a/src/NzbDrone.Core/Download/FailedDownloadService.cs +++ b/src/NzbDrone.Core/Download/FailedDownloadService.cs @@ -96,7 +96,6 @@ namespace NzbDrone.Core.Download Message = message, Data = historyItem.Data, TrackedDownload = trackedDownload, - Language = historyItem.Language, SkipReDownload = skipReDownload }; diff --git a/src/NzbDrone.Core/Download/Pending/PendingReleaseService.cs b/src/NzbDrone.Core/Download/Pending/PendingReleaseService.cs index 36d4d8c28..d8a9467ce 100644 --- a/src/NzbDrone.Core/Download/Pending/PendingReleaseService.cs +++ b/src/NzbDrone.Core/Download/Pending/PendingReleaseService.cs @@ -197,7 +197,6 @@ namespace NzbDrone.Core.Download.Pending Artist = pendingRelease.RemoteAlbum.Artist, Album = album, Quality = pendingRelease.RemoteAlbum.ParsedAlbumInfo.Quality, - Language = pendingRelease.RemoteAlbum.ParsedAlbumInfo.Language, Title = pendingRelease.Title, Size = pendingRelease.RemoteAlbum.Release.Size, Sizeleft = pendingRelease.RemoteAlbum.Release.Size, diff --git a/src/NzbDrone.Core/Extras/Lyrics/ExistingLyricImporter.cs b/src/NzbDrone.Core/Extras/Lyrics/ExistingLyricImporter.cs index 5b54e90f9..86a55f1c3 100644 --- a/src/NzbDrone.Core/Extras/Lyrics/ExistingLyricImporter.cs +++ b/src/NzbDrone.Core/Extras/Lyrics/ExistingLyricImporter.cs @@ -77,7 +77,6 @@ namespace NzbDrone.Core.Extras.Lyrics AlbumId = localTrack.Album.Id, TrackFileId = localTrack.Tracks.First().TrackFileId, RelativePath = artist.Path.GetRelativePath(possibleLyricFile), - Language = LanguageParser.ParseSubtitleLanguage(possibleLyricFile), Extension = extension }; diff --git a/src/NzbDrone.Core/Extras/Lyrics/LyricFile.cs b/src/NzbDrone.Core/Extras/Lyrics/LyricFile.cs index 82bd50c27..8634b167d 100644 --- a/src/NzbDrone.Core/Extras/Lyrics/LyricFile.cs +++ b/src/NzbDrone.Core/Extras/Lyrics/LyricFile.cs @@ -1,10 +1,8 @@ using NzbDrone.Core.Extras.Files; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Extras.Lyrics { public class LyricFile : ExtraFile { - public Language Language { get; set; } } } diff --git a/src/NzbDrone.Core/Extras/Lyrics/LyricService.cs b/src/NzbDrone.Core/Extras/Lyrics/LyricService.cs index a18b63883..7972cf20a 100644 --- a/src/NzbDrone.Core/Extras/Lyrics/LyricService.cs +++ b/src/NzbDrone.Core/Extras/Lyrics/LyricService.cs @@ -10,7 +10,6 @@ using NzbDrone.Core.Extras.Files; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Parser; using NzbDrone.Core.Music; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Extras.Lyrics { @@ -56,7 +55,7 @@ namespace NzbDrone.Core.Extras.Lyrics foreach (var trackFile in trackFiles) { var groupedExtraFilesForTrackFile = subtitleFiles.Where(m => m.TrackFileId == trackFile.Id) - .GroupBy(s => s.Language + s.Extension).ToList(); + .GroupBy(s => s.Extension).ToList(); foreach (var group in groupedExtraFilesForTrackFile) { @@ -65,12 +64,12 @@ namespace NzbDrone.Core.Extras.Lyrics if (groupCount > 1) { - _logger.Warn("Multiple lyric files found with the same language and extension for {0}", trackFile.Path); + _logger.Warn("Multiple lyric files found with the same extension for {0}", trackFile.Path); } foreach (var subtitleFile in group) { - var suffix = GetSuffix(subtitleFile.Language, copy, groupCount > 1); + var suffix = GetSuffix(copy, groupCount > 1); movedFiles.AddIfNotNull(MoveFile(artist, trackFile, subtitleFile, suffix)); copy++; @@ -87,10 +86,8 @@ namespace NzbDrone.Core.Extras.Lyrics { if (LyricFileExtensions.Extensions.Contains(Path.GetExtension(path))) { - var language = LanguageParser.ParseSubtitleLanguage(path); - var suffix = GetSuffix(language, 1, false); + var suffix = GetSuffix(1, false); var subtitleFile = ImportFile(artist, trackFile, path, readOnly, extension, suffix); - subtitleFile.Language = language; _lyricFileService.Upsert(subtitleFile); @@ -100,7 +97,7 @@ namespace NzbDrone.Core.Extras.Lyrics return null; } - private string GetSuffix(Language language, int copy, bool multipleCopies = false) + private string GetSuffix(int copy, bool multipleCopies = false) { var suffixBuilder = new StringBuilder(); @@ -110,12 +107,6 @@ namespace NzbDrone.Core.Extras.Lyrics suffixBuilder.Append(copy); } - if (language != Language.Unknown) - { - suffixBuilder.Append("."); - suffixBuilder.Append(IsoLanguages.Get(language).TwoLetterCode); - } - return suffixBuilder.ToString(); } } diff --git a/src/NzbDrone.Core/History/History.cs b/src/NzbDrone.Core/History/History.cs index 25233fb0a..24aad2670 100644 --- a/src/NzbDrone.Core/History/History.cs +++ b/src/NzbDrone.Core/History/History.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using NzbDrone.Core.Datastore; using NzbDrone.Core.Qualities; using NzbDrone.Core.Music; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.History { @@ -27,7 +26,6 @@ namespace NzbDrone.Core.History public Track Track { get; set; } public HistoryEventType EventType { get; set; } public Dictionary Data { get; set; } - public Language Language { get; set; } public string DownloadId { get; set; } diff --git a/src/NzbDrone.Core/History/HistoryService.cs b/src/NzbDrone.Core/History/HistoryService.cs index 1e0c280d9..7decd0d49 100644 --- a/src/NzbDrone.Core/History/HistoryService.cs +++ b/src/NzbDrone.Core/History/HistoryService.cs @@ -10,7 +10,6 @@ using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles.Events; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Parser.Model; -using NzbDrone.Core.Languages; using NzbDrone.Core.Music.Events; using NzbDrone.Core.Qualities; using NzbDrone.Common.Serializer; @@ -148,8 +147,7 @@ namespace NzbDrone.Core.History SourceTitle = message.Album.Release.Title, ArtistId = album.ArtistId, AlbumId = album.Id, - DownloadId = message.DownloadId, - Language = message.Album.ParsedAlbumInfo.Language + DownloadId = message.DownloadId }; history.Data.Add("Indexer", message.Album.Release.Indexer); @@ -194,8 +192,7 @@ namespace NzbDrone.Core.History SourceTitle = message.TrackedDownload.DownloadItem.Title, ArtistId = album.ArtistId, AlbumId = album.Id, - DownloadId = message.TrackedDownload.DownloadItem.DownloadId, - Language = message.TrackedDownload.RemoteAlbum.ParsedAlbumInfo?.Language ?? Language.English + DownloadId = message.TrackedDownload.DownloadItem.DownloadId }; history.Data.Add("StatusMessages", message.TrackedDownload.StatusMessages.ToJson()); @@ -228,8 +225,7 @@ namespace NzbDrone.Core.History ArtistId = message.TrackInfo.Artist.Id, AlbumId = message.TrackInfo.Album.Id, TrackId = track.Id, - DownloadId = downloadId, - Language = message.TrackInfo.Language + DownloadId = downloadId }; //Won't have a value since we publish this event before saving to DB. @@ -254,8 +250,7 @@ namespace NzbDrone.Core.History SourceTitle = message.SourceTitle, ArtistId = message.ArtistId, AlbumId = albumId, - DownloadId = message.DownloadId, - Language = message.Language + DownloadId = message.DownloadId }; history.Data.Add("DownloadClient", message.DownloadClient); @@ -277,8 +272,7 @@ namespace NzbDrone.Core.History SourceTitle = message.TrackedDownload.DownloadItem.Title, ArtistId = album.ArtistId, AlbumId = album.Id, - DownloadId = message.TrackedDownload.DownloadItem.DownloadId, - Language = message.TrackedDownload.RemoteAlbum.ParsedAlbumInfo?.Language ?? Language.English + DownloadId = message.TrackedDownload.DownloadItem.DownloadId }; _historyRepository.Insert(history); diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/EnsureValidLanguageProfileId.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/EnsureValidLanguageProfileId.cs deleted file mode 100644 index 7878a97cf..000000000 --- a/src/NzbDrone.Core/Housekeeping/Housekeepers/EnsureValidLanguageProfileId.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using NzbDrone.Common.Extensions; -using NzbDrone.Core.Profiles.Languages; -using NzbDrone.Core.Music; - -namespace NzbDrone.Core.Housekeeping.Housekeepers -{ - // For some unknown reason series added through the v2 API can be added without a lanuage profile ID, which breaks things later. - // This ensures there is a language profile ID and it's valid as a safety net. - - public class EnsureValidLanguageProfileId : IHousekeepingTask - { - private readonly IArtistRepository _artistRepository; - private readonly ILanguageProfileService _languageProfileService; - - public EnsureValidLanguageProfileId(IArtistRepository artistRepository, ILanguageProfileService languageProfileService) - { - _artistRepository = artistRepository; - _languageProfileService = languageProfileService; - } - - public void Clean() - { - var languageProfiles = _languageProfileService.All(); - var firstLangaugeProfile = languageProfiles.First(); - var artists = _artistRepository.All().ToList(); - var artistToUpdate = new List(); - - artists.ForEach(s => - { - if (s.LanguageProfileId == 0 || languageProfiles.None(l => l.Id == s.LanguageProfileId)) - { - s.LanguageProfileId = firstLangaugeProfile.Id; - artistToUpdate.Add(s); - } - }); - - _artistRepository.UpdateMany(artistToUpdate); - } - } -} diff --git a/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs b/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs index 75b9d566f..39473a044 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs @@ -7,7 +7,6 @@ namespace NzbDrone.Core.ImportLists public bool EnableAutomaticAdd { get; set; } public ImportListMonitorType ShouldMonitor { get; set; } public int ProfileId { get; set; } - public int LanguageProfileId { get; set; } public int MetadataProfileId { get; set; } public string RootFolderPath { get; set; } diff --git a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs index cc48fc635..f5cd4dff1 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs @@ -140,7 +140,6 @@ namespace NzbDrone.Core.ImportLists Monitored = monitored, RootFolderPath = importList.RootFolderPath, QualityProfileId = importList.ProfileId, - LanguageProfileId = importList.LanguageProfileId, MetadataProfileId = importList.MetadataProfileId, Tags = importList.Tags, AlbumFolder = true, diff --git a/src/NzbDrone.Core/Languages/Language.cs b/src/NzbDrone.Core/Languages/Language.cs deleted file mode 100644 index bb252ce07..000000000 --- a/src/NzbDrone.Core/Languages/Language.cs +++ /dev/null @@ -1,158 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using NzbDrone.Core.Datastore; - -namespace NzbDrone.Core.Languages -{ - public class Language : IEmbeddedDocument, IEquatable - { - public int Id { get; set; } - public string Name { get; set; } - - public Language() - { - } - - private Language(int id, string name) - { - Id = id; - Name = name; - } - - public override string ToString() - { - return Name; - } - - public override int GetHashCode() - { - return Id.GetHashCode(); - } - - public bool Equals(Language other) - { - if (ReferenceEquals(null, other)) return false; - if (ReferenceEquals(this, other)) return true; - return Id.Equals(other.Id); - } - - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - - return Equals(obj as Language); - } - - public static bool operator ==(Language left, Language right) - { - return Equals(left, right); - } - - public static bool operator !=(Language left, Language right) - { - return !Equals(left, right); - } - - public static Language Unknown { get { return new Language(0, "Unknown"); } } - public static Language English { get { return new Language(1, "English"); } } - public static Language French { get { return new Language(2, "French"); } } - public static Language Spanish { get { return new Language(3, "Spanish"); } } - public static Language German { get { return new Language(4, "German"); } } - public static Language Italian { get { return new Language(5, "Italian"); } } - public static Language Danish { get { return new Language(6, "Danish"); } } - public static Language Dutch { get { return new Language(7, "Dutch"); } } - public static Language Japanese { get { return new Language(8, "Japanese"); } } - public static Language Cantonese { get { return new Language(9, "Cantonese"); } } - public static Language Mandarin { get { return new Language(10, "Mandarin"); } } - public static Language Russian { get { return new Language(11, "Russian"); } } - public static Language Polish { get { return new Language(12, "Polish"); } } - public static Language Vietnamese { get { return new Language(13, "Vietnamese"); } } - public static Language Swedish { get { return new Language(14, "Swedish"); } } - public static Language Norwegian { get { return new Language(15, "Norwegian"); } } - public static Language Finnish { get { return new Language(16, "Finnish"); } } - public static Language Turkish { get { return new Language(17, "Turkish"); } } - public static Language Portuguese { get { return new Language(18, "Portuguese"); } } - public static Language Flemish { get { return new Language(19, "Flemish"); } } - public static Language Greek { get { return new Language(20, "Greek"); } } - public static Language Korean { get { return new Language(21, "Korean"); } } - public static Language Hungarian { get { return new Language(22, "Hungarian"); } } - public static Language Hebrew { get { return new Language(23, "Hebrew"); } } - public static Language Lithuanian { get { return new Language(24, "Lithuanian"); } } - public static Language Czech { get { return new Language(25, "Czech"); } } - - - public static List All - { - get - { - return new List - { - Unknown, - English, - French, - Spanish, - German, - Italian, - Danish, - Dutch, - Japanese, - Cantonese, - Mandarin, - Russian, - Polish, - Vietnamese, - Swedish, - Norwegian, - Finnish, - Turkish, - Portuguese, - Flemish, - Greek, - Korean, - Hungarian, - Hebrew, - Lithuanian, - Czech - }; - } - } - - public static Language FindById(int id) - { - if (id == 0) return Unknown; - - Language language = All.FirstOrDefault(v => v.Id == id); - - if (language == null) - { - throw new ArgumentException("ID does not match a known language", nameof(id)); - } - - return language; - } - - public static explicit operator Language(int id) - { - return FindById(id); - } - - public static explicit operator int(Language language) - { - return language.Id; - } - - public static explicit operator Language(string lang) - { - var language = All.FirstOrDefault(v => v.Name.Equals(lang, StringComparison.InvariantCultureIgnoreCase)); - - if (language == null) - { - throw new ArgumentException("Language does not match a known language", nameof(lang)); - } - - return language; - } - } -} \ No newline at end of file diff --git a/src/NzbDrone.Core/Languages/LanguageComparer.cs b/src/NzbDrone.Core/Languages/LanguageComparer.cs deleted file mode 100644 index e286aa681..000000000 --- a/src/NzbDrone.Core/Languages/LanguageComparer.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections.Generic; -using NzbDrone.Common.EnsureThat; -using NzbDrone.Core.Profiles.Languages; - -namespace NzbDrone.Core.Languages -{ - public class LanguageComparer : IComparer - { - private readonly LanguageProfile _profile; - - public LanguageComparer(LanguageProfile profile) - { - Ensure.That(profile, () => profile).IsNotNull(); - Ensure.That(profile.Languages, () => profile.Languages).HasItems(); - - _profile = profile; - } - - public int Compare(Language left, Language right) - { - int leftIndex = _profile.Languages.FindIndex(v => v.Language == left); - int rightIndex = _profile.Languages.FindIndex(v => v.Language == right); - - return leftIndex.CompareTo(rightIndex); - } - } -} diff --git a/src/NzbDrone.Core/Languages/LanguagesBelowCutoff.cs b/src/NzbDrone.Core/Languages/LanguagesBelowCutoff.cs deleted file mode 100644 index 3b04f024a..000000000 --- a/src/NzbDrone.Core/Languages/LanguagesBelowCutoff.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace NzbDrone.Core.Languages -{ - public class LanguagesBelowCutoff - { - public int ProfileId { get; set; } - public IEnumerable LanguageIds { get; set; } - - public LanguagesBelowCutoff(int profileId, IEnumerable languageIds) - { - ProfileId = profileId; - LanguageIds = languageIds; - } - } -} diff --git a/src/NzbDrone.Core/MediaFiles/AudioTag.cs b/src/NzbDrone.Core/MediaFiles/AudioTag.cs index 1da33d112..c0475a66f 100644 --- a/src/NzbDrone.Core/MediaFiles/AudioTag.cs +++ b/src/NzbDrone.Core/MediaFiles/AudioTag.cs @@ -1,6 +1,5 @@ using NzbDrone.Common.Extensions; using NzbDrone.Core.Parser.Model; -using NzbDrone.Core.Languages; using System.Linq; using System.Collections.Generic; using System; @@ -533,7 +532,6 @@ namespace NzbDrone.Core.MediaFiles if (!tag.IsValid) { return new ParsedTrackInfo { - Language = Language.English, Quality = tag.Quality ?? new QualityModel { Quality = NzbDrone.Core.Qualities.Quality.Unknown }, MediaInfo = tag.MediaInfo ?? new MediaInfoModel() }; @@ -553,7 +551,6 @@ namespace NzbDrone.Core.MediaFiles }; return new ParsedTrackInfo { - Language = Language.English, AlbumTitle = tag.Album, ArtistTitle = artist, ArtistMBId = tag.MusicBrainzReleaseArtistId, diff --git a/src/NzbDrone.Core/MediaFiles/DiskScanService.cs b/src/NzbDrone.Core/MediaFiles/DiskScanService.cs index 5817681fb..51dbec4b8 100644 --- a/src/NzbDrone.Core/MediaFiles/DiskScanService.cs +++ b/src/NzbDrone.Core/MediaFiles/DiskScanService.cs @@ -137,8 +137,7 @@ namespace NzbDrone.Core.MediaFiles Modified = decision.Item.Modified, DateAdded = DateTime.UtcNow, Quality = decision.Item.Quality, - MediaInfo = decision.Item.FileTrackInfo.MediaInfo, - Language = decision.Item.Language + MediaInfo = decision.Item.FileTrackInfo.MediaInfo }) .ToList(); _mediaFileService.AddMany(newFiles); diff --git a/src/NzbDrone.Core/MediaFiles/TrackFile.cs b/src/NzbDrone.Core/MediaFiles/TrackFile.cs index f12f693a9..2b353541f 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackFile.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackFile.cs @@ -5,7 +5,6 @@ using NzbDrone.Core.Qualities; using System; using System.Collections.Generic; using NzbDrone.Common.Extensions; -using NzbDrone.Core.Languages; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles @@ -21,7 +20,6 @@ namespace NzbDrone.Core.MediaFiles public string ReleaseGroup { get; set; } public QualityModel Quality { get; set; } public MediaInfoModel MediaInfo { get; set; } - public Language Language { get; set; } public int AlbumId { get; set; } // These are queried from the database diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Aggregation/AggregationService.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Aggregation/AggregationService.cs index aa1313bab..4659c73a2 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Aggregation/AggregationService.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Aggregation/AggregationService.cs @@ -45,7 +45,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation } localTrack.Size = _diskProvider.GetFileSize(localTrack.Path); - localTrack.Language = localTrack.FileTrackInfo.Language; foreach (var augmenter in _trackAugmenters) { diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/ImportApprovedTracks.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/ImportApprovedTracks.cs index 59cbe2bd7..74a666019 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/ImportApprovedTracks.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/ImportApprovedTracks.cs @@ -7,7 +7,6 @@ using NzbDrone.Common.Disk; using NzbDrone.Common.Extensions; using NzbDrone.Core.Download; using NzbDrone.Core.Extras; -using NzbDrone.Core.Languages; using NzbDrone.Core.MediaFiles.Events; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Music; @@ -63,7 +62,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport var qualifiedImports = decisions.Where(c => c.Approved) .GroupBy(c => c.Item.Artist.Id, (i, s) => s .OrderByDescending(c => c.Item.Quality, new QualityModelComparer(s.First().Item.Artist.QualityProfile)) - .ThenByDescending(c => c.Item.Language, new LanguageComparer(s.First().Item.Artist.LanguageProfile)) .ThenByDescending(c => c.Item.Size)) .SelectMany(c => c) .ToList(); @@ -159,7 +157,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport ReleaseGroup = localTrack.ReleaseGroup, Quality = localTrack.Quality, MediaInfo = localTrack.FileTrackInfo.MediaInfo, - Language = localTrack.Language, AlbumId = localTrack.Album.Id, Artist = localTrack.Artist, Album = localTrack.Album, diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportFile.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportFile.cs index 7525ea39f..0b991cb5c 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportFile.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportFile.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using NzbDrone.Common.Extensions; using NzbDrone.Core.Qualities; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.MediaFiles.TrackImport.Manual { @@ -15,7 +14,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual public int AlbumReleaseId { get; set; } public List TrackIds { get; set; } public QualityModel Quality { get; set; } - public Language Language { get; set; } public string DownloadId { get; set; } public bool DisableReleaseSwitching { get; set; } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportItem.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportItem.cs index 0d6cac087..cccfea18b 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportItem.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportItem.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Qualities; -using NzbDrone.Core.Languages; using NzbDrone.Core.Music; using NzbDrone.Core.Datastore; using NzbDrone.Core.Parser.Model; @@ -25,7 +24,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual public AlbumRelease Release { get; set; } public List Tracks { get; set; } public QualityModel Quality { get; set; } - public Language Language { get; set; } public string DownloadId { get; set; } public IEnumerable Rejections { get; set; } public ParsedTrackInfo Tags { get; set; } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportService.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportService.cs index d46ad1e48..4dfbe605d 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportService.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportService.cs @@ -214,7 +214,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual } item.Quality = decision.Item.Quality; - item.Language = decision.Item.Language; item.Size = _diskProvider.GetFileSize(decision.Item.Path); item.Rejections = decision.Rejections; item.Tags = decision.Item.FileTrackInfo; @@ -266,7 +265,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual Size = fileInfo.Length, Modified = fileInfo.LastWriteTimeUtc, Quality = file.Quality, - Language = file.Language, Artist = artist, Album = album, Release = release diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/AlbumUpgradeSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/AlbumUpgradeSpecification.cs index 0eba4add5..a1126f93a 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/AlbumUpgradeSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/AlbumUpgradeSpecification.cs @@ -4,7 +4,6 @@ using NLog; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications { diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/UpgradeSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/UpgradeSpecification.cs index f8b2d39d7..e749a00a5 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/UpgradeSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/UpgradeSpecification.cs @@ -4,7 +4,6 @@ using NLog; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; -using NzbDrone.Core.Languages; using NzbDrone.Core.Configuration; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -24,7 +23,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications { var downloadPropersAndRepacks = _configService.DownloadPropersAndRepacks; var qualityComparer = new QualityModelComparer(localTrack.Artist.QualityProfile); - var languageComparer = new LanguageComparer(localTrack.Artist.LanguageProfile); foreach (var track in localTrack.Tracks.Where(e => e.TrackFileId > 0)) { @@ -43,12 +41,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger.Debug("This file isn't a quality upgrade for all tracks. Skipping {0}", localTrack.Path); return Decision.Reject("Not an upgrade for existing track file(s)"); } - - if (languageComparer.Compare(localTrack.Language, trackFile.Language) < 0 && qualityCompare == 0) - { - _logger.Debug("This file isn't a language upgrade for all tracks. Skipping {0}", localTrack.Path); - return Decision.Reject("Not an upgrade for existing track file(s)"); - } } return Decision.Accept(); diff --git a/src/NzbDrone.Core/Music/AddArtistValidator.cs b/src/NzbDrone.Core/Music/AddArtistValidator.cs index 7017b9c0b..75294bf50 100644 --- a/src/NzbDrone.Core/Music/AddArtistValidator.cs +++ b/src/NzbDrone.Core/Music/AddArtistValidator.cs @@ -1,10 +1,6 @@ using FluentValidation; using FluentValidation.Results; using NzbDrone.Core.Validation.Paths; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using NzbDrone.Core.Validation; namespace NzbDrone.Core.Music @@ -20,7 +16,6 @@ namespace NzbDrone.Core.Music ArtistPathValidator artistPathValidator, ArtistAncestorValidator artistAncestorValidator, ProfileExistsValidator profileExistsValidator, - LanguageProfileExistsValidator languageProfileExistsValidator, MetadataProfileExistsValidator metadataProfileExistsValidator) { RuleFor(c => c.Path).Cascade(CascadeMode.StopOnFirstFailure) @@ -31,8 +26,6 @@ namespace NzbDrone.Core.Music RuleFor(c => c.QualityProfileId).SetValidator(profileExistsValidator); - RuleFor(c => c.LanguageProfileId).SetValidator(languageProfileExistsValidator); - RuleFor(c => c.MetadataProfileId).SetValidator(metadataProfileExistsValidator); } diff --git a/src/NzbDrone.Core/Music/AlbumCutoffService.cs b/src/NzbDrone.Core/Music/AlbumCutoffService.cs index b1ca5d3bc..879abd3d0 100644 --- a/src/NzbDrone.Core/Music/AlbumCutoffService.cs +++ b/src/NzbDrone.Core/Music/AlbumCutoffService.cs @@ -2,9 +2,7 @@ using System.Collections.Generic; using System.Linq; using NLog; using NzbDrone.Core.Datastore; -using NzbDrone.Core.Languages; using NzbDrone.Core.Profiles.Qualities; -using NzbDrone.Core.Profiles.Languages; using NzbDrone.Core.Qualities; namespace NzbDrone.Core.Music @@ -18,23 +16,19 @@ namespace NzbDrone.Core.Music { private readonly IAlbumRepository _albumRepository; private readonly IProfileService _profileService; - private readonly ILanguageProfileService _languageProfileService; private readonly Logger _logger; - public AlbumCutoffService(IAlbumRepository albumRepository, IProfileService profileService, ILanguageProfileService languageProfileService, Logger logger) + public AlbumCutoffService(IAlbumRepository albumRepository, IProfileService profileService, Logger logger) { _albumRepository = albumRepository; _profileService = profileService; - _languageProfileService = languageProfileService; _logger = logger; } public PagingSpec AlbumsWhereCutoffUnmet(PagingSpec pagingSpec) { var qualitiesBelowCutoff = new List(); - var languagesBelowCutoff = new List(); var profiles = _profileService.All(); - var languageProfiles = _languageProfileService.All(); //Get all items less than the cutoff foreach (var profile in profiles) @@ -48,18 +42,7 @@ namespace NzbDrone.Core.Music } } - foreach (var profile in languageProfiles) - { - var languageCutoffIndex = profile.Languages.FindIndex(v => v.Language == profile.Cutoff); - var belowLanguageCutoff = profile.Languages.Take(languageCutoffIndex).ToList(); - - if (belowLanguageCutoff.Any()) - { - languagesBelowCutoff.Add(new LanguagesBelowCutoff(profile.Id, belowLanguageCutoff.Select(l => l.Language.Id))); - } - } - - return _albumRepository.AlbumsWhereCutoffUnmet(pagingSpec, qualitiesBelowCutoff, languagesBelowCutoff); + return _albumRepository.AlbumsWhereCutoffUnmet(pagingSpec, qualitiesBelowCutoff); } } } diff --git a/src/NzbDrone.Core/Music/AlbumRepository.cs b/src/NzbDrone.Core/Music/AlbumRepository.cs index 7337124ef..6cb2f43d5 100644 --- a/src/NzbDrone.Core/Music/AlbumRepository.cs +++ b/src/NzbDrone.Core/Music/AlbumRepository.cs @@ -6,7 +6,6 @@ using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore.Extensions; using System.Collections.Generic; using NzbDrone.Core.Messaging.Events; -using NzbDrone.Core.Languages; using NzbDrone.Core.Qualities; using NzbDrone.Common.Extensions; @@ -20,7 +19,7 @@ namespace NzbDrone.Core.Music Album FindByTitle(int artistMetadataId, string title); Album FindById(string foreignId); PagingSpec AlbumsWithoutFiles(PagingSpec pagingSpec); - PagingSpec AlbumsWhereCutoffUnmet(PagingSpec pagingSpec, List qualitiesBelowCutoff, List languagesBelowCutoff); + PagingSpec AlbumsWhereCutoffUnmet(PagingSpec pagingSpec, List qualitiesBelowCutoff); List AlbumsBetweenDates(DateTime startDate, DateTime endDate, bool includeUnmonitored); List ArtistAlbumsBetweenDates(Artist artist, DateTime startDate, DateTime endDate, bool includeUnmonitored); void SetMonitoredFlat(Album album, bool monitored); @@ -78,11 +77,11 @@ namespace NzbDrone.Core.Music return pagingSpec; } - public PagingSpec AlbumsWhereCutoffUnmet(PagingSpec pagingSpec, List qualitiesBelowCutoff, List languagesBelowCutoff) + public PagingSpec AlbumsWhereCutoffUnmet(PagingSpec pagingSpec, List qualitiesBelowCutoff) { - pagingSpec.TotalRecords = GetCutOffAlbumsQueryCount(pagingSpec, qualitiesBelowCutoff, languagesBelowCutoff); - pagingSpec.Records = GetCutOffAlbumsQuery(pagingSpec, qualitiesBelowCutoff, languagesBelowCutoff).ToList(); + pagingSpec.TotalRecords = GetCutOffAlbumsQueryCount(pagingSpec, qualitiesBelowCutoff); + pagingSpec.Records = GetCutOffAlbumsQuery(pagingSpec, qualitiesBelowCutoff).ToList(); return pagingSpec; } @@ -199,7 +198,7 @@ namespace NzbDrone.Core.Music currentTime.ToString("yyyy-MM-dd HH:mm:ss")); } - private QueryBuilder GetCutOffAlbumsQuery(PagingSpec pagingSpec, List qualitiesBelowCutoff, List languagesBelowCutoff) + private QueryBuilder GetCutOffAlbumsQuery(PagingSpec pagingSpec, List qualitiesBelowCutoff) { string sortKey; string monitored = "(Albums.[Monitored] = 0) OR (Artists.[Monitored] = 0)"; @@ -235,11 +234,10 @@ namespace NzbDrone.Core.Music "WHERE {0} " + "AND AlbumReleases.Monitored = 1 " + "GROUP BY Albums.Id " + - "HAVING ({1} OR {2}) " + - "ORDER BY {3} {4} LIMIT {5} OFFSET {6}", + "HAVING {1} " + + "ORDER BY {2} {3} LIMIT {4} OFFSET {5}", monitored, BuildQualityCutoffWhereClause(qualitiesBelowCutoff), - BuildLanguageCutoffWhereClause(languagesBelowCutoff), sortKey, pagingSpec.ToSortDirection(), pagingSpec.PageSize, @@ -249,7 +247,7 @@ namespace NzbDrone.Core.Music } - private int GetCutOffAlbumsQueryCount(PagingSpec pagingSpec, List qualitiesBelowCutoff, List languagesBelowCutoff) + private int GetCutOffAlbumsQueryCount(PagingSpec pagingSpec, List qualitiesBelowCutoff) { var monitored = "(Albums.[Monitored] = 0) OR (Artists.[Monitored] = 0)"; @@ -267,30 +265,13 @@ namespace NzbDrone.Core.Music "WHERE {0} " + "AND AlbumReleases.Monitored = 1 " + "GROUP BY Albums.Id " + - "HAVING ({1} OR {2}) ", + "HAVING {1}", monitored, - BuildQualityCutoffWhereClause(qualitiesBelowCutoff), - BuildLanguageCutoffWhereClause(languagesBelowCutoff)); + BuildQualityCutoffWhereClause(qualitiesBelowCutoff)); return Query.QueryText(query).Count(); } - - private string BuildLanguageCutoffWhereClause(List languagesBelowCutoff) - { - var clauses = new List(); - - foreach (var language in languagesBelowCutoff) - { - foreach (var belowCutoff in language.LanguageIds) - { - clauses.Add(string.Format("(Artists.[LanguageProfileId] = {0} AND TrackFiles.[Language] = {1})", language.ProfileId, belowCutoff)); - } - } - - return string.Format("({0})", string.Join(" OR ", clauses)); - } - private string BuildQualityCutoffWhereClause(List qualitiesBelowCutoff) { var clauses = new List(); diff --git a/src/NzbDrone.Core/Music/Artist.cs b/src/NzbDrone.Core/Music/Artist.cs index 307667f4d..75d57df9f 100644 --- a/src/NzbDrone.Core/Music/Artist.cs +++ b/src/NzbDrone.Core/Music/Artist.cs @@ -2,7 +2,6 @@ using Marr.Data; using NzbDrone.Common.Extensions; using NzbDrone.Core.Datastore; using NzbDrone.Core.Profiles.Qualities; -using NzbDrone.Core.Profiles.Languages; using NzbDrone.Core.Profiles.Metadata; using System; using System.Collections.Generic; @@ -31,8 +30,6 @@ namespace NzbDrone.Core.Music public DateTime Added { get; set; } public int QualityProfileId { get; set; } public LazyLoaded QualityProfile { get; set; } - public int LanguageProfileId { get; set; } - public LazyLoaded LanguageProfile { get; set; } public int MetadataProfileId { get; set; } public LazyLoaded MetadataProfile { get; set; } public LazyLoaded> Albums { get; set; } @@ -50,7 +47,6 @@ namespace NzbDrone.Core.Music Path = otherArtist.Path; QualityProfileId = otherArtist.QualityProfileId; QualityProfile = otherArtist.QualityProfile; - LanguageProfileId = otherArtist.LanguageProfileId; MetadataProfileId = otherArtist.MetadataProfileId; Albums = otherArtist.Albums; diff --git a/src/NzbDrone.Core/Music/ArtistEditedService.cs b/src/NzbDrone.Core/Music/ArtistEditedService.cs index bf76b0bfa..a01e2cfe8 100644 --- a/src/NzbDrone.Core/Music/ArtistEditedService.cs +++ b/src/NzbDrone.Core/Music/ArtistEditedService.cs @@ -17,7 +17,7 @@ namespace NzbDrone.Core.Music public void Handle(ArtistEditedEvent message) { // Refresh Artist is we change AlbumType Preferences - if (message.Artist.LanguageProfileId != message.OldArtist.LanguageProfileId) + if (message.Artist.MetadataProfileId != message.OldArtist.MetadataProfileId) { _commandQueueManager.Push(new RefreshArtistCommand(message.Artist.Id, false)); } diff --git a/src/NzbDrone.Core/Music/RefreshAlbumService.cs b/src/NzbDrone.Core/Music/RefreshAlbumService.cs index f850a03ac..f643299c0 100644 --- a/src/NzbDrone.Core/Music/RefreshAlbumService.cs +++ b/src/NzbDrone.Core/Music/RefreshAlbumService.cs @@ -113,7 +113,6 @@ namespace NzbDrone.Core.Music Metadata = remote.ArtistMetadata.Value, MetadataProfileId = oldArtist.MetadataProfileId, QualityProfileId = oldArtist.QualityProfileId, - LanguageProfileId = oldArtist.LanguageProfileId, RootFolderPath = oldArtist.RootFolderPath, Monitored = oldArtist.Monitored, AlbumFolder = oldArtist.AlbumFolder diff --git a/src/NzbDrone.Core/Notifications/DownloadFailedMessage.cs b/src/NzbDrone.Core/Notifications/DownloadFailedMessage.cs index 3bae0e1f3..9af4d2577 100644 --- a/src/NzbDrone.Core/Notifications/DownloadFailedMessage.cs +++ b/src/NzbDrone.Core/Notifications/DownloadFailedMessage.cs @@ -1,7 +1,6 @@ using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; using NzbDrone.Core.Music; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Notifications { @@ -10,7 +9,6 @@ namespace NzbDrone.Core.Notifications public string Message { get; set; } public string SourceTitle { get; set; } public QualityModel Quality { get; set; } - public Language Language { get; set; } public string DownloadClient { get; set; } public string DownloadId { get; set; } diff --git a/src/NzbDrone.Core/Notifications/NotificationService.cs b/src/NzbDrone.Core/Notifications/NotificationService.cs index 947521120..98e57f5e3 100644 --- a/src/NzbDrone.Core/Notifications/NotificationService.cs +++ b/src/NzbDrone.Core/Notifications/NotificationService.cs @@ -224,7 +224,6 @@ namespace NzbDrone.Core.Notifications DownloadId = message.DownloadId, DownloadClient = message.DownloadClient, Quality = message.Quality, - Language = message.Language, SourceTitle = message.SourceTitle, Message = message.Message }; diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index 8722cd90c..afd98df8b 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -121,7 +121,6 @@ - @@ -172,6 +171,7 @@ + @@ -212,7 +212,6 @@ - @@ -509,7 +508,6 @@ - @@ -692,9 +690,6 @@ - - - @@ -1008,7 +1003,6 @@ - @@ -1020,11 +1014,6 @@ - - - - - @@ -1221,7 +1210,6 @@ - diff --git a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs index 68e360832..15d1966ed 100644 --- a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs +++ b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs @@ -356,34 +356,6 @@ namespace NzbDrone.Core.Organizer tokenHandlers["{Preferred Words}"] = m => string.Join(" ", preferredWords); } - - private string GetLanguagesToken(string mediaInfoLanguages) - { - List tokens = new List(); - foreach (var item in mediaInfoLanguages.Split('/')) - { - if (!string.IsNullOrWhiteSpace(item)) - tokens.Add(item.Trim()); - } - - var cultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.NeutralCultures); - for (int i = 0; i < tokens.Count; i++) - { - try - { - var cultureInfo = cultures.FirstOrDefault(p => p.EnglishName == tokens[i]); - - if (cultureInfo != null) - tokens[i] = cultureInfo.TwoLetterISOLanguageName.ToUpper(); - } - catch - { - } - } - - return string.Join("+", tokens.Distinct()); - } - private string ReplaceTokens(string pattern, Dictionary> tokenHandlers, NamingConfig namingConfig) { return TitleRegex.Replace(pattern, match => ReplaceToken(match, tokenHandlers, namingConfig)); diff --git a/src/NzbDrone.Core/Parser/IsoCountries.cs b/src/NzbDrone.Core/Parser/IsoCountries.cs index a789103ff..2f207be28 100644 --- a/src/NzbDrone.Core/Parser/IsoCountries.cs +++ b/src/NzbDrone.Core/Parser/IsoCountries.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Linq; using NzbDrone.Common.Extensions; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Parser { diff --git a/src/NzbDrone.Core/Parser/IsoLanguage.cs b/src/NzbDrone.Core/Parser/IsoLanguage.cs index c21ba27a7..3a4bbd502 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguage.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguage.cs @@ -1,4 +1,3 @@ -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Parser { @@ -6,13 +5,11 @@ namespace NzbDrone.Core.Parser { public string TwoLetterCode { get; set; } public string ThreeLetterCode { get; set; } - public Language Language { get; set; } - public IsoLanguage(string twoLetterCode, string threeLetterCode, Language language) + public IsoLanguage(string twoLetterCode, string threeLetterCode) { TwoLetterCode = twoLetterCode; ThreeLetterCode = threeLetterCode; - Language = language; } } } diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index d82fd3c80..b961b5ecb 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Linq; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Parser { @@ -8,28 +7,28 @@ namespace NzbDrone.Core.Parser { private static readonly HashSet All = new HashSet { - new IsoLanguage("en", "eng", Language.English), - new IsoLanguage("fr", "fra", Language.French), - new IsoLanguage("es", "spa", Language.Spanish), - new IsoLanguage("de", "deu", Language.German), - new IsoLanguage("it", "ita", Language.Italian), - new IsoLanguage("da", "dan", Language.Danish), - new IsoLanguage("nl", "nld", Language.Dutch), - new IsoLanguage("ja", "jpn", Language.Japanese), -// new IsoLanguage("", "", Language.Cantonese), -// new IsoLanguage("", "", Language.Mandarin), - new IsoLanguage("ru", "rus", Language.Russian), - new IsoLanguage("pl", "pol", Language.Polish), - new IsoLanguage("vi", "vie", Language.Vietnamese), - new IsoLanguage("sv", "swe", Language.Swedish), - new IsoLanguage("no", "nor", Language.Norwegian), - new IsoLanguage("fi", "fin", Language.Finnish), - new IsoLanguage("tr", "tur", Language.Turkish), - new IsoLanguage("pt", "por", Language.Portuguese), -// new IsoLanguage("nl", "nld", Language.Flemish), - new IsoLanguage("el", "ell", Language.Greek), - new IsoLanguage("ko", "kor", Language.Korean), - new IsoLanguage("hu", "hun", Language.Hungarian) + new IsoLanguage("en", "eng"), + new IsoLanguage("fr", "fra"), + new IsoLanguage("es", "spa"), + new IsoLanguage("de", "deu"), + new IsoLanguage("it", "ita"), + new IsoLanguage("da", "dan"), + new IsoLanguage("nl", "nld"), + new IsoLanguage("ja", "jpn"), +// new IsoLanguage("", ""), +// new IsoLanguage("", ""), + new IsoLanguage("ru", "rus"), + new IsoLanguage("pl", "pol"), + new IsoLanguage("vi", "vie"), + new IsoLanguage("sv", "swe"), + new IsoLanguage("no", "nor"), + new IsoLanguage("fi", "fin"), + new IsoLanguage("tr", "tur"), + new IsoLanguage("pt", "por"), +// new IsoLanguage("nl", "nld"), + new IsoLanguage("el", "ell"), + new IsoLanguage("ko", "kor"), + new IsoLanguage("hu", "hun") }; public static IsoLanguage Find(string isoCode) @@ -47,10 +46,5 @@ namespace NzbDrone.Core.Parser return null; } - - public static IsoLanguage Get(Language language) - { - return All.SingleOrDefault(l => l.Language == language); - } } } diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs deleted file mode 100644 index 2fd2f2935..000000000 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Text.RegularExpressions; -using NLog; -using NzbDrone.Common.Instrumentation; -using NzbDrone.Core.Languages; - -namespace NzbDrone.Core.Parser -{ - public static class LanguageParser - { - private static readonly Logger Logger = NzbDroneLogger.GetLogger(typeof(LanguageParser)); - - private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?\b(?:ita|italian)\b)|(?german\b|videomann)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VOSTFR)(?:\W|_))|(?\brus\b)|(?nl\W?subs?)|(?\b(?:HUNDUB|HUN)\b)", - RegexOptions.IgnoreCase | RegexOptions.Compiled); - - private static readonly Regex SubtitleLanguageRegex = new Regex(".+?[-_. ](?[a-z]{2,3})$", RegexOptions.Compiled | RegexOptions.IgnoreCase); - - public static Language ParseLanguage(string title) - { - var lowerTitle = title.ToLower(); - - if (lowerTitle.Contains("english")) - return Language.English; - - if (lowerTitle.Contains("french")) - return Language.French; - - if (lowerTitle.Contains("spanish")) - return Language.Spanish; - - if (lowerTitle.Contains("danish")) - return Language.Danish; - - if (lowerTitle.Contains("dutch")) - return Language.Dutch; - - if (lowerTitle.Contains("japanese")) - return Language.Japanese; - - if (lowerTitle.Contains("cantonese")) - return Language.Cantonese; - - if (lowerTitle.Contains("mandarin")) - return Language.Mandarin; - - if (lowerTitle.Contains("korean")) - return Language.Korean; - - if (lowerTitle.Contains("russian")) - return Language.Russian; - - if (lowerTitle.Contains("polish")) - return Language.Polish; - - if (lowerTitle.Contains("vietnamese")) - return Language.Vietnamese; - - if (lowerTitle.Contains("swedish")) - return Language.Swedish; - - if (lowerTitle.Contains("norwegian")) - return Language.Norwegian; - - if (lowerTitle.Contains("nordic")) - return Language.Norwegian; - - if (lowerTitle.Contains("finnish")) - return Language.Finnish; - - if (lowerTitle.Contains("turkish")) - return Language.Turkish; - - if (lowerTitle.Contains("portuguese")) - return Language.Portuguese; - - if (lowerTitle.Contains("hungarian")) - return Language.Hungarian; - - var match = LanguageRegex.Match(title); - - if (match.Groups["italian"].Captures.Cast().Any()) - return Language.Italian; - - if (match.Groups["german"].Captures.Cast().Any()) - return Language.German; - - if (match.Groups["flemish"].Captures.Cast().Any()) - return Language.Flemish; - - if (match.Groups["greek"].Captures.Cast().Any()) - return Language.Greek; - - if (match.Groups["french"].Success) - return Language.French; - - if (match.Groups["russian"].Success) - return Language.Russian; - - if (match.Groups["dutch"].Success) - return Language.Dutch; - - if (match.Groups["hungarian"].Success) - return Language.Hungarian; - - return Language.English; - } - - public static Language ParseSubtitleLanguage(string fileName) - { - try - { - Logger.Debug("Parsing language from subtitle file: {0}", fileName); - - var simpleFilename = Path.GetFileNameWithoutExtension(fileName); - var languageMatch = SubtitleLanguageRegex.Match(simpleFilename); - - if (languageMatch.Success) - { - var isoCode = languageMatch.Groups["iso_code"].Value; - var isoLanguage = IsoLanguages.Find(isoCode); - - return isoLanguage?.Language ?? Language.Unknown; - } - - foreach (Language language in Enum.GetValues(typeof(Language))) - { - if (simpleFilename.EndsWith(language.ToString(), StringComparison.OrdinalIgnoreCase)) - { - return language; - } - } - - Logger.Debug("Unable to parse language from subtitle file: {0}", fileName); - } - catch (Exception ex) - { - Logger.Debug(ex, "Failed parsing language from subtitle file: {0}", fileName); - } - - return Language.Unknown; - } - } -} diff --git a/src/NzbDrone.Core/Parser/Model/LocalTrack.cs b/src/NzbDrone.Core/Parser/Model/LocalTrack.cs index 50a4f205d..edc7ff3dc 100644 --- a/src/NzbDrone.Core/Parser/Model/LocalTrack.cs +++ b/src/NzbDrone.Core/Parser/Model/LocalTrack.cs @@ -1,7 +1,6 @@ using NzbDrone.Core.Music; using NzbDrone.Core.Qualities; using System.Collections.Generic; -using NzbDrone.Core.Languages; using NzbDrone.Core.MediaFiles.TrackImport.Identification; using System; @@ -27,7 +26,6 @@ namespace NzbDrone.Core.Parser.Model public List Tracks { get; set; } public Distance Distance { get; set; } public QualityModel Quality { get; set; } - public Language Language { get; set; } public bool ExistingFile { get; set; } public bool AdditionalFile { get; set; } public bool SceneSource { get; set; } diff --git a/src/NzbDrone.Core/Parser/Model/ParsedAlbumInfo.cs b/src/NzbDrone.Core/Parser/Model/ParsedAlbumInfo.cs index c87cf3c35..d54705e79 100644 --- a/src/NzbDrone.Core/Parser/Model/ParsedAlbumInfo.cs +++ b/src/NzbDrone.Core/Parser/Model/ParsedAlbumInfo.cs @@ -4,7 +4,6 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Parser.Model { @@ -18,7 +17,6 @@ namespace NzbDrone.Core.Parser.Model public bool Discography { get; set; } public int DiscographyStart { get; set; } public int DiscographyEnd { get; set; } - public Language Language { get; set; } public string ReleaseGroup { get; set; } public string ReleaseHash { get; set; } public string ReleaseVersion { get; set; } diff --git a/src/NzbDrone.Core/Parser/Model/ParsedTrackInfo.cs b/src/NzbDrone.Core/Parser/Model/ParsedTrackInfo.cs index 98a92d1ff..86819329f 100644 --- a/src/NzbDrone.Core/Parser/Model/ParsedTrackInfo.cs +++ b/src/NzbDrone.Core/Parser/Model/ParsedTrackInfo.cs @@ -1,7 +1,6 @@ using NzbDrone.Core.Qualities; using System; using System.Linq; -using NzbDrone.Core.Languages; namespace NzbDrone.Core.Parser.Model { @@ -29,7 +28,6 @@ namespace NzbDrone.Core.Parser.Model public QualityModel Quality { get; set; } public MediaInfoModel MediaInfo { get; set; } public int[] TrackNumbers { get; set; } - public Language Language { get; set; } public string ReleaseGroup { get; set; } public string ReleaseHash { get; set; } diff --git a/src/NzbDrone.Core/Parser/Parser.cs b/src/NzbDrone.Core/Parser/Parser.cs index da7476405..307f5860d 100644 --- a/src/NzbDrone.Core/Parser/Parser.cs +++ b/src/NzbDrone.Core/Parser/Parser.cs @@ -337,9 +337,6 @@ namespace NzbDrone.Core.Parser if (result != null) { - result.Language = LanguageParser.ParseLanguage(releaseTitle); - Logger.Debug("Language parsed: {0}", result.Language); - result.Quality = QualityParser.ParseQuality(title, null, 0); Logger.Debug("Quality parsed: {0}", result.Quality); @@ -429,9 +426,6 @@ namespace NzbDrone.Core.Parser if (result != null) { - result.Language = LanguageParser.ParseLanguage(releaseTitle); - Logger.Debug("Language parsed: {0}", result.Language); - result.Quality = QualityParser.ParseQuality(title, null, 0); Logger.Debug("Quality parsed: {0}", result.Quality); diff --git a/src/NzbDrone.Core/Profiles/Languages/LanguageProfile.cs b/src/NzbDrone.Core/Profiles/Languages/LanguageProfile.cs deleted file mode 100644 index b412930d1..000000000 --- a/src/NzbDrone.Core/Profiles/Languages/LanguageProfile.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using NzbDrone.Core.Datastore; -using NzbDrone.Core.Languages; - -namespace NzbDrone.Core.Profiles.Languages -{ - public class LanguageProfile : ModelBase - { - public string Name { get; set; } - public List Languages { get; set; } - public bool UpgradeAllowed { get; set; } - public Language Cutoff { get; set; } - - public Language LastAllowedLanguage() - { - return Languages.Last(q => q.Allowed).Language; - } - } -} diff --git a/src/NzbDrone.Core/Profiles/Languages/LanguageProfileInUseException.cs b/src/NzbDrone.Core/Profiles/Languages/LanguageProfileInUseException.cs deleted file mode 100644 index b64f804a7..000000000 --- a/src/NzbDrone.Core/Profiles/Languages/LanguageProfileInUseException.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Net; -using NzbDrone.Core.Exceptions; - -namespace NzbDrone.Core.Profiles.Languages -{ - public class LanguageProfileInUseException : NzbDroneClientException - { - public LanguageProfileInUseException(string name) - : base(HttpStatusCode.BadRequest, "Language profile [{0}] is in use.", name) - { - - } - } -} diff --git a/src/NzbDrone.Core/Profiles/Languages/LanguageProfileItem.cs b/src/NzbDrone.Core/Profiles/Languages/LanguageProfileItem.cs deleted file mode 100644 index 6826c002e..000000000 --- a/src/NzbDrone.Core/Profiles/Languages/LanguageProfileItem.cs +++ /dev/null @@ -1,11 +0,0 @@ -using NzbDrone.Core.Datastore; -using NzbDrone.Core.Languages; - -namespace NzbDrone.Core.Profiles.Languages -{ - public class LanguageProfileItem : IEmbeddedDocument - { - public Language Language { get; set; } - public bool Allowed { get; set; } - } -} diff --git a/src/NzbDrone.Core/Profiles/Languages/LanguageProfileRepository.cs b/src/NzbDrone.Core/Profiles/Languages/LanguageProfileRepository.cs deleted file mode 100644 index 797c14efe..000000000 --- a/src/NzbDrone.Core/Profiles/Languages/LanguageProfileRepository.cs +++ /dev/null @@ -1,23 +0,0 @@ -using NzbDrone.Core.Datastore; -using NzbDrone.Core.Messaging.Events; - -namespace NzbDrone.Core.Profiles.Languages -{ - public interface ILanguageProfileRepository : IBasicRepository - { - bool Exists(int id); - } - - public class LanguageProfileRepository : BasicRepository, ILanguageProfileRepository - { - public LanguageProfileRepository(IMainDatabase database, IEventAggregator eventAggregator) - : base(database, eventAggregator) - { - } - - public bool Exists(int id) - { - return DataMapper.Query().Where(p => p.Id == id).GetRowCount() == 1; - } - } -} diff --git a/src/NzbDrone.Core/Profiles/Languages/LanguageProfileService.cs b/src/NzbDrone.Core/Profiles/Languages/LanguageProfileService.cs deleted file mode 100644 index 0967e7098..000000000 --- a/src/NzbDrone.Core/Profiles/Languages/LanguageProfileService.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using NLog; -using NzbDrone.Core.ImportLists; -using NzbDrone.Core.Lifecycle; -using NzbDrone.Core.Messaging.Events; -using NzbDrone.Core.Languages; -using NzbDrone.Core.Music; - -namespace NzbDrone.Core.Profiles.Languages -{ - public interface ILanguageProfileService - { - LanguageProfile Add(LanguageProfile profile); - void Update(LanguageProfile profile); - void Delete(int id); - List All(); - LanguageProfile Get(int id); - bool Exists(int id); - LanguageProfile GetDefaultProfile(string name, Language cutoff = null, params Language[] allowed); - } - - public class LanguageProfileService : ILanguageProfileService, IHandle - { - private readonly ILanguageProfileRepository _profileRepository; - private readonly IArtistService _artistService; - private readonly IImportListFactory _importListFactory; - private readonly Logger _logger; - - public LanguageProfileService(ILanguageProfileRepository profileRepository, IArtistService artistService, IImportListFactory importListFactory, Logger logger) - { - _profileRepository = profileRepository; - _artistService = artistService; - _importListFactory = importListFactory; - _logger = logger; - } - - public LanguageProfile Add(LanguageProfile profile) - { - return _profileRepository.Insert(profile); - } - - public void Update(LanguageProfile profile) - { - _profileRepository.Update(profile); - } - - public void Delete(int id) - { - if (_artistService.GetAllArtists().Any(c => c.LanguageProfileId == id) || _importListFactory.All().Any(c => c.LanguageProfileId == id)) - { - var profile = _profileRepository.Get(id); - throw new LanguageProfileInUseException(profile.Name); - } - - _profileRepository.Delete(id); - } - - public List All() - { - return _profileRepository.All().ToList(); - } - - public LanguageProfile Get(int id) - { - return _profileRepository.Get(id); - } - - public bool Exists(int id) - { - return _profileRepository.Exists(id); - } - - public LanguageProfile GetDefaultProfile(string name, Language cutoff = null, params Language[] allowed) - { - var orderedLanguages = Language.All - .Where(l => l != Language.Unknown) - .OrderByDescending(l => l.Name) - .ToList(); - - orderedLanguages.Insert(0, Language.Unknown); - - var languages = orderedLanguages.Select(v => new LanguageProfileItem { Language = v, Allowed = false }) - .ToList(); - - return new LanguageProfile - { - Cutoff = Language.Unknown, - Languages = languages - }; - } - - private LanguageProfile AddDefaultProfile(string name, Language cutoff, params Language[] allowed) - { - var languages = Language.All - .OrderByDescending(l => l.Name) - .Select(v => new LanguageProfileItem { Language = v, Allowed = allowed.Contains(v) }) - .ToList(); - - var profile = new LanguageProfile - { - Name = name, - Cutoff = cutoff, - Languages = languages, - }; - - return Add(profile); - } - - public void Handle(ApplicationStartedEvent message) - { - if (All().Any()) return; - - _logger.Info("Setting up default language profiles"); - - AddDefaultProfile("English", Language.English, Language.English); - } - } -} diff --git a/src/NzbDrone.Core/Queue/Queue.cs b/src/NzbDrone.Core/Queue/Queue.cs index f8c84c0d0..7c5ca327a 100644 --- a/src/NzbDrone.Core/Queue/Queue.cs +++ b/src/NzbDrone.Core/Queue/Queue.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using NzbDrone.Core.Datastore; using NzbDrone.Core.Download.TrackedDownloads; using NzbDrone.Core.Indexers; -using NzbDrone.Core.Languages; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; using NzbDrone.Core.Music; @@ -14,7 +13,6 @@ namespace NzbDrone.Core.Queue { public Artist Artist { get; set; } public Album Album { get; set; } - public Language Language { get; set; } public QualityModel Quality { get; set; } public decimal Size { get; set; } public string Title { get; set; } diff --git a/src/NzbDrone.Core/Queue/QueueService.cs b/src/NzbDrone.Core/Queue/QueueService.cs index 846d82645..e14ed2610 100644 --- a/src/NzbDrone.Core/Queue/QueueService.cs +++ b/src/NzbDrone.Core/Queue/QueueService.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using NzbDrone.Common.Crypto; using NzbDrone.Core.Download.TrackedDownloads; -using NzbDrone.Core.Languages; using NzbDrone.Core.History; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Qualities; @@ -74,7 +73,6 @@ namespace NzbDrone.Core.Queue { Artist = trackedDownload.RemoteAlbum?.Artist, Album = album, - Language = trackedDownload.RemoteAlbum?.ParsedAlbumInfo.Language ?? Language.Unknown, Quality = trackedDownload.RemoteAlbum?.ParsedAlbumInfo.Quality ?? new QualityModel(Quality.Unknown), Title = Parser.Parser.RemoveFileExtension(trackedDownload.DownloadItem.Title), Size = trackedDownload.DownloadItem.TotalSize, diff --git a/src/NzbDrone.Core/Validation/LanguageProfileExistsValidator.cs b/src/NzbDrone.Core/Validation/LanguageProfileExistsValidator.cs deleted file mode 100644 index 90450e3e5..000000000 --- a/src/NzbDrone.Core/Validation/LanguageProfileExistsValidator.cs +++ /dev/null @@ -1,23 +0,0 @@ -using FluentValidation.Validators; -using NzbDrone.Core.Profiles.Languages; - -namespace NzbDrone.Core.Validation -{ - public class LanguageProfileExistsValidator : PropertyValidator - { - private readonly ILanguageProfileService _profileService; - - public LanguageProfileExistsValidator(ILanguageProfileService profileService) - : base("Language profile does not exist") - { - _profileService = profileService; - } - - protected override bool IsValid(PropertyValidatorContext context) - { - if (context.PropertyValue == null) return true; - - return _profileService.Exists((int)context.PropertyValue); - } - } -} \ No newline at end of file diff --git a/src/NzbDrone.Integration.Test/ApiTests/ArtistEditorFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/ArtistEditorFixture.cs index 3d0e4e730..d683b304e 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/ArtistEditorFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/ArtistEditorFixture.cs @@ -16,7 +16,6 @@ namespace NzbDrone.Integration.Test.ApiTests var newArtist = Artist.Lookup(name).First(); newArtist.QualityProfileId = 1; - newArtist.LanguageProfileId = 1; newArtist.MetadataProfileId = 1; newArtist.Path = string.Format(@"C:\Test\{0}", name).AsOsAgnostic(); diff --git a/src/NzbDrone.Integration.Test/ApiTests/ArtistFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/ArtistFixture.cs index 383bf5d15..df7b29013 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/ArtistFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/ArtistFixture.cs @@ -18,7 +18,6 @@ namespace NzbDrone.Integration.Test.ApiTests var artist = Artist.Lookup("lidarr:f59c5520-5f46-4d2c-b2c4-822eabf53419").Single(); artist.QualityProfileId = 1; - artist.LanguageProfileId = 1; artist.MetadataProfileId = 1; artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName); artist.Tags = new HashSet(); @@ -50,7 +49,6 @@ namespace NzbDrone.Integration.Test.ApiTests var artist = Artist.Lookup("lidarr:f59c5520-5f46-4d2c-b2c4-822eabf53419").Single(); artist.QualityProfileId = 1; - artist.LanguageProfileId = 1; Artist.InvalidPost(artist); } @@ -63,7 +61,6 @@ namespace NzbDrone.Integration.Test.ApiTests var artist = Artist.Lookup("lidarr:f59c5520-5f46-4d2c-b2c4-822eabf53419").Single(); artist.QualityProfileId = 1; - artist.LanguageProfileId = 1; artist.MetadataProfileId = 1; artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName); @@ -72,7 +69,6 @@ namespace NzbDrone.Integration.Test.ApiTests result.Should().NotBeNull(); result.Id.Should().NotBe(0); result.QualityProfileId.Should().Be(1); - result.LanguageProfileId.Should().Be(1); result.MetadataProfileId.Should().Be(1); result.Path.Should().Be(Path.Combine(ArtistRootFolder, artist.ArtistName)); } @@ -119,7 +115,6 @@ namespace NzbDrone.Integration.Test.ApiTests } artist.QualityProfileId = profileId; - artist.LanguageProfileId = profileId; var result = Artist.Put(artist); diff --git a/src/NzbDrone.Integration.Test/IntegrationTestBase.cs b/src/NzbDrone.Integration.Test/IntegrationTestBase.cs index 1bb66bacc..66a663e5f 100644 --- a/src/NzbDrone.Integration.Test/IntegrationTestBase.cs +++ b/src/NzbDrone.Integration.Test/IntegrationTestBase.cs @@ -216,7 +216,6 @@ namespace NzbDrone.Integration.Test var lookup = Artist.Lookup("lidarr:" + lidarrId); var artist = lookup.First(); artist.QualityProfileId = 1; - artist.LanguageProfileId = 1; artist.MetadataProfileId = 1; artist.Path = Path.Combine(ArtistRootFolder, artist.ArtistName); artist.Monitored = true;