How did I ever live without interfaces

This commit is contained in:
Eclypsed
2024-02-03 02:47:23 -05:00
parent 20454e22d1
commit cbe9b60973
10 changed files with 178 additions and 76 deletions

View File

@@ -10,11 +10,8 @@
export let disabled = false
export let nav: NavTab
import { createEventDispatcher } from 'svelte'
import { goto } from '$app/navigation'
const dispatch = createEventDispatcher()
let button: HTMLButtonElement
</script>

View File

@@ -33,7 +33,7 @@
<button
{disabled}
bind:this={button}
class="relative aspect-square w-full rounded-lg bg-cover bg-center transition-all"
class="relative aspect-square w-full flex-shrink-0 rounded-lg bg-cover bg-center transition-all"
style="background-image: url({playlist.thumbnail});"
on:mouseenter={() => dispatch('mouseenter', { ...calculateCenter(button), content: playlist.name })}
on:mouseleave={() => dispatch('mouseleave')}

Binary file not shown.

View File

@@ -0,0 +1,42 @@
export class Jellyfin {
static audioPresets = (userId: string) => {
return {
MaxStreamingBitrate: '999999999',
Container: 'opus,webm|opus,mp3,aac,m4a|aac,m4b|aac,flac,webma,webm|webma,wav,ogg',
TranscodingContainer: 'ts',
TranscodingProtocol: 'hls',
AudioCodec: 'aac',
userId,
}
}
static mediaItemFactory = (item: Jellyfin.MediaItem, connection: Connection): MediaItem => {}
static songFactory = (song: Jellyfin.Song, connection: Connection): Song => {
const { id, service } = connection
const artists: Artist[] | undefined = song.ArtistItems
? Array.from(song.ArtistItems, (artist) => {
return { name: artist.Name, id: artist.Id }
})
: undefined
const thumbnail = song.ImageTags?.Primary ? new URL(`Items/${song.Id}/Images/Primary`, service.urlOrigin).href : song.AlbumPrimaryImageTag ? new URL(`Items/${song.AlbumId}/Images/Primary`).href : undefined
const audoSearchParams = new URLSearchParams(this.audioPresets(service.userId))
const audioSource = new URL(`Audio/${song.Id}/universal?${audoSearchParams.toString()}`, service.urlOrigin).href
const factorySong: Song = {
connection,
id: song.Id,
name: song.Name,
duration: Math.floor(song.RunTimeTicks / 10000),
thumbnail,
artists,
albumId: song.AlbumId,
audio: audioSource,
releaseDate: String(song.ProductionYear),
}
return factorySong
}
}