Add artist page

This commit is contained in:
Antonio Cappiello
2020-11-22 19:11:38 +01:00
parent 8b7e383dc2
commit c2be2711b9
44 changed files with 1028 additions and 191 deletions

View File

@@ -36,14 +36,22 @@ public class Artist implements Parcelable {
@ColumnInfo(name = "primary")
public String primary;
@ColumnInfo(name = "blurHash")
public String blurHash;
@ColumnInfo(name = "primary_blurHash")
public String primaryBlurHash;
public Artist(@NonNull String id, String name, String primary, String blurHash) {
@ColumnInfo(name = "backdrop")
public String backdrop;
@ColumnInfo(name = "backdrop_blurHash")
public String backdropBlurHash;
public Artist(@NonNull String id, String name, String primary, String primaryBlurHash, String backdrop, String backdropBlurHash) {
this.id = id;
this.name = name;
this.primary = primary;
this.blurHash = blurHash;
this.primaryBlurHash = primaryBlurHash;
this.backdrop = backdrop;
this.backdropBlurHash = backdropBlurHash;
}
@Ignore
@@ -51,11 +59,23 @@ public class Artist implements Parcelable {
this.id = itemDto.getId();
this.name = itemDto.getName();
this.primary = itemDto.getImageTags().containsKey(ImageType.Primary) ? id : null;
this.primary = itemDto.getImageTags().getOrDefault(ImageType.Primary, null);
if (itemDto.getImageBlurHashes() != null && itemDto.getImageBlurHashes().get(ImageType.Primary) != null) {
this.blurHash = (String) itemDto.getImageBlurHashes().get(ImageType.Primary).values().toArray()[0];
this.primaryBlurHash = (String) itemDto.getImageBlurHashes().get(ImageType.Primary).values().toArray()[0];
}
try {
this.backdrop = itemDto.getBackdropImageTags().get(0);
if (itemDto.getImageBlurHashes() != null && itemDto.getBackdropImageTags().get(0) != null) {
this.backdropBlurHash = (String) itemDto.getImageBlurHashes().get(ImageType.Backdrop).values().toArray()[0];
}
}
catch (IndexOutOfBoundsException exception) {
this.backdrop = null;
this.backdropBlurHash = null;
}
this.genres = new ArrayList<>();
this.albums = new ArrayList<>();
this.songs = new ArrayList<>();
@@ -92,12 +112,28 @@ public class Artist implements Parcelable {
this.primary = primary;
}
public String getBlurHash() {
return blurHash;
public String getPrimaryBlurHash() {
return primaryBlurHash;
}
public void setBlurHash(String blurHash) {
this.blurHash = blurHash;
public void setPrimaryBlurHash(String primaryBlurHash) {
this.primaryBlurHash = primaryBlurHash;
}
public String getBackdrop() {
return backdrop;
}
public void setBackdrop(String backdrop) {
this.backdrop = backdrop;
}
public String getBackdropBlurHash() {
return backdropBlurHash;
}
public void setBackdropBlurHash(String backdropBlurHash) {
this.backdropBlurHash = backdropBlurHash;
}
@Override
@@ -130,7 +166,9 @@ public class Artist implements Parcelable {
dest.writeString(id);
dest.writeString(name);
dest.writeString(primary);
dest.writeString(blurHash);
dest.writeString(primaryBlurHash);
dest.writeString(backdrop);
dest.writeString(backdropBlurHash);
}
protected Artist(Parcel in) {
@@ -140,7 +178,9 @@ public class Artist implements Parcelable {
this.id = in.readString();
this.name = in.readString();
this.primary = in.readString();
this.blurHash = in.readString();
this.primaryBlurHash = in.readString();
this.backdrop = in.readString();
this.backdropBlurHash = in.readString();
}
public static final Parcelable.Creator<Artist> CREATOR = new Parcelable.Creator<Artist>() {

View File

@@ -14,6 +14,7 @@ import org.jellyfin.apiclient.model.dto.MediaSourceInfo;
import org.jellyfin.apiclient.model.entities.ImageType;
import org.jellyfin.apiclient.model.entities.MediaStream;
import java.time.Instant;
import java.util.UUID;
@Entity(tableName = "song")
@@ -83,7 +84,16 @@ public class Song implements Parcelable {
@ColumnInfo(name = "channels")
private int channels;
public Song(@NonNull String id, String title, int trackNumber, int discNumber, int year, long duration, String albumId, String albumName, String artistId, String artistName, String primary, String blurHash, boolean favorite, String path, long size, String container, String codec, int sampleRate, int bitRate, int bitDepth, int channels) {
@ColumnInfo(name = "added")
private long added;
@ColumnInfo(name = "play_count")
private int playCount;
@ColumnInfo(name = "last_play")
private long lastPlay;
public Song(@NonNull String id, String title, int trackNumber, int discNumber, int year, long duration, String albumId, String albumName, String artistId, String artistName, String primary, String blurHash, boolean favorite, String path, long size, String container, String codec, int sampleRate, int bitRate, int bitDepth, int channels, long added, int playCount, long lastPlay) {
this.id = id;
this.title = title;
this.trackNumber = trackNumber;
@@ -105,6 +115,9 @@ public class Song implements Parcelable {
this.bitRate = bitRate;
this.bitDepth = bitDepth;
this.channels = channels;
this.added = added;
this.playCount = playCount;
this.lastPlay = lastPlay;
}
@Ignore
@@ -152,6 +165,10 @@ public class Song implements Parcelable {
this.channels = stream.getChannels() != null ? stream.getChannels() : 0;
}
}
this.added = Instant.now().toEpochMilli();
this.playCount = 0;
this.lastPlay = 0;
}
@Ignore
@@ -246,6 +263,18 @@ public class Song implements Parcelable {
return channels;
}
public long getAdded() {
return added;
}
public int getPlayCount() {
return playCount;
}
public long getLastPlay() {
return lastPlay;
}
public void setId(@NonNull String id) {
this.id = id;
}
@@ -330,6 +359,23 @@ public class Song implements Parcelable {
this.channels = channels;
}
public void setAdded(long added) {
this.added = added;
}
public void setAdded(int playCount) {
this.playCount = playCount;
}
public void setLastPlay(long lastPlay) {
this.lastPlay = lastPlay;
}
public void nowPlaying() {
this.playCount++;
this.lastPlay = Instant.now().toEpochMilli();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -377,6 +423,9 @@ public class Song implements Parcelable {
dest.writeInt(this.bitRate);
dest.writeInt(this.bitDepth);
dest.writeInt(this.channels);
dest.writeLong(this.added);
dest.writeInt(this.playCount);
dest.writeLong(this.lastPlay);
}
protected Song(Parcel in) {
@@ -401,6 +450,9 @@ public class Song implements Parcelable {
this.bitRate = in.readInt();
this.bitDepth = in.readInt();
this.channels = in.readInt();
this.added = in.readLong();
this.playCount = in.readInt();
this.lastPlay = in.readLong();
}
public static final Creator<Song> CREATOR = new Creator<Song>() {