diff options
| author | kamtschatka <simon.schatka@gmx.at> | 2024-10-28 02:51:00 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-28 01:51:00 +0000 |
| commit | 4a13c36da50f6b3171d817edebefe96ba85dc666 (patch) | |
| tree | 60ff553426493e7ae2460e73c3500a5525ba735c /apps/web/components/dashboard | |
| parent | 3b7451f4d0727d597c0af0e602f0c74cf58999af (diff) | |
| download | karakeep-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/dashboard')
| -rw-r--r-- | apps/web/components/dashboard/preview/AttachmentBox.tsx | 2 | ||||
| -rw-r--r-- | apps/web/components/dashboard/preview/LinkContentSection.tsx | 19 |
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> |
