gitextract_53wrt5os/ ├── .dockerignore ├── .github/ │ └── workflows/ │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .goreleaser.yaml ├── .vscode/ │ └── settings.json ├── CLAUDE.md ├── LICENSE ├── Makefile ├── README.md ├── README_de.md ├── README_es.md ├── README_fr.md ├── README_jp.md ├── README_kr.md ├── README_zh.md ├── TODO.md ├── cmd/ │ ├── vget/ │ │ └── main.go │ └── vget-server/ │ └── main.go ├── compose.yml ├── docker/ │ └── vget/ │ ├── Dockerfile │ ├── Dockerfile.arm64 │ ├── entrypoint-arm64.sh │ └── entrypoint.sh ├── docs/ │ ├── FAQs.md │ ├── PRD.md │ ├── YOUTUBE_NOTES.md │ ├── bilibili-port-plan.md │ ├── bugfix/ │ │ └── docker-browser-launch.md │ ├── homebrew-distribution.md │ ├── http-server-mode.md │ ├── multi-binary-architecture.md │ ├── seedbox.md │ ├── tauri.md │ ├── telegram.md │ ├── torrent-dispatch.md │ ├── tui-file-browser.md │ ├── webdav-browsing.md │ ├── webdav.md │ ├── xhs-mcp-analysis.md │ └── zsh-completion-limit.md ├── go.mod ├── go.sum ├── internal/ │ ├── cli/ │ │ ├── batch.go │ │ ├── browse.go │ │ ├── completion.go │ │ ├── config.go │ │ ├── extract.go │ │ ├── init.go │ │ ├── kuaidi100.go │ │ ├── login/ │ │ │ ├── bilibili.go │ │ │ └── qrwriter.go │ │ ├── login.go │ │ ├── ls.go │ │ ├── root.go │ │ ├── search.go │ │ ├── search_tui.go │ │ ├── telegram.go │ │ ├── update.go │ │ └── version.go │ ├── core/ │ │ ├── config/ │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── sites.go │ │ │ └── wizard.go │ │ ├── downloader/ │ │ │ ├── downloader.go │ │ │ ├── ffmpeg.go │ │ │ ├── hls.go │ │ │ ├── hls_parser.go │ │ │ ├── magic.go │ │ │ ├── multistream.go │ │ │ └── progress.go │ │ ├── extractor/ │ │ │ ├── bilibili.go │ │ │ ├── browser.go │ │ │ ├── direct.go │ │ │ ├── instagram.go │ │ │ ├── itunes.go │ │ │ ├── m3u8.go │ │ │ ├── registry.go │ │ │ ├── telegram/ │ │ │ │ ├── constants.go │ │ │ │ ├── download.go │ │ │ │ ├── extractor.go │ │ │ │ ├── media.go │ │ │ │ ├── parser.go │ │ │ │ ├── session.go │ │ │ │ └── takeout.go │ │ │ ├── telegram.go │ │ │ ├── tiktok.go │ │ │ ├── twitter.go │ │ │ ├── types.go │ │ │ ├── types_test.go │ │ │ ├── xiaohongshu.go │ │ │ ├── xiaoyuzhou.go │ │ │ └── youtube.go │ │ ├── i18n/ │ │ │ ├── i18n.go │ │ │ └── locales/ │ │ │ ├── de.yml │ │ │ ├── en.yml │ │ │ ├── es.yml │ │ │ ├── fr.yml │ │ │ ├── jp.yml │ │ │ ├── kr.yml │ │ │ └── zh.yml │ │ ├── site/ │ │ │ └── bilibili/ │ │ │ └── auth.go │ │ ├── tracker/ │ │ │ └── kuaidi100.go │ │ ├── version/ │ │ │ └── version.go │ │ └── webdav/ │ │ └── client.go │ ├── server/ │ │ ├── auth.go │ │ ├── bilibili.go │ │ ├── embed.go │ │ ├── history.go │ │ ├── job.go │ │ ├── podcast.go │ │ ├── server.go │ │ └── webdav_browse.go │ ├── torrent/ │ │ ├── client.go │ │ ├── qbittorrent.go │ │ ├── synology.go │ │ └── transmission.go │ └── updater/ │ └── updater.go ├── sites.md ├── tauri/ │ ├── .gitignore │ ├── Makefile │ ├── components.json │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── components/ │ │ │ ├── AppSidebar.tsx │ │ │ ├── home/ │ │ │ │ ├── DownloadItem.tsx │ │ │ │ ├── HomePage.tsx │ │ │ │ └── types.ts │ │ │ ├── icons/ │ │ │ │ └── PdfIcon.tsx │ │ │ ├── media-tools/ │ │ │ │ ├── MediaToolsPage.tsx │ │ │ │ ├── panels/ │ │ │ │ │ ├── AudioConvertPanel.tsx │ │ │ │ │ ├── CompressPanel.tsx │ │ │ │ │ ├── ConvertPanel.tsx │ │ │ │ │ ├── ExtractAudioPanel.tsx │ │ │ │ │ ├── ExtractFramesPanel.tsx │ │ │ │ │ ├── TrimPanel.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── types.ts │ │ │ ├── pdf-tools/ │ │ │ │ ├── PDFToolsPage.tsx │ │ │ │ ├── panels/ │ │ │ │ │ ├── DeletePagesPanel.tsx │ │ │ │ │ ├── ImagesToPdfPanel.tsx │ │ │ │ │ ├── Md2PdfPanel.tsx │ │ │ │ │ ├── MergePdfPanel.tsx │ │ │ │ │ ├── RemoveWatermarkPanel.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── types.ts │ │ │ ├── settings/ │ │ │ │ ├── AboutSettings.tsx │ │ │ │ ├── GeneralSettings.tsx │ │ │ │ ├── SettingsPage.tsx │ │ │ │ ├── SiteSettings.tsx │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ └── ui/ │ │ │ ├── accordion.tsx │ │ │ ├── alert-dialog.tsx │ │ │ ├── alert.tsx │ │ │ ├── aspect-ratio.tsx │ │ │ ├── avatar.tsx │ │ │ ├── badge.tsx │ │ │ ├── breadcrumb.tsx │ │ │ ├── button-group.tsx │ │ │ ├── button.tsx │ │ │ ├── calendar.tsx │ │ │ ├── card.tsx │ │ │ ├── carousel.tsx │ │ │ ├── chart.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── collapsible.tsx │ │ │ ├── command.tsx │ │ │ ├── context-menu.tsx │ │ │ ├── dialog.tsx │ │ │ ├── drawer.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── empty.tsx │ │ │ ├── field.tsx │ │ │ ├── file-drop-input.tsx │ │ │ ├── form.tsx │ │ │ ├── hover-card.tsx │ │ │ ├── input-group.tsx │ │ │ ├── input-otp.tsx │ │ │ ├── input.tsx │ │ │ ├── item.tsx │ │ │ ├── kbd.tsx │ │ │ ├── label.tsx │ │ │ ├── menubar.tsx │ │ │ ├── navigation-menu.tsx │ │ │ ├── pagination.tsx │ │ │ ├── popover.tsx │ │ │ ├── progress.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── resizable.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── sidebar.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── slider.tsx │ │ │ ├── sonner.tsx │ │ │ ├── spinner.tsx │ │ │ ├── switch.tsx │ │ │ ├── table.tsx │ │ │ ├── tabs.tsx │ │ │ ├── textarea.tsx │ │ │ ├── toggle-group.tsx │ │ │ ├── toggle.tsx │ │ │ └── tooltip.tsx │ │ ├── hooks/ │ │ │ ├── use-mobile.ts │ │ │ └── useDropZone.ts │ │ ├── i18n/ │ │ │ ├── index.ts │ │ │ └── locales/ │ │ │ ├── de.yml │ │ │ ├── en.yml │ │ │ ├── es.yml │ │ │ ├── fr.yml │ │ │ ├── jp.yml │ │ │ ├── kr.yml │ │ │ └── zh.yml │ │ ├── index.css │ │ ├── lib/ │ │ │ └── utils.ts │ │ ├── main.tsx │ │ ├── routeTree.gen.ts │ │ ├── routes/ │ │ │ ├── __root.tsx │ │ │ ├── index.tsx │ │ │ ├── media-tools.tsx │ │ │ ├── pdf-tools.tsx │ │ │ └── settings.tsx │ │ ├── services/ │ │ │ └── dockerApi.ts │ │ ├── stores/ │ │ │ ├── auth.ts │ │ │ └── downloads.ts │ │ └── vite-env.d.ts │ ├── src-tauri/ │ │ ├── Cargo.toml │ │ ├── binaries/ │ │ │ └── .gitkeep │ │ ├── build.rs │ │ ├── capabilities/ │ │ │ └── default.json │ │ ├── gen/ │ │ │ └── schemas/ │ │ │ ├── acl-manifests.json │ │ │ ├── capabilities.json │ │ │ ├── desktop-schema.json │ │ │ └── macOS-schema.json │ │ ├── icons/ │ │ │ ├── android/ │ │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ │ └── ic_launcher.xml │ │ │ │ └── values/ │ │ │ │ └── ic_launcher_background.xml │ │ │ └── icon.icns │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── auth.rs │ │ │ ├── config.rs │ │ │ ├── downloader/ │ │ │ │ ├── mod.rs │ │ │ │ └── simple.rs │ │ │ ├── extractor/ │ │ │ │ ├── bilibili.rs │ │ │ │ ├── direct.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── twitter.rs │ │ │ │ └── types.rs │ │ │ ├── ffmpeg.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── md2pdf.rs │ │ │ └── pdf.rs │ │ └── tauri.conf.json │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts └── ui/ ├── .gitignore ├── README.md ├── eslint.config.js ├── index.html ├── package.json ├── src/ │ ├── components/ │ │ ├── ConfigEditor.tsx │ │ ├── ConfigRow.tsx │ │ ├── DownloadJobCard.tsx │ │ ├── Kuaidi100.tsx │ │ ├── Layout.tsx │ │ ├── Sidebar.tsx │ │ ├── Toast.tsx │ │ ├── Torrent.tsx │ │ └── TorrentSettings.tsx │ ├── context/ │ │ └── AppContext.tsx │ ├── index.css │ ├── main.tsx │ ├── pages/ │ │ ├── BilibiliPage.tsx │ │ ├── BulkDownloadPage.tsx │ │ ├── ConfigPage.tsx │ │ ├── DownloadPage.tsx │ │ ├── HistoryPage.tsx │ │ ├── Kuaidi100Page.tsx │ │ ├── PodcastPage.tsx │ │ ├── TokenPage.tsx │ │ ├── TorrentPage.tsx │ │ └── WebDAVPage.tsx │ ├── routeTree.gen.ts │ ├── routes/ │ │ ├── __root.tsx │ │ ├── bilibili.tsx │ │ ├── bulk.tsx │ │ ├── config.tsx │ │ ├── history.tsx │ │ ├── index.tsx │ │ ├── kuaidi100.tsx │ │ ├── podcast.tsx │ │ ├── token.tsx │ │ ├── torrent.tsx │ │ └── webdav.tsx │ └── utils/ │ ├── apis.ts │ └── translations.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts