SYMBOL INDEX (1622 symbols across 196 files) FILE: cmd/vget-server/main.go function main (line 19) | func main() { FILE: cmd/vget/main.go function main (line 9) | func main() { FILE: internal/cli/batch.go function runBatch (line 13) | func runBatch(filename string) error { function truncateURL (line 131) | func truncateURL(url string, maxLen int) string { FILE: internal/cli/browse.go type browseModel (line 27) | type browseModel struct method Init (line 92) | func (m browseModel) Init() tea.Cmd { method loadDirectory (line 96) | func (m browseModel) loadDirectory() tea.Cmd { method visibleLines (line 118) | func (m browseModel) visibleLines() int { method adjustScroll (line 133) | func (m *browseModel) adjustScroll() { method Update (line 142) | func (m browseModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method goUp (line 223) | func (m browseModel) goUp() (tea.Model, tea.Cmd) { method View (line 237) | func (m browseModel) View() string { type browseKeyMap (line 43) | type browseKeyMap struct function defaultBrowseKeyMap (line 51) | func defaultBrowseKeyMap() browseKeyMap { type loadedMsg (line 77) | type loadedMsg struct function newBrowseModel (line 82) | func newBrowseModel(client *webdav.Client, serverName, initialPath strin... constant browseMaxVisibleLines (line 116) | browseMaxVisibleLines = 20 type BrowseResult (line 314) | type BrowseResult struct function RunBrowseTUI (line 320) | func RunBrowseTUI(client *webdav.Client, serverName, initialPath string)... FILE: internal/cli/completion.go function init (line 57) | func init() { function unescapeShellPath (line 65) | func unescapeShellPath(s string) string { function completeRemotePath (line 80) | func completeRemotePath(cmd *cobra.Command, args []string, toComplete st... function completeRemotes (line 96) | func completeRemotes(prefix string) ([]string, cobra.ShellCompDirective) { function completeRemoteFiles (line 116) | func completeRemoteFiles(toComplete string) ([]string, cobra.ShellCompDi... FILE: internal/cli/config.go function setConfigValue (line 195) | func setConfigValue(cfg *config.Config, key, value string) error { function getConfigValue (line 242) | func getConfigValue(cfg *config.Config, key string) (string, error) { function unsetConfigValue (line 283) | func unsetConfigValue(cfg *config.Config, key string) error { function init (line 516) | func init() { FILE: internal/cli/extract.go type extractState (line 25) | type extractState struct method setDone (line 32) | func (s *extractState) setDone(result extractor.Media) { method setError (line 39) | func (s *extractState) setError(err error) { method get (line 46) | func (s *extractState) get() (bool, extractor.Media, error) { type extractTickMsg (line 52) | type extractTickMsg type extractModel (line 54) | type extractModel struct method Init (line 80) | func (m extractModel) Init() tea.Cmd { method Update (line 84) | func (m extractModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 108) | func (m extractModel) View() string { function newExtractModel (line 61) | func newExtractModel(url, lang string, state *extractState) extractModel { function extractTickCmd (line 74) | func extractTickCmd() tea.Cmd { function runExtractWithSpinner (line 171) | func runExtractWithSpinner(ext extractor.Extractor, url, lang string) (e... FILE: internal/cli/init.go function init (line 30) | func init() { FILE: internal/cli/kuaidi100.go function init (line 53) | func init() { function runKuaidi100 (line 58) | func runKuaidi100(cmd *cobra.Command, args []string) error { function printKuaidi100Result (line 104) | func printKuaidi100Result(result *tracker.TrackingResponse) { FILE: internal/cli/login.go function init (line 20) | func init() { FILE: internal/cli/login/bilibili.go function BilibiliCmd (line 42) | func BilibiliCmd() *cobra.Command { function BilibiliLogoutCmd (line 60) | func BilibiliLogoutCmd() *cobra.Command { function bilibiliQRCmd (line 76) | func bilibiliQRCmd() *cobra.Command { function bilibiliCookieCmd (line 87) | func bilibiliCookieCmd() *cobra.Command { function bilibiliStatusCmd (line 105) | func bilibiliStatusCmd() *cobra.Command { type loginMethod (line 122) | type loginMethod constant methodQR (line 125) | methodQR loginMethod = iota constant methodCookie (line 126) | methodCookie type selectorModel (line 129) | type selectorModel struct method Init (line 146) | func (m selectorModel) Init() tea.Cmd { method Update (line 150) | func (m selectorModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 173) | func (m selectorModel) View() string { function newSelectorModel (line 136) | func newSelectorModel() selectorModel { function runLoginSelector (line 202) | func runLoginSelector() error { type cookieLoginModel (line 229) | type cookieLoginModel struct method Init (line 286) | func (m cookieLoginModel) Init() tea.Cmd { method Update (line 290) | func (m cookieLoginModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 356) | func (m cookieLoginModel) View() string { function newCookieLoginModel (line 237) | func newCookieLoginModel() cookieLoginModel { function runCookieLogin (line 411) | func runCookieLogin() error { type qrLoginState (line 435) | type qrLoginState constant qrStateGenerating (line 438) | qrStateGenerating qrLoginState = iota constant qrStateWaiting (line 439) | qrStateWaiting constant qrStateScanned (line 440) | qrStateScanned constant qrStateSuccess (line 441) | qrStateSuccess constant qrStateExpired (line 442) | qrStateExpired constant qrStateError (line 443) | qrStateError type qrLoginModel (line 446) | type qrLoginModel struct method Init (line 479) | func (m qrLoginModel) Init() tea.Cmd { method generateQR (line 486) | func (m qrLoginModel) generateQR() tea.Msg { method pollStatus (line 491) | func (m qrLoginModel) pollStatus() tea.Cmd { method Update (line 499) | func (m qrLoginModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 570) | func (m qrLoginModel) View() string { type qrPollMsg (line 456) | type qrPollMsg struct type qrGeneratedMsg (line 462) | type qrGeneratedMsg struct function newQRLoginModel (line 467) | func newQRLoginModel() qrLoginModel { function printQRCode (line 627) | func printQRCode(url string) { function runQRLogin (line 645) | func runQRLogin() error { FILE: internal/cli/login/qrwriter.go type compactQRWriter (line 11) | type compactQRWriter struct method Write (line 21) | func (w *compactQRWriter) Write(mat qrcode.Matrix) error { method Close (line 36) | func (w *compactQRWriter) Close() error { method getPixel (line 41) | func (w *compactQRWriter) getPixel(x, y int) bool { method render (line 48) | func (w *compactQRWriter) render() error { function vGetCompactQRWriter (line 17) | func vGetCompactQRWriter() *compactQRWriter { FILE: internal/cli/ls.go function init (line 28) | func init() { type FileEntry (line 34) | type FileEntry struct function runLs (line 41) | func runLs(cmd *cobra.Command, args []string) error { FILE: internal/cli/root.go function init (line 54) | func init() { function Execute (line 62) | func Execute() error { function runDownload (line 66) | func runDownload(url string) error { function runWebDAVDownload (line 175) | func runWebDAVDownload(rawURL, lang string) error { function formatSize (line 267) | func formatSize(b int64) string { function downloadMultiVideo (line 280) | func downloadMultiVideo(m *extractor.MultiVideoMedia, dl *downloader.Dow... function downloadVideo (line 309) | func downloadVideo(m *extractor.VideoMedia, dl *downloader.Downloader, t... function downloadVideoWithIndex (line 384) | func downloadVideoWithIndex(m *extractor.VideoMedia, dl *downloader.Down... function downloadVideoAndAudio (line 460) | func downloadVideoAndAudio(format *extractor.VideoFormat, outputFile, vi... function downloadAudio (line 523) | func downloadAudio(m *extractor.AudioMedia, dl *downloader.Downloader, o... function downloadImages (line 548) | func downloadImages(m *extractor.ImageMedia, dl *downloader.Downloader, ... function selectVideoFormat (line 593) | func selectVideoFormat(formats []extractor.VideoFormat, preferred string... function isTelegramURL (line 652) | func isTelegramURL(urlStr string) bool { function confirmBilibiliNoLogin (line 657) | func confirmBilibiliNoLogin() bool { function runTelegramDownload (line 673) | func runTelegramDownload(urlStr, outputPath string) error { function runTelegramBatchDownload (line 695) | func runTelegramBatchDownload(urls []string) (succeeded, failed int, fai... FILE: internal/cli/search.go function init (line 57) | func init() { function containsChinese (line 63) | func containsChinese(s string) bool { type XiaoyuzhouSearchResponse (line 73) | type XiaoyuzhouSearchResponse struct type XiaoyuzhouPodcast (line 80) | type XiaoyuzhouPodcast struct type XiaoyuzhouEpisode (line 90) | type XiaoyuzhouEpisode struct function searchXiaoyuzhou (line 106) | func searchXiaoyuzhou(query string) error { function formatEpisodeDuration (line 223) | func formatEpisodeDuration(seconds int) string { type iTunesSearchResponse (line 237) | type iTunesSearchResponse struct type iTunesResult (line 242) | type iTunesResult struct function searchITunes (line 260) | func searchITunes(query string) error { function handleSelectedItems (line 395) | func handleSelectedItems(items []SearchItem, source, lang string) error { function fetchAndShowEpisodes (line 419) | func fetchAndShowEpisodes(podcast SearchItem, source, lang string) error { function fetchITunesEpisodes (line 479) | func fetchITunesEpisodes(podcastID string) ([]SearchItem, error) { function fetchXiaoyuzhouEpisodes (line 530) | func fetchXiaoyuzhouEpisodes(podcastID string) ([]SearchItem, error) { function downloadSelectedEpisodes (line 611) | func downloadSelectedEpisodes(items []SearchItem) error { function runDirectDownload (line 639) | func runDirectDownload(downloadURL, title string) error { function sanitizeFilenameForDownload (line 663) | func sanitizeFilenameForDownload(name string) string { type searchSpinnerModel (line 686) | type searchSpinnerModel struct method Init (line 710) | func (m searchSpinnerModel) Init() tea.Cmd { method checkDone (line 714) | func (m searchSpinnerModel) checkDone() tea.Cmd { method Update (line 720) | func (m searchSpinnerModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 745) | func (m searchSpinnerModel) View() string { type searchTickMsg (line 695) | type searchTickMsg function newSearchSpinnerModel (line 697) | func newSearchSpinnerModel(message, query, lang string, done chan bool) ... function runSearchSpinner (line 749) | func runSearchSpinner(query, lang string, done chan bool) error { function runFetchEpisodesSpinner (line 763) | func runFetchEpisodesSpinner(podcastTitle, lang string, done chan bool) ... FILE: internal/cli/search_tui.go type ItemType (line 29) | type ItemType constant ItemTypePodcast (line 32) | ItemTypePodcast ItemType = iota constant ItemTypeEpisode (line 33) | ItemTypeEpisode type SearchItem (line 37) | type SearchItem struct type SearchSection (line 50) | type SearchSection struct constant maxSelections (line 55) | maxSelections = 5 type searchModel (line 57) | type searchModel struct method Init (line 149) | func (m searchModel) Init() tea.Cmd { method visibleLines (line 156) | func (m searchModel) visibleLines() int { method currentSection (line 172) | func (m searchModel) currentSection() *SearchSection { method currentItemType (line 180) | func (m searchModel) currentItemType() ItemType { method clearSelections (line 189) | func (m *searchModel) clearSelections() { method adjustScroll (line 195) | func (m *searchModel) adjustScroll() { method Update (line 207) | func (m searchModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 287) | func (m searchModel) View() string { method GetSelectedItems (line 432) | func (m searchModel) GetSelectedItems() []SearchItem { type searchKeyMap (line 74) | type searchKeyMap struct function defaultSearchKeyMap (line 87) | func defaultSearchKeyMap() searchKeyMap { function newSearchModel (line 132) | func newSearchModel(sections []SearchSection, query, lang string) search... constant maxVisibleLines (line 153) | maxVisibleLines = 15 type SearchTUIResult (line 448) | type SearchTUIResult struct function RunSearchTUI (line 454) | func RunSearchTUI(sections []SearchSection, query, lang string) ([]Searc... function RunSearchTUIWithBack (line 459) | func RunSearchTUIWithBack(sections []SearchSection, query, lang string, ... FILE: internal/cli/telegram.go function runTelegramLogin (line 53) | func runTelegramLogin(cmd *cobra.Command, args []string) error { function runTelegramLogout (line 210) | func runTelegramLogout(cmd *cobra.Command, args []string) error { function runTelegramStatus (line 226) | func runTelegramStatus(cmd *cobra.Command, args []string) error { function formatUserInfo (line 277) | func formatUserInfo(self *tg.User) string { function getTelegramDesktopPath (line 292) | func getTelegramDesktopPath() string { function getAccountInfo (line 327) | func getAccountInfo(acc tdesktop.Account) (name, username string) { function init (line 366) | func init() { FILE: internal/cli/update.go function init (line 16) | func init() { FILE: internal/cli/version.go function init (line 19) | func init() { FILE: internal/core/config/config.go constant ConfigFileName (line 14) | ConfigFileName = "config.yml" constant AppDirName (line 15) | AppDirName = "vget" function ConfigDir (line 21) | func ConfigDir() (string, error) { function ConfigPath (line 38) | func ConfigPath() (string, error) { type Config (line 46) | type Config struct method GetExpressConfig (line 126) | func (c *Config) GetExpressConfig(provider string) map[string]string { method SetExpressConfig (line 134) | func (c *Config) SetExpressConfig(provider, key, value string) { method DeleteExpressConfig (line 145) | func (c *Config) DeleteExpressConfig(provider, key string) { method GetWebDAVServer (line 187) | func (c *Config) GetWebDAVServer(name string) *WebDAVServer { method SetWebDAVServer (line 198) | func (c *Config) SetWebDAVServer(name string, server WebDAVServer) { method DeleteWebDAVServer (line 206) | func (c *Config) DeleteWebDAVServer(name string) { type BilibiliConfig (line 90) | type BilibiliConfig struct type TelegramConfig (line 96) | type TelegramConfig struct type TorrentConfig (line 102) | type TorrentConfig struct type TwitterConfig (line 157) | type TwitterConfig struct type ServerConfig (line 163) | type ServerConfig struct type WebDAVServer (line 175) | type WebDAVServer struct function DefaultDownloadDir (line 216) | func DefaultDownloadDir() string { function IsRunningInDocker (line 237) | func IsRunningInDocker() bool { function DefaultConfig (line 257) | func DefaultConfig() *Config { function Exists (line 267) | func Exists() bool { function Load (line 277) | func Load() (*Config, error) { function expandPath (line 302) | func expandPath(path string) string { function Save (line 327) | func Save(cfg *Config) error { function SavePath (line 352) | func SavePath() string { function Init (line 360) | func Init() error { function LoadOrDefault (line 370) | func LoadOrDefault() *Config { FILE: internal/core/config/config_test.go function TestExpandPath (line 9) | func TestExpandPath(t *testing.T) { FILE: internal/core/config/sites.go constant SitesFileName (line 11) | SitesFileName = "sites.yml" type Site (line 14) | type Site struct type SitesConfig (line 23) | type SitesConfig struct method MatchSite (line 59) | func (c *SitesConfig) MatchSite(url string) *Site { method AddSite (line 72) | func (c *SitesConfig) AddSite(match, mediaType string) { method RemoveSite (line 80) | func (c *SitesConfig) RemoveSite(match string) bool { function LoadSites (line 28) | func LoadSites() (*SitesConfig, error) { function SaveSites (line 46) | func SaveSites(cfg *SitesConfig) error { function SitesExist (line 91) | func SitesExist() bool { FILE: internal/core/config/wizard.go constant asciiArt (line 12) | asciiArt = ` type model (line 36) | type model struct method t (line 61) | func (m *model) t() *i18n.Translations { method getStepTitle (line 65) | func (m *model) getStepTitle() string { method getStepDescription (line 82) | func (m *model) getStepDescription() string { method getOptions (line 99) | func (m *model) getOptions() []struct{ label, value string } { method isInputStep (line 132) | func (m *model) isInputStep() bool { method setCursorFromConfig (line 136) | func (m *model) setCursorFromConfig() { method Init (line 169) | func (m model) Init() tea.Cmd { method Update (line 173) | func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method saveCurrentValue (line 252) | func (m *model) saveCurrentValue() { method View (line 275) | func (m model) View() string { method renderReview (line 340) | func (m model) renderReview() string { function initialModel (line 48) | func initialModel(cfg *Config) model { function RunInitWizard (line 369) | func RunInitWizard() (*Config, error) { function getLanguageName (line 394) | func getLanguageName(code string) string { FILE: internal/core/downloader/downloader.go constant DefaultUserAgent (line 10) | DefaultUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Appl... type Downloader (line 13) | type Downloader struct method Download (line 25) | func (d *Downloader) Download(url, output, videoID string) error { method DownloadWithHeaders (line 30) | func (d *Downloader) DownloadWithHeaders(url, output, videoID string, ... method DownloadFromReader (line 36) | func (d *Downloader) DownloadFromReader(reader io.ReadCloser, size int... function New (line 18) | func New(lang string) *Downloader { function formatBytes (line 40) | func formatBytes(b int64) string { function formatDuration (line 53) | func formatDuration(d time.Duration) string { FILE: internal/core/downloader/ffmpeg.go function FFmpegAvailable (line 12) | func FFmpegAvailable() bool { function MergeVideoAudio (line 21) | func MergeVideoAudio(videoPath, audioPath, outputPath string, deleteOrig... FILE: internal/core/downloader/hls.go type HLSConfig (line 26) | type HLSConfig struct function DefaultHLSConfig (line 32) | func DefaultHLSConfig() HLSConfig { type hlsState (line 40) | type hlsState struct method getProgress (line 46) | func (s *hlsState) getProgress() (downloaded, total int64) { method getBytes (line 50) | func (s *hlsState) getBytes() int64 { method addBytes (line 54) | func (s *hlsState) addBytes(n int64) { method incDownloaded (line 58) | func (s *hlsState) incDownloaded() { function RunHLSDownloadTUI (line 63) | func RunHLSDownloadTUI(m3u8URL, output, displayID, lang string) error { function RunHLSDownloadWithHeadersTUI (line 68) | func RunHLSDownloadWithHeadersTUI(m3u8URL, output, displayID, lang strin... function downloadHLSWithHeaders (line 112) | func downloadHLSWithHeaders(ctx context.Context, m3u8URL, output string,... function downloadSegmentsOrdered (line 194) | func downloadSegmentsOrdered(ctx context.Context, segments []Segment, fi... function downloadSegment (line 295) | func downloadSegment(client *http.Client, url string, decryptKey, decryp... function fetchKeyWithHeaders (line 334) | func fetchKeyWithHeaders(url string, headers map[string]string) ([]byte,... function decryptAES128 (line 367) | func decryptAES128(data, key, iv []byte, segmentIndex int) ([]byte, erro... function DownloadHLSWithProgress (line 403) | func DownloadHLSWithProgress(ctx context.Context, m3u8URL, output string... function convertTsToMp4 (line 509) | func convertTsToMp4(tsPath string) (string, error) { FILE: internal/core/downloader/hls_parser.go type M3U8Playlist (line 16) | type M3U8Playlist struct method SelectBestVariant (line 226) | func (p *M3U8Playlist) SelectBestVariant() *Variant { method SelectVariantByResolution (line 241) | func (p *M3U8Playlist) SelectVariantByResolution(resolution string) *V... type Variant (line 27) | type Variant struct type Segment (line 36) | type Segment struct function ParseM3U8 (line 55) | func ParseM3U8(m3u8URL string) (*M3U8Playlist, error) { function ParseM3U8WithHeaders (line 60) | func ParseM3U8WithHeaders(m3u8URL string, headers map[string]string) (*M... function parseM3U8Content (line 95) | func parseM3U8Content(reader io.Reader, baseURL string) (*M3U8Playlist, ... function parseVariant (line 188) | func parseVariant(line string) Variant { function resolveURL (line 198) | func resolveURL(base *url.URL, ref string) string { function extractRegex (line 207) | func extractRegex(re *regexp.Regexp, s string) string { function extractInt (line 216) | func extractInt(re *regexp.Regexp, s string) int { FILE: internal/core/downloader/magic.go function DetectFileType (line 13) | func DetectFileType(path string) (string, error) { function RenameByMagicBytes (line 58) | func RenameByMagicBytes(path string) string { FILE: internal/core/downloader/multistream.go type MultiStreamConfig (line 17) | type MultiStreamConfig struct function DefaultMultiStreamConfig (line 25) | func DefaultMultiStreamConfig() MultiStreamConfig { type multiStreamState (line 35) | type multiStreamState struct method addBytes (line 43) | func (s *multiStreamState) addBytes(n int64) { method getDownloaded (line 47) | func (s *multiStreamState) getDownloaded() int64 { method addError (line 51) | func (s *multiStreamState) addError(err error) { method getErrors (line 57) | func (s *multiStreamState) getErrors() []error { type chunk (line 64) | type chunk struct function probeRangeSupport (line 73) | func probeRangeSupport(ctx context.Context, client *http.Client, url, au... function probeWithHEAD (line 122) | func probeWithHEAD(ctx context.Context, client *http.Client, url, authHe... function MultiStreamDownload (line 143) | func MultiStreamDownload(ctx context.Context, url, output string, config... function calculateChunks (line 259) | func calculateChunks(totalSize int64, chunkSize int64) []chunk { function downloadChunk (line 291) | func downloadChunk(ctx context.Context, client *http.Client, url string,... function downloadChunkOnce (line 346) | func downloadChunkOnce(ctx context.Context, client *http.Client, url str... function RunMultiStreamDownloadTUI (line 398) | func RunMultiStreamDownloadTUI(url, output, displayID, lang string, conf... function MultiStreamDownloadWithAuth (line 435) | func MultiStreamDownloadWithAuth(ctx context.Context, url, authHeader, o... function downloadChunkWithAuth (line 546) | func downloadChunkWithAuth(ctx context.Context, client *http.Client, url... function downloadChunkWithAuthOnce (line 599) | func downloadChunkWithAuthOnce(ctx context.Context, client *http.Client,... function downloadWithAuthSingleStream (line 655) | func downloadWithAuthSingleStream(ctx context.Context, client *http.Clie... function RunMultiStreamDownloadWithAuthTUI (line 713) | func RunMultiStreamDownloadWithAuthTUI(url, authHeader, output, displayI... FILE: internal/core/downloader/progress.go type downloadState (line 28) | type downloadState struct method update (line 41) | func (s *downloadState) update(current, total int64) { method setDone (line 52) | func (s *downloadState) setDone() { method setError (line 63) | func (s *downloadState) setError(err error) { method setFinalPath (line 70) | func (s *downloadState) setFinalPath(path string) { method getFinalPath (line 76) | func (s *downloadState) getFinalPath() string { method get (line 82) | func (s *downloadState) get() (int64, int64, float64, bool, error) { method getFinal (line 88) | func (s *downloadState) getFinal() (elapsed time.Duration, avgSpeed fl... type tickMsg (line 98) | type tickMsg type downloadDoneMsg (line 101) | type downloadDoneMsg struct type downloadModel (line 104) | type downloadModel struct method Init (line 143) | func (m downloadModel) Init() tea.Cmd { method Update (line 150) | func (m downloadModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 191) | func (m downloadModel) View() string { function newDownloadModel (line 115) | func newDownloadModel(output, videoID, lang string, state *downloadState... function tickCmd (line 137) | func tickCmd() tea.Cmd { function calculateETA (line 267) | func calculateETA(remaining int64, speed float64) string { function RunDownloadTUI (line 276) | func RunDownloadTUI(url, output, videoID, lang string, headers map[strin... function downloadWithProgress (line 315) | func downloadWithProgress(client *http.Client, url, output string, state... function RunDownloadFromReaderTUI (line 383) | func RunDownloadFromReaderTUI(reader io.ReadCloser, size int64, output, ... function downloadFromReaderWithProgress (line 415) | func downloadFromReaderWithProgress(reader io.ReadCloser, total int64, o... type TelegramDownloadResult (line 457) | type TelegramDownloadResult struct type TelegramDownloadFunc (line 464) | type TelegramDownloadFunc function RunTelegramDownloadTUI (line 467) | func RunTelegramDownloadTUI(urlStr, outputPath, lang string, downloadFn ... function RunMultiStreamDownloadWithAuthCallback (line 515) | func RunMultiStreamDownloadWithAuthCallback(ctx context.Context, url, au... FILE: internal/core/extractor/bilibili.go constant xorCode (line 22) | xorCode int64 = 23442827791579 constant maskCode (line 23) | maskCode int64 = (1 << 51) - 1 constant maxAID (line 24) | maxAID int64 = maskCode + 1 constant minAID (line 25) | minAID int64 = 1 constant base (line 26) | base int64 = 58 constant bvLen (line 27) | bvLen int = 9 function init (line 35) | func init() { function BVToAV (line 42) | func BVToAV(bvid string) (int64, error) { function AVToBV (line 72) | func AVToBV(avid int64) (string, error) { type BilibiliExtractor (line 120) | type BilibiliExtractor struct method Name (line 127) | func (b *BilibiliExtractor) Name() string { method Match (line 132) | func (b *BilibiliExtractor) Match(u *url.URL) bool { method Extract (line 140) | func (b *BilibiliExtractor) Extract(urlStr string) (Media, error) { method resolveVideoID (line 204) | func (b *BilibiliExtractor) resolveVideoID(urlStr string) (aid int64, ... method resolveShortURL (line 240) | func (b *BilibiliExtractor) resolveShortURL(shortURL string) (string, ... method fetchWBIKeys (line 264) | func (b *BilibiliExtractor) fetchWBIKeys() error { method wbiSign (line 339) | func (b *BilibiliExtractor) wbiSign(params url.Values) string { method fetchVideoInfo (line 406) | func (b *BilibiliExtractor) fetchVideoInfo(aid int64) (*BilibiliVideoI... method fetchPlayURL (line 465) | func (b *BilibiliExtractor) fetchPlayURL(aid, cid int64) (*BilibiliStr... method buildFormats (line 520) | func (b *BilibiliExtractor) buildFormats(streams *BilibiliStreamInfo) ... method setHeaders (line 585) | func (b *BilibiliExtractor) setHeaders(req *http.Request) { method userAgent (line 596) | func (b *BilibiliExtractor) userAgent() string { function extractKeyFromURL (line 308) | func extractKeyFromURL(urlStr string) string { function getMixinKey (line 323) | func getMixinKey(orig string) string { function filterWBIValue (line 376) | func filterWBIValue(s string) string { type BilibiliVideoInfo (line 388) | type BilibiliVideoInfo struct type BilibiliStreamInfo (line 444) | type BilibiliStreamInfo struct function getCodecName (line 571) | func getCodecName(codecID int) string { function init (line 600) | func init() { FILE: internal/core/extractor/browser.go type BrowserExtractor (line 21) | type BrowserExtractor struct method Name (line 39) | func (e *BrowserExtractor) Name() string { method Match (line 43) | func (e *BrowserExtractor) Match(u *url.URL) bool { method Extract (line 50) | func (e *BrowserExtractor) Extract(rawURL string) (Media, error) { method captureFromNetwork (line 143) | func (e *BrowserExtractor) captureFromNetwork(page *rod.Page, rawURL, ... method findInPerformanceAPI (line 221) | func (e *BrowserExtractor) findInPerformanceAPI(page *rod.Page, target... method findInVideoPlayer (line 244) | func (e *BrowserExtractor) findInVideoPlayer(page *rod.Page, targetExt... method findInPageSource (line 278) | func (e *BrowserExtractor) findInPageSource(page *rod.Page, targetExt ... method createLauncher (line 329) | func (e *BrowserExtractor) createLauncher(headless bool) *launcher.Lau... method getUserDataDir (line 359) | func (e *BrowserExtractor) getUserDataDir() string { function NewBrowserExtractor (line 27) | func NewBrowserExtractor(site *config.Site, visible bool) *BrowserExtrac... function NewGenericBrowserExtractor (line 32) | func NewGenericBrowserExtractor(visible bool) *BrowserExtractor { type extractionStrategy (line 48) | type extractionStrategy FILE: internal/core/extractor/direct.go type DirectExtractor (line 14) | type DirectExtractor struct method Name (line 19) | func (d *DirectExtractor) Name() string { method Match (line 24) | func (d *DirectExtractor) Match(u *url.URL) bool { method Extract (line 30) | func (d *DirectExtractor) Extract(urlStr string) (Media, error) { function detectMediaType (line 135) | func detectMediaType(contentType, urlStr string) (MediaType, string) { function generateID (line 202) | func generateID(urlStr string) string { function init (line 227) | func init() { FILE: internal/core/extractor/instagram.go type InstagramExtractor (line 9) | type InstagramExtractor struct method Name (line 11) | func (e *InstagramExtractor) Name() string { method Match (line 15) | func (e *InstagramExtractor) Match(u *url.URL) bool { method Extract (line 20) | func (e *InstagramExtractor) Extract(url string) (Media, error) { function init (line 24) | func init() { FILE: internal/core/extractor/itunes.go type iTunesExtractor (line 12) | type iTunesExtractor struct method Name (line 14) | func (e *iTunesExtractor) Name() string { method Match (line 24) | func (e *iTunesExtractor) Match(u *url.URL) bool { method Extract (line 29) | func (e *iTunesExtractor) Extract(rawURL string) (Media, error) { method extractEpisode (line 52) | func (e *iTunesExtractor) extractEpisode(podcastID, episodeID string) ... method listEpisodes (line 92) | func (e *iTunesExtractor) listEpisodes() (*AudioMedia, error) { type iTunesLookupResponse (line 99) | type iTunesLookupResponse struct type iTunesLookupResult (line 104) | type iTunesLookupResult struct function init (line 117) | func init() { FILE: internal/core/extractor/m3u8.go type M3U8Extractor (line 12) | type M3U8Extractor struct method Name (line 17) | func (m *M3U8Extractor) Name() string { method Match (line 22) | func (m *M3U8Extractor) Match(u *url.URL) bool { method Extract (line 34) | func (m *M3U8Extractor) Extract(urlStr string) (Media, error) { function generateM3U8ID (line 68) | func generateM3U8ID(urlStr string) string { FILE: internal/core/extractor/registry.go function Register (line 41) | func Register(e Extractor, hosts ...string) { function NormalizeURL (line 48) | func NormalizeURL(rawURL string) (string, error) { function RegisterFallback (line 79) | func RegisterFallback(e Extractor) { function Match (line 85) | func Match(rawURL string) Extractor { function List (line 132) | func List() []Extractor { FILE: internal/core/extractor/telegram.go constant TelegramDesktopAppID (line 19) | TelegramDesktopAppID = telegram.DesktopAppID constant TelegramDesktopAppHash (line 20) | TelegramDesktopAppHash = telegram.DesktopAppHash type TelegramExtractor (line 28) | type TelegramExtractor struct method Name (line 32) | func (t *TelegramExtractor) Name() string { method Match (line 36) | func (t *TelegramExtractor) Match(u *url.URL) bool { method Extract (line 40) | func (t *TelegramExtractor) Extract(urlStr string) (Media, error) { function init (line 89) | func init() { FILE: internal/core/extractor/telegram/constants.go constant DesktopAppID (line 7) | DesktopAppID = 2040 constant DesktopAppHash (line 8) | DesktopAppHash = "b18441a1ff607e10a989891a5462e627" FILE: internal/core/extractor/telegram/download.go type DownloadResult (line 19) | type DownloadResult struct type DownloadOptions (line 26) | type DownloadOptions struct function Download (line 36) | func Download(urlStr string, outputPath string, progressFn func(download... function DownloadWithOptions (line 45) | func DownloadWithOptions(opts DownloadOptions) (*DownloadResult, error) { function resolveChannel (line 143) | func resolveChannel(ctx context.Context, api *tg.Client, msg *Message) (... type ChannelInfo (line 175) | type ChannelInfo struct function resolvePrivateChannel (line 182) | func resolvePrivateChannel(ctx context.Context, api *tg.Client, channelI... function getAllChannels (line 198) | func getAllChannels(ctx context.Context, api *tg.Client) ([]ChannelInfo,... function extractMessage (line 265) | func extractMessage(result tg.MessagesMessagesClass) (*tg.Message, error) { function downloadDocument (line 287) | func downloadDocument( function downloadPhoto (line 343) | func downloadPhoto( type progressWriter (line 397) | type progressWriter struct method Write (line 404) | func (pw *progressWriter) Write(p []byte) (int, error) { function sanitizeFilename (line 413) | func sanitizeFilename(name string) string { FILE: internal/core/extractor/telegram/extractor.go type Extractor (line 16) | type Extractor struct method Name (line 19) | func (e *Extractor) Name() string { method Match (line 24) | func (e *Extractor) Match(u *url.URL) bool { method Extract (line 48) | func (e *Extractor) Extract(urlStr string) (*MediaInfo, error) { method extractMedia (line 64) | func (e *Extractor) extractMedia(ctx context.Context, msg *Message) (*... method extractMediaInfo (line 117) | func (e *Extractor) extractMediaInfo(msg *tg.Message) (*MediaInfo, err... type MediaInfo (line 33) | type MediaInfo struct FILE: internal/core/extractor/telegram/media.go type ExtractedMedia (line 11) | type ExtractedMedia struct function ExtractDocumentInfo (line 24) | func ExtractDocumentInfo(doc *tg.Document, messageText string, msgID int... function FindLargestPhotoSize (line 67) | func FindLargestPhotoSize(sizes []tg.PhotoSizeClass) *tg.PhotoSize { function ExtFromMime (line 85) | func ExtFromMime(mime string) string { function truncateText (line 112) | func truncateText(s string, maxLen int) string { FILE: internal/core/extractor/telegram/parser.go type Message (line 17) | type Message struct function ParseURL (line 25) | func ParseURL(urlStr string) (*Message, error) { function MatchURL (line 60) | func MatchURL(urlStr string) bool { FILE: internal/core/extractor/telegram/session.go function SessionPath (line 10) | func SessionPath() string { function SessionFile (line 19) | func SessionFile() string { function SessionExists (line 24) | func SessionExists() bool { FILE: internal/core/extractor/telegram/takeout.go type TakeoutSession (line 14) | type TakeoutSession struct method Start (line 26) | func (t *TakeoutSession) Start(ctx context.Context) error { method Finish (line 43) | func (t *TakeoutSession) Finish(ctx context.Context) error { method ID (line 61) | func (t *TakeoutSession) ID() int64 { method Active (line 66) | func (t *TakeoutSession) Active() bool { method Middleware (line 95) | func (t *TakeoutSession) Middleware() telegram.Middleware { function NewTakeoutSession (line 20) | func NewTakeoutSession(api *tg.Client) *TakeoutSession { type takeoutMiddleware (line 71) | type takeoutMiddleware struct method Handle (line 85) | func (t takeoutMiddleware) Handle(next tg.Invoker) telegram.InvokeFunc { type nopDecoder (line 76) | type nopDecoder struct method Decode (line 80) | func (n nopDecoder) Decode(_ *bin.Buffer) error { FILE: internal/core/extractor/tiktok.go type TikTokExtractor (line 9) | type TikTokExtractor struct method Name (line 11) | func (e *TikTokExtractor) Name() string { method Match (line 15) | func (e *TikTokExtractor) Match(u *url.URL) bool { method Extract (line 20) | func (e *TikTokExtractor) Extract(url string) (Media, error) { function init (line 24) | func init() { FILE: internal/core/extractor/twitter.go constant twitterBearerToken (line 18) | twitterBearerToken = "AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8... constant twitterGuestTokenURL (line 20) | twitterGuestTokenURL = "https://api.x.com/1.1/guest/activate.json" constant twitterGraphQLURL (line 21) | twitterGraphQLURL = "https://x.com/i/api/graphql/2ICDjqPd81tulZcYrtp... constant twitterSyndicationURL (line 22) | twitterSyndicationURL = "https://cdn.syndication.twimg.com/tweet-result" type TwitterError (line 31) | type TwitterError struct method Error (line 36) | func (e *TwitterError) Error() string { constant TwitterErrorNSFW (line 42) | TwitterErrorNSFW = "nsfw" constant TwitterErrorProtected (line 43) | TwitterErrorProtected = "protected" constant TwitterErrorUnavailable (line 44) | TwitterErrorUnavailable = "unavailable" type TwitterExtractor (line 48) | type TwitterExtractor struct method Name (line 56) | func (t *TwitterExtractor) Name() string { method Match (line 61) | func (t *TwitterExtractor) Match(u *url.URL) bool { method SetAuth (line 67) | func (t *TwitterExtractor) SetAuth(authToken string) { method IsAuthenticated (line 72) | func (t *TwitterExtractor) IsAuthenticated() bool { method Extract (line 77) | func (t *TwitterExtractor) Extract(urlStr string) (Media, error) { method fetchFromSyndication (line 124) | func (t *TwitterExtractor) fetchFromSyndication(tweetID string) (Media... method fetchGuestToken (line 159) | func (t *TwitterExtractor) fetchGuestToken() error { method fetchFromGraphQL (line 190) | func (t *TwitterExtractor) fetchFromGraphQL(tweetID string) (Media, er... method fetchCsrfToken (line 260) | func (t *TwitterExtractor) fetchCsrfToken() error { method fetchFromGraphQLAuth (line 286) | func (t *TwitterExtractor) fetchFromGraphQLAuth(tweetID string) (Media... method parseSyndicationResponse (line 371) | func (t *TwitterExtractor) parseSyndicationResponse(data *syndicationR... method parseGraphQLResponse (line 508) | func (t *TwitterExtractor) parseGraphQLResponse(body []byte, tweetID s... type syndicationResponse (line 659) | type syndicationResponse struct type graphQLResponse (line 687) | type graphQLResponse struct type graphQLTweetResult (line 695) | type graphQLTweetResult struct type graphQLCore (line 708) | type graphQLCore struct type graphQLLegacy (line 718) | type graphQLLegacy struct function truncateText (line 742) | func truncateText(s string, maxLen int) string { function extractResolutionFromURL (line 753) | func extractResolutionFromURL(url string) (width, height int) { function estimateQualityFromBitrate (line 763) | func estimateQualityFromBitrate(bitrate int) string { function getHighQualityImageURL (line 777) | func getHighQualityImageURL(imageURL string) string { function getImageExtension (line 791) | func getImageExtension(imageURL string) string { function init (line 803) | func init() { FILE: internal/core/extractor/types.go type MediaType (line 12) | type MediaType constant MediaTypeVideo (line 15) | MediaTypeVideo MediaType = "video" constant MediaTypeAudio (line 16) | MediaTypeAudio MediaType = "audio" constant MediaTypeImage (line 17) | MediaTypeImage MediaType = "image" type Media (line 21) | type Media interface type Extractor (line 29) | type Extractor interface type VideoMedia (line 42) | type VideoMedia struct method GetID (line 51) | func (v *VideoMedia) GetID() string { return v.ID } method GetTitle (line 52) | func (v *VideoMedia) GetTitle() string { return v.Title } method GetUploader (line 53) | func (v *VideoMedia) GetUploader() string { return v.Uploader } method Type (line 54) | func (v *VideoMedia) Type() MediaType { return MediaTypeVideo } type VideoFormat (line 57) | type VideoFormat struct method QualityLabel (line 69) | func (f *VideoFormat) QualityLabel() string { type AudioMedia (line 80) | type AudioMedia struct method GetID (line 89) | func (a *AudioMedia) GetID() string { return a.ID } method GetTitle (line 90) | func (a *AudioMedia) GetTitle() string { return a.Title } method GetUploader (line 91) | func (a *AudioMedia) GetUploader() string { return a.Uploader } method Type (line 92) | func (a *AudioMedia) Type() MediaType { return MediaTypeAudio } type ImageMedia (line 95) | type ImageMedia struct method GetID (line 102) | func (i *ImageMedia) GetID() string { return i.ID } method GetTitle (line 103) | func (i *ImageMedia) GetTitle() string { return i.Title } method GetUploader (line 104) | func (i *ImageMedia) GetUploader() string { return i.Uploader } method Type (line 105) | func (i *ImageMedia) Type() MediaType { return MediaTypeImage } type MultiVideoMedia (line 108) | type MultiVideoMedia struct method GetID (line 115) | func (m *MultiVideoMedia) GetID() string { return m.ID } method GetTitle (line 116) | func (m *MultiVideoMedia) GetTitle() string { return m.Title } method GetUploader (line 117) | func (m *MultiVideoMedia) GetUploader() string { return m.Uploader } method Type (line 118) | func (m *MultiVideoMedia) Type() MediaType { return MediaTypeVideo } type Image (line 121) | type Image struct function SanitizeFilename (line 129) | func SanitizeFilename(name string) string { FILE: internal/core/extractor/types_test.go function TestSanitizeFilename (line 5) | func TestSanitizeFilename(t *testing.T) { FILE: internal/core/extractor/xiaohongshu.go type XiaohongshuExtractor (line 21) | type XiaohongshuExtractor struct method SetVisible (line 26) | func (e *XiaohongshuExtractor) SetVisible(visible bool) { method Name (line 30) | func (e *XiaohongshuExtractor) Name() string { method Match (line 34) | func (e *XiaohongshuExtractor) Match(u *url.URL) bool { method Extract (line 66) | func (e *XiaohongshuExtractor) Extract(rawURL string) (Media, error) { method extractNoteID (line 87) | func (e *XiaohongshuExtractor) extractNoteID(rawURL string) string { method resolveShortURL (line 104) | func (e *XiaohongshuExtractor) resolveShortURL(shortURL string) (strin... method extractWithBrowser (line 137) | func (e *XiaohongshuExtractor) extractWithBrowser(targetURL, noteID st... method extractVideo (line 280) | func (e *XiaohongshuExtractor) extractVideo(id, title, uploader string... method extractImages (line 317) | func (e *XiaohongshuExtractor) extractImages(id, title, uploader strin... method createLauncher (line 352) | func (e *XiaohongshuExtractor) createLauncher(headless bool) *launcher... method getUserDataDir (line 387) | func (e *XiaohongshuExtractor) getUserDataDir() string { method loadCookies (line 396) | func (e *XiaohongshuExtractor) loadCookies(browser *rod.Browser) { method saveCookies (line 418) | func (e *XiaohongshuExtractor) saveCookies(browser *rod.Browser) { type xhsNoteDetail (line 39) | type xhsNoteDetail struct function init (line 460) | func init() { FILE: internal/core/extractor/xiaoyuzhou.go type XiaoyuzhouExtractor (line 14) | type XiaoyuzhouExtractor struct method Name (line 16) | func (e *XiaoyuzhouExtractor) Name() string { method Match (line 20) | func (e *XiaoyuzhouExtractor) Match(u *url.URL) bool { method Extract (line 25) | func (e *XiaoyuzhouExtractor) Extract(url string) (Media, error) { method extractEpisode (line 36) | func (e *XiaoyuzhouExtractor) extractEpisode(url string) (*AudioMedia,... method extractPodcast (line 122) | func (e *XiaoyuzhouExtractor) extractPodcast(_ string) (*AudioMedia, e... function init (line 129) | func init() { FILE: internal/core/extractor/youtube.go type YouTubeDockerRequiredError (line 18) | type YouTubeDockerRequiredError struct method Error (line 22) | func (e *YouTubeDockerRequiredError) Error() string { type YouTubeDirectDownload (line 27) | type YouTubeDirectDownload struct method GetID (line 33) | func (y *YouTubeDirectDownload) GetID() string { return y.URL } method GetTitle (line 34) | func (y *YouTubeDirectDownload) GetTitle() string { return "YouTube... method GetUploader (line 35) | func (y *YouTubeDirectDownload) GetUploader() string { return "" } method Type (line 36) | func (y *YouTubeDirectDownload) Type() MediaType { return MediaTyp... type ytdlpExtractor (line 39) | type ytdlpExtractor struct method Name (line 41) | func (e *ytdlpExtractor) Name() string { method Match (line 45) | func (e *ytdlpExtractor) Match(u *url.URL) bool { method Extract (line 54) | func (e *ytdlpExtractor) Extract(urlStr string) (Media, error) { function DownloadWithYtdlp (line 68) | func DownloadWithYtdlp(url, outputDir string) error { function DownloadWithYtdlpProgress (line 73) | func DownloadWithYtdlpProgress(ctx context.Context, url, outputDir strin... function downloadWithYoutubeDL (line 148) | func downloadWithYoutubeDL(ctx context.Context, url, outputDir string) e... function init (line 162) | func init() { FILE: internal/core/i18n/i18n.go type Translations (line 15) | type Translations struct type ConfigTranslations (line 29) | type ConfigTranslations struct type ConfigReviewTranslations (line 47) | type ConfigReviewTranslations struct type HelpTranslations (line 54) | type HelpTranslations struct type DownloadTranslations (line 62) | type DownloadTranslations struct type ErrorTranslations (line 80) | type ErrorTranslations struct type SearchTranslations (line 89) | type SearchTranslations struct type TwitterTranslations (line 102) | type TwitterTranslations struct type SitesTranslations (line 118) | type SitesTranslations struct type UITranslations (line 132) | type UITranslations struct type ServerTranslations (line 238) | type ServerTranslations struct type YouTubeTranslations (line 244) | type YouTubeTranslations struct function GetTranslations (line 271) | func GetTranslations(lang string) *Translations { function loadTranslations (line 297) | func loadTranslations(lang string) (*Translations, error) { function T (line 313) | func T(lang string) *Translations { FILE: internal/core/site/bilibili/auth.go type Auth (line 16) | type Auth struct method GenerateQRCode (line 53) | func (a *Auth) GenerateQRCode() (*QRSession, error) { method PollQRStatus (line 98) | func (a *Auth) PollQRStatus(qrcodeKey string) (QRStatus, *Credentials,... method parseCredentialsFromURL (line 150) | func (a *Auth) parseCredentialsFromURL(urlStr string) (*Credentials, e... method SaveCredentials (line 171) | func (a *Auth) SaveCredentials(creds *Credentials) error { method LoadCredentials (line 184) | func (a *Auth) LoadCredentials() *Credentials { method ValidateCredentials (line 212) | func (a *Auth) ValidateCredentials(creds *Credentials) (string, error) { method setHeaders (line 275) | func (a *Auth) setHeaders(req *http.Request) { type QRSession (line 21) | type QRSession struct type QRStatus (line 27) | type QRStatus method String (line 259) | func (s QRStatus) String() string { constant QRWaiting (line 30) | QRWaiting QRStatus = 86101 constant QRScanned (line 31) | QRScanned QRStatus = 86090 constant QRExpired (line 32) | QRExpired QRStatus = 86038 constant QRConfirmed (line 33) | QRConfirmed QRStatus = 0 type Credentials (line 37) | type Credentials struct method ToCookieString (line 178) | func (c *Credentials) ToCookieString() string { function NewAuth (line 44) | func NewAuth() *Auth { function ParseCookieString (line 194) | func ParseCookieString(cookie string) *Credentials { FILE: internal/core/tracker/kuaidi100.go constant Kuaidi100APIURL (line 16) | Kuaidi100APIURL = "https://poll.kuaidi100.com/poll/query.do" constant Kuaidi100AutoNumberURL (line 17) | Kuaidi100AutoNumberURL = "http://www.kuaidi100.com/autonumber/auto" constant Kuaidi100DeliveryTimeURL (line 18) | Kuaidi100DeliveryTimeURL = "https://api.kuaidi100.com/label/order?method... type Kuaidi100Config (line 22) | type Kuaidi100Config struct type Kuaidi100Tracker (line 29) | type Kuaidi100Tracker struct method SetSecret (line 62) | func (t *Kuaidi100Tracker) SetSecret(secret string) { method Track (line 131) | func (t *Kuaidi100Tracker) Track(courierCode, trackingNumber string) (... method TrackWithPhone (line 136) | func (t *Kuaidi100Tracker) TrackWithPhone(courierCode, trackingNumber,... method AutoNumber (line 199) | func (t *Kuaidi100Tracker) AutoNumber(trackingNumber string) ([]AutoNu... method EstimateDeliveryTime (line 253) | func (t *Kuaidi100Tracker) EstimateDeliveryTime(param DeliveryTimePara... function NewKuaidi100Tracker (line 35) | func NewKuaidi100Tracker(key, customer string) *Kuaidi100Tracker { function NewKuaidi100TrackerWithSecret (line 48) | func NewKuaidi100TrackerWithSecret(key, customer, secret string) *Kuaidi... type QueryParam (line 67) | type QueryParam struct type TrackingResponse (line 79) | type TrackingResponse struct method StateDescription (line 103) | func (r *TrackingResponse) StateDescription() string { method IsDelivered (line 126) | func (r *TrackingResponse) IsDelivered() bool { type TrackingData (line 91) | type TrackingData struct type AutoNumberResponse (line 190) | type AutoNumberResponse struct type DeliveryTimeParam (line 224) | type DeliveryTimeParam struct type DeliveryTimeResponse (line 233) | type DeliveryTimeResponse struct type DeliveryTimeData (line 241) | type DeliveryTimeData struct type CourierInfo (line 307) | type CourierInfo struct function GetCourierCode (line 392) | func GetCourierCode(alias string) string { function GetCourierInfo (line 402) | func GetCourierInfo(alias string) *CourierInfo { function ListCouriers (line 411) | func ListCouriers() []CourierInfo { FILE: internal/core/webdav/client.go type Client (line 18) | type Client struct method Stat (line 89) | func (c *Client) Stat(ctx context.Context, filePath string) (*FileInfo... method List (line 104) | func (c *Client) List(ctx context.Context, dirPath string) ([]FileInfo... method Open (line 141) | func (c *Client) Open(ctx context.Context, filePath string) (io.ReadCl... method GetFileURL (line 233) | func (c *Client) GetFileURL(filePath string) string { method GetAuthHeader (line 242) | func (c *Client) GetAuthHeader() string { method SupportsRangeRequests (line 251) | func (c *Client) SupportsRangeRequests(ctx context.Context, filePath s... type FileInfo (line 26) | type FileInfo struct function NewClient (line 35) | func NewClient(rawURL string) (*Client, error) { function ParseURL (line 80) | func ParseURL(rawURL string) (string, error) { function IsWebDAVURL (line 161) | func IsWebDAVURL(rawURL string) bool { function IsRemotePath (line 168) | func IsRemotePath(rawURL string) bool { function ParseRemotePath (line 191) | func ParseRemotePath(remotePath string) (remoteName, filePath string, er... function NewClientFromConfig (line 208) | func NewClientFromConfig(server *config.WebDAVServer) (*Client, error) { function ExtractFilename (line 228) | func ExtractFilename(filePath string) string { FILE: internal/server/auth.go constant SessionCookieName (line 14) | SessionCookieName = "vget_session" constant SessionDuration (line 16) | SessionDuration = 24 * time.Hour constant APITokenDuration (line 18) | APITokenDuration = 365 * 24 * time.Hour type JWTClaims (line 22) | type JWTClaims struct type GenerateTokenRequest (line 29) | type GenerateTokenRequest struct method generateJWT (line 34) | func (s *Server) generateJWT(tokenType string, duration time.Duration, c... method validateJWT (line 52) | func (s *Server) validateJWT(tokenString string) (*JWTClaims, error) { method jwtAuthMiddleware (line 69) | func (s *Server) jwtAuthMiddleware() gin.HandlerFunc { method setSessionCookie (line 125) | func (s *Server) setSessionCookie(c *gin.Context) { method handleAuthStatus (line 157) | func (s *Server) handleAuthStatus(c *gin.Context) { method handleGenerateToken (line 169) | func (s *Server) handleGenerateToken(c *gin.Context) { FILE: internal/server/bilibili.go method handleBilibiliQRGenerate (line 13) | func (s *Server) handleBilibiliQRGenerate(c *gin.Context) { method handleBilibiliQRPoll (line 37) | func (s *Server) handleBilibiliQRPoll(c *gin.Context) { method handleBilibiliStatus (line 103) | func (s *Server) handleBilibiliStatus(c *gin.Context) { FILE: internal/server/embed.go function GetDistFS (line 13) | func GetDistFS() fs.FS { FILE: internal/server/history.go constant historyDBFile (line 14) | historyDBFile = "history.db" type HistoryRecord (line 17) | type HistoryRecord struct type HistoryDB (line 30) | type HistoryDB struct method Close (line 81) | func (h *HistoryDB) Close() error { method RecordJob (line 89) | func (h *HistoryDB) RecordJob(job *Job) error { method GetHistory (line 115) | func (h *HistoryDB) GetHistory(limit, offset int) ([]HistoryRecord, in... method GetStats (line 171) | func (h *HistoryDB) GetStats() (completed int, failed int, totalBytes ... method DeleteRecord (line 187) | func (h *HistoryDB) DeleteRecord(id string) error { method ClearHistory (line 205) | func (h *HistoryDB) ClearHistory() (int64, error) { function NewHistoryDB (line 36) | func NewHistoryDB() (*HistoryDB, error) { FILE: internal/server/job.go type JobStatus (line 16) | type JobStatus constant JobStatusQueued (line 19) | JobStatusQueued JobStatus = "queued" constant JobStatusDownloading (line 20) | JobStatusDownloading JobStatus = "downloading" constant JobStatusCompleted (line 21) | JobStatusCompleted JobStatus = "completed" constant JobStatusFailed (line 22) | JobStatusFailed JobStatus = "failed" constant JobStatusCancelled (line 23) | JobStatusCancelled JobStatus = "cancelled" type Job (line 27) | type Job struct type JobQueue (line 45) | type JobQueue struct method SetHistoryDB (line 82) | func (jq *JobQueue) SetHistoryDB(db *HistoryDB) { method Start (line 87) | func (jq *JobQueue) Start() { method Stop (line 100) | func (jq *JobQueue) Stop() { method worker (line 109) | func (jq *JobQueue) worker() { method processJob (line 117) | func (jq *JobQueue) processJob(job *Job) { method recordJobToHistory (line 143) | func (jq *JobQueue) recordJobToHistory(id string) { method cleanupLoop (line 167) | func (jq *JobQueue) cleanupLoop() { method cleanupOldJobs (line 178) | func (jq *JobQueue) cleanupOldJobs() { method ClearHistory (line 193) | func (jq *JobQueue) ClearHistory() int { method RemoveJob (line 208) | func (jq *JobQueue) RemoveJob(id string) bool { method AddFailedJob (line 227) | func (jq *JobQueue) AddFailedJob(rawURL, errorMsg string) *Job { method AddJob (line 248) | func (jq *JobQueue) AddJob(rawURL, filename string) (*Job, error) { method GetJob (line 293) | func (jq *JobQueue) GetJob(id string) *Job { method GetAllJobs (line 306) | func (jq *JobQueue) GetAllJobs() []*Job { method CancelJob (line 319) | func (jq *JobQueue) CancelJob(id string) bool { method updateJobStatus (line 339) | func (jq *JobQueue) updateJobStatus(id string, status JobStatus, progr... method updateJobProgressBytes (line 355) | func (jq *JobQueue) updateJobProgressBytes(id string, downloaded, tota... type DownloadFunc (line 60) | type DownloadFunc function NewJobQueue (line 63) | func NewJobQueue(maxConcurrent int, outputDir string, downloadFn Downloa... function generateJobID (line 369) | func generateJobID() (string, error) { FILE: internal/server/podcast.go type PodcastSearchRequest (line 18) | type PodcastSearchRequest struct type PodcastSearchResult (line 23) | type PodcastSearchResult struct type PodcastChannel (line 29) | type PodcastChannel struct type PodcastEpisode (line 39) | type PodcastEpisode struct type PodcastEpisodesRequest (line 49) | type PodcastEpisodesRequest struct function containsChinese (line 55) | func containsChinese(s string) bool { method handlePodcastSearch (line 65) | func (s *Server) handlePodcastSearch(c *gin.Context) { method handlePodcastEpisodes (line 169) | func (s *Server) handlePodcastEpisodes(c *gin.Context) { type xiaoyuzhouSearchResponse (line 219) | type xiaoyuzhouSearchResponse struct function searchXiaoyuzhouAPI (line 246) | func searchXiaoyuzhouAPI(query string) (*PodcastSearchResult, error) { function fetchXiaoyuzhouEpisodesAPI (line 300) | func fetchXiaoyuzhouEpisodesAPI(podcastID string) ([]PodcastEpisode, str... type iTunesSearchResponse (line 375) | type iTunesSearchResponse struct function searchITunesAPI (line 396) | func searchITunesAPI(query string) (*PodcastSearchResult, error) { function fetchITunesEpisodesAPI (line 474) | func fetchITunesEpisodesAPI(podcastID string) ([]PodcastEpisode, string,... FILE: internal/server/server.go type Response (line 28) | type Response struct type DownloadRequest (line 35) | type DownloadRequest struct type BulkDownloadRequest (line 42) | type BulkDownloadRequest struct type Server (line 47) | type Server struct method Start (line 85) | func (s *Server) Start() error { method Stop (line 193) | func (s *Server) Stop(ctx context.Context) error { method loggingMiddleware (line 203) | func (s *Server) loggingMiddleware() gin.HandlerFunc { method setupStaticFiles (line 212) | func (s *Server) setupStaticFiles(distFS fs.FS) { method handleHealth (line 251) | func (s *Server) handleHealth(c *gin.Context) { method handleFileDownload (line 263) | func (s *Server) handleFileDownload(c *gin.Context) { method handleDownload (line 311) | func (s *Server) handleDownload(c *gin.Context) { method handleBulkDownload (line 349) | func (s *Server) handleBulkDownload(c *gin.Context) { method handleStatus (line 412) | func (s *Server) handleStatus(c *gin.Context) { method handleGetJobs (line 438) | func (s *Server) handleGetJobs(c *gin.Context) { method handleClearJobs (line 464) | func (s *Server) handleClearJobs(c *gin.Context) { method handleDeleteJob (line 481) | func (s *Server) handleDeleteJob(c *gin.Context) { method handleGetConfig (line 517) | func (s *Server) handleGetConfig(c *gin.Context) { method handleSetConfig (line 551) | func (s *Server) handleSetConfig(c *gin.Context) { method handleUpdateConfig (line 609) | func (s *Server) handleUpdateConfig(c *gin.Context) { method handleI18n (line 649) | func (s *Server) handleI18n(c *gin.Context) { method handleGetWebDAV (line 679) | func (s *Server) handleGetWebDAV(c *gin.Context) { method handleAddWebDAV (line 698) | func (s *Server) handleAddWebDAV(c *gin.Context) { method handleDeleteWebDAV (line 733) | func (s *Server) handleDeleteWebDAV(c *gin.Context) { method handleKuaidi100 (line 773) | func (s *Server) handleKuaidi100(c *gin.Context) { method handleGetTorrentConfig (line 852) | func (s *Server) handleGetTorrentConfig(c *gin.Context) { method handleSetTorrentConfig (line 870) | func (s *Server) handleSetTorrentConfig(c *gin.Context) { method handleTestTorrentConnection (line 933) | func (s *Server) handleTestTorrentConnection(c *gin.Context) { method handleAddTorrent (line 972) | func (s *Server) handleAddTorrent(c *gin.Context) { method handleListTorrents (line 1053) | func (s *Server) handleListTorrents(c *gin.Context) { method createTorrentClient (line 1126) | func (s *Server) createTorrentClient(cfg *config.TorrentConfig) (torre... method setConfigValue (line 1140) | func (s *Server) setConfigValue(cfg *config.Config, key, value string)... method downloadWebDAV (line 1183) | func (s *Server) downloadWebDAV(ctx context.Context, rawURL, filename ... method downloadWithExtractor (line 1275) | func (s *Server) downloadWithExtractor(ctx context.Context, url, filen... method updateJobFilename (line 1430) | func (s *Server) updateJobFilename(url, filename string) { method downloadVideoWithAudio (line 1445) | func (s *Server) downloadVideoWithAudio(ctx context.Context, format *e... method downloadAndStream (line 1531) | func (s *Server) downloadAndStream(c *gin.Context, url, filename strin... method handleGetHistory (line 1794) | func (s *Server) handleGetHistory(c *gin.Context) { method handleClearHistory (line 1850) | func (s *Server) handleClearHistory(c *gin.Context) { method handleDeleteHistory (line 1879) | func (s *Server) handleDeleteHistory(c *gin.Context) { function NewServer (line 59) | func NewServer(port int, outputDir, apiKey string, maxConcurrent int) *S... type ConfigSetRequest (line 507) | type ConfigSetRequest struct type ConfigRequest (line 513) | type ConfigRequest struct type WebDAVConfigRequest (line 672) | type WebDAVConfigRequest struct type TrackRequest (line 768) | type TrackRequest struct type TorrentConfigRequest (line 835) | type TorrentConfigRequest struct type TorrentAddRequest (line 846) | type TorrentAddRequest struct function downloadWebDAVMultiStream (line 1269) | func downloadWebDAVMultiStream(ctx context.Context, url, authHeader, out... function selectBestFormat (line 1649) | func selectBestFormat(formats []extractor.VideoFormat) *extractor.VideoF... function downloadFile (line 1676) | func downloadFile(ctx context.Context, url, outputPath string, headers m... function streamFile (line 1747) | func streamFile(w http.ResponseWriter, url, filename string, headers map... FILE: internal/server/webdav_browse.go type WebDAVRemoteInfo (line 13) | type WebDAVRemoteInfo struct type WebDAVFileInfo (line 20) | type WebDAVFileInfo struct type WebDAVDownloadRequest (line 28) | type WebDAVDownloadRequest struct method handleWebDAVRemotes (line 34) | func (s *Server) handleWebDAVRemotes(c *gin.Context) { method handleWebDAVList (line 59) | func (s *Server) handleWebDAVList(c *gin.Context) { method handleWebDAVDownload (line 137) | func (s *Server) handleWebDAVDownload(c *gin.Context) { FILE: internal/torrent/client.go type TorrentState (line 12) | type TorrentState method String (line 25) | func (s TorrentState) String() string { constant StateStopped (line 15) | StateStopped TorrentState = iota constant StateQueued (line 16) | StateQueued constant StateDownloading (line 17) | StateDownloading constant StateSeeding (line 18) | StateSeeding constant StatePaused (line 19) | StatePaused constant StateChecking (line 20) | StateChecking constant StateError (line 21) | StateError constant StateUnknown (line 22) | StateUnknown type TorrentInfo (line 47) | type TorrentInfo struct type AddOptions (line 65) | type AddOptions struct type AddResult (line 86) | type AddResult struct type Client (line 94) | type Client interface type ClientType (line 132) | type ClientType constant ClientTransmission (line 135) | ClientTransmission ClientType = "transmission" constant ClientQBittorrent (line 136) | ClientQBittorrent ClientType = "qbittorrent" constant ClientSynology (line 137) | ClientSynology ClientType = "synology" type Config (line 141) | type Config struct function NewClient (line 161) | func NewClient(cfg *Config) (Client, error) { function IsMagnetLink (line 175) | func IsMagnetLink(url string) bool { function IsTorrentURL (line 180) | func IsTorrentURL(url string) bool { FILE: internal/torrent/qbittorrent.go type QBittorrentClient (line 20) | type QBittorrentClient struct method Name (line 70) | func (c *QBittorrentClient) Name() string { method Connect (line 75) | func (c *QBittorrentClient) Connect() error { method getAPIVersion (line 110) | func (c *QBittorrentClient) getAPIVersion() { method Close (line 122) | func (c *QBittorrentClient) Close() error { method AddMagnet (line 132) | func (c *QBittorrentClient) AddMagnet(magnetURL string, opts *AddOptio... method AddTorrentURL (line 141) | func (c *QBittorrentClient) AddTorrentURL(torrentURL string, opts *Add... method AddTorrentFile (line 146) | func (c *QBittorrentClient) AddTorrentFile(path string, opts *AddOptio... method addTorrent (line 163) | func (c *QBittorrentClient) addTorrent(urls string, file *torrentFile,... method GetTorrent (line 272) | func (c *QBittorrentClient) GetTorrent(id string) (*TorrentInfo, error) { method ListTorrents (line 286) | func (c *QBittorrentClient) ListTorrents() ([]TorrentInfo, error) { method getTorrents (line 290) | func (c *QBittorrentClient) getTorrents(hash string) ([]TorrentInfo, e... method convertTorrent (line 342) | func (c *QBittorrentClient) convertTorrent(t *qbTorrent) TorrentInfo { method convertState (line 360) | func (c *QBittorrentClient) convertState(state string) TorrentState { method RemoveTorrent (line 382) | func (c *QBittorrentClient) RemoveTorrent(id string, deleteData bool) ... method PauseTorrent (line 401) | func (c *QBittorrentClient) PauseTorrent(id string) error { method ResumeTorrent (line 419) | func (c *QBittorrentClient) ResumeTorrent(id string) error { constant qbStateError (line 29) | qbStateError = "error" constant qbStateMissingFiles (line 30) | qbStateMissingFiles = "missingFiles" constant qbStateUploading (line 31) | qbStateUploading = "uploading" constant qbStatePausedUP (line 32) | qbStatePausedUP = "pausedUP" constant qbStateQueuedUP (line 33) | qbStateQueuedUP = "queuedUP" constant qbStateStalledUP (line 34) | qbStateStalledUP = "stalledUP" constant qbStateCheckingUP (line 35) | qbStateCheckingUP = "checkingUP" constant qbStateForcedUP (line 36) | qbStateForcedUP = "forcedUP" constant qbStateAllocating (line 37) | qbStateAllocating = "allocating" constant qbStateDownloading (line 38) | qbStateDownloading = "downloading" constant qbStateMetaDL (line 39) | qbStateMetaDL = "metaDL" constant qbStatePausedDL (line 40) | qbStatePausedDL = "pausedDL" constant qbStateQueuedDL (line 41) | qbStateQueuedDL = "queuedDL" constant qbStateStalledDL (line 42) | qbStateStalledDL = "stalledDL" constant qbStateCheckingDL (line 43) | qbStateCheckingDL = "checkingDL" constant qbStateForcedDL (line 44) | qbStateForcedDL = "forcedDL" constant qbStateCheckingResumeData (line 45) | qbStateCheckingResumeData = "checkingResumeData" constant qbStateMoving (line 46) | qbStateMoving = "moving" constant qbStateUnknown (line 47) | qbStateUnknown = "unknown" function NewQBittorrentClient (line 51) | func NewQBittorrentClient(cfg *Config) *QBittorrentClient { type torrentFile (line 158) | type torrentFile struct function extractHashFromMagnet (line 249) | func extractHashFromMagnet(magnet string) string { type qbTorrent (line 319) | type qbTorrent struct FILE: internal/torrent/synology.go type SynologyClient (line 20) | type SynologyClient struct method Name (line 94) | func (c *SynologyClient) Name() string { method Connect (line 99) | func (c *SynologyClient) Connect() error { method Close (line 126) | func (c *SynologyClient) Close() error { method doRequest (line 144) | func (c *SynologyClient) doRequest(path string, params url.Values, bod... method convertError (line 187) | func (c *SynologyClient) convertError(err *synError) error { method AddMagnet (line 217) | func (c *SynologyClient) AddMagnet(magnetURL string, opts *AddOptions)... method AddTorrentURL (line 248) | func (c *SynologyClient) AddTorrentURL(torrentURL string, opts *AddOpt... method AddTorrentFile (line 268) | func (c *SynologyClient) AddTorrentFile(path string, opts *AddOptions)... method GetTorrent (line 325) | func (c *SynologyClient) GetTorrent(id string) (*TorrentInfo, error) { method ListTorrents (line 353) | func (c *SynologyClient) ListTorrents() ([]TorrentInfo, error) { method convertTask (line 416) | func (c *SynologyClient) convertTask(t *synTask) *TorrentInfo { method convertStatus (line 451) | func (c *SynologyClient) convertStatus(status string) TorrentState { method RemoveTorrent (line 475) | func (c *SynologyClient) RemoveTorrent(id string, deleteData bool) err... method PauseTorrent (line 488) | func (c *SynologyClient) PauseTorrent(id string) error { method ResumeTorrent (line 500) | func (c *SynologyClient) ResumeTorrent(id string) error { type synResponse (line 28) | type synResponse struct type synError (line 34) | type synError struct constant synErrUnknown (line 40) | synErrUnknown = 100 constant synErrInvalidParam (line 41) | synErrInvalidParam = 101 constant synErrAPINotExists (line 42) | synErrAPINotExists = 102 constant synErrMethodNotExists (line 43) | synErrMethodNotExists = 103 constant synErrVersionNotSupport (line 44) | synErrVersionNotSupport = 104 constant synErrPermDenied (line 45) | synErrPermDenied = 105 constant synErrTimeout (line 46) | synErrTimeout = 106 constant synErrDuplicate (line 47) | synErrDuplicate = 107 constant synStatusWaiting (line 56) | synStatusWaiting = "waiting" constant synStatusDownloading (line 57) | synStatusDownloading = "downloading" constant synStatusPaused (line 58) | synStatusPaused = "paused" constant synStatusFinishing (line 59) | synStatusFinishing = "finishing" constant synStatusFinished (line 60) | synStatusFinished = "finished" constant synStatusHashChecking (line 61) | synStatusHashChecking = "hash_checking" constant synStatusSeeding (line 62) | synStatusSeeding = "seeding" constant synStatusFileHosting (line 63) | synStatusFileHosting = "filehosting_waiting" constant synStatusExtracting (line 64) | synStatusExtracting = "extracting" constant synStatusError (line 65) | synStatusError = "error" function NewSynologyClient (line 69) | func NewSynologyClient(cfg *Config) *SynologyClient { type synTask (line 385) | type synTask struct type synAdditional (line 394) | type synAdditional struct type synDetail (line 399) | type synDetail struct type synTransfer (line 409) | type synTransfer struct FILE: internal/torrent/transmission.go type TransmissionClient (line 16) | type TransmissionClient struct method Name (line 63) | func (c *TransmissionClient) Name() string { method Connect (line 68) | func (c *TransmissionClient) Connect() error { method Close (line 78) | func (c *TransmissionClient) Close() error { method doRequest (line 85) | func (c *TransmissionClient) doRequest(method string, args interface{}... method AddMagnet (line 160) | func (c *TransmissionClient) AddMagnet(magnetURL string, opts *AddOpti... method AddTorrentURL (line 182) | func (c *TransmissionClient) AddTorrentURL(url string, opts *AddOption... method AddTorrentFile (line 200) | func (c *TransmissionClient) AddTorrentFile(path string, opts *AddOpti... method addTorrent (line 222) | func (c *TransmissionClient) addTorrent(args map[string]interface{}) (... method GetTorrent (line 265) | func (c *TransmissionClient) GetTorrent(id string) (*TorrentInfo, erro... method ListTorrents (line 292) | func (c *TransmissionClient) ListTorrents() ([]TorrentInfo, error) { method convertTorrent (line 343) | func (c *TransmissionClient) convertTorrent(t *trTorrent) *TorrentInfo { method convertStatus (line 367) | func (c *TransmissionClient) convertStatus(status int) TorrentState { method RemoveTorrent (line 385) | func (c *TransmissionClient) RemoveTorrent(id string, deleteData bool)... method PauseTorrent (line 396) | func (c *TransmissionClient) PauseTorrent(id string) error { method ResumeTorrent (line 406) | func (c *TransmissionClient) ResumeTorrent(id string) error { type trRequest (line 24) | type trRequest struct type trResponse (line 30) | type trResponse struct constant trStatusStopped (line 38) | trStatusStopped = 0 constant trStatusQueuedVerify (line 39) | trStatusQueuedVerify = 1 constant trStatusVerifying (line 40) | trStatusVerifying = 2 constant trStatusQueuedDown (line 41) | trStatusQueuedDown = 3 constant trStatusDownloading (line 42) | trStatusDownloading = 4 constant trStatusQueuedSeed (line 43) | trStatusQueuedSeed = 5 constant trStatusSeeding (line 44) | trStatusSeeding = 6 function NewTransmissionClient (line 48) | func NewTransmissionClient(cfg *Config) *TransmissionClient { type trTorrentAdded (line 258) | type trTorrentAdded struct type trTorrent (line 325) | type trTorrent struct FILE: internal/updater/updater.go constant repoOwner (line 13) | repoOwner = "guiyumin" constant repoName (line 14) | repoName = "vget" function CheckUpdate (line 18) | func CheckUpdate() (*selfupdate.Release, bool, error) { function Update (line 54) | func Update() error { function GetPlatformAssetName (line 103) | func GetPlatformAssetName() string { FILE: tauri/src-tauri/build.rs function main (line 1) | fn main() { FILE: tauri/src-tauri/src/auth.rs type SiteAuthStatus (line 10) | pub struct SiteAuthStatus { type QRSession (line 17) | pub struct QRSession { type QRPollResult (line 23) | pub struct QRPollResult { function config_dir (line 31) | fn config_dir() -> PathBuf { function xhs_cookies_path (line 38) | fn xhs_cookies_path() -> PathBuf { function bilibili_check_status (line 45) | pub async fn bilibili_check_status() -> Result { function fetch_bilibili_user_info (line 79) | async fn fetch_bilibili_user_info(cookie: &str) -> Result<(String, Optio... function bilibili_qr_generate (line 105) | pub async fn bilibili_qr_generate() -> Result { function bilibili_qr_poll (line 134) | pub async fn bilibili_qr_poll(qrcode_key: String) -> Result String { function bilibili_save_cookie (line 246) | pub async fn bilibili_save_cookie(cookie: String) -> Result<(), String> { function bilibili_logout (line 263) | pub async fn bilibili_logout() -> Result<(), String> { function xhs_check_status (line 276) | pub async fn xhs_check_status() -> Result { function xhs_logout (line 313) | pub async fn xhs_logout() -> Result<(), String> { function xhs_open_login_window (line 332) | pub async fn xhs_open_login_window(app: tauri::AppHandle) -> Result<(), ... FILE: tauri/src-tauri/src/config.rs type WebDAVServer (line 7) | pub struct WebDAVServer { type TwitterConfig (line 14) | pub struct TwitterConfig { type ServerConfig (line 20) | pub struct ServerConfig { function default_max_concurrent (line 25) | fn default_max_concurrent() -> u32 { type BilibiliConfig (line 30) | pub struct BilibiliConfig { type Kuaidi100Config (line 36) | pub struct Kuaidi100Config { type ExpressConfig (line 44) | pub struct ExpressConfig { type Config (line 50) | pub struct Config { function default_language (line 73) | fn default_language() -> String { function default_output_dir (line 77) | fn default_output_dir() -> String { function default_format (line 83) | fn default_format() -> String { function default_quality (line 87) | fn default_quality() -> String { function default_theme (line 91) | fn default_theme() -> String { method default (line 96) | fn default() -> Self { function config_dir (line 112) | fn config_dir() -> PathBuf { function config_path (line 121) | fn config_path() -> PathBuf { function get_config (line 125) | pub fn get_config() -> Result> { function save_config (line 136) | pub fn save_config(config: &Config) -> Result<(), Box Self { method add_job (line 53) | pub async fn add_job(&self, job: DownloadJob) -> tokio::sync::watch::R... method update_job (line 63) | pub async fn update_job(&self, job_id: &str, status: DownloadStatus, p... method cancel_job (line 71) | pub async fn cancel_job(&self, job_id: &str) -> Result<(), String> { method get_job (line 79) | pub async fn get_job(&self, job_id: &str) -> Option { method remove_job (line 84) | pub async fn remove_job(&self, job_id: &str) { method default (line 91) | fn default() -> Self { FILE: tauri/src-tauri/src/downloader/simple.rs type SimpleDownloader (line 12) | pub struct SimpleDownloader { method new (line 17) | pub fn new() -> Self { method download (line 26) | pub async fn download( method download_and_merge (line 141) | pub async fn download_and_merge( method download_file_with_progress (line 265) | async fn download_file_with_progress( method default (line 360) | fn default() -> Self { FILE: tauri/src-tauri/src/extractor/bilibili.rs constant XOR_CODE (line 12) | const XOR_CODE: i64 = 23442827791579; constant MASK_CODE (line 13) | const MASK_CODE: i64 = (1 << 51) - 1; constant MAX_AID (line 14) | const MAX_AID: i64 = MASK_CODE + 1; constant BASE (line 15) | const BASE: i64 = 58; constant BV_LEN (line 16) | const BV_LEN: usize = 9; constant ALPHABET (line 18) | const ALPHABET: &[u8] = b"FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12... constant MIXIN_KEY_ENC_TAB (line 21) | const MIXIN_KEY_ENC_TAB: [usize; 32] = [ function quality_map (line 27) | fn quality_map(id: i32) -> Option<&'static str> { function codec_name (line 44) | fn codec_name(codec_id: i32) -> &'static str { function rev_alphabet (line 64) | fn rev_alphabet() -> [i64; 256] { function bv_to_av (line 73) | pub fn bv_to_av(bvid: &str) -> Result { function av_to_bv (line 108) | pub fn av_to_bv(avid: i64) -> Result { type BilibiliExtractor (line 134) | pub struct BilibiliExtractor { method new (line 141) | pub fn new() -> Self { method matches (line 158) | pub fn matches(url: &Url) -> bool { method extract (line 164) | pub async fn extract(url_str: &str) -> Result { method do_extract (line 169) | async fn do_extract(&mut self, url_str: &str) -> Result Result<(i64, String... method resolve_short_url (line 242) | async fn resolve_short_url(&self, short_url: &str) -> Result Result<(), ExtractError> { method fetch_video_info (line 281) | async fn fetch_video_info(&self, aid: i64) -> Result Result) -> String { method build_formats (line 376) | fn build_formats(&self, streams: &DashInfo) -> Vec { method build_headers (line 431) | fn build_headers(&self) -> HeaderMap { function user_agent (line 455) | fn user_agent() -> &'static str { function extract_key_from_url (line 459) | fn extract_key_from_url(url: &str) -> String { function get_mixin_key (line 468) | fn get_mixin_key(orig: &str) -> String { function filter_wbi_value (line 477) | fn filter_wbi_value(s: &str) -> String { function build_query (line 484) | fn build_query(params: &BTreeMap<&str, String>) -> String { type NavResponse (line 495) | struct NavResponse { type NavData (line 500) | struct NavData { type WbiImg (line 505) | struct WbiImg { type VideoInfoResponse (line 511) | struct VideoInfoResponse { type VideoInfo (line 518) | struct VideoInfo { type Owner (line 528) | struct Owner { type Page (line 533) | struct Page { type PlayUrlResponse (line 538) | struct PlayUrlResponse { type PlayUrlData (line 545) | struct PlayUrlData { type DashInfo (line 550) | struct DashInfo { type VideoStream (line 556) | struct VideoStream { type AudioStream (line 568) | struct AudioStream { FILE: tauri/src-tauri/src/extractor/direct.rs constant VIDEO_EXTENSIONS (line 5) | const VIDEO_EXTENSIONS: &[&str] = &["mp4", "mkv", "webm", "avi", "mov", ... constant AUDIO_EXTENSIONS (line 6) | const AUDIO_EXTENSIONS: &[&str] = &["mp3", "m4a", "aac", "flac", "wav", ... constant IMAGE_EXTENSIONS (line 7) | const IMAGE_EXTENSIONS: &[&str] = &["jpg", "jpeg", "png", "gif", "webp",... type DirectExtractor (line 9) | pub struct DirectExtractor; method matches (line 13) | pub fn matches(url: &Url) -> bool { method extract (line 21) | pub async fn extract(url: &str) -> Result { FILE: tauri/src-tauri/src/extractor/mod.rs function extract_media (line 12) | pub async fn extract_media(url_str: &str) -> Result) -> Self { method matches (line 39) | pub fn matches(url: &Url) -> bool { method extract (line 48) | pub async fn extract(url_str: &str, auth_token: Option) -> Res... method do_extract (line 53) | async fn do_extract(&mut self, url_str: &str) -> Result Result { method fetch_from_syndication (line 99) | async fn fetch_from_syndication(&self, tweet_id: &str) -> Result Result<(), ExtractError> { method fetch_from_graphql_auth (line 177) | async fn fetch_from_graphql_auth(&mut self, tweet_id: &str) -> Result<... method parse_syndication_response (line 220) | fn parse_syndication_response( method parse_graphql_response (line 336) | fn parse_graphql_response( function build_graphql_params (line 469) | fn build_graphql_params(tweet_id: &str) -> (String, String) { function truncate_text (line 502) | fn truncate_text(s: &str, max_len: usize) -> String { function extract_resolution (line 512) | fn extract_resolution(url: &str) -> (u32, u32) { function estimate_quality (line 522) | fn estimate_quality(bitrate: Option) -> Option { function get_high_quality_image_url (line 536) | fn get_high_quality_image_url(image_url: &str) -> String { function get_image_extension (line 548) | fn get_image_extension(image_url: &str) -> String { type SyndicationResponse (line 564) | struct SyndicationResponse { type SyndicationUser (line 574) | struct SyndicationUser { type SyndicationMedia (line 579) | struct SyndicationMedia { type SyndicationVideoInfo (line 591) | struct SyndicationVideoInfo { type SyndicationVariant (line 596) | struct SyndicationVariant { type SyndicationVideo (line 604) | struct SyndicationVideo { type SyndicationVideoVariant (line 609) | struct SyndicationVideoVariant { type GraphQLResponse (line 616) | struct GraphQLResponse { type GraphQLData (line 621) | struct GraphQLData { type GraphQLTweetResult (line 627) | struct GraphQLTweetResult { type GraphQLResult (line 632) | struct GraphQLResult { type GraphQLCore (line 642) | struct GraphQLCore { type GraphQLUserResults (line 647) | struct GraphQLUserResults { type GraphQLUser (line 652) | struct GraphQLUser { type GraphQLUserLegacy (line 657) | struct GraphQLUserLegacy { type GraphQLLegacy (line 662) | struct GraphQLLegacy { type GraphQLExtendedEntities (line 668) | struct GraphQLExtendedEntities { type GraphQLMedia (line 673) | struct GraphQLMedia { type GraphQLOriginalInfo (line 682) | struct GraphQLOriginalInfo { type GraphQLVideoInfo (line 688) | struct GraphQLVideoInfo { type GraphQLVariant (line 695) | struct GraphQLVariant { FILE: tauri/src-tauri/src/extractor/types.rs type ExtractError (line 6) | pub enum ExtractError { type MediaType (line 23) | pub enum MediaType { type Format (line 30) | pub struct Format { type MediaInfo (line 49) | pub struct MediaInfo { FILE: tauri/src-tauri/src/ffmpeg.rs function parse_time_to_secs (line 8) | fn parse_time_to_secs(time_str: &str) -> Option { function merge_video_audio (line 23) | pub async fn merge_video_audio( type MediaInfoResult (line 112) | pub struct MediaInfoResult { type StreamInfo (line 123) | pub struct StreamInfo { function get_media_info (line 137) | pub async fn get_media_info(input_path: &str) -> Result Result { function save_config (line 32) | async fn save_config(config: Config) -> Result<(), String> { function extract_media (line 43) | async fn extract_media(url: String) -> Result { function open_output_folder (line 50) | async fn open_output_folder(path: String) -> Result<(), String> { function start_download (line 92) | async fn start_download( function cancel_download (line 176) | async fn cancel_download( function get_download_status (line 184) | async fn get_download_status( function ffmpeg_get_media_info (line 194) | async fn ffmpeg_get_media_info(input_path: String) -> Result Result { function pdf_merge (line 605) | async fn pdf_merge(input_paths: Vec, output_path: String) -> Res... function pdf_images_to_pdf (line 612) | async fn pdf_images_to_pdf(image_paths: Vec, output_path: String... function pdf_delete_pages (line 619) | async fn pdf_delete_pages( function pdf_remove_watermark (line 632) | async fn pdf_remove_watermark( function pdf_print (line 642) | async fn pdf_print(input_path: String) -> Result<(), String> { function pdf_open_external (line 649) | async fn pdf_open_external(input_path: String) -> Result<(), String> { function read_text_file (line 658) | async fn read_text_file(path: String) -> Result { function md_to_pdf (line 669) | async fn md_to_pdf( function run (line 685) | pub fn run() { FILE: tauri/src-tauri/src/main.rs function main (line 4) | fn main() { FILE: tauri/src-tauri/src/md2pdf.rs function convert_md_to_pdf (line 20) | pub fn convert_md_to_pdf( function markdown_to_html (line 43) | fn markdown_to_html(markdown: &str, theme: &str) -> String { function html_escape (line 250) | fn html_escape(text: &str) -> String { function heading_level_to_u8 (line 259) | fn heading_level_to_u8(level: HeadingLevel) -> u8 { function generate_font_css (line 271) | fn generate_font_css() -> String { function generate_styled_html (line 336) | fn generate_styled_html(content: &str, theme: &str) -> String { function get_theme_css (line 360) | fn get_theme_css(theme: &str) -> &'static str { function html_to_pdf (line 368) | fn html_to_pdf(html: &str, output_path: &str, page_size: &str) -> Result... constant LIGHT_THEME_CSS (line 442) | const LIGHT_THEME_CSS: &str = r#" constant DARK_THEME_CSS (line 789) | const DARK_THEME_CSS: &str = r#" FILE: tauri/src-tauri/src/pdf.rs type PdfInfo (line 6) | pub struct PdfInfo { function get_pdf_info (line 14) | pub fn get_pdf_info(path: &str) -> Result { function merge_pdfs (line 51) | pub fn merge_pdfs(input_paths: &[String], output_path: &str) -> Result<(... function update_references (line 132) | fn update_references(obj: &mut Object, id_map: &HashMap Resul... type WatermarkRemovalResult (line 233) | pub struct WatermarkRemovalResult { function remove_watermark (line 241) | pub fn remove_watermark(input_path: &str, output_path: &str) -> Result Result<(), String> { function open_pdf_external (line 479) | pub fn open_pdf_external(path: &str) -> Result<(), String> { function test_get_pdf_info (line 512) | fn test_get_pdf_info() { FILE: tauri/src/components/AppSidebar.tsx type NavItem (line 15) | interface NavItem { type AppSidebarProps (line 21) | interface AppSidebarProps { function AppSidebar (line 26) | function AppSidebar({ collapsed, onToggle }: AppSidebarProps) { FILE: tauri/src/components/home/DownloadItem.tsx type DownloadItemProps (line 9) | interface DownloadItemProps { function DownloadItem (line 13) | function DownloadItem({ download }: DownloadItemProps) { FILE: tauri/src/components/home/HomePage.tsx function HomePage (line 24) | function HomePage() { FILE: tauri/src/components/home/types.ts type MediaInfo (line 1) | interface MediaInfo { type Config (line 19) | interface Config { function formatBytes (line 23) | function formatBytes(bytes: number): string { function formatSpeed (line 31) | function formatSpeed(bytesPerSecond: number): string { FILE: tauri/src/components/icons/PdfIcon.tsx function PdfIcon (line 3) | function PdfIcon(props: SVGProps) { FILE: tauri/src/components/media-tools/MediaToolsPage.tsx type Tool (line 26) | interface Tool { function MediaToolsPage (line 72) | function MediaToolsPage() { FILE: tauri/src/components/media-tools/panels/AudioConvertPanel.tsx constant AUDIO_EXTENSIONS (line 18) | const AUDIO_EXTENSIONS = ["mp3", "aac", "flac", "wav", "ogg", "m4a"]; function AudioConvertPanel (line 20) | function AudioConvertPanel({ FILE: tauri/src/components/media-tools/panels/CompressPanel.tsx constant VIDEO_EXTENSIONS (line 12) | const VIDEO_EXTENSIONS = ["mp4", "mkv", "webm", "mov", "avi"]; function CompressPanel (line 14) | function CompressPanel({ FILE: tauri/src/components/media-tools/panels/ConvertPanel.tsx constant VIDEO_EXTENSIONS (line 18) | const VIDEO_EXTENSIONS = ["mp4", "mkv", "webm", "mov", "avi"]; function ConvertPanel (line 20) | function ConvertPanel({ FILE: tauri/src/components/media-tools/panels/ExtractAudioPanel.tsx constant VIDEO_EXTENSIONS (line 18) | const VIDEO_EXTENSIONS = ["mp4", "mkv", "webm", "mov", "avi"]; function ExtractAudioPanel (line 20) | function ExtractAudioPanel({ FILE: tauri/src/components/media-tools/panels/ExtractFramesPanel.tsx constant VIDEO_EXTENSIONS (line 12) | const VIDEO_EXTENSIONS = ["mp4", "mkv", "webm", "mov", "avi"]; function ExtractFramesPanel (line 14) | function ExtractFramesPanel({ FILE: tauri/src/components/media-tools/panels/TrimPanel.tsx constant VIDEO_EXTENSIONS (line 12) | const VIDEO_EXTENSIONS = ["mp4", "mkv", "webm", "mov", "avi"]; function TrimPanel (line 14) | function TrimPanel({ FILE: tauri/src/components/media-tools/types.ts type MediaInfo (line 1) | interface MediaInfo { type StreamInfo (line 11) | interface StreamInfo { type Config (line 24) | interface Config { type ToolId (line 28) | type ToolId = type PanelProps (line 36) | interface PanelProps { function formatBytes (line 49) | function formatBytes(bytes: number): string { function formatDuration (line 57) | function formatDuration(seconds: number): string { function getBasename (line 65) | function getBasename(filePath: string): string { function generateOutputPath (line 71) | function generateOutputPath(outputDir: string, inputFile: string, ext: s... FILE: tauri/src/components/pdf-tools/PDFToolsPage.tsx type Tool (line 9) | interface Tool { function PDFToolsPage (line 49) | function PDFToolsPage() { FILE: tauri/src/components/pdf-tools/panels/DeletePagesPanel.tsx constant PDF_EXTENSIONS (line 12) | const PDF_EXTENSIONS = ["pdf"]; function DeletePagesPanel (line 14) | function DeletePagesPanel({ outputDir, loading, setLoading }: PdfPanelPr... FILE: tauri/src/components/pdf-tools/panels/ImagesToPdfPanel.tsx constant IMAGE_EXTENSIONS (line 12) | const IMAGE_EXTENSIONS = ["png", "jpg", "jpeg", "gif", "bmp", "webp"]; function ImagesToPdfPanel (line 14) | function ImagesToPdfPanel({ outputDir, loading, setLoading }: PdfPanelPr... FILE: tauri/src/components/pdf-tools/panels/Md2PdfPanel.tsx function Md2PdfPanel (line 21) | function Md2PdfPanel({ outputDir, loading, setLoading }: PdfPanelProps) { FILE: tauri/src/components/pdf-tools/panels/MergePdfPanel.tsx constant PDF_EXTENSIONS (line 12) | const PDF_EXTENSIONS = ["pdf"]; function MergePdfPanel (line 14) | function MergePdfPanel({ outputDir, loading, setLoading }: PdfPanelProps) { FILE: tauri/src/components/pdf-tools/panels/RemoveWatermarkPanel.tsx constant PDF_EXTENSIONS (line 12) | const PDF_EXTENSIONS = ["pdf"]; function RemoveWatermarkPanel (line 14) | function RemoveWatermarkPanel({ outputDir, loading, setLoading }: PdfPan... FILE: tauri/src/components/pdf-tools/types.ts type PdfInfo (line 1) | interface PdfInfo { type WatermarkRemovalResult (line 8) | interface WatermarkRemovalResult { type Config (line 14) | interface Config { type PdfToolId (line 18) | type PdfToolId = "merge" | "images-to-pdf" | "delete-pages" | "remove-wa... type PdfPanelProps (line 20) | interface PdfPanelProps { function getBasename (line 26) | function getBasename(filePath: string): string { function generateOutputPath (line 32) | function generateOutputPath( FILE: tauri/src/components/settings/AboutSettings.tsx function AboutSettings (line 16) | function AboutSettings() { FILE: tauri/src/components/settings/GeneralSettings.tsx type GeneralSettingsProps (line 28) | interface GeneralSettingsProps { function GeneralSettings (line 33) | function GeneralSettings({ config, onUpdate }: GeneralSettingsProps) { FILE: tauri/src/components/settings/SettingsPage.tsx type SettingsSection (line 13) | type SettingsSection = "general" | "sites" | "about"; function SettingsPage (line 21) | function SettingsPage() { FILE: tauri/src/components/settings/SiteSettings.tsx type SiteSettingsProps (line 47) | interface SiteSettingsProps { type CookieFields (line 52) | interface CookieFields { function buildCookie (line 58) | function buildCookie(fields: CookieFields): string { function SiteSettings (line 66) | function SiteSettings({ config, onUpdate }: SiteSettingsProps) { function BilibiliQRLogin (line 239) | function BilibiliQRLogin({ function BilibiliCookieLogin (line 379) | function BilibiliCookieLogin({ function XiaohongshuLogin (line 473) | function XiaohongshuLogin() { function DockerServerSettings (line 527) | function DockerServerSettings() { FILE: tauri/src/components/settings/types.ts type WebDAVServer (line 1) | interface WebDAVServer { type TwitterConfig (line 7) | interface TwitterConfig { type ServerConfig (line 11) | interface ServerConfig { type BilibiliConfig (line 15) | interface BilibiliConfig { type Kuaidi100Config (line 19) | interface Kuaidi100Config { type ExpressConfig (line 24) | interface ExpressConfig { type Config (line 28) | interface Config { FILE: tauri/src/components/ui/accordion.tsx function Accordion (line 7) | function Accordion({ function AccordionItem (line 13) | function AccordionItem({ function AccordionTrigger (line 26) | function AccordionTrigger({ function AccordionContent (line 48) | function AccordionContent({ FILE: tauri/src/components/ui/alert-dialog.tsx function AlertDialog (line 7) | function AlertDialog({ function AlertDialogTrigger (line 13) | function AlertDialogTrigger({ function AlertDialogPortal (line 21) | function AlertDialogPortal({ function AlertDialogOverlay (line 29) | function AlertDialogOverlay({ function AlertDialogContent (line 45) | function AlertDialogContent({ function AlertDialogHeader (line 64) | function AlertDialogHeader({ function AlertDialogFooter (line 77) | function AlertDialogFooter({ function AlertDialogTitle (line 93) | function AlertDialogTitle({ function AlertDialogDescription (line 106) | function AlertDialogDescription({ function AlertDialogAction (line 119) | function AlertDialogAction({ function AlertDialogCancel (line 131) | function AlertDialogCancel({ FILE: tauri/src/components/ui/alert.tsx function Alert (line 22) | function Alert({ function AlertTitle (line 37) | function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { function AlertDescription (line 50) | function AlertDescription({ FILE: tauri/src/components/ui/aspect-ratio.tsx function AspectRatio (line 5) | function AspectRatio({ FILE: tauri/src/components/ui/avatar.tsx function Avatar (line 6) | function Avatar({ function AvatarImage (line 22) | function AvatarImage({ function AvatarFallback (line 35) | function AvatarFallback({ FILE: tauri/src/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: tauri/src/components/ui/breadcrumb.tsx function Breadcrumb (line 7) | function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { function BreadcrumbList (line 11) | function BreadcrumbList({ className, ...props }: React.ComponentProps<"o... function BreadcrumbItem (line 24) | function BreadcrumbItem({ className, ...props }: React.ComponentProps<"l... function BreadcrumbLink (line 34) | function BreadcrumbLink({ function BreadcrumbPage (line 52) | function BreadcrumbPage({ className, ...props }: React.ComponentProps<"s... function BreadcrumbSeparator (line 65) | function BreadcrumbSeparator({ function BreadcrumbEllipsis (line 83) | function BreadcrumbEllipsis({ FILE: tauri/src/components/ui/button-group.tsx function ButtonGroup (line 24) | function ButtonGroup({ function ButtonGroupText (line 40) | function ButtonGroupText({ function ButtonGroupSeparator (line 60) | function ButtonGroupSeparator({ FILE: tauri/src/components/ui/button.tsx function Button (line 39) | function Button({ FILE: tauri/src/components/ui/calendar.tsx function Calendar (line 18) | function Calendar({ function CalendarDayButton (line 182) | function CalendarDayButton({ FILE: tauri/src/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: tauri/src/components/ui/carousel.tsx type CarouselApi (line 10) | type CarouselApi = UseEmblaCarouselType[1] type UseCarouselParameters (line 11) | type UseCarouselParameters = Parameters type CarouselOptions (line 12) | type CarouselOptions = UseCarouselParameters[0] type CarouselPlugin (line 13) | type CarouselPlugin = UseCarouselParameters[1] type CarouselProps (line 15) | type CarouselProps = { type CarouselContextProps (line 22) | type CarouselContextProps = { function useCarousel (line 33) | function useCarousel() { function Carousel (line 43) | function Carousel({ function CarouselContent (line 133) | function CarouselContent({ className, ...props }: React.ComponentProps<"... function CarouselItem (line 154) | function CarouselItem({ className, ...props }: React.ComponentProps<"div... function CarouselPrevious (line 172) | function CarouselPrevious({ function CarouselNext (line 202) | function CarouselNext({ FILE: tauri/src/components/ui/chart.tsx constant THEMES (line 9) | const THEMES = { light: "", dark: ".dark" } as const type ChartConfig (line 11) | type ChartConfig = { type ChartContextProps (line 21) | type ChartContextProps = { function useChart (line 27) | function useChart() { function ChartContainer (line 37) | function ChartContainer({ function ChartTooltipContent (line 107) | function ChartTooltipContent({ function ChartLegendContent (line 255) | function ChartLegendContent({ function getPayloadConfigFromPayload (line 312) | function getPayloadConfigFromPayload( FILE: tauri/src/components/ui/checkbox.tsx function Checkbox (line 9) | function Checkbox({ FILE: tauri/src/components/ui/collapsible.tsx function Collapsible (line 3) | function Collapsible({ function CollapsibleTrigger (line 9) | function CollapsibleTrigger({ function CollapsibleContent (line 20) | function CollapsibleContent({ FILE: tauri/src/components/ui/command.tsx function Command (line 14) | function Command({ function CommandDialog (line 30) | function CommandDialog({ function CommandInput (line 61) | function CommandInput({ function CommandList (line 83) | function CommandList({ function CommandEmpty (line 99) | function CommandEmpty({ function CommandGroup (line 111) | function CommandGroup({ function CommandSeparator (line 127) | function CommandSeparator({ function CommandItem (line 140) | function CommandItem({ function CommandShortcut (line 156) | function CommandShortcut({ FILE: tauri/src/components/ui/context-menu.tsx function ContextMenu (line 9) | function ContextMenu({ function ContextMenuTrigger (line 15) | function ContextMenuTrigger({ function ContextMenuGroup (line 23) | function ContextMenuGroup({ function ContextMenuPortal (line 31) | function ContextMenuPortal({ function ContextMenuSub (line 39) | function ContextMenuSub({ function ContextMenuRadioGroup (line 45) | function ContextMenuRadioGroup({ function ContextMenuSubTrigger (line 56) | function ContextMenuSubTrigger({ function ContextMenuSubContent (line 80) | function ContextMenuSubContent({ function ContextMenuContent (line 96) | function ContextMenuContent({ function ContextMenuItem (line 114) | function ContextMenuItem({ function ContextMenuCheckboxItem (line 137) | function ContextMenuCheckboxItem({ function ContextMenuRadioItem (line 163) | function ContextMenuRadioItem({ function ContextMenuLabel (line 187) | function ContextMenuLabel({ function ContextMenuSeparator (line 207) | function ContextMenuSeparator({ function ContextMenuShortcut (line 220) | function ContextMenuShortcut({ FILE: tauri/src/components/ui/dialog.tsx function Dialog (line 7) | function Dialog({ function DialogTrigger (line 13) | function DialogTrigger({ function DialogPortal (line 19) | function DialogPortal({ function DialogClose (line 25) | function DialogClose({ function DialogOverlay (line 31) | function DialogOverlay({ function DialogContent (line 47) | function DialogContent({ function DialogHeader (line 81) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 91) | function DialogFooter({ className, ...props }: React.ComponentProps<"div... function DialogTitle (line 104) | function DialogTitle({ function DialogDescription (line 117) | function DialogDescription({ FILE: tauri/src/components/ui/drawer.tsx function Drawer (line 8) | function Drawer({ function DrawerTrigger (line 14) | function DrawerTrigger({ function DrawerPortal (line 20) | function DrawerPortal({ function DrawerClose (line 26) | function DrawerClose({ function DrawerOverlay (line 32) | function DrawerOverlay({ function DrawerContent (line 48) | function DrawerContent({ function DrawerHeader (line 75) | function DrawerHeader({ className, ...props }: React.ComponentProps<"div... function DrawerFooter (line 88) | function DrawerFooter({ className, ...props }: React.ComponentProps<"div... function DrawerTitle (line 98) | function DrawerTitle({ function DrawerDescription (line 111) | function DrawerDescription({ FILE: tauri/src/components/ui/dropdown-menu.tsx function DropdownMenu (line 7) | function DropdownMenu({ function DropdownMenuPortal (line 13) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 21) | function DropdownMenuTrigger({ function DropdownMenuContent (line 32) | function DropdownMenuContent({ function DropdownMenuGroup (line 52) | function DropdownMenuGroup({ function DropdownMenuItem (line 60) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 83) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 109) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 120) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 144) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 164) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 177) | function DropdownMenuShortcut({ function DropdownMenuSub (line 193) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 199) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 223) | function DropdownMenuSubContent({ FILE: tauri/src/components/ui/empty.tsx function Empty (line 5) | function Empty({ className, ...props }: React.ComponentProps<"div">) { function EmptyHeader (line 18) | function EmptyHeader({ className, ...props }: React.ComponentProps<"div"... function EmptyMedia (line 46) | function EmptyMedia({ function EmptyTitle (line 61) | function EmptyTitle({ className, ...props }: React.ComponentProps<"div">) { function EmptyDescription (line 71) | function EmptyDescription({ className, ...props }: React.ComponentProps<... function EmptyContent (line 84) | function EmptyContent({ className, ...props }: React.ComponentProps<"div... FILE: tauri/src/components/ui/field.tsx function FieldSet (line 8) | function FieldSet({ className, ...props }: React.ComponentProps<"fieldse... function FieldLegend (line 22) | function FieldLegend({ function FieldGroup (line 42) | function FieldGroup({ className, ...props }: React.ComponentProps<"div">) { function Field (line 79) | function Field({ function FieldContent (line 95) | function FieldContent({ className, ...props }: React.ComponentProps<"div... function FieldLabel (line 108) | function FieldLabel({ function FieldTitle (line 126) | function FieldTitle({ className, ...props }: React.ComponentProps<"div">) { function FieldDescription (line 139) | function FieldDescription({ className, ...props }: React.ComponentProps<... function FieldSeparator (line 154) | function FieldSeparator({ function FieldError (line 184) | function FieldError({ FILE: tauri/src/components/ui/file-drop-input.tsx type FileDropInputProps (line 7) | interface FileDropInputProps { function FileDropInput (line 30) | function FileDropInput({ FILE: tauri/src/components/ui/form.tsx type FormFieldContextValue (line 21) | type FormFieldContextValue< type FormItemContextValue (line 68) | type FormItemContextValue = { function FormItem (line 76) | function FormItem({ className, ...props }: React.ComponentProps<"div">) { function FormLabel (line 90) | function FormLabel({ function FormControl (line 107) | function FormControl({ ...props }: React.ComponentProps) { function FormDescription (line 125) | function FormDescription({ className, ...props }: React.ComponentProps<"... function FormMessage (line 138) | function FormMessage({ className, ...props }: React.ComponentProps<"p">) { FILE: tauri/src/components/ui/hover-card.tsx function HoverCard (line 8) | function HoverCard({ function HoverCardTrigger (line 14) | function HoverCardTrigger({ function HoverCardContent (line 22) | function HoverCardContent({ FILE: tauri/src/components/ui/input-group.tsx function InputGroup (line 11) | function InputGroup({ className, ...props }: React.ComponentProps<"div">) { function InputGroupAddon (line 60) | function InputGroupAddon({ function InputGroupButton (line 100) | function InputGroupButton({ function InputGroupText (line 119) | function InputGroupText({ className, ...props }: React.ComponentProps<"s... function InputGroupInput (line 131) | function InputGroupInput({ function InputGroupTextarea (line 147) | function InputGroupTextarea({ FILE: tauri/src/components/ui/input-otp.tsx function InputOTP (line 7) | function InputOTP({ function InputOTPGroup (line 27) | function InputOTPGroup({ className, ...props }: React.ComponentProps<"di... function InputOTPSlot (line 37) | function InputOTPSlot({ function InputOTPSeparator (line 67) | function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) { FILE: tauri/src/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: tauri/src/components/ui/item.tsx function ItemGroup (line 8) | function ItemGroup({ className, ...props }: React.ComponentProps<"div">) { function ItemSeparator (line 19) | function ItemSeparator({ function Item (line 54) | function Item({ function ItemMedia (line 91) | function ItemMedia({ function ItemContent (line 106) | function ItemContent({ className, ...props }: React.ComponentProps<"div"... function ItemTitle (line 119) | function ItemTitle({ className, ...props }: React.ComponentProps<"div">) { function ItemDescription (line 132) | function ItemDescription({ className, ...props }: React.ComponentProps<"... function ItemActions (line 146) | function ItemActions({ className, ...props }: React.ComponentProps<"div"... function ItemHeader (line 156) | function ItemHeader({ className, ...props }: React.ComponentProps<"div">) { function ItemFooter (line 169) | function ItemFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: tauri/src/components/ui/kbd.tsx function Kbd (line 3) | function Kbd({ className, ...props }: React.ComponentProps<"kbd">) { function KbdGroup (line 18) | function KbdGroup({ className, ...props }: React.ComponentProps<"div">) { FILE: tauri/src/components/ui/label.tsx function Label (line 8) | function Label({ FILE: tauri/src/components/ui/menubar.tsx function Menubar (line 7) | function Menubar({ function MenubarMenu (line 23) | function MenubarMenu({ function MenubarGroup (line 29) | function MenubarGroup({ function MenubarPortal (line 35) | function MenubarPortal({ function MenubarRadioGroup (line 41) | function MenubarRadioGroup({ function MenubarTrigger (line 49) | function MenubarTrigger({ function MenubarContent (line 65) | function MenubarContent({ function MenubarItem (line 89) | function MenubarItem({ function MenubarCheckboxItem (line 112) | function MenubarCheckboxItem({ function MenubarRadioItem (line 138) | function MenubarRadioItem({ function MenubarLabel (line 162) | function MenubarLabel({ function MenubarSeparator (line 182) | function MenubarSeparator({ function MenubarShortcut (line 195) | function MenubarShortcut({ function MenubarSub (line 211) | function MenubarSub({ function MenubarSubTrigger (line 217) | function MenubarSubTrigger({ function MenubarSubContent (line 241) | function MenubarSubContent({ FILE: tauri/src/components/ui/navigation-menu.tsx function NavigationMenu (line 8) | function NavigationMenu({ function NavigationMenuList (line 32) | function NavigationMenuList({ function NavigationMenuItem (line 48) | function NavigationMenuItem({ function NavigationMenuTrigger (line 65) | function NavigationMenuTrigger({ function NavigationMenuContent (line 85) | function NavigationMenuContent({ function NavigationMenuViewport (line 102) | function NavigationMenuViewport({ function NavigationMenuLink (line 124) | function NavigationMenuLink({ function NavigationMenuIndicator (line 140) | function NavigationMenuIndicator({ FILE: tauri/src/components/ui/pagination.tsx function Pagination (line 11) | function Pagination({ className, ...props }: React.ComponentProps<"nav">) { function PaginationContent (line 23) | function PaginationContent({ function PaginationItem (line 36) | function PaginationItem({ ...props }: React.ComponentProps<"li">) { type PaginationLinkProps (line 40) | type PaginationLinkProps = { function PaginationLink (line 45) | function PaginationLink({ function PaginationPrevious (line 68) | function PaginationPrevious({ function PaginationNext (line 85) | function PaginationNext({ function PaginationEllipsis (line 102) | function PaginationEllipsis({ FILE: tauri/src/components/ui/popover.tsx function Popover (line 8) | function Popover({ function PopoverTrigger (line 14) | function PopoverTrigger({ function PopoverContent (line 20) | function PopoverContent({ function PopoverAnchor (line 42) | function PopoverAnchor({ FILE: tauri/src/components/ui/progress.tsx function Progress (line 6) | function Progress({ FILE: tauri/src/components/ui/radio-group.tsx function RadioGroup (line 9) | function RadioGroup({ function RadioGroupItem (line 22) | function RadioGroupItem({ FILE: tauri/src/components/ui/resizable.tsx function ResizablePanelGroup (line 7) | function ResizablePanelGroup({ function ResizablePanel (line 23) | function ResizablePanel({ function ResizableHandle (line 29) | function ResizableHandle({ FILE: tauri/src/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ function ScrollBar (line 31) | function ScrollBar({ FILE: tauri/src/components/ui/select.tsx function Select (line 7) | function Select({ function SelectGroup (line 13) | function SelectGroup({ function SelectValue (line 19) | function SelectValue({ function SelectTrigger (line 25) | function SelectTrigger({ function SelectContent (line 51) | function SelectContent({ function SelectLabel (line 88) | function SelectLabel({ function SelectItem (line 101) | function SelectItem({ function SelectSeparator (line 128) | function SelectSeparator({ function SelectScrollUpButton (line 141) | function SelectScrollUpButton({ function SelectScrollDownButton (line 159) | function SelectScrollDownButton({ FILE: tauri/src/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: tauri/src/components/ui/sheet.tsx function Sheet (line 7) | function Sheet({ ...props }: React.ComponentProps) { function SidebarMenuItem (line 465) | function SidebarMenuItem({ className, ...props }: React.ComponentProps<"... function SidebarMenuButton (line 498) | function SidebarMenuButton({ function SidebarMenuAction (line 548) | function SidebarMenuAction({ function SidebarMenuBadge (line 580) | function SidebarMenuBadge({ function SidebarMenuSkeleton (line 602) | function SidebarMenuSkeleton({ function SidebarMenuSub (line 640) | function SidebarMenuSub({ className, ...props }: React.ComponentProps<"u... function SidebarMenuSubItem (line 655) | function SidebarMenuSubItem({ function SidebarMenuSubButton (line 669) | function SidebarMenuSubButton({ FILE: tauri/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<"div">) { FILE: tauri/src/components/ui/slider.tsx function Slider (line 8) | function Slider({ FILE: tauri/src/components/ui/spinner.tsx function Spinner (line 5) | function Spinner({ className, ...props }: React.ComponentProps<"svg">) { FILE: tauri/src/components/ui/switch.tsx function Switch (line 8) | function Switch({ FILE: tauri/src/components/ui/table.tsx function Table (line 5) | function Table({ className, ...props }: React.ComponentProps<"table">) { function TableHeader (line 20) | function TableHeader({ className, ...props }: React.ComponentProps<"thea... function TableBody (line 30) | function TableBody({ className, ...props }: React.ComponentProps<"tbody"... function TableFooter (line 40) | function TableFooter({ className, ...props }: React.ComponentProps<"tfoo... function TableRow (line 53) | function TableRow({ className, ...props }: React.ComponentProps<"tr">) { function TableHead (line 66) | function TableHead({ className, ...props }: React.ComponentProps<"th">) { function TableCell (line 79) | function TableCell({ className, ...props }: React.ComponentProps<"td">) { function TableCaption (line 92) | function TableCaption({ FILE: tauri/src/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: tauri/src/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: tauri/src/components/ui/toggle-group.tsx function ToggleGroup (line 18) | function ToggleGroup({ function ToggleGroupItem (line 49) | function ToggleGroupItem({ FILE: tauri/src/components/ui/toggle.tsx function Toggle (line 29) | function Toggle({ FILE: tauri/src/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 31) | function TooltipTrigger({ function TooltipContent (line 37) | function TooltipContent({ FILE: tauri/src/hooks/use-mobile.ts constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: tauri/src/hooks/useDropZone.ts type DragDropPayload (line 4) | interface DragDropPayload { type UseDropZoneOptions (line 9) | interface UseDropZoneOptions { function isPointInElement (line 35) | function isPointInElement(x: number, y: number, element: HTMLElement): b... function useDropZone (line 44) | function useDropZone( FILE: tauri/src/i18n/index.ts function changeLanguage (line 54) | function changeLanguage(lang: string) { FILE: tauri/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: tauri/src/main.tsx function applyTheme (line 14) | function applyTheme(theme: string) { type Register (line 51) | interface Register { FILE: tauri/src/routeTree.gen.ts type FileRoutesByFullPath (line 38) | interface FileRoutesByFullPath { type FileRoutesByTo (line 44) | interface FileRoutesByTo { type FileRoutesById (line 50) | interface FileRoutesById { type FileRouteTypes (line 57) | interface FileRouteTypes { type RootRouteChildren (line 65) | interface RootRouteChildren { type FileRoutesByPath (line 73) | interface FileRoutesByPath { FILE: tauri/src/routes/__root.tsx function RootLayout (line 6) | function RootLayout() { FILE: tauri/src/services/dockerApi.ts constant DEFAULT_DOCKER_SERVER_URL (line 6) | const DEFAULT_DOCKER_SERVER_URL = "http://localhost:8080"; constant JWT_STORAGE_KEY (line 7) | const JWT_STORAGE_KEY = "docker_server_jwt"; constant JWT_EXPIRY_KEY (line 8) | const JWT_EXPIRY_KEY = "docker_server_jwt_expiry"; type DockerServerConfig (line 10) | interface DockerServerConfig { type DockerHealthResponse (line 15) | interface DockerHealthResponse { type DockerAuthStatusResponse (line 24) | interface DockerAuthStatusResponse { type DockerTokenResponse (line 32) | interface DockerTokenResponse { type DockerDownloadJob (line 40) | interface DockerDownloadJob { type DockerDownloadResponse (line 51) | interface DockerDownloadResponse { type DockerJobStatusResponse (line 60) | interface DockerJobStatusResponse { function isYouTubeUrl (line 69) | function isYouTubeUrl(url: string): boolean { function getDockerServerUrl (line 89) | function getDockerServerUrl(): string { function setDockerServerUrl (line 97) | function setDockerServerUrl(url: string): void { function getStoredJwt (line 107) | function getStoredJwt(): string | null { function storeJwt (line 128) | function storeJwt(jwt: string): void { function getDockerJwtToken (line 139) | function getDockerJwtToken(): string { function setDockerJwtToken (line 146) | function setDockerJwtToken(token: string): void { function checkAuthRequired (line 158) | async function checkAuthRequired(): Promise { function generateJwtToken (line 178) | async function generateJwtToken(): Promise { function getAuthHeaders (line 203) | function getAuthHeaders(): Record { function checkDockerHealth (line 220) | async function checkDockerHealth(): Promise { function startDockerDownload (line 240) | async function startDockerDownload( function getDockerJobStatus (line 265) | async function getDockerJobStatus( function getDockerJobs (line 284) | async function getDockerJobs(): Promise { function cancelDockerJob (line 302) | async function cancelDockerJob(jobId: string): Promise { FILE: tauri/src/stores/auth.ts type AuthStatus (line 4) | type AuthStatus = "logged_out" | "checking" | "logged_in"; type SiteAuthStatus (line 6) | interface SiteAuthStatus { type QRSession (line 12) | interface QRSession { type QRPollResult (line 17) | interface QRPollResult { constant QR_WAITING (line 24) | const QR_WAITING = 86101; constant QR_SCANNED (line 25) | const QR_SCANNED = 86090; constant QR_EXPIRED (line 26) | const QR_EXPIRED = 86038; constant QR_CONFIRMED (line 27) | const QR_CONFIRMED = 0; type AuthState (line 29) | interface AuthState { function generateBilibiliQR (line 106) | async function generateBilibiliQR(): Promise { function pollBilibiliQR (line 110) | async function pollBilibiliQR(qrcodeKey: string): Promise { function saveBilibiliCookie (line 114) | async function saveBilibiliCookie(cookie: string): Promise { function openXhsLoginWindow (line 119) | async function openXhsLoginWindow(): Promise { FILE: tauri/src/stores/downloads.ts type DownloadStatus (line 5) | type DownloadStatus = type DownloadProgress (line 12) | interface DownloadProgress { type Download (line 20) | interface Download { type DownloadsState (line 30) | interface DownloadsState { function setupDownloadListeners (line 69) | async function setupDownloadListeners() { function startDownload (line 102) | async function startDownload( function cancelDownload (line 130) | async function cancelDownload(jobId: string): Promise { FILE: ui/src/components/ConfigEditor.tsx type WebDAVServer (line 4) | interface WebDAVServer { type UITranslations (line 10) | interface UITranslations { type ConfigEditorProps (line 31) | interface ConfigEditorProps { type ConfigValues (line 57) | interface ConfigValues { function ConfigEditor (line 69) | function ConfigEditor({ FILE: ui/src/components/ConfigRow.tsx type ConfigRowProps (line 1) | interface ConfigRowProps { function ConfigRow (line 9) | function ConfigRow({ FILE: ui/src/components/DownloadJobCard.tsx type DownloadJobCardProps (line 7) | interface DownloadJobCardProps { function DownloadJobCard (line 14) | function DownloadJobCard({ FILE: ui/src/components/Kuaidi100.tsx type TrackingRecord (line 4) | interface TrackingRecord { type TrackingResult (line 11) | interface TrackingResult { type Kuaidi100Props (line 22) | interface Kuaidi100Props { function queryKuaidi100 (line 26) | async function queryKuaidi100( function Kuaidi100 (line 38) | function Kuaidi100({ isConnected }: Kuaidi100Props) { FILE: ui/src/components/Layout.tsx function Layout (line 10) | function Layout() { FILE: ui/src/components/Sidebar.tsx type SidebarProps (line 19) | interface SidebarProps { type NavItem (line 24) | interface NavItem { function Sidebar (line 32) | function Sidebar({ lang, onClose }: SidebarProps) { FILE: ui/src/components/Toast.tsx type ToastType (line 5) | type ToastType = "success" | "error" | "info" | "warning"; type ToastData (line 7) | interface ToastData { type ToastProps (line 13) | interface ToastProps { function Toast (line 18) | function Toast({ toast, onDismiss }: ToastProps) { type ToastContainerProps (line 55) | interface ToastContainerProps { function ToastContainer (line 60) | function ToastContainer({ toasts, onDismiss }: ToastContainerProps) { FILE: ui/src/components/Torrent.tsx type TorrentProps (line 6) | interface TorrentProps { function Torrent (line 11) | function Torrent({ isConnected, torrentEnabled }: TorrentProps) { FILE: ui/src/components/TorrentSettings.tsx type TorrentSettingsProps (line 10) | interface TorrentSettingsProps { function TorrentSettings (line 14) | function TorrentSettings({ isConnected }: TorrentSettingsProps) { FILE: ui/src/context/AppContext.tsx type AppContextType (line 38) | interface AppContextType { function AppProvider (line 90) | function AppProvider({ children }: { children: ReactNode }) { function useApp (line 325) | function useApp() { FILE: ui/src/main.tsx type Register (line 14) | interface Register { FILE: ui/src/pages/BilibiliPage.tsx type LoginMethod (line 6) | type LoginMethod = "qr" | "cookie"; constant QR_WAITING (line 9) | const QR_WAITING = 86101; constant QR_SCANNED (line 10) | const QR_SCANNED = 86090; constant QR_EXPIRED (line 11) | const QR_EXPIRED = 86038; constant QR_CONFIRMED (line 12) | const QR_CONFIRMED = 0; type CookieFields (line 14) | interface CookieFields { type QRSession (line 20) | interface QRSession { type BilibiliStatus (line 25) | interface BilibiliStatus { function parseCookie (line 31) | function parseCookie(cookieStr: string): CookieFields { function buildCookie (line 46) | function buildCookie(fields: CookieFields): string { function BilibiliPage (line 54) | function BilibiliPage() { function QRLogin (line 173) | function QRLogin({ onSuccess }: { onSuccess: () => void }) { function CookieLogin (line 363) | function CookieLogin({ onSuccess }: { onSuccess: () => void }) { FILE: ui/src/pages/BulkDownloadPage.tsx function BulkDownloadPage (line 7) | function BulkDownloadPage() { FILE: ui/src/pages/ConfigPage.tsx function ConfigPage (line 5) | function ConfigPage() { FILE: ui/src/pages/DownloadPage.tsx function DownloadPage (line 6) | function DownloadPage() { FILE: ui/src/pages/HistoryPage.tsx function formatDuration (line 20) | function formatDuration(seconds: number): string { function formatDate (line 28) | function formatDate(unixTimestamp: number): string { function extractFilename (line 33) | function extractFilename(record: HistoryRecord): string { function HistoryPage (line 48) | function HistoryPage() { FILE: ui/src/pages/Kuaidi100Page.tsx function Kuaidi100Page (line 4) | function Kuaidi100Page() { FILE: ui/src/pages/PodcastPage.tsx type ViewState (line 13) | type ViewState = function PodcastPage (line 18) | function PodcastPage() { FILE: ui/src/pages/TokenPage.tsx type GenerateTokenResponse (line 4) | interface GenerateTokenResponse { function TokenPage (line 10) | function TokenPage() { FILE: ui/src/pages/TorrentPage.tsx function TorrentPage (line 4) | function TorrentPage() { FILE: ui/src/pages/WebDAVPage.tsx function formatSize (line 20) | function formatSize(bytes: number): string { function WebDAVPage (line 27) | function WebDAVPage() { FILE: ui/src/routeTree.gen.ts type FileRoutesByFullPath (line 74) | interface FileRoutesByFullPath { type FileRoutesByTo (line 86) | interface FileRoutesByTo { type FileRoutesById (line 98) | interface FileRoutesById { type FileRouteTypes (line 111) | interface FileRouteTypes { type RootRouteChildren (line 150) | interface RootRouteChildren { type FileRoutesByPath (line 164) | interface FileRoutesByPath { FILE: ui/src/utils/apis.ts type JobStatus (line 3) | type JobStatus = type Job (line 10) | interface Job { type ApiResponse (line 21) | interface ApiResponse { type HealthData (line 27) | interface HealthData { type WebDAVServer (line 32) | interface WebDAVServer { type ConfigData (line 38) | interface ConfigData { type TorrentConfig (line 54) | interface TorrentConfig { type TorrentAddResult (line 64) | interface TorrentAddResult { type JobsData (line 71) | interface JobsData { type I18nData (line 75) | interface I18nData { function fetchHealth (line 82) | async function fetchHealth(): Promise> { type AuthStatusData (line 89) | interface AuthStatusData { type GenerateTokenData (line 93) | interface GenerateTokenData { function fetchAuthStatus (line 97) | async function fetchAuthStatus(): Promise> { function generateApiToken (line 102) | async function generateApiToken(): Promise> { function fetchConfig (line 112) | async function fetchConfig(): Promise> { function fetchI18n (line 117) | async function fetchI18n(): Promise> { function updateConfig (line 122) | async function updateConfig( function setConfigValue (line 133) | async function setConfigValue( function postDownload (line 145) | async function postDownload( type BulkDownloadJob (line 157) | interface BulkDownloadJob { type BulkDownloadResult (line 164) | interface BulkDownloadResult { function postBulkDownload (line 170) | async function postBulkDownload( function addWebDAVServer (line 181) | async function addWebDAVServer( function deleteWebDAVServer (line 195) | async function deleteWebDAVServer( function deleteJob (line 204) | async function deleteJob( function clearHistory (line 211) | async function clearHistory(): Promise< function fetchTorrentConfig (line 220) | async function fetchTorrentConfig(): Promise< function saveTorrentConfig (line 227) | async function saveTorrentConfig( function testTorrentConnection (line 238) | async function testTorrentConnection(): Promise< function addTorrent (line 247) | async function addTorrent( type WebDAVRemote (line 261) | interface WebDAVRemote { type WebDAVFile (line 267) | interface WebDAVFile { type WebDAVListData (line 274) | interface WebDAVListData { function fetchWebDAVRemotes (line 280) | async function fetchWebDAVRemotes(): Promise< function fetchWebDAVList (line 287) | async function fetchWebDAVList( function submitWebDAVDownload (line 296) | async function submitWebDAVDownload( type PodcastChannel (line 310) | interface PodcastChannel { type PodcastEpisode (line 320) | interface PodcastEpisode { type PodcastSearchResult (line 330) | interface PodcastSearchResult { function searchPodcasts (line 336) | async function searchPodcasts( function fetchPodcastEpisodes (line 348) | async function fetchPodcastEpisodes( type HistoryRecord (line 362) | interface HistoryRecord { type HistoryStats (line 374) | interface HistoryStats { type HistoryData (line 380) | interface HistoryData { function fetchHistory (line 388) | async function fetchHistory( function deleteHistoryRecord (line 400) | async function deleteHistoryRecord( function clearAllHistory (line 407) | async function clearAllHistory(): Promise< FILE: ui/src/utils/translations.ts type UITranslations (line 1) | interface UITranslations { type ServerTranslations (line 104) | interface ServerTranslations {