show starred artists and albums
This commit is contained in:
parent
e12c1f8d33
commit
b8db546f64
@ -1,22 +1,39 @@
|
|||||||
<template>
|
<template>
|
||||||
<TrackList v-if="items" :tracks="items" />
|
<div v-if="result">
|
||||||
|
<div v-if="result.albums.length > 0" class="mb-4">
|
||||||
|
<h1>Albums</h1>
|
||||||
|
<AlbumList :items="result.albums" />
|
||||||
|
</div>
|
||||||
|
<div v-if="result.artists.length > 0" class="mb-4">
|
||||||
|
<h1>Artists</h1>
|
||||||
|
<ArtistList :items="result.artists" />
|
||||||
|
</div>
|
||||||
|
<div v-if="result.tracks.length > 0" class="mb-4">
|
||||||
|
<h1>Tracks</h1>
|
||||||
|
<TrackList :tracks="result.tracks" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
|
import AlbumList from '@/library/album/AlbumList.vue'
|
||||||
|
import ArtistList from '@/library/artist/ArtistList.vue'
|
||||||
import TrackList from '@/library/TrackList.vue'
|
import TrackList from '@/library/TrackList.vue'
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
components: {
|
components: {
|
||||||
|
AlbumList,
|
||||||
|
ArtistList,
|
||||||
TrackList,
|
TrackList,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
items: null as any,
|
result: null as any,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.$api.getStarred().then(result => {
|
this.$api.getStarred().then(result => {
|
||||||
this.items = result
|
this.result = result
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -107,7 +107,7 @@ export class API {
|
|||||||
lastFmUrl: info2.lastFmUrl,
|
lastFmUrl: info2.lastFmUrl,
|
||||||
musicBrainzUrl: info2.musicBrainzId
|
musicBrainzUrl: info2.musicBrainzId
|
||||||
? `https://musicbrainz.org/artist/${info2.musicBrainzId}` : null,
|
? `https://musicbrainz.org/artist/${info2.musicBrainzId}` : null,
|
||||||
albums: info1.album.map((album: any) => this.normalizeAlbumResponse(album)),
|
albums: info1.album.map((album: any) => this.normalizeAlbum(album)),
|
||||||
similarArtist: (info2.similarArtist || []).map((artist: any) => ({
|
similarArtist: (info2.similarArtist || []).map((artist: any) => ({
|
||||||
id: artist.id,
|
id: artist.id,
|
||||||
name: artist.name,
|
name: artist.name,
|
||||||
@ -193,7 +193,11 @@ export class API {
|
|||||||
|
|
||||||
async getStarred() {
|
async getStarred() {
|
||||||
const response = await this.get('rest/getStarred2')
|
const response = await this.get('rest/getStarred2')
|
||||||
return this.normalizeTrackList(response.starred2?.song || [])
|
return {
|
||||||
|
albums: (response.starred2?.album || []).map(this.normalizeAlbum, this),
|
||||||
|
artists: (response.starred2?.artist || []).map(this.normalizeArtist, this),
|
||||||
|
tracks: this.normalizeTrackList(response.starred2?.song || [])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async star(type: 'track' | 'album' | 'artist', id: string) {
|
async star(type: 'track' | 'album' | 'artist', id: string) {
|
||||||
@ -221,8 +225,8 @@ export class API {
|
|||||||
const data = await this.get('rest/search3', params)
|
const data = await this.get('rest/search3', params)
|
||||||
return {
|
return {
|
||||||
tracks: this.normalizeTrackList(data.searchResult3.song || []),
|
tracks: this.normalizeTrackList(data.searchResult3.song || []),
|
||||||
albums: (data.searchResult3.album || []).map((x: any) => this.normalizeAlbumResponse(x)),
|
albums: (data.searchResult3.album || []).map((x: any) => this.normalizeAlbum(x)),
|
||||||
artists: (data.searchResult3.artist || []).map((x: any) => this.normalizeArtistResponse(x)),
|
artists: (data.searchResult3.artist || []).map((x: any) => this.normalizeArtist(x)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,14 +238,14 @@ export class API {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
private normalizeAlbumResponse(item: any) {
|
private normalizeAlbum(item: any) {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
image: this.getCoverArtUrl(item)
|
image: this.getCoverArtUrl(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private normalizeArtistResponse(item: any) {
|
private normalizeArtist(item: any) {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
image: this.getCoverArtUrl(item)
|
image: this.getCoverArtUrl(item)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user