From 19166987d07199bb254385ad0727f2b94678fa89 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Sun, 31 Mar 2024 10:43:55 +1300 Subject: [PATCH] Added channel to search results --- materialious/package-lock.json | 8 +++---- materialious/package.json | 4 ++-- materialious/src/lib/Api/index.ts | 8 +++---- materialious/src/lib/Api/model.ts | 12 ++++++---- materialious/src/lib/Channel.svelte | 24 +++++++++++++++++++ .../src/routes/search/[slug]/+page.svelte | 20 ++++++++++++++-- .../src/routes/search/[slug]/+page.ts | 2 +- 7 files changed, 61 insertions(+), 17 deletions(-) create mode 100644 materialious/src/lib/Channel.svelte diff --git a/materialious/package-lock.json b/materialious/package-lock.json index 2ad525c6..9e5ba093 100644 --- a/materialious/package-lock.json +++ b/materialious/package-lock.json @@ -13,7 +13,7 @@ "media-icons": "^0.10.0", "sponsorblock-api": "^0.2.4", "svelte-persisted-store": "^0.9.1", - "vidstack": "^1.10.9" + "vidstack": "^1.11.1" }, "devDependencies": { "@sveltejs/adapter-auto": "^3.0.0", @@ -3573,9 +3573,9 @@ "dev": true }, "node_modules/vidstack": { - "version": "1.10.9", - "resolved": "https://registry.npmjs.org/vidstack/-/vidstack-1.10.9.tgz", - "integrity": "sha512-YjaCdQxsRrhQpdR48jtNhusMrC5009BWQ3KtFhBzAMEDN23wW5qLNqdWfSgXVogZdpk/C2W/+79HcdDiW12PYg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/vidstack/-/vidstack-1.11.1.tgz", + "integrity": "sha512-j0vxUIB96ctKusO/vDe+lm+UGJ6MU5BfFPOcleQti2Hx3VeyMBP4oE51eJUiK1Tr52a1CXFTURL7A47GI+xI3A==", "dependencies": { "media-captions": "^1.0.1", "unplugin": "^1.6.0" diff --git a/materialious/package.json b/materialious/package.json index d7bc30ed..eae014ba 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -38,6 +38,6 @@ "media-icons": "^0.10.0", "sponsorblock-api": "^0.2.4", "svelte-persisted-store": "^0.9.1", - "vidstack": "^1.10.9" + "vidstack": "^1.11.1" } -} +} \ No newline at end of file diff --git a/materialious/src/lib/Api/index.ts b/materialious/src/lib/Api/index.ts index eab45ffe..49b07cc5 100644 --- a/materialious/src/lib/Api/index.ts +++ b/materialious/src/lib/Api/index.ts @@ -1,6 +1,6 @@ import { get } from 'svelte/store'; import { auth, returnYTDislikesInstance } from '../../store'; -import type { Channel, Comments, ReturnYTDislikes, SearchSuggestion, Subscription, Video, VideoPlay } from './model'; +import type { Channel, ChannelPage, Comments, ReturnYTDislikes, SearchSuggestion, Subscription, Video, VideoPlay } from './model'; export function buildPath(path: string): string { return `${import.meta.env.VITE_DEFAULT_INVIDIOUS_INSTANCE}/api/v1/${path}`; @@ -26,7 +26,7 @@ export async function getVideo(videoId: string, local: boolean = false): Promise } export async function getDislikes(videoId: string): Promise { - const resp = await fetch(`${get(returnYTDislikesInstance)}/Votes?videoId=${videoId}`); + const resp = await fetch(`${get(returnYTDislikesInstance)}/votes?videoId=${videoId}`); return await resp.json(); } @@ -49,7 +49,7 @@ export async function getComments(videoId: string, parameters: { return await resp.json(); } -export async function getChannel(channelId: string): Promise { +export async function getChannel(channelId: string): Promise { const resp = await fetch(buildPath(`channels/${channelId}`)); return await resp.json(); } @@ -65,7 +65,7 @@ export async function getSearch(search: string, options: { sort_by?: "relevance" | "rating" | "upload_date" | "view_count", type?: "video" | "playlist" | "channel" | "all"; page?: string; -}): Promise { +}): Promise<(Channel | Video)[]> { if (typeof options.sort_by === "undefined") { options.sort_by = "relevance"; } diff --git a/materialious/src/lib/Api/model.ts b/materialious/src/lib/Api/model.ts index 32c49b8b..f1dea827 100644 --- a/materialious/src/lib/Api/model.ts +++ b/materialious/src/lib/Api/model.ts @@ -146,22 +146,26 @@ export interface Comments { } export interface Channel { + type: "channel"; author: string; authorId: string; authorUrl: string; authorVerified: boolean; - authorBanners: Image[]; - authorThumbnails: Image[]; subCount: number; totalViews: number; - joined: number; autoGenerated: boolean; - isFamilyFriendly: boolean; description: string; descriptionHml: string; + authorThumbnails: Image[]; +} + +export interface ChannelPage extends Channel { allowedRegions: string[]; tabs: string[]; latestVideos: Video[]; + isFamilyFriendly: boolean; + joined: number; + authorBanners: Image[]; } export interface SearchSuggestion { diff --git a/materialious/src/lib/Channel.svelte b/materialious/src/lib/Channel.svelte new file mode 100644 index 00000000..84dc6160 --- /dev/null +++ b/materialious/src/lib/Channel.svelte @@ -0,0 +1,24 @@ + + + +
+
+ {channel.author} +
+
{truncate(channel.author, 14)}
+
+ {cleanNumber(channel.subCount)} subscribers +
+

{channel.description}

+
+
diff --git a/materialious/src/routes/search/[slug]/+page.svelte b/materialious/src/routes/search/[slug]/+page.svelte index f6abfb29..dd793595 100644 --- a/materialious/src/routes/search/[slug]/+page.svelte +++ b/materialious/src/routes/search/[slug]/+page.svelte @@ -1,6 +1,7 @@