aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components
diff options
context:
space:
mode:
authorkamtschatka <simon.schatka@gmx.at>2024-10-28 02:51:00 +0100
committerGitHub <noreply@github.com>2024-10-28 01:51:00 +0000
commit4a13c36da50f6b3171d817edebefe96ba85dc666 (patch)
tree60ff553426493e7ae2460e73c3500a5525ba735c /apps/web/components
parent3b7451f4d0727d597c0af0e602f0c74cf58999af (diff)
downloadkarakeep-4a13c36da50f6b3171d817edebefe96ba85dc666.tar.zst
feature: Archive videos using yt-dlp. Fixes #215 (#525)
* Allow downloading more content from a webpage and index it #215 Added a worker that allows downloading videos depending on the environment variables refactored the code a bit added new video asset updated documentation * Some tweaks * Drop the dependency on the yt-dlp wrapper * Update openapi specs * Dont log an error when the url is not supported * Better handle supported websites that dont download anything --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
Diffstat (limited to 'apps/web/components')
-rw-r--r--apps/web/components/dashboard/preview/AttachmentBox.tsx2
-rw-r--r--apps/web/components/dashboard/preview/LinkContentSection.tsx19
2 files changed, 21 insertions, 0 deletions
diff --git a/apps/web/components/dashboard/preview/AttachmentBox.tsx b/apps/web/components/dashboard/preview/AttachmentBox.tsx
index 436f1026..d631f4d9 100644
--- a/apps/web/components/dashboard/preview/AttachmentBox.tsx
+++ b/apps/web/components/dashboard/preview/AttachmentBox.tsx
@@ -20,6 +20,7 @@ import {
Pencil,
Plus,
Trash2,
+ Video,
} from "lucide-react";
import {
@@ -44,6 +45,7 @@ export default function AttachmentBox({ bookmark }: { bookmark: ZBookmark }) {
screenshot: <Camera className="size-4" />,
fullPageArchive: <Archive className="size-4" />,
bannerImage: <Image className="size-4" />,
+ video: <Video className="size-4" />,
bookmarkAsset: <Paperclip className="size-4" />,
unknown: <Paperclip className="size-4" />,
};
diff --git a/apps/web/components/dashboard/preview/LinkContentSection.tsx b/apps/web/components/dashboard/preview/LinkContentSection.tsx
index f2069821..bf0d8f90 100644
--- a/apps/web/components/dashboard/preview/LinkContentSection.tsx
+++ b/apps/web/components/dashboard/preview/LinkContentSection.tsx
@@ -60,6 +60,20 @@ function CachedContentSection({ link }: { link: ZBookmarkedLink }) {
return <ScrollArea className="h-full">{content}</ScrollArea>;
}
+function VideoSection({ link }: { link: ZBookmarkedLink }) {
+ return (
+ <div className="relative h-full w-full overflow-hidden">
+ <div className="absolute inset-0 h-full w-full">
+ {/* eslint-disable-next-line jsx-a11y/media-has-caption -- captions not (yet) available */}
+ <video className="m-auto max-h-full max-w-full" controls>
+ <source src={`/api/assets/${link.videoAssetId}`} />
+ Not supported by your browser
+ </video>
+ </div>
+ </div>
+ );
+}
+
export default function LinkContentSection({
bookmark,
}: {
@@ -76,6 +90,8 @@ export default function LinkContentSection({
content = <CachedContentSection link={bookmark.content} />;
} else if (section === "archive") {
content = <FullPageArchiveSection link={bookmark.content} />;
+ } else if (section === "video") {
+ content = <VideoSection link={bookmark.content} />;
} else {
content = <ScreenshotSection link={bookmark.content} />;
}
@@ -101,6 +117,9 @@ export default function LinkContentSection({
>
Archive
</SelectItem>
+ <SelectItem value="video" disabled={!bookmark.content.videoAssetId}>
+ Video
+ </SelectItem>
</SelectGroup>
</SelectContent>
</Select>