一个人人都能部署的基于 js 的弹幕 API 服务器,支持爱优腾芒哔咪人韩巴狐乐西埋帆红弹幕直接获取,兼容弹弹play的搜索、详情查询和弹幕获取接口规范,并提供日志记录,支持vercel/netlify/edgeone/cloudflare/docker/hf等部署方式,不用提前下载弹幕,没有nas或小鸡也能一键部署。
This report presents the forensic synthetic code analysis of huangxd-/danmu_api, a JavaScript project with 2,920 GitHub stars. SynthScan v2.0 examined 53,067 lines of code across 100 source files, recording 230 pattern matches distributed across 6 syntactic categories. The overall adjusted score of 5.3 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 230 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 53 | // ── 标题与结构 ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 58 | // ── 日期 ───────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 61 | // ── 集数对齐 (Episode Alignment) ───────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 1368 | // ── 类型判断 ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 1374 | // ── 语言对齐 ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 1380 | // ── 季度编号 & 特殊类型 ─────────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 1389 | // ── 季度偏移精确匹配奖励 ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 1397 | // ── 文本相似度(核心评分) ──────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 2061 | // ── 评分修正 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 2069 | // ── Probe 覆盖逻辑 ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | danmu_api/utils/merge-util.js | 2078 | // ── 阈值过滤 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 1414 | // ── 数字严格相等奖励 ────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 1418 | // ── 断层惩罚(防异构/占位区污染) ───────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 1433 | // ── 数字差分布统计(支持规律性检测) ───────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 1948 | // ── 之字结构强阻断 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 1959 | // ── 媒体类型冲突检测 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 1970 | // ── 上下文续作阻断 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 1999 | // ── 剧场版标题阻断 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2016 | // ── 日期匹配校验 ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2033 | // ── 季度标记冲突校验 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2043 | // ── 主副别名交叉比对 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2093 | // ── Tier 筛选:梯度过滤,保留合理竞争者 ───────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2365 | // ── 隔离检索 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2418 | // ── 跨源合集时序接管 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2458 | // ── 小数集数预处理 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2476 | // ── 合集切片 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2556 | // ── 智能对齐策略(特权映射表介入) ───────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2620 | // ── 执行 URL 合并 ──────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2629 | // ── 合并标题标签 ───────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2654 | // ── 对齐偏移计算 ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2659 | // ── 智能对齐策略(共识差计算) ─────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2781 | // ── 执行 URL 合并 ──────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2790 | // ── 合并标题标签 ───────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2824 | // ── 覆盖率校验 ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2841 | // ── 别名合并 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2862 | // ── 记录合并层级 ────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2879 | // ── 合集进度双向写入 ────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2932 | // ── 番外沉底排序 ────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 2956 | // ── 重复签名检测 ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 3059 | // ── 前置全局计算 ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 3126 | // ── Phase 1: CN Primary Isolation ────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 3163 | // ── Phase 1.5: Secondary CN Self-Organization ─────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 3194 | // ── Phase 2: Standard Fallback ────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/utils/merge-util.js | 3246 | // ── 最终整理 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/sources/hanjutv.js | 128 | // ── 数据规范化 ────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/sources/hanjutv.js | 203 | // ── 搜索候选合并 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/sources/hanjutv.js | 474 | // ── 搜索接口 ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/sources/hanjutv.js | 590 | // ── 详情 & 剧集 ────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/sources/hanjutv.js | 839 | // ── 番剧处理 ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | danmu_api/sources/hanjutv.js | 906 | // ── 弹幕 ───────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | danmu_api/server.js | 56 | function resolvePublicRequestProtocol(req) { | CODE |
| LOW | danmu_api/server.js | 524 | async function initializeFavoriteScheduler(mainPort) { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 126 | function updateCommentDurationFieldVisibility() { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 144 | function bindCommentDurationFieldVisibility() { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 518 | function estimateVideoDurationFromComments(comments) { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 672 | function showDanmuCallTraceFailure(trace, title, message, source) { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 679 | function getDanmuCallTraceTotalSeconds(trace, fallbackSeconds) { | CODE |
| LOW⚡ | danmu_api/ui/js/apitest.js | 698 | function isCurrentDanmuFlowRequest(requestId) { | CODE |
| LOW⚡ | danmu_api/ui/js/apitest.js | 702 | function startManualBangumiRequest() { | CODE |
| LOW⚡ | danmu_api/ui/js/apitest.js | 710 | function isCurrentManualBangumiRequest(requestId) { | CODE |
| LOW⚡ | danmu_api/ui/js/apitest.js | 714 | function invalidateActiveDanmuRequest() { | CODE |
| LOW⚡ | danmu_api/ui/js/apitest.js | 718 | function setDanmuFlowButtonLoading(btn, requestId, loading) { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 734 | function resetManualFavoriteButton() { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 748 | function renderManualFavoriteButton() { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 951 | function toggleFavoriteScheduleWeekday() { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 957 | function openFavoriteScheduleModal(keyword) { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 974 | function closeFavoriteScheduleModal() { | CODE |
| LOW | danmu_api/ui/js/apitest.js | 1661 | function updateDanmuHeatmapTooltip(event, interactive, bars, tooltip, indicator, segs, segLen, maxTime) { | CODE |
| LOW | danmu_api/ui/js/preview.js | 225 | function renderPreviewSearchResults(query) { | CODE |
| LOW | danmu_api/ui/js/requestrecords.js | 73 | function initRequestRecordsInterface() { | CODE |
| LOW | danmu_api/ui/js/pushdanmu.js | 139 | function displayEpisodeListForPush(animeTitle, episodes, pushUrl) { | CODE |
| LOW | danmu_api/ui/js/pushdanmu.js | 181 | function jumpToEpisodeForPushDanmu() { | CODE |
| LOW | danmu_api/ui/js/systemsettings.js | 225 | function updateLocalImportedConfig(key, value) { | CODE |
| LOW | danmu_api/ui/js/systemsettings.js | 600 | async function checkDeployPlatformConfig() { | CODE |
| LOW | danmu_api/ui/js/systemsettings.js | 2043 | function handleDelegatedTouchStart(e) { | CODE |
| LOW | danmu_api/ui/js/systemsettings.js | 2112 | function handleSelectedTagsContainerDragOver(e) { | CODE |
| LOW | danmu_api/ui/js/systemsettings.js | 2118 | function handleSelectedTagsContainerDrop(e) { | CODE |
| LOW | danmu_api/ui/js/systemsettings.js | 2279 | function cleanupSelectedTagsTouchDrag() { | CODE |
| LOW | danmu_api/ui/js/systemsettings.js | 2832 | async function autoCheckBilibiliCookieStatus() { | CODE |
| LOW | danmu_api/ui/js/systemsettings.js | 2892 | function showBilibiliCookieSaveHint(text) { | CODE |
| LOW | danmu_api/apis/dandan-api.js | 93 | function shouldIncludeVideoDuration(queryFormat, includeDuration = false) { | CODE |
| LOW | danmu_api/apis/dandan-api.js | 104 | function extractDurationFromSegments(segmentResult) { | CODE |
| LOW | danmu_api/apis/dandan-api.js | 1241 | function findCrossSeasonEpisodeMap(searchData, title, year, season, episode, platform, detailStore) { | CODE |
| LOW | danmu_api/apis/dandan-api.js | 1693 | export async function extractTitleSeasonEpisode(cleanFileName) { | CODE |
| LOW | danmu_api/apis/dandan-api.js | 1906 | function findSeasonPreferenceTitle(titles, season) { | CODE |
| LOW | danmu_api/apis/dandan-api.js | 1914 | function findLegacySeasonPreferenceTitle(titles, season) { | CODE |
| LOW | danmu_api/apis/favorite-api.js | 59 | function removeRelatedSearchCaches(keyword) { | CODE |
| LOW | danmu_api/apis/clients/fongmi-api.js | 85 | function normalizeFongmiTitleByRegex(name) { | CODE |
| LOW | danmu_api/apis/clients/fongmi-api.js | 99 | function normalizeFongmiEpisodeByRegex(episode) { | CODE |
| LOW | danmu_api/apis/clients/fongmi-api.js | 114 | function extractFongmiEpisodeNumber(episode) { | CODE |
| LOW | danmu_api/apis/clients/fongmi-api.js | 166 | function buildFongmiSearchKeywords(name) { | CODE |
| LOW | danmu_api/utils/cache-util.js | 80 | function collectUniqueAnimeDetails(detailStore) { | CODE |
| LOW | danmu_api/utils/cache-util.js | 88 | function getActiveSearchCacheEntries() { | CODE |
| LOW | danmu_api/utils/cache-util.js | 211 | export function resolveAnimeByIdFromDetailStore(id, detailStore = null, source = null) { | CODE |
| LOW | danmu_api/utils/cache-util.js | 216 | export function resolveEpisodeContextById(id, detailStore = null) { | CODE |
| LOW | danmu_api/utils/cache-util.js | 725 | export function hasSeasonSpecificPreference(title, season) { | CODE |
| LOW | danmu_api/utils/cache-util.js | 733 | export function hasLegacySeasonPreference(title, season) { | CODE |
| LOW | danmu_api/utils/merge-util.js | 753 | function checkTitleSubtitleConflict(titleA, titleB, isDateValid = true) { | CODE |
| LOW | danmu_api/utils/merge-util.js | 2139 | function detectCollectionCandidates(curAnimes) { | CODE |
| LOW | danmu_api/utils/aiyifan-util.js | 41 | function extractAssignedObjectLiteral(html, variableName) { | CODE |
| LOW | danmu_api/utils/aiyifan-util.js | 118 | export function extractPConfigFromInjectJson(injectJson) { | CODE |
| LOW | danmu_api/utils/aiyifan-util.js | 274 | function isSignedRequestSuccessful(payload) { | CODE |
| LOW | danmu_api/utils/cookie-util.js | 278 | function extractLoginCookieFromResponse(response) { | CODE |
| LOW | danmu_api/utils/common-util.js | 168 | export function createDynamicPlatformOrder(preferredPlatform) { | CODE |
| LOW | danmu_api/utils/common-util.js | 397 | export function extractSeasonNumberFromAnimeTitle(animeTitle) { | CODE |
| LOW | danmu_api/utils/common-util.js | 458 | export function extractEpisodeNumberFromTitle(episodeTitle) { | CODE |
| LOW | danmu_api/utils/redis-util.js | 198 | export async function getFavoriteCachesFromRedis() { | CODE |
| LOW | danmu_api/utils/codec-util.js | 525 | function aesDecryptBlockForKeySize(input, w) { | CODE |
| LOW | danmu_api/utils/hanjutv-util.js | 3 | function normalizePositiveTimestamp(value, fallbackValue = Date.now()) { | CODE |
| LOW | danmu_api/utils/hanjutv-util.js | 188 | export async function buildHanjutvSearchHeaders(sessionInitTs = Date.now(), uid = createHanjutvUid()) { | CODE |
| 29 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | danmu_api/worker.test.js | 941 | // const originalTencentGetComments = TencentSource.prototype.getComments; | COMMENT |
| LOW | danmu_api/worker.test.js | 961 | // ]; | COMMENT |
| LOW | danmu_api/worker.test.js | 981 | // } finally { | COMMENT |
| LOW | danmu_api/worker.test.js | 1001 | // return { | COMMENT |
| LOW | danmu_api/worker.test.js | 1021 | // }; | COMMENT |
| LOW | danmu_api/worker.test.js | 1041 | // }; | COMMENT |
| LOW | danmu_api/worker.test.js | 1061 | // } | COMMENT |
| LOW | danmu_api/worker.test.js | 1081 | // { type: 'bilibili1', segment_start: 1080, segment_end: 1440, url: 'mock-bili-4' } | COMMENT |
| LOW | danmu_api/worker.test.js | 1101 | // BilibiliSource.prototype.getComments = originalBilibiliGetComments; | COMMENT |
| LOW | danmu_api/worker.test.js | 1121 | // type: 'tvseries', | COMMENT |
| LOW | danmu_api/worker.test.js | 1141 | // type: cachedAnime.type, | COMMENT |
| LOW | danmu_api/worker.test.js | 1161 | // assert.equal(body.bangumi.animeTitle, cachedAnime.animeTitle); | COMMENT |
| LOW | danmu_api/worker.test.js | 1181 | // bangumiId: '500002', | COMMENT |
| LOW | danmu_api/worker.test.js | 1201 | // animeTitle: cachedAnime.animeTitle, | COMMENT |
| LOW | danmu_api/worker.test.js | 1221 | // assert.equal(url, cachedAnime.links[0].url); | COMMENT |
| LOW | danmu_api/worker.test.js | 1241 | // TencentSource.prototype.getComments = originalTencentGetComments; | COMMENT |
| LOW | danmu_api/worker.test.js | 1261 | // { id: 32001, url: "https://v.qq.com/x/cover/cache-old/ep1.html", title: "【qq】 旧快照 第1集" } | COMMENT |
| LOW | danmu_api/worker.test.js | 1281 | // results: [createSearchResult(latestAnime)], | COMMENT |
| LOW | danmu_api/worker.test.js | 1301 | // const renrenAnime = { | COMMENT |
| LOW | danmu_api/worker.test.js | 1321 | // animeTitle: "缓存冲突番剧B", | COMMENT |
| LOW | danmu_api/worker.test.js | 1341 | COMMENT | |
| LOW | danmu_api/worker.test.js | 1361 | // }); | COMMENT |
| LOW | danmu_api/worker.test.js | 1381 | // }; | COMMENT |
| LOW | danmu_api/worker.test.js | 1401 | COMMENT | |
| LOW | danmu_api/worker.test.js | 1421 | // const correctLinks = Array.from({ length: 50 }, (_, index) => ({ | COMMENT |
| LOW | danmu_api/worker.test.js | 1441 | COMMENT | |
| LOW | danmu_api/worker.test.js | 1461 | // async json() { | COMMENT |
| LOW | danmu_api/worker.test.js | 1481 | COMMENT | |
| LOW | danmu_api/worker.test.js | 1501 | // rating: 0, | COMMENT |
| LOW | danmu_api/worker.test.js | 1521 | // { url: "https://www.iqiyi.com/v_collision_extra.html", title: "【qiyi】 花絮" } | COMMENT |
| LOW | danmu_api/worker.test.js | 1541 | // try { | COMMENT |
| LOW | danmu_api/worker.test.js | 1561 | // } | COMMENT |
| LOW | danmu_api/worker.test.js | 1581 | COMMENT | |
| LOW | danmu_api/worker.test.js | 1601 | // assert(res.length > 2, `Expected res.length > 2, but got ${res.length}`); | COMMENT |
| LOW | danmu_api/worker.test.js | 1621 | // }); | COMMENT |
| LOW | danmu_api/worker.test.js | 1641 | // "segment_end": 60, | COMMENT |
| LOW | danmu_api/worker.test.js | 1661 | // "type": "bilibili1", | COMMENT |
| LOW | danmu_api/worker.test.js | 1681 | // await t.test('GET youku segment danmu', async () => { | COMMENT |
| LOW | danmu_api/worker.test.js | 1701 | // const res = await miguSource.getComments("https://www.miguvideo.com/p/detail/725117610", "migu", true); | COMMENT |
| LOW | danmu_api/worker.test.js | 1721 | // }); | COMMENT |
| LOW | danmu_api/worker.test.js | 1741 | // const res = await leshiSource.getComments("https://www.le.com/ptv/vplay/1578861.html"); | COMMENT |
| LOW | danmu_api/worker.test.js | 1761 | COMMENT | |
| LOW | danmu_api/worker.test.js | 1781 | // assert(res.length >= 0, `Expected res.length >= 0, but got ${res.length}`); | COMMENT |
| LOW | danmu_api/worker.test.js | 1801 | // url: 'https://www.mddcloud.com.cn/video/ff8080817410d5a5017490f5f4d311de.html?num=2&uuid=ff8080817410d5a5017490 | COMMENT |
| LOW | danmu_api/worker.test.js | 1821 | // type: 'aiyifan', | COMMENT |
| LOW | danmu_api/worker.test.js | 1841 | // cursor: `cursor-${startMs}`, | COMMENT |
| LOW | danmu_api/worker.test.js | 1861 | // }); | COMMENT |
| LOW | danmu_api/worker.test.js | 1881 | // }); | COMMENT |
| LOW | danmu_api/worker.test.js | 1901 | // source.getEpisodes = async (seriesId) => { | COMMENT |
| LOW | danmu_api/worker.test.js | 1921 | COMMENT | |
| LOW | danmu_api/worker.test.js | 1941 | // const requestedUrls = []; | COMMENT |
| LOW | danmu_api/worker.test.js | 1961 | // data_list: [{ | COMMENT |
| LOW | danmu_api/worker.test.js | 1981 | // assert(requestedUrls.some((url) => url.includes(`/novel/commentapi/comment/list/${vid}/v1/`))); | COMMENT |
| LOW | danmu_api/worker.test.js | 2001 | // await new Promise(resolve => setImmediate(resolve)); | COMMENT |
| LOW | danmu_api/worker.test.js | 2021 | // resolvers.set(anime.sid, resolve); | COMMENT |
| LOW | danmu_api/worker.test.js | 2041 | // } finally { | COMMENT |
| LOW | danmu_api/worker.test.js | 2061 | // { sid: 't2', name: '模范出租车2' }, | COMMENT |
| LOW | danmu_api/worker.test.js | 2081 | // ]; | COMMENT |
| LOW | danmu_api/worker.test.js | 2101 | // ]), [['s-upcoming', 't-upcoming']]); | COMMENT |
| LOW | danmu_api/worker.test.js | 2121 | // assert.equal(source.getSearchPairYear({ publishTime: 888768000000 }), 1998); | COMMENT |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | danmu_api/sources/aiyifan.js | 252 | // Step 1: 搜索,拿到剧目列表 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | danmu_api/sources/aiyifan.js | 252 | // Step 1: 搜索,拿到剧目列表 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | danmu_api/worker.js | 26 | async function handleRequest(req, env, deployPlatform, clientIp, ctx) { | CODE |