打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

用户:RedDragon/Test:修订间差异

来自Rizline中文维基
卡介菌
卡介菌留言 | 贡献 (已还原卡介菌讨论)的编辑至最后由Sweet Orange修订的版本)
(未显示6个用户的66个中间版本)
第1行: 第1行:
<html>
<html>


<table width="100%" style="border:none; border-collapse:collapse;">
    <div style="margin: 5%">
  <tr>
        <div style="margin-top: 100px; display: flex; justify-content: center; align-items: center">
    <td colspan="2" style="text-align:center; background-color:#57E4C4;">
            <input type="text" id="alias-input"
      <div id="difficulty" onclick="cycleDifficulty(this)" data-states='["EZ 1", "HD 6", "IN 11"]' data-current="0" style="cursor:pointer;">EZ 2</div>
                style="padding: 0.6rem; background: #ffffff; font-size: 16px; width: 14rem; border-radius: 5px 0 0 5px"
    </td>
                placeholder="输入曲目名称或别名...">
  </tr>
            <button id="alias-btn"
  <tr style="height:300px">
                style="padding: 0.5rem 1rem; background: #3366CC; color: #ffffff; font-size: 16px; border: none; border-radius: 0 5px 5px 0">搜索</button>
    <td width="15%" onclick="cycleRatio(document.getElementById('ratio'))" style="text-align:center; background-color:#ABCDEF; cursor:pointer;">
        </div>
      <div id="ratio" data-states='["16:9", "4:3"]' data-current="0" style="height:100%; cursor:pointer;">16:9</div>
    </td>
    <td style="height:100%; position:relative; text-align:center;">
      <span id="output" style="display:inline-block; height:300px; overflow:hidden;"></span>
    </td>
  </tr>
</table>


        <div style="display: flex; justify-content: center; align-items: center; margin-top: 1rem;">
            <label for="algorithm-select" style="margin-right: 0.5rem;">算法:</label>
            <select id="algorithm-select" style="padding: 0.3rem; margin-right: 1rem;">
                <option value="custom">神秘算法</option>
                <option value="fuse">Fuse.js</option>
            </select>
            <div id="custom-filter-container">
                <label for="score-filter" style="margin-right: 0.5rem;">筛选匹配度 ≥</label>
                <input type="number" id="score-filter" value="4" min="1" max="100"
                    style="width: 4rem; padding: 0.3rem;">
            </div>
            <div id="fuse-filter-container" style="display: none;">
                <label for="fuse-threshold" style="margin-right: 0.5rem;">匹配阈值 ≤</label>
                <input type="number" id="fuse-threshold" value="0.4" min="0" max="1" step="0.1"
                    style="width: 4rem; padding: 0.3rem;">
            </div>
        </div>
        <div style="margin-top: 100px">
            <h3>搜索结果:</h3>
            <div id="alias-results" style="color: #333">
            </div>
        </div>
        <div style="margin-top: 100px">
            <h3>别名列表:</h3>
            <ul id="all-alias" style="color: #333"></ul>
        </div>
    </div>
<script src="https://cdn.jsdelivr.net/npm/fuse.js@6.6.2/dist/fuse.min.js"></script>
<script>
<script>
  const songName = "Pastel Lines"
    let fuseInstance = null
 
    document.addEventListener('DOMContentLoaded', function () {
        initAllAliases()
        initFuse()
 
        document.getElementById('alias-btn').addEventListener('click', searchSongs)
 
        document.getElementById('alias-input').addEventListener('keypress', function (e) {
            if (e.key == 'Enter') searchSongs()
        })
 
        document.getElementById('algorithm-select').addEventListener('change', function () {
            const algorithm = this.value
            const customContainer = document.getElementById('custom-filter-container')
            const fuseContainer = document.getElementById('fuse-filter-container')
 
            if (algorithm == 'fuse') {
                customContainer.style.display = 'none'
                fuseContainer.style.display = 'block'
            } else {
                customContainer.style.display = 'block'
                fuseContainer.style.display = 'none'
            }
 
            searchSongs()
        })
    })
 
    function initAllAliases() {
        const container = document.getElementById('all-alias')
        container.innerHTML = ''
 
        songlist.forEach(function (song) {
            const li = document.createElement('li')
            const aliases = song.aliases || []
            let aliasText = aliases.length > 0 ? aliases.join('、') : '<span style="color:#888">无别名</span>'
            li.innerHTML = `<span class="song-title">${song.title || ''}</span>: <span class="aliases">${aliasText}</span>`
            container.appendChild(li)
        })
    }
 
    function initFuse() {
        const fuseOptions = {
            includeScore: true,
            includeMatches: true,
            threshold: 0.4,
            minMatchCharLength: 1,
            keys: ['title', 'aliases']
        }
 
        const searchData = songlist.map(function (song) {
            return {
                id: song.title,
                title: song.title,
                aliases: song.aliases ? song.aliases.join(' ') : ''
            }
        })
 
 
        fuseInstance = new Fuse(searchData, fuseOptions)
    }
 


  const difficultyColors = {
     // Fuse.js搜索函数
     "EZ": "#57E4C4",
     function searchWithFuse(searchText, threshold) {
     "HD": "#FDBA61",
        if (!fuseInstance) initFuse()
    "IN": "#FE8661",
    "AT": "#4C364B"
  };


  function cycleDifficulty(element) {
        const results = fuseInstance.search(searchText, {
    const states = JSON.parse(element.getAttribute('data-states'))
            limit: 50,
    const current = parseInt(element.getAttribute('data-current'))
            threshold: threshold
    const next = (current + 1) % states.length
        })


    element.textContent = states[next]
        return results.map(function (result) {
    element.setAttribute('data-current', next.toString())
            const song = songlist.find(function (s) {
                return s.title == result.item.id
            })
            return {
                song: song,
                score: Math.round((1 - (result.score || 0)) * 100),
                matched: result.matches ? result.matches[0].value : '',
                matchedAlias: '',
                fuseScore: result.score
            }
        })
    }


     const difficultyType = states[next].split(' ')[0]  // 获取难度
     /*计算权重
     const color = difficultyColors[difficultyType] || '#FFFFFF'  // 更新背景色
    输入字符只在目标字符串中匹配一次
     element.style.backgroundColor = color
    允许间隔,顺序匹配
     element.parentElement.style.backgroundColor = color
     每匹配一个字符加1分
     连续匹配加0.5分
    大小写精确匹配加0.3分
     开头匹配加1.5分
    完全包含关系额外加分
    */
    function getMatchScore(input, target) {


    updateOutput()
        if (!input || !target) return { score: 0, matched: "" }
  }


  function cycleRatio(element) {
        const originalInput = input
    const states = JSON.parse(element.getAttribute('data-states'))
        const originalTarget = target
    const current = parseInt(element.getAttribute('data-current'))
    const next = (current + 1) % states.length


    element.textContent = states[next]
        input = input.toLowerCase()
    element.setAttribute('data-current', next.toString())
        target = target.toLowerCase()


    updateOutput()
        if (input == target) return { score: 100, matched: originalTarget }
  }


  function updateOutput() {
        let containBonus = 0
    const difficultyDiv = document.getElementById('difficulty')
        if (input.includes(target)) {
    const ratioDiv = document.getElementById('ratio')
            if (target.length >= 5) {
                if (input.length >= 3) {
                    containBonus = 6 + (target.length * 0.3)
                }
            } else {
                if (input.length >= 2) {
                    containBonus = 6 + (target.length * 0.3)
                }
            }
        } else if (target.includes(input)) {
            if (target.length >= 5) {
                if (input.length >= 3) {
                    containBonus = 5 + (input.length * 0.3)
                }
            } else {
                if (input.length >= 2) {
                    containBonus = 5 + (input.length * 0.3)
                }
            }
        }


    const difficulty = difficultyDiv.textContent.split(' ')[0]  // 获取难度
        function calculateScore(src, tgt, originalSrc, originalTgt) {
    const ratio = ratioDiv.textContent.replace(':', '-')
            let score = 0, matched = "", lastPos = -1, bonus = 0, pos = 0, caseBonus = 0
            let skipCount = 0
            const maxSkip = 2


    const videoUrl = `https://raw.githubusercontent.com/Rizline-Chinese-Wiki/rizline-song-preview/main/${ratio}_${songName}_${difficulty}.mp4`
            for (let i = 0; i < src.length; i++) {
                let found = false
                const srcChar = src[i]
                const associatedChars = getAssociatedChars(srcChar)


     document.getElementById('output').innerHTML = `
                for (let j = pos; j < tgt.length; j++) {
      <video class="html5media-video" src="${videoUrl}" controls preload="metadata" loading="lazy" style="height:100%; max-width:100%; display:block; margin:0 auto;"></video>
                    const tgtChar = tgt[j]
     `
 
  }
                    if (srcChar === tgtChar || associatedChars.includes(tgtChar)) {
                        score++
                        matched += originalTgt[j]
 
                        if (originalSrc[i] == originalTgt[j]) {
                            caseBonus += 0.3
                        }
 
                        else if (associatedChars.includes(tgtChar)) {
                            caseBonus += 0.1
                        }
 
                        if (lastPos >= 0) {
                            if (j == lastPos + 1) {
                                bonus += 0.5
                            }
                        }
                        lastPos = j
                        pos = j + 1
                        found = true
                        break
                    }
                }
 
                if (!found) {
                    skipCount++
                    if (skipCount > maxSkip) {
                        break
                    }
                }
            }
 
            let startBonus = 0
            if (matched.length > 0) {
                if (tgt.indexOf(src[0]) == 0) {
                    startBonus = 1.5
                }
            }
 
            return {
                score: score + bonus + caseBonus + startBonus + containBonus,
                matched
            }
        }
 
        const result1 = calculateScore(input, target, originalInput, originalTarget)
        const result2 = calculateScore(target, input, originalTarget, originalInput)
 
        if (result1.score >= result2.score) {
            return result1
        } else {
            return result2
        }
     }
 
 
    function searchSongs() {
        const searchText = document.getElementById('alias-input').value.trim()
        const resultsContainer = document.getElementById('alias-results')
        const algorithm = document.getElementById('algorithm-select').value
 
        if (!searchText) {
            resultsContainer.innerHTML = '<div>输入关键词进行搜索</div>'
            return
        }
 
        let results = []
 
        if (algorithm == 'fuse') {
            const threshold = parseFloat(document.getElementById('fuse-threshold').value) || 0.4
            results = searchWithFuse(searchText, threshold)
            // console.log(`Fuse.js搜索: "${searchText}", 阈值: ${threshold}, 结果数: ${results.length}`)
 
        } else {
            const resc = Number(document.getElementById('score-filter').value) || 4
 
            results = songlist.map(function (song) {
                let best = getMatchScore(searchText, song.title || '')
                let bestAlias = ""
 
                if (song.aliases) {
                    if (song.aliases.length > 0) {
                        song.aliases.forEach(function (alias) {
                            let result = getMatchScore(searchText, alias)
                            if (result.score > best.score) {
                                best = result
                                bestAlias = alias
                            }
                        })
                    }
                }
 
                return {
                    song: song,
                    score: best.score,
                    matched: best.matched,
                    matchedAlias: bestAlias
                }
            }).filter(function (result) {
                // if (result.score >= resc) {
                //    console.log(
                //        `${result.song.title}: [${result.matched}]${(result.matchedAlias ? ` (${result.matchedAlias})` : "")}  ${result.score} `
                //    )
                // }
                return result.score >= resc
            }).sort(function (a, b) {
                return b.score - a.score
            })
        }
 
        if (results.length == 0) {
            resultsContainer.innerHTML = '<div>没有找到匹配的曲目</div>'
        } else {
            resultsContainer.innerHTML = ''
            results.forEach(function (result) {
                const div = document.createElement('div')
                div.className = 'result-item'
                div.style.margin = "0 0 0.5rem 1rem"
                div.style.lineHeight = "1.5"
                var songTitle = result.song.title || ''
                var link = `<a href="/wiki/${encodeURIComponent(songTitle)}" title="${songTitle}">${songTitle}</a>`
                div.innerHTML = `<div class="song-title">${link}</div>
                <div class="aliases" style="font-size: 13px; margin-left: 1rem">alias: ${result.song.aliases.join('、')}</div>`
                resultsContainer.appendChild(div)
            })
        }
    }
 
 
    function getAssociatedChars(char) {
        const associations = new Set([char])
 
        if (charAssociations[char]) {
            charAssociations[char].forEach(assocChar => associations.add(assocChar))
        }
 
        for (const [key, values] of Object.entries(charAssociations)) {
            if (values.includes(char)) {
                associations.add(key)
            }
        }
 
        return Array.from(associations)
     }
 
 
    // 关联字符库,冒号前的字符可通过中括号里的字符匹配
    const charAssociations = {
        'ィ': ['イ', '亻', 'ィ', '人'],
        'イ': ['ィ', '亻', 'イ', '人'],
        '人': ['ィ', '亻', 'イ', 'イ'],
        '亻': ['ィ', 'イ', 'イ', '人'],
        'ェ': ['エ', '工', 'ェ'],
        'エ': ['ェ', '工', 'エ'],
        '的': ['得', '地', 'の', '之'],
        '得': ['的', '地', 'の', '之'],
        'の': ['的', '得', '地', '之'],
        '之': ['的', '得', 'の', '地'],
        '地': ['的', '得', 'の', '之'],
        '*': ['x', '×'],
        'x': ['*', '×'],
        '×': ['x', '*'],
        '℟': ['R'],
        'Α': ['α', 'A', 'a', 'alpha'],
        'α': ['Α', 'a', 'A', 'alpha'],
        'alpha': ['Α', 'α', 'A', 'a']
    }
 
    // 别名库
    const songlist = [
        {
            title: "Pastel Lines",
            aliases: ["粉彩线条"]
        },
        {
            title: "Gleam feat. ふわまろ",
            aliases: ["微光","gleam"]
        },
        {
            title: "Power Attack",
            aliases: ["力攻","pa","小机器人"]
        },
        {
            title: "Skyscape",
            aliases: ["天穹景致"]
        },
        {
            title: "On And On!!",
            aliases: ["oao", "onandon", "上和上", "我们相亲相爱的","永不停歇!!","小鸟游六花"]
        },
        {
            title: "Polygons",
            aliases: ["多边形","polytone"]
        },
        {
            title: "Abgrund",
            aliases: ["深渊"]
        },
        {
            title: "Journey To The Rainbows",
            aliases: ["彩虹之旅", "彩虹是个好东西"]
        },
        {
            title: "Midnight Flux",
            aliases: ["午夜流"]
        },
        {
            title: "NO ONE YES MAN",
            aliases: ["noym", "没一个是人","梅姨阁诗人","NO ONE YES PIGEONS"]
        },
        {
            title: "Clock Paradox",
            aliases: ["时钟悖论","时悖","钟漠","时钟佯谬","钟盒","CP","雪漠的钟"]
        },
        {
            title: "F℟IEND",
            aliases: ["恶魔朋友","friend","朋友"]
        },
        {
            title: "Shattered",
            aliases: ["支离破碎"]
        },
        {
            title: "Swing Sweet Twee Dance feat. ななきなな",
            aliases: ["sstd","摇摆甜蜜稚趣舞 feat. 七木七奈","Swing Sweet Twee Dance"]
        },
        {
            title: "V!rtuaresort",
            aliases: ["Virtuaresort"]
        },
        {
            title: "Dice 20",
            aliases: ["二十面骰","rd20"]
        },
        {
            title: "macro.wav",
            aliases: ["宏波", "宏波炉","滴滴滴滴","微波炉2"]
        },
        {
            title: "The Next Arcady",
            aliases: ["世外桃源","3d","下一个世外桃源"]
        },
        {
            title: "Sakura Fubuki",
            aliases: ["樱吹雪"]
        },
        {
            title: "Tempest",
            aliases: ["风暴"]
        },
        {
            title: "Authentic (Game ver.)",
            aliases: ["本真"]
        },
        {
            title: "MilK",
            aliases: ["牛奶","><",">▽<"]
        },
        {
            title: "ILLEGAL LEGACY",
            aliases: ["il", "非法遗产","恭喜你爬完了梯子!"]
        },
        {
            title: "竹",
            aliases: ["小心立秋","bamboo"]
        },
        {
            title: "R.I.P.",
            aliases: ["rip","逝者安息"]
        },
        {
            title: "Empire",
            aliases: ["王朝"]
        },
        {
            title: "DropDown",
            aliases: ["坠落","dd"]
        },
        {
            title: "Contact",
            aliases: ["连接","接触"]
        },
        {
            title: "CANDYLAND",
            aliases: ["糖果岛","初代魔王","糖果乐园"]
        },
        {
            title: "Arcade ViruZ",
            aliases: ["街机病毒","街机还会中毒?"]
        },
        {
            title: "LINK x LIN#S",
            aliases: ["连接起来吧……","LxL","II","连线","相连的心","ll"]
        },
        {
            title: "LEONIDS",
            aliases: ["狮子座", "星座","向狮子座许愿吧!"]
        },
        {
            title: "FORTALiCE",
            aliases: ["堡垒"]
        },
        {
            title: "Paradial Resonator",
            aliases: ["pr","天堂谐振器","咏歌和Para","咏帕"]
        },
        {
            title: "Lavender Leaf (feat. Lexi)",
            aliases: ["薰衣草","Lavender Leaf"]
        },
        {
            title: "Puppet Show",
            aliases: ["Jazz","木偶戏"]
        },
        {
            title: "Vicious Mockery",
            aliases: ["vm","狂暴之嘲","vici","vc","维C","狂暴猴子","还是不要随意打开为好……","幽蓝列车"]
        },
        {
            title: "BRAVE: ROAD",
            aliases: ["br", "勇气之路", "勇敢之路","勇者之路","勇路","真正的勇者","gr2","魔王曲", "勇者之路","真格✧大勇士","荣耀之路2","里红2","新手教程"]
        },
        {
            title: "Dot-Line (feat. ななひら)",
            aliases: ["点线","因为我们的羁绊","Dot-Line"]
        },
        {
            title: "光 (阿卡姆巫师 Remix)",
            aliases: ["阿卡姆光","光","一缕崭新的阳光"]
        },
        {
            title: "Lost Future",
            aliases: ["失落未来","找回遗失的未来","夹娃娃机"]
        },
        {
            title: "sAtElLites",
            aliases: ["卫星"]
        },
        {
            title: "Intruder",
            aliases: ["入侵者"]
        },
        {
            title: "Rule The World",
            aliases: ["定义世界"]
        },
        {
            title: "felys -final remix-",
            aliases: ["菲莉丝","飞雷神","felys"]
        },
        {
            title: "Destr0yer",
            aliases: ["Destroyer","d0","毁灭者","削除射线","sakuzyo beam","削除二连冠","削除本人出演"]
        },
        {
            title: "crystallized",
            aliases: ["结晶","结晶化"]
        },
        {
            title: "Cosmos Capsule",
            aliases: ["交互胶囊"]
        },
        {
            title: "Yellow Shining!! feat. 成田なる",
            aliases: ["黄色闪耀!! feat. 成田鸣琉","唱响金色的乐章","Yellow Shining!!","Yellow Shining"]
        },
        {
            title: "Abatement",
            aliases: ["缓和"]
        },
        {
            title: "Rapture",
            aliases: ["狂喜"]
        },
        {
            title: "Turning POINT",
            aliases: ["tp","转折点"]
        },
        {
            title: "Reversed Zenith",
            aliases: ["逆天顶","rz"]
        },
        {
            title: "Restricted Access",
            aliases: ["ra","限制通道","立入禁止"]
        },
        {
            title: "The Last Page",
            aliases: ["最后一页","终页"]
        },
        {
            title: "Super Universe (Knighthood Remix)",
            aliases: ["超宇宙","超宇", "Super Universe Remix","Super Universe"]
        },
        {
            title: "Enneaquest",
            aliases: ["九重试炼"]
        },
        {
            title: "Colorful Flavor",
            aliases: ["缤纷风味"]
        },
        {
            title: "Abiogenesis",
            aliases: ["无生源论"]
        },
        {
            title: "Revenant",
            aliases: ["荒野猎人","怪物猎人","怪猎"]
        },
        {
            title: "Antler",
            aliases: ["鹿角","鹿角巷"]
        },
        {
            title: "Contortion",
            aliases: ["扭曲"]
        },
        {
            title: "Bring Me Back",
            aliases: ["带我回来","带我归来","bmb"]
        },
        {
            title: "Hullbreaker",
            aliases: ["破舰者"]
        },
        {
            title: "D-Birth",
            aliases: ["D-诞生","被毁灭后的世界"]
        },
        {
            title: "NightTheater",
            aliases: ["夜剧场", "夜剧院", "NT"]
        },
        {
            title: "Grimheart",
            aliases: ["冷酷的心", "寒冷的心", "冷心"]
        },
        {
            title: "Encrux",
            aliases: ["翼龙"]
        },
        {
            title: "slic.hertz",
            aliases: ["切片.赫兹","对面转起来了"]
        },
        {
            title: "Giselle",
            aliases: ["吉赛尔"]
        },
        {
            title: "Afterdark",
            aliases: ["黑暗之后"]
        },
        {
            title: "蒼天 (Sta's Key-Kai mix)",
            aliases: ["苍天"]
        },
        {
            title: "Conway's Child",
            aliases: ["康威之子","生命游戏","康威生命游戏"]
        },
        {
            title: "Crimsonate",
            aliases: ["深红化"]
        },
        {
            title: "Sthenno",
            aliases: ["丝西娜"]
        },
        {
            title: "Kaguya",
            aliases: ["辉夜姬","竹取物语"]
        },
        {
            title: "Relieve",
            aliases: ["信任","咏歌你怎么跟没有名字的人同框啊"]
        },
        {
            title: "Alexandrite",
            aliases: ["变石"]
        },
        {
            title: "Hydra",
            aliases: ["九头蛇","骇爪"]
        },
        {
            title: "漂流",
            aliases: []
        },
        {
            title: "Comet Coaster",
            aliases: ["彗星过山车"]
        },
        {
            title: "DOMINATOR",
            aliases: ["支配者"]
        },
        {
            title: "天灵灵地灵灵",
            aliases: ["小学妹"]
        },
        {
            title: "Psychometry",
            aliases: ["心灵感应"]
        },
        {
            title: "Electric Comet",
            aliases: ["电子彗星"]
        },
        {
            title: "Eschatology",
            aliases: ["末世论"]
        },
        {
            title: "너를 그리는 밤하늘의 이야기 (Planetarium) prod. Scarlette",
            aliases: ["天文馆","一串韩文","一堆韩文","韩文字括号英文字括号英文字"]
        },
        {
            title: "Avataar ~Reincarnation of Kalpa~",
            aliases: ["Avataar","arok","卡尔帕转世","化生~劫之轮回~","劫之轮回","蓝魔王","转生的小曲"]
        },
        {
            title: "Frozen Heart",
            aliases: ["冰心","解放冰封的心"]
        },
        {
            title: "amethyst",
            aliases: ["紫水晶"]
        },
        {
            title: "Alfheim's faith",
            aliases: ["亚尔夫海姆的信仰"]
        },
        {
            title: "翠杜",
            aliases: ["脆肚","suito"]
        },
        {
            title: "驟雨の狭間",
            aliases: ["骤雨狭间", "骤雨的缝隙","骤雨的隙间","骤雨","周瑜"]
        },
        {
            title: "enchanted love",
            aliases: ["附魔爱","醉心之爱","醉心爱","青蛙王子"]
        },
        {
            title: "Crazy Audiophile",
            aliases: ["疯狂的高保真音响爱好者"]
        },
        {
            title: "419kB",
            aliases: []
        },
        {
            title: "VICIOUS",
            aliases: ["狂暴"]
        },
        {
            title: "Crush Alcohol",
            aliases: ["酒精","酒驾","不要酒驾"]
        },
        {
            title: "インフェルノシティ",
            aliases: ["地狱城", "地狱都市","亻冫乛工儿丿氵亍亻","inferno city"]
        },
        {
            title: "No-name Requiem",
            aliases: ["无名安魂曲"]
        },
        {
            title: "Change the Game feat. 松永依織",
            aliases: ["Change the Game","游戏逆转","改变游戏"]
        },
        {
            title: "T+ VS SHARK",
            aliases: ["OMG!!!  It's a SHARK!!!","tpz大战鲨鱼","OMG!!!  It's a 🦈","🦈","鲨鱼"]
        },
        {
            title: "Future Downloader",
            aliases: ["未来下载器"]
        },
        {
            title: "Echo over you...",
            aliases: ["回响于心"]
        },
        {
            title: "Fairy's Crown",
            aliases: ["仙子冠冕"]
        },
        {
            title: "Graves -Ancient Memories-",
            aliases: ["墓碑 -古老的记忆-","Graves"]
        },
        {
            title: "GREAT GREAT",
            aliases: ["棒棒","GG","炫彩鸽子","🕊","咕咕"]
        },
        {
            title: "Clouds clear and...",
            aliases: ["云散之后..."]
        },
        {
            title: "NLAMTA",
            aliases: ["No Longer a Melodic Trance Attempt"]
        },
        {
            title: "Antikythera",
            aliases: ["安提凯希拉"]
        },
        {
            title: "Speed Up!",
            aliases: ["冲刺!"]
        },
        {
            title: "天地開闢",
            aliases: ["天地开辟","开天辟地"]
        },
        {
            title: "水槽に沈む街",
            aliases: ["沈阳大街","沉入水槽的街","水槽沈阳大街","水槽沈街"]
        },
        {
            title: "Inevitability",
            aliases: ["不可避免","才没有什么必然!","鲷鱼烧"]
        },
        {
            title: "8BLUE",
            aliases: ["泡泡","🐟8ブル🫧","爸宝蓝","八宝蓝","🫧","泡泡 o ·。· O .","8B博弈"]
        },
        {
            title: "Fade Away",
            aliases: ["我褪色了","走路人","艾伦沃克","阿兰走路人"]
        }
    ]


  //初始化
  document.addEventListener('DOMContentLoaded', function () {
      const diffDiv = document.getElementById('difficulty')
      const firstDiff = JSON.parse(diffDiv.getAttribute('data-states'))[0];
      const diffType = firstDiff.split(' ')[0]
     
      diffDiv.textContent = firstDiff
      diffDiv.style.backgroundColor = difficultyColors[diffType]
      diffDiv.parentElement.style.backgroundColor = difficultyColors[diffType]
     
      updateOutput();
  });
</script>
</script>


</html>
</html>


{{BMV|difficulties=EZ1,HD2,IN3|songName=Abgrund}}
 
----
[[User:RedDragon/Test]]
[[User:RedDragon/Test1]]
[[User:RedDragon/Test2]]

2025年12月6日 (六) 18:27的版本

搜索结果:

别名列表:



    User:RedDragon/Test User:RedDragon/Test1 User:RedDragon/Test2