77 lines
2.2 KiB
Kotlin
77 lines
2.2 KiB
Kotlin
package it.vfsfitvnm.youtubemusic.utils
|
|
|
|
import it.vfsfitvnm.youtubemusic.Innertube
|
|
import it.vfsfitvnm.youtubemusic.models.MusicTwoRowItemRenderer
|
|
|
|
fun Innertube.AlbumItem.Companion.from(renderer: MusicTwoRowItemRenderer): Innertube.AlbumItem? {
|
|
return Innertube.AlbumItem(
|
|
info = renderer
|
|
.title
|
|
?.runs
|
|
?.firstOrNull()
|
|
?.let(Innertube::Info),
|
|
authors = null,
|
|
year = renderer
|
|
.subtitle
|
|
?.runs
|
|
?.lastOrNull()
|
|
?.text,
|
|
thumbnail = renderer
|
|
.thumbnailRenderer
|
|
?.musicThumbnailRenderer
|
|
?.thumbnail
|
|
?.thumbnails
|
|
?.firstOrNull()
|
|
).takeIf { it.info?.endpoint?.browseId != null }
|
|
}
|
|
|
|
fun Innertube.ArtistItem.Companion.from(renderer: MusicTwoRowItemRenderer): Innertube.ArtistItem? {
|
|
return Innertube.ArtistItem(
|
|
info = renderer
|
|
.title
|
|
?.runs
|
|
?.firstOrNull()
|
|
?.let(Innertube::Info),
|
|
subscribersCountText = renderer
|
|
.subtitle
|
|
?.runs
|
|
?.firstOrNull()
|
|
?.text,
|
|
thumbnail = renderer
|
|
.thumbnailRenderer
|
|
?.musicThumbnailRenderer
|
|
?.thumbnail
|
|
?.thumbnails
|
|
?.firstOrNull()
|
|
).takeIf { it.info?.endpoint?.browseId != null }
|
|
}
|
|
|
|
fun Innertube.PlaylistItem.Companion.from(renderer: MusicTwoRowItemRenderer): Innertube.PlaylistItem? {
|
|
return Innertube.PlaylistItem(
|
|
info = renderer
|
|
.title
|
|
?.runs
|
|
?.firstOrNull()
|
|
?.let(Innertube::Info),
|
|
channel = renderer
|
|
.subtitle
|
|
?.runs
|
|
?.getOrNull(2)
|
|
?.let(Innertube::Info),
|
|
songCount = renderer
|
|
.subtitle
|
|
?.runs
|
|
?.getOrNull(4)
|
|
?.text
|
|
?.split(' ')
|
|
?.firstOrNull()
|
|
?.toIntOrNull(),
|
|
thumbnail = renderer
|
|
.thumbnailRenderer
|
|
?.musicThumbnailRenderer
|
|
?.thumbnail
|
|
?.thumbnails
|
|
?.firstOrNull()
|
|
).takeIf { it.info?.endpoint?.browseId != null }
|
|
}
|