MCPcopy Index your code

hub / github.com/cropflre/nowen-video / functions

Functions4,383 in github.com/cropflre/nowen-video

↓ 10 callersFunctioninit
()
web/src/components/admin/AdultScraperTab.tsx:158
↓ 10 callersMethodtmdbGetWithRetry
tmdbGetWithRetry 带重试的 TMDb GET 请求 超时后自动重试 1 次(共 2 次尝试),仍然失败则返回错误 每次请求携带随机 User-Agent 和浏览器级请求头,重试间隔 2-4 秒随机化
internal/service/metadata.go:121
↓ 10 callersFunctionupdateAdvanced
( key: K, value: LibraryAdvancedSettings[K] )
web/src/components/EditLibraryModal.tsx:250
↓ 10 callersFunctionupdateAdvanced
( key: K, value: LibraryAdvancedSettings[K] )
web/src/components/CreateLibraryModal.tsx:239
↓ 9 callersMethodDeleteByMediaID
(mediaID string)
internal/repository/repo_social.go:174
↓ 9 callersMethodGetCache
==================== 缓存 ==================== GetCache 从缓存获取(双层:先查内存,再查持久化存储)
internal/service/ai.go:482
↓ 9 callersMethodRegister
Register 用户注册
internal/service/auth.go:133
↓ 9 callersMethodStart
Start 启动 UDP 监听。返回 nil 表示成功启动。 已启动时重复调用会被忽略。
internal/handler/emby/discovery.go:68
↓ 9 callersFunctionabsUrl
(value)
browser-extension/src/content.js:10
↓ 9 callersMethodaddItem
addItem 追加脏数据条目
cmd/clean-dirty/main.go:183
↓ 9 callersMethodauditFromContext
auditFromContext 从 Gin 上下文中提取操作者信息并记录审计日志
internal/handler/admin.go:298
↓ 9 callersMethodbroadcastScanEvent
broadcastScanEvent 广播扫描事件
internal/service/scanner.go:2845
↓ 9 callersFunctioncleanJSONResponse
cleanJSONResponse 清理 LLM 返回的 JSON(去除 markdown 代码块等)
internal/service/ai_search.go:125
↓ 9 callersMethodexcludeDuplicates
excludeDuplicates 在前端列表查询里统一过滤掉"同片副本", 仅保留主版本(duplicate_of 为空)。这是"同片多版本折叠"的核心约束。 注意:仅用于面向用户的列表/海报墙;管理后台、版本切换、扫描器、清理工具 等需要看到全部记录的场景请直接走 r.db。
internal/repository/repo_media.go:82
↓ 9 callersFunctiongetRandomUserAgent
getRandomUserAgent 从 User-Agent 池中随机选取一个
internal/service/scrape_delay.go:50
↓ 9 callersFunctioninvoke
安全调用 invoke —— 桌面端才有效
web/src/desktop/bridge.ts:172
↓ 9 callersFunctionjavdbPanelValue
(labels)
browser-extension/src/content.js:147
↓ 9 callersMethodjoinPath
joinPath 路径拼接(webdav:// 用正斜杠)
internal/service/nfo.go:73
↓ 9 callersFunctionsanitizeFilename
sanitizeFilename 清理文件名中不合法的字符
internal/service/adult_extra_media.go:247
↓ 9 callersFunctionsetupAuthService
setupAuthService 创建测试用的AuthService
internal/service/auth_test.go:28
↓ 9 callersFunctionvfsJoin
vfsJoin 拼接路径:对 webdav:// 前缀的路径使用正斜杠,避免 filepath.Join 在 Windows 下把前缀破坏为 webdav:\
internal/service/scanner.go:473
↓ 8 callersFunctionAdminOnly
AdminOnly 管理员权限中间件
internal/middleware/middleware.go:202
↓ 8 callersMethodDeleteByLibraryID
(libraryID string)
internal/repository/repo_media.go:216
↓ 8 callersFunctionFeatureScaffold
android/app/src/main/java/com/nowen/video/ui/screen/features/MobileFeatureScreens.kt:104
↓ 8 callersMethodGetOutputDir
GetOutputDir 获取转码输出目录
internal/service/transcode.go:281
↓ 8 callersMethodGetStatus
(c *gin.Context)
internal/handler/v2_handlers.go:699
↓ 8 callersMethodListByMediaID
(mediaID string)
internal/repository/repo_person.go:74
↓ 8 callersMethodScrapeMedia
ScrapeMedia 为单个媒体刮削元数据 mode: "primary" 表示主数据源(覆盖写入),"supplement" 表示补充源(仅填充缺失字段)
internal/service/metadata_provider.go:65
↓ 8 callersMethodappend
(e IngestJournalEntry)
internal/service/ingest_journal.go:75
↓ 8 callersMethodbroadcast
==================== 进度推送 ====================
internal/service/ingest_lazy.go:1022
↓ 8 callersMethodbroadcastDownloadEvent
broadcastDownloadEvent 广播下载事件
internal/service/offline_download.go:485
↓ 8 callersMethodbroadcastTaskUpdate
broadcastTaskUpdate 广播任务更新
internal/service/scrape_manager.go:870
↓ 8 callersMethodbroadcastTranscodeEvent
broadcastTranscodeEvent 广播转码事件
internal/service/transcode.go:674
↓ 8 callersFunctioncollapseWhitespace
collapseWhitespace 把多空白合一并 trim
internal/service/smart_rename.go:1314
↓ 8 callersFunctionformatEmbyTime
formatEmbyTime 将 time.Time 转为 Emby 客户端期望的 ISO8601 时间字符串。
internal/handler/emby/dto.go:336
↓ 8 callersFunctionformatSize
(bytes: number)
web/src/utils/format.ts:7
↓ 8 callersFunctiongetIntQuery
getIntQuery 从 query 中读取整数参数,缺省返回 def。
internal/handler/emby/auth.go:233
↓ 8 callersFunctioninvalidateMediaListCaches
()
web/src/utils/invalidateMediaCaches.ts:25
↓ 8 callersFunctionparseVTTTimeMs
==================== 时间工具函数 ==================== parseVTTTimeMs 解析 VTT 时间戳为毫秒数 支持格式: "HH:MM:SS.mmm" 或 "MM:SS.mmm"
internal/service/subtitle_cleaner.go:714
↓ 8 callersMethodprobeMediaInfo
probeMediaInfo 使用FFprobe提取视频元数据(.strm 文件走特殊逻辑)
internal/service/scanner.go:2896
↓ 8 callersMethodscanExternalSubtitles
scanExternalSubtitles 扫描外挂字幕文件
internal/service/scanner.go:3051
↓ 8 callersMethodsearch
android/app/src/main/java/com/nowen/video/data/remote/NowenApiService.kt:108
↓ 8 callersFunctionseek
(seconds: number)
web/src/components/VideoPlayer.tsx:736
↓ 8 callersFunctionsetStatus
(message, data)
browser-extension/src/popup.js:13
↓ 8 callersFunctionshowTmdbMessage
(type: 'success' | 'error' | 'info', text: string)
web/src/pages/AdminPage.tsx:524
↓ 7 callersFunctionBuildStandardNames
BuildStandardNames 一处渲染,三处共用。规则以一键入库为标准。
internal/service/naming_standard.go:120
↓ 7 callersFunctionCyberClickItem
android/app/src/main/java/com/nowen/video/ui/screen/settings/PlayerSettingsScreen.kt:346
↓ 7 callersFunctionCyberSelectionDialog
android/app/src/main/java/com/nowen/video/ui/screen/settings/PlayerSettingsScreen.kt:432
↓ 7 callersMethodFindByFolderPath
(folderPath string)
internal/repository/repo_series.go:37
↓ 7 callersMethodGetDirectStreamInfo
GetDirectStreamInfo 获取直接播放的文件路径和MIME类型 对于 STRM 文件,返回特殊标记,由 handler 层走代理逻辑
internal/service/stream.go:376
↓ 7 callersFunctionNormalizeForCompare
NormalizeForCompare 归一化标题用于分组 key 匹配(忽略全半角、空白、常见标点差异)。 用途: - 合集名 / 分组 key 的稳定比较 - 避免 "逃学威龙" 与 "逃学威龙 " / "逃学 威龙" / "逃学威龙:" 被误判为不同
internal/matcher/title.go:111
↓ 7 callersFunctionNormalizeSeriesTitle
NormalizeSeriesTitle 对任意来源的 Series 标题做最后一轮清洗, 用于:入库前 / 搜索前 / 合并前的归一化。 规则: - 去发行组/广告【xxx压制】【Q群xxx】 - 去站点标签 [yyh3d.com] - 去编码/来源噪声 - 剥离末尾季号(S1 / 第一季 /
internal/service/episode_parser.go:252
↓ 7 callersMethodRegister
Register 注册数据源(按优先级自动排序)
internal/service/metadata_provider.go:171
↓ 7 callersMethodSearchSeries
==================== 核心方法 ==================== SearchSeries 搜索剧集
internal/service/thetvdb.go:253
↓ 7 callersMethodSearchSubjects
==================== Bangumi API 调用 ==================== SearchSubjects 通过 Bangumi API 搜索条目
internal/service/bangumi.go:287
↓ 7 callersMethodType
Type 返回文件系统类型标识
internal/service/vfs.go:60
↓ 7 callersMethodaddErrorLog
==================== 错误日志 ==================== addErrorLog 添加错误日志
internal/service/ai.go:1081
↓ 7 callersMethodbroadcastEvent
(eventType string, task *model.PreprocessTask)
internal/service/preprocess.go:2573
↓ 7 callersMethodclear
clear 清空缓存(例如文件关闭时)
internal/service/webdav_cache.go:104
↓ 7 callersMethoddeleteSourceDuplicateIfOrganized
findOrganizedHardlinkRecord 判断当前源路径是否已经被 AI 整理后的硬链接记录代表。 当 Media.FilePath 已同步为 OrganizeOutputDir 下的路径时,后续扫描源目录不能再把源文件当新媒体入库。
internal/service/scanner.go:1097
↓ 7 callersMethoddownloadToFile
downloadToFile 下载文件到指定路径(带重试)
internal/service/metadata.go:2503
↓ 7 callersMethodencodeStats
(stats LazyIngestStats)
internal/service/ingest_lazy.go:860
↓ 7 callersFunctionescapeHtml
(value)
browser-extension/src/popup.js:66
↓ 7 callersMethodextractSeasonFromDirName
extractSeasonFromDirName 从目录名中提取季号 例如: "一拳超人 S2" → 2, "Breaking Bad Season 1" → 1, "一拳超人 第二季" → 2
internal/service/scanner.go:1976
↓ 7 callersMethodfindOrganizedHardlinkRecord
(library *model.Library, sourcePath string, sourceInfo os.FileInfo)
internal/service/scanner.go:1113
↓ 7 callersFunctionformatBitRate
格式化码率为可读格式
web/src/components/media/MediaTechSpecs.tsx:33
↓ 7 callersFunctionformatCodecName
格式化编码器名称
web/src/components/media/MediaTechSpecs.tsx:72
↓ 7 callersFunctionformatDate
(dateStr: string)
web/src/utils/format.ts:34
↓ 7 callersMethodisCancelled
==================== 辅助方法 ====================
internal/service/subtitle_preprocess.go:1221
↓ 7 callersFunctionisVideoExt
isVideoExt 判断是否为视频扩展名
internal/service/emby_compat.go:1331
↓ 7 callersMethodmapMediaToItem
mapMediaToItem 将 Media(电影或剧集单集)转成 Emby BaseItemDto。 kind = "Movie" / "Episode" / "Video"。
internal/handler/emby/handler.go:115
↓ 7 callersFunctionmap_err
libmpv2::Error -> anyhow::Error 桥接(libmpv2::Error 未实现 StdError,不能用 .context())
desktop/src-tauri/src/mpv.rs:397
↓ 7 callersMethodmustLoadJob
(id string)
internal/service/ingest_lazy.go:841
↓ 7 callersMethodparseEpisodeInfo
parseEpisodeInfo 从文件名解析剧集信息 支持的命名格式: 标准格式: [字幕组][剧名][One-Punch Man][01][1280x720][简体] 季集格式: [HYSUB][ONE PUNCH MAN S2][OVA01][GB_MP4][1280X720].mp4
internal/service/scanner.go:2461
↓ 7 callersMethodsearchDouban
==================== 豆瓣 API 调用 ==================== searchDouban 通过豆瓣搜索API获取结果 使用豆瓣 frodo API(移动端接口,较稳定)
internal/service/douban.go:190
↓ 7 callersMethodsendDLNAAction
sendDLNAAction 发送DLNA SOAP控制指令
internal/service/cast.go:531
↓ 7 callersMethodstatPath
statPath 获取文件信息(支持 webdav://)
internal/service/nfo.go:51
↓ 6 callersFunctionCyberItemDivider
android/app/src/main/java/com/nowen/video/ui/screen/settings/PlayerSettingsScreen.kt:423
↓ 6 callersMethodDeleteByLibraryMediaIDs
(libraryID string)
internal/repository/repo_social.go:178
↓ 6 callersMethodFindByUserID
(userID string)
internal/repository/repo_admin.go:52
↓ 6 callersMethodFindOrCreate
(name string, tmdbID int)
internal/repository/repo_person.go:40
↓ 6 callersMethodGetMediaTask
GetMediaTask 获取媒体的预处理状态
internal/handler/preprocess.go:113
↓ 6 callersMethodGetPlanWithItems
GetPlanWithItems 取规划任务并预加载条目
internal/repository/repo_smart_rename.go:50
↓ 6 callersMethodIncrTokenVersion
IncrTokenVersion 令牌版本号自增(用于吊销所有旧Token)
internal/repository/repo_user.go:59
↓ 6 callersFunctionNewNFOService
(logger *zap.SugaredLogger)
internal/service/nfo.go:26
↓ 6 callersMethodSearchTMDb
SearchTMDb 公开的TMDb搜索方法(用于手动元数据匹配)
internal/service/metadata.go:1755
↓ 6 callersMethodStart
Start 启动 mDNS 广播服务。
internal/service/mdns.go:94
↓ 6 callersMethodUpdateFileInfo
==================== 文件编辑 ==================== UpdateFileInfo 更新文件信息
internal/service/file_manager.go:573
↓ 6 callersMethodUpdateMediaCount
UpdateMediaCount 更新合集的电影数量和年份范围 media_count 按 version_group 去重(同一部电影的不同版本算 1 部),贴合前端"系列里有几部电影"的语义; file_count 为原始文件总数(每个版本各算一个)。
internal/repository/repo_collection.go:262
↓ 6 callersMethodUpdatePlanFields
UpdatePlanFields 部分字段更新
internal/repository/repo_smart_rename.go:36
↓ 6 callersMethodWriteMediaNFO
WriteMediaNFO 为普通媒体生成同名 .nfo 文件。 自动刮削路径默认选择 skip,避免覆盖用户已有的手写 NFO。
internal/service/nfo_writer.go:45
↓ 6 callersFunctionabs
(x float64)
internal/service/ai_scene.go:977
↓ 6 callersMethodaddOperation
addOperation 添加操作记录
internal/service/ai_assistant.go:1093
↓ 6 callersFunctionboolToStr
(b bool)
internal/handler/admin_system.go:268
↓ 6 callersMethodbroadcastEvent
(eventType string, task *model.SubtitlePreprocessTask)
internal/service/subtitle_preprocess.go:1291
↓ 6 callersMethodbroadcastTaskEvent
processOne 处理单个视频文件
internal/service/adult_folder_scan.go:377
↓ 6 callersMethodbuildUserItemData
buildUserItemData 组装 Emby UserData。
internal/handler/emby/items.go:742
↓ 6 callersFunctioncanMediaPlayDirectly
canMediaPlayDirectly 包级判定:判断该媒体是否可在浏览器端零转码播放。 抽成包级函数的原因:PreprocessService 需要在"自动批量提交"路径上据此跳过 已经能直接播放/Remux 的媒体,但 PreprocessService 与 StreamService 之间
internal/service/stream.go:244
↓ 6 callersMethodcheckEnabled
(name string)
cmd/clean-dirty/main.go:175
↓ 6 callersMethodconnect
* 建立 WebSocket 连接 */
android/app/src/main/java/com/nowen/video/data/remote/WebSocketManager.kt:118
← previousnext →101–200 of 4,383, ranked by callers