Support for Artist Disambiguation and Type

pull/6/head
Qstick 7 years ago
parent 6e4638f7b1
commit ed3b47d76a

@ -48,7 +48,8 @@ class AddNewArtistSearchResult extends Component {
artistName,
nameSlug,
year,
network,
disambiguation,
artistType,
status,
overview,
albumCount,
@ -59,10 +60,10 @@ class AddNewArtistSearchResult extends Component {
} = this.props;
const linkProps = isExistingArtist ? { to: `/artist/${nameSlug}` } : { onPress: this.onPress };
let seasons = '1 Season';
let albums = '1 Album';
if (albumCount > 1) {
seasons = `${albumCount} Seasons`;
albums = `${albumCount} Albums`;
}
return (
@ -88,6 +89,11 @@ class AddNewArtistSearchResult extends Component {
<span className={styles.year}>({year})</span>
}
{
!!disambiguation &&
<span className={styles.year}>({disambiguation})</span>
}
{
isExistingArtist &&
<Icon
@ -108,16 +114,16 @@ class AddNewArtistSearchResult extends Component {
</Label>
{
!!network &&
!!artistType &&
<Label size={sizes.LARGE}>
{network}
{artistType}
</Label>
}
{
!!albumCount &&
<Label size={sizes.LARGE}>
{seasons}
{albums}
</Label>
}
@ -156,7 +162,8 @@ AddNewArtistSearchResult.propTypes = {
artistName: PropTypes.string.isRequired,
nameSlug: PropTypes.string.isRequired,
year: PropTypes.number,
network: PropTypes.string,
disambiguation: PropTypes.string,
artistType: PropTypes.string,
status: PropTypes.string.isRequired,
overview: PropTypes.string,
albumCount: PropTypes.number,

@ -7,7 +7,7 @@
margin-right: 5px;
}
.overview {
.disambiguation {
margin-right: 5px;
color: $disabledColor;
}

@ -7,6 +7,7 @@ import styles from './ImportArtistName.css';
function ImportArtistName(props) {
const {
artistName,
disambiguation,
// year,
isExistingArtist
} = props;
@ -16,6 +17,9 @@ function ImportArtistName(props) {
<div className={styles.artistName}>
{artistName}
</div>
<div className={styles.disambiguation}>
{disambiguation}
</div>
{
isExistingArtist &&
@ -31,6 +35,7 @@ function ImportArtistName(props) {
ImportArtistName.propTypes = {
artistName: PropTypes.string.isRequired,
disambiguation: PropTypes.string,
// year: PropTypes.number.isRequired,
isExistingArtist: PropTypes.bool.isRequired
};

@ -19,7 +19,7 @@ class ImportArtistSearchResult extends Component {
render() {
const {
artistName,
// overview,
disambiguation,
// year,
isExistingArtist
} = this.props;
@ -31,7 +31,7 @@ class ImportArtistSearchResult extends Component {
>
<ImportArtistName
artistName={artistName}
// overview={overview}
disambiguation={disambiguation}
// year={year}
isExistingArtist={isExistingArtist}
/>
@ -43,7 +43,7 @@ class ImportArtistSearchResult extends Component {
ImportArtistSearchResult.propTypes = {
foreignArtistId: PropTypes.string.isRequired,
artistName: PropTypes.string.isRequired,
// overview: PropTypes.string.isRequired,
disambiguation: PropTypes.string,
// year: PropTypes.number.isRequired,
isExistingArtist: PropTypes.bool.isRequired,
onPress: PropTypes.func.isRequired

@ -158,7 +158,7 @@ class ImportArtistSelectArtist extends Component {
isPopulated && selectedArtist &&
<ImportArtistName
artistName={selectedArtist.artistName}
overview={selectedArtist.overview}
disambiguation={selectedArtist.disambiguation}
// year={selectedArtist.year}
isExistingArtist={isExistingArtist}
/>
@ -229,7 +229,7 @@ class ImportArtistSelectArtist extends Component {
key={item.foreignArtistId}
foreignArtistId={item.foreignArtistId}
artistName={item.artistName}
// overview={item.overview}
disambiguation={item.disambiguation}
// year={item.year}
onPress={this.onArtistSelect}
/>

@ -24,6 +24,15 @@ function ArtistIndexSortMenu(props) {
Name
</SortMenuItem>
<SortMenuItem
name="artistType"
sortKey={sortKey}
sortDirection={sortDirection}
onPress={onSortSelect}
>
Type
</SortMenuItem>
<SortMenuItem
name="qualityProfileId"
sortKey={sortKey}

@ -38,6 +38,7 @@
flex: 0 0 150px;
}
.artistType,
.trackCount {
composes: headerCell from 'Components/Table/VirtualTableHeaderCell.css';

@ -41,6 +41,7 @@
flex-direction: column;
}
.artistType,
.trackCount {
composes: cell from 'Components/Table/Cells/VirtualTableRowCell.css';

@ -66,6 +66,7 @@ class ArtistIndexRow extends Component {
status,
artistName,
nameSlug,
artistType,
qualityProfile,
languageProfile,
nextAiring,
@ -129,6 +130,17 @@ class ArtistIndexRow extends Component {
);
}
if (name === 'artistType') {
return (
<VirtualTableRowCell
key={name}
className={styles[name]}
>
{artistType}
</VirtualTableRowCell>
);
}
if (name === 'qualityProfileId') {
return (
<VirtualTableRowCell
@ -282,23 +294,6 @@ class ArtistIndexRow extends Component {
);
}
// if (name === 'useSceneNumbering') {
// return (
// <VirtualTableRowCell
// key={name}
// className={styles[name]}
// >
// <CheckInput
// className={styles.checkInput}
// name="useSceneNumbering"
// value={useSceneNumbering}
// isDisabled={true}
// onChange={this.onUseSceneNumberingChange}
// />
// </VirtualTableRowCell>
// );
// }
if (name === 'actions') {
return (
<VirtualTableRowCell
@ -349,6 +344,7 @@ ArtistIndexRow.propTypes = {
status: PropTypes.string.isRequired,
artistName: PropTypes.string.isRequired,
nameSlug: PropTypes.string.isRequired,
artistType: PropTypes.string,
qualityProfile: PropTypes.object.isRequired,
languageProfile: PropTypes.object.isRequired,
nextAiring: PropTypes.string,

@ -45,6 +45,13 @@ export const defaultState = {
isVisible: true,
isModifiable: false
},
{
name: 'artistType',
label: 'Type',
isSortable: true,
isVisible: true,
isModifiable: false
},
{
name: 'qualityProfileId',
label: 'Quality Profile',

@ -6,7 +6,7 @@ function getNewSeries(series, payload) {
monitor,
qualityProfileId,
languageProfileId,
// seriesType,
artistType,
albumFolder,
tags,
searchForMissingAlbums = false
@ -24,7 +24,7 @@ function getNewSeries(series, payload) {
series.qualityProfileId = qualityProfileId;
series.languageProfileId = languageProfileId;
series.rootFolderPath = rootFolderPath;
// series.seriesType = seriesType;
series.artistType = artistType;
series.albumFolder = albumFolder;
series.tags = tags;

@ -14,65 +14,11 @@ namespace Lidarr.Api.V3.Artist
//Todo: Is there an easy way to keep IgnoreArticlesWhenSorting in sync between, Series, History, Missing?
//Todo: We should get the entire Profile instead of ID and Name separately
////View Only
//public string Title { get; set; }
////public List<AlternateTitleResource> AlternateTitles { get; set; }
//public string SortTitle { get; set; }
//public int SeasonCount
//{
// get
// {
// if (Seasons == null) return 0;
// return Seasons.Where(s => s.SeasonNumber > 0).Count();
// }
//}
//public int? TotalEpisodeCount { get; set; }
//public int? EpisodeCount { get; set; }
//public int? EpisodeFileCount { get; set; }
//public long? SizeOnDisk { get; set; }
//// V3: replace with Ended
public ArtistStatusType Status { get; set; }
public bool Ended => Status == ArtistStatusType.Ended;
//public string ProfileName { get; set; }
//public string Overview { get; set; }
//public DateTime? NextAiring { get; set; }
//public DateTime? PreviousAiring { get; set; }
//public string Network { get; set; }
//public string AirTime { get; set; }
//public List<MediaCover> Images { get; set; }
//public string RemotePoster { get; set; }
//public int Year { get; set; }
////View & Edit
//public string Path { get; set; }
//public int QualityProfileId { get; set; }
//public int LanguageProfileId { get; set; }
////Editing Only
//public bool SeasonFolder { get; set; }
//public bool Monitored { get; set; }
//public DateTime? FirstAired { get; set; }
public DateTime? LastInfoSync { get; set; }
////public SeriesTypes SeriesType { get; set; }
//public string CleanTitle { get; set; }
//public string ImdbId { get; set; }
//public string TitleSlug { get; set; }
//public string RootFolderPath { get; set; }
//public string Certification { get; set; }
//public List<string> Genres { get; set; }
//public HashSet<int> Tags { get; set; }
//public DateTime Added { get; set; }
//public AddSeriesOptions AddOptions { get; set; }
//public Ratings Ratings { get; set; }
public string ArtistName { get; set; }
public string ForeignArtistId { get; set; }
@ -81,6 +27,8 @@ namespace Lidarr.Api.V3.Artist
public int DiscogsId { get; set; }
public string AllMusicId { get; set; }
public string Overview { get; set; }
public string ArtistType { get; set; }
public string Disambiguation { get; set; }
public List<Links> Links { get; set; }
public int? AlbumCount { get; set; }
@ -136,10 +84,9 @@ namespace Lidarr.Api.V3.Artist
Status = model.Status,
Overview = model.Overview,
//NextAiring
//PreviousAiring
//Network = model.Network,
//AirTime = model.AirTime,
ArtistType = model.ArtistType,
Disambiguation = model.Disambiguation,
Images = model.Images,
Albums = model.Albums.ToResource(),

@ -0,0 +1,21 @@
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(119)]
public class artist_type : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
Alter.Table("Artists")
.AddColumn("ArtistType").AsString().Nullable()
.AddColumn("Disambiguation").AsString().Nullable();
}
}
}

@ -14,6 +14,8 @@ namespace NzbDrone.Core.MetadataSource.SkyHook.Resource
public List<string> Genres { get; set; }
public string AristUrl { get; set; }
public string Overview { get; set; }
public string Type { get; set; }
public string Disambiguation { get; set; }
public string Id { get; set; }
public List<ImageResource> Images { get; set; }
public List<LinkResource> Links { get; set; }

@ -176,7 +176,9 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
artist.Overview = resource.Overview;
artist.NameSlug = Parser.Parser.CleanArtistTitle(artist.Name);
artist.CleanName = Parser.Parser.CleanArtistTitle(artist.Name);
artist.SortName = SeriesTitleNormalizer.Normalize(artist.Name, 0);
artist.SortName = Parser.Parser.NormalizeTitle(artist.Name);
artist.Disambiguation = resource.Disambiguation;
artist.ArtistType = resource.Type;
artist.Images = resource.Images.Select(MapImage).ToList();
artist.Status = MapArtistStatus(resource.Status);
artist.Ratings = MapRatings(resource.Rating);

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

@ -34,6 +34,8 @@ namespace NzbDrone.Core.Music
public string CleanName { get; set; }
public string SortName { get; set; }
public string Overview { get; set; }
public string Disambiguation { get; set; }
public string ArtistType { get; set; }
public bool Monitored { get; set; }
public bool AlbumFolder { get; set; }
public DateTime? LastInfoSync { get; set; }

@ -80,6 +80,8 @@ namespace NzbDrone.Core.Music
artist.Images = artistInfo.Images;
artist.Genres = artistInfo.Genres;
artist.Links = artistInfo.Links;
artist.Disambiguation = artistInfo.Disambiguation;
artist.ArtistType = artistInfo.ArtistType;
try
{

@ -293,6 +293,7 @@
</Compile>
<Compile Include="Datastore\Migration\105_rename_torrent_downloadstation.cs" />
<Compile Include="Datastore\Migration\111_create_language_profiles.cs" />
<Compile Include="Datastore\Migration\119_artist_type.cs" />
<Compile Include="Datastore\Migration\118_history_trackid.cs" />
<Compile Include="Datastore\Migration\117_artist_links.cs" />
<Compile Include="Datastore\Migration\116_change_drone_factory_variable_name.cs" />

Loading…
Cancel
Save