Search

setQ(e.currentTarget.value)} type="search" placeholder="Artists, records, songs" autocomplete="off" autocapitalize="off" spellcheck="false" enterkeyhint="search" aria-label="Search" onkeydown={enter} /> {#if q} {/if}
{#if !asking}
The catalog, your library{online ? " and the network" : ""}. Artists, records and songs from the catalog; a song plays from the best copy the network has, a record opens its page. {#if !online}Sign in on Community to play what the library does not hold.{/if}
{#if lib.recents.length}

Jump back in · picks up where you left off

{#each lib.recents.slice(0, 8) as r (r.album_id)} push("album", { id: r.album_id }, screenEl)} /> {/each}
{/if} {#if recents.length}

Recent

{#each recents as r (r)}{/each}
{/if} {:else} {#if catErr}
{say(catErr)}
{/if} {#if catBusy && !cat}
Asking the catalog…
{/if} {#if catEmpty && !catBusy}
Nothing on the catalog for “{query}”.{#if didYouMean} Did you mean ?{/if}
{/if} {#if top}
Top result · {top.kind === "artist" ? "Artist" : top.kind === "album" ? "Record" : "Song"}
{top.kind === "artist" ? top.data.name : top.data.title}
{#if top.kind === "artist"}
{[fans(top.data.fans), topReleases.length ? topReleases.length + " release" + (topReleases.length === 1 ? "" : "s") : "", profile?.listeners ? fans(profile.listeners).replace("fans", "listeners") : ""].filter(Boolean).join(" · ")}
{#if heroTags.length}
{#each heroTags as t (t)}{t}{/each}
{/if} {:else if top.kind === "album"}
{[yearOf(top.data.release_date), top.data.track_count ? `${top.data.track_count} tracks` : ""].filter(Boolean).map((x) => " · " + x).join("")}
{:else}
{top.data.album ? " · " + top.data.album : ""}{top.data.duration_secs ? " · " + mmss(top.data.duration_secs) : ""}
{/if}
{#if latestRelease} {/if} {/if} {#if catArtists.length}

Artists

{#each catArtists as ar (ar.id)} {/each}
{/if} {#if catAlbums.length}

Records

{#each catAlbums as a (a.id)} openAlbum(a)} onmore={() => openHalf("catalogAlbum", { album: a })} /> {/each}
{/if} {#if catTracks.length}

Songs

{#each catTracks as t (t.id)} {/each} {/if} {#if libAny}

In your library{#if searching} · searching…{/if}

{#each artistHits as ar (ar.name)} {/each} {#if albumHits.length}
{#each albumHits as a (a.id)} push("album", { id: a.id }, screenEl)} onmore={() => openHalf("album", { album: a })} /> {/each}
{/if} {#each tracks as row (row.path)} {/each} {/if} {#if online} {#if !netHere}
{:else}

The network · {net.searching ? "searching…" : net.responses ? net.responses + " people · " + net.files + " files" : "nothing yet"}

{#if !net.searching}{/if}
{#if net.error}
{say(net.error)}
{/if} {#if net.groups.length}
{#each [["any", "Any format"], ["flac", "FLAC"], ["mp3320", "MP3 320+"]] as [v, l] (v)} {/each}
{#if shownGroups.length !== net.groups.length}
{shownGroups.length} of {net.groups.length} folders
{/if} {/if} {#if net.searching && !net.groups.length}
Asking the network as {slsk.username}…
{/if} {#each shownGroups.slice(0, 40) as g (g.key)}
{ e.preventDefault(); openHalf("peer", { username: g.username, group: g }); }} role="presentation"> {g.username}{g.slot ? "slot free" : "queue " + g.queue} · {speedLabel(g.speed)}
{#each g.files.slice(0, expanded.has(g.key) ? 200 : 3) as f, i (f.path)} {/each} {#if g.files.length > 3 && !expanded.has(g.key)} {/if}
{/each} {/if} {:else}
Not signed in, so nothing here can play from the network yet — sign in on Community.
{/if} {/if}