枫叶音乐盒

https://mu-jie.cc/musicBox/#/

langzaier (13654)3天前

二编:换了一种写法写正文,这下可以兼容多个版本了,包括旧版阅读。

by狼崽儿 //2026.8.12

个人很喜欢的小众听歌网站,建议平时不用就关闭搜索,避免给别人的服务器造成负担。
套的是猪场云音乐的音源,一般来说,某云音乐能听的它都能播放,如果遇到不能播放或者只有30秒的,那应该是播放地址有点问题,过段时间再听就行了。
支持歌曲和歌单搜索,切换在登录处切换,默认搜歌。
发现页是歌单,是某云的歌单。

如果没办法获取正文,可以开飞行模式或者开移动数据换一下IP。
正文规则(简化版,但可能不兼容):
@js:java.redirectUrl
二维码导入
{
    "bookSourceComment": "by狼崽儿 \/\/2026.8.12\n个人很喜欢的小众听歌网站,建议平时不用就关闭搜索,避免给别人的服务器造成负担。\n套的是猪场云音乐的音源,一般来说,某云音乐能听的它都能播放,如果遇到不能播放或者只有30秒的,那应该是播放地址有点问题,过段时间再听就行了。\n支持歌曲和歌单搜索,切换在登录处切换,默认搜歌。\n发现页是歌单,是某云的歌单。\n\n如果没办法获取正文,可以开飞行模式或者开移动数据换一下IP。\n正文规则(简化版):\n@js:java.redirectUrl",
    "bookSourceGroup": "音乐",
    "bookSourceName": "枫叶音乐盒",
    "bookSourceType": 1,
    "bookSourceUrl": "https:\/\/mu-jie.cc\/musicBox\/#\/",
    "customOrder": 0,
    "enabled": true,
    "enabledCookieJar": true,
    "enabledExplore": true,
    "exploreUrl": "@js:\nvar arr = [];\narr.push({title: '🎵 推荐歌单', url: 'https:\/\/fy-musicbox-api.mu-jie.cc\/netease\/playlist\/recommend?limit=30', style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}});\nvar body = java.ajax('https:\/\/fy-musicbox-api.mu-jie.cc\/getPlaylistCategory,{\"headers\":{\"Referer\":\"https:\/\/mu-jie.cc\/\"}}')   \/\/ 请求分类树\nvar d = JSON.parse(body);\nvar cats = (d && d[0] && d[0].category) || [];\nfor (var i = 0; i < cats.length; i++) {\n  var g = cats[i];\n  var subs = g.sub || [];\n  if (subs.length > 0) {\n    arr.push({title: g.name, url: '', style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}});   \/\/ 分组标题独占一行\n    for (var j = 0; j < subs.length; j++) {\n      var s = subs[j];\n      arr.push({title: s.name, url: 'https:\/\/fy-musicbox-api.mu-jie.cc\/netease\/playlist\/category?type=' + encodeURIComponent(s.id) + '&limit=30', style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25}});\n    }\n  }\n}\nJSON.stringify(arr);",
    "header": " {\n    \"User-Agent\": \"Mozilla\/5.0 (Linux; Android 10; K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Mobile Safari\/537.36\",\n    \"Referer\": \"https:\/\/mu-jie.cc\/\"\n  }",
    "jsLib": "function ST() {\n    var v = String(source.getVariable()).split(',');\n    return parseInt(v[0]) || 0;\n}\nfunction ST_NAME() {\n    return ST() == 1 ? '歌单' : '歌曲';\n}",
    "lastUpdateTime": "1786555474090",
    "loginUi": "[{\"name\": \"🔀 当前模式\", \"type\": \"button\", \"action\": \"A()\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 1}},\n {\"name\": \"🎵 歌曲搜索\", \"type\": \"button\", \"action\": \"B(0)\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.5}},\n {\"name\": \"📋 歌单搜索\", \"type\": \"button\", \"action\": \"B(1)\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.5}}]",
    "loginUrl": "A = () => {\n    let v = String(this.source.getVariable()).split(',');\n    let x = parseInt(v[0]) || 0;\n    let names = ['歌曲', '歌单'];\n    let icons = ['🎵', '📋'];\n    let nl = String.fromCharCode(10);\n    java.toast('━━━━━━━━━━━' + nl +\n        icons[x] + ' 当前搜索模式' + nl +\n        names[x] + nl +\n        '━━━━━━━━━━━');\n};\nB = (x) => {\n    let v = String(this.source.getVariable()).split(',');\n    v[0] = x;\n    this.source.setVariable(v.join(','));\n    let names = ['歌曲', '歌单'];\n    java.toast('已切换到:' + names[x]);\n};\n",
    "respondTime": 180000,
    "ruleBookInfo": {
        "author": "@js:var m=baseUrl.match(\/artist=([^&]+)\/);\nm?decodeURIComponent(m[1]):''",
        "coverUrl": "@js:var m=baseUrl.match(\/pic=([^&]+)\/);\nm?decodeURIComponent(m[1]):''",
        "intro": "@js:var n=baseUrl.match(\/name=([^&]+)\/);\nvar a=baseUrl.match(\/artist=([^&]+)\/);\nvar indent='  '; \nvar r='';\nif(n) r+=indent+'歌曲:'+decodeURIComponent(n[1])+'\\n';\nif(a) r+=indent+'歌手:'+decodeURIComponent(a[1]);\nr",
        "kind": "@js:var m=baseUrl.match(\/\\\/(song|playlist)\\\/\/);\nm?(m[1]=='song'?'单曲':'歌单'):''",
        "name": "@js:var m=baseUrl.match(\/name=([^&]+)\/);\nm?decodeURIComponent(m[1]):''",
        "tocUrl": "@js:var m=baseUrl.match(\/\\\/(song|playlist)\\\/([a-z]+)\\\/(\\d+)\/);\n(!m||m[1]=='song')?baseUrl:'https:\/\/fy-musicbox-api.mu-jie.cc\/meting\/?server='+m[2]+'&type=playlist&id='+m[3];"
    },
    "ruleContent": {
        "content": "<js>\nvar raw = baseUrl;\nvar clean = raw;\nvar idx = raw.indexOf(',{');\nif (idx !== -1) {\n    clean = raw.substring(0, idx);\n}\nvar headers = {\"Referer\": \"https:\/\/mu-jie.cc\/\"};\nvar resp = java.get(clean, headers);\nvar loc = resp.header(\"Location\");\nloc || clean;\n<\/js>"
    },
    "ruleExplore": {
        "author": "@js:var d=JSON.parse(result);(d.trackCount||0)+'首'",
        "bookList": "@js:var d=JSON.parse(result);\nvar arr=[];\nfor(var i=0;\ni<d.length;\ni++){arr.push(JSON.stringify(d[i]));\n}arr;",
        "bookUrl": "@js:var d=JSON.parse(result);\n'https:\/\/fy-musicbox-api.mu-jie.cc\/playlist\/'+(d.server||'netease')+'\/'+d.id+'?name='+encodeURIComponent(d.name)+'&pic='+encodeURIComponent(d.coverImgUrl)",
        "coverUrl": "$.coverImgUrl",
        "intro": "@js:var d=JSON.parse(result);\n'歌单 · '+((d.playCount||0)\/10000).toFixed(1)+'万播放\\\\n'+((d.trackCount||0))+'首'",
        "kind": "$.server",
        "name": "$.name"
    },
    "ruleSearch": {
        "author": "@js:var d=JSON.parse(result);\nd.artist?d.artist:((d.trackCount||0)+'首');",
        "bookList": "@js:var d=JSON.parse(result);var arr=[];\nfor(var i=0;i<d.length;i++){arr.push(JSON.stringify(d[i]));}\narr;",
        "bookUrl": "@js:var d=JSON.parse(result);d.artist?'https:\/\/fy-musicbox-api.mu-jie.cc\/song\/netease\/'+d.id+'?name='+encodeURIComponent(d.name)+'&artist='+encodeURIComponent(d.artist)+'&pic='+encodeURIComponent(d.pic):'https:\/\/fy-musicbox-api.mu-jie.cc\/playlist\/netease\/'+d.id+'?name='+encodeURIComponent(d.name)+'&pic='+encodeURIComponent(d.coverImgUrl);",
        "coverUrl": "@js:var d=JSON.parse(result);\nd.pic?d.pic:d.coverImgUrl;",
        "intro": "@js:var d=JSON.parse(result);\nd.artist?d.name+'\\n'+d.artist:'歌单 · '+((d.playCount||0)\/10000).toFixed(1)+'万播放 · '+((d.trackCount||0))+'首';",
        "kind": "$.id",
        "name": "@Json:$.name"
    },
    "ruleToc": {
        "chapterList": "@js:\nvar m=baseUrl.match(\/\\\/(song|playlist)\\\/([a-z]+)\\\/(\\d+)\\?\/);\nvar arr=[];\nif(m&&m[1]=='song'){\n  var nm=baseUrl.match(\/name=([^&]+)\/);\n  var name=nm?decodeURIComponent(nm[1]):'歌曲';\n  var u='https:\/\/fy-musicbox-api.mu-jie.cc\/meting\/?server='+m[2]+'&type=url&id='+m[3]+',{\"headers\":{\"Referer\":\"https:\/\/mu-jie.cc\/\"}}';\n  arr.push(JSON.stringify({name:name,url:u,itemId:m[3]}));\n}else{\n  var d=(typeof result==='string')?JSON.parse(result):result;\n  var tracks=(d&&d.tracks)||[];\n  for(var i=0;i<tracks.length;i++){\n    var t=tracks[i];t.url=t.url+',{\"headers\":{\"Referer\":\"https:\/\/mu-jie.cc\/\"}}';arr.push(JSON.stringify(t));\n  }\n}\narr;",
        "chapterName": "$.name",
        "chapterUrl": "$.url"
    },
    "searchUrl": "@js:\nvar st = parseInt(String(source.getVariable()).split(\",\")[0]) || 0;\nst == 1\n  ? 'https:\/\/fy-musicbox-api.mu-jie.cc\/netease\/search\/playlist\/?keywords=' + encodeURIComponent(key) + '&limit=20'\n  : 'https:\/\/fy-musicbox-api.mu-jie.cc\/netease\/search\/song\/?keywords=' + encodeURIComponent(key) + '&pn=' + page + '&limit=20';",
    "weight": 0
}
广告